Thanks Kris I will give this a try and let you know how it goes.

 

Terry

 

________________________________

From: The IBM z/VM Operating System [mailto:[EMAIL PROTECTED] On
Behalf Of Kris Buelens
Sent: Sunday, October 12, 2008 3:19 PM
To: [email protected]
Subject: Re: REXX with WAKEUP (IUCVMSG

 

I'd say this means that the HCPSIG2113 message is not sent as a CP MSG
(i.e. sent often by someone else), what is by default the only thing
WAKEUP (IUCVMSG will intercept.

So, change the code to:
   'WAKEUP +0 (IUCVMSG QUIET'
   'CP SET CPCONIO IUCV'  /* Intercept all CP console IO too with IUCV*/
   ....
   do forever
      'WAKEUP (IUCVMSG QUIET'
      ....
   end
   'WAKEUP RESET'
   'CP SET CPCONIO OFF'  /* Stop intercepting all CP console IO */


That will work. Beware though that WAKEUP will thus intercept the
response of all CP commands till WAKEUP is reset.

2008/10/12 Martin, Terry R. (CMS/CTR) (CTR) <[EMAIL PROTECTED]>

Hi Kris,

 

Thanks for the information.

 

I still have a problem and that is, when the SHUTDOWN of the Linux guest
occurs and I receive the message 

'HCPSIG2113I User LNXSANDB has reported successful termination'. It just
sits there my other instructions do not execute until I hit the ENTER
key. When I hit the ENTER key I get a RC=6 and since I check for RC=6
and LEAVE I never get to the rest of my code. Apparently RC=5 is not
happening.

 

Any suggestions?

 

Thanks Terry

 

________________________________

From: The IBM z/VM Operating System [mailto:[EMAIL PROTECTED] On
Behalf Of Kris Buelens
Sent: Saturday, October 11, 2008 4:18 PM
To: [email protected]
Subject: Re: REXX with WAKEUP (IUCVMSG

 

First of all: WAKEUP gives RC=6 when someone at the 3270 console  where
this exec runs presses enter.
The usual reaction of REXX execs using WAKEUP is then to exit, stop the
REXX program.  Some REXX execs will first ask the user a confirmation if
they want to exit, or if if was a mistake

Secondly: when a message arrives via IUCV, WAKEUP will give return code
5

 So the DO forever loop looks like:  
 Do forever
  'WAKEUP (IUCVMSG QUIET'
  Select
   when rc=6 then leave
   When rc=5 then do /* a MS arrived via IUCV */
     parse pull theMsg ....
       ...
     end
     Otherwise 
       Say 'Unexpcetd RC' rc 'from WAKEUP'
       leave
  end
end /* Do Forever */
'WAKEUP RESET'
exit

Then; there is the difference between the program stack and the terminal
input buffer.
 - program stack is where e.g. WAKEUP or QUERY xxx (STACK store their
data
 - terminal input buffer is where CMS stores what you enter at the
console
PARSE PULL reads from the program stack, and if that is empty from the
terminal input buffer, and if that is empty too, a VM READ is posted.
PARSE EXTERNAL reads the terminal input buffer, and if that is empty, a
VM READ is posted.
Rexx function QUEUED() returns the number of lines in the program stack;
EXTERNALS() the number of lines in the terminal input buffer.

So; if you want to get the answer from an operator, it is better to use
PARSE <UPPER> EXTERNAL than PARSE <UPPER> PULL.

This is surely explained in more detail in our TCVM1 Telecourse
  http://www.vm.ibm.com/download/packages/descript.cgi?TCVM1


2008/10/11 Martin, Terry R. (CMS/CTR) (CTR) <[EMAIL PROTECTED]>:
> Hi
>
>  
>
> I have been trying to figure out my problem but I cannot seem to find
it so
> I thought maybe someone more experience at this could help.
>
>  
>
> Here is my current issue (I am sure there will be more to come but for
now!)
> when I do a SAY and try to PULL the ANSWER I keep getting what appears
to be
> left over messages not the expected data. The piece of code in RED is
where
> I am having the problem. Keep in mind that I am just testing certain
things
> out to get familiar with this so the code is my no means what I hope
to end
> up with.
>
>  
>
> When I PULL the REPLY it is a message and therefore my check for the
answer
> never works. It is like something is left on the STACK. I am thinking
it has
> something to do with the 'WAKEUP +0 (IUCVMSG QUIET' .  I say this
because
> when I put the code in RED above this the REPLY area is what I expect
not a
> message. 
>
>  
>
> Do I need to clear something? Thanks for the help in advance.  
>
>  
>
>  
>
> /*  LINUX SHUTDOWN EXEC */               
>
>  /*                                        
>
>  TRACE i                                  
>
>  SAY 'TO STOP LINUX GUESTS ENTER'         
>
>  SAY 'ALL'                                
>
>  SAY 'OR'                                 
>
>  SAY 'LINUX GUEST ID'                     
>
>  PULL GUEST                               
>
>                                           
>
>  IF GUEST /= 'ALL' THEN                   
>
>    DO                                     
>
>     SAY 'SHUTING DOWN' GUEST 'GUEST CHOOSE:
>
>     SAY 'REIPL'                            
>
>     SAY ' OR'                             
>
>     SAY 'SHUTDOWN'                        
>
>                                           
>
>     PULL FUNCTION                         
>
>                                           
>
>     'WAKEUP +0 (IUCVMSG QUIET'     
>
>  
>
>   /*'CP SIG SHUTDOWN' GUEST 'WITHIN 180'    WAIT 3 MINUTE THEN FORCE
*/
>
>                                                                       
>
>     end                                                               
>
>   /*  IF RC=45 THEN*/

>
>   /*EXIT */                                                           
>
>   SAY '... WAITING FOR SHUTDOWN COMPLETION'                           
>
>                                                                       
>
> DO FOREVER;               /* WILL GET MESSAGES UNTIL GUEST DOWN */    
>
> 'WAKEUP (IUCVMSG QUIET'            /*   MESSAGE HAS ARRIVED */        
>
>                                                                       
>
> IF RC = 6 THEN

>
>   DO                                                                  
>
>   IF FUNCTION = 'SHUTDOWN' THEN                                       
>
>    DO                                                                 
>
>     SAY GUEST 'VM USER LOGGING OFF'                                   
>
>     'CP SEND CP' GUEST 'LOGOFF'                                       
>
>   END                                                                 
>
>         DO                                                            
>
>        'PIPE CP Q NAMES | LOCATE /'GUEST'/ | SPLIT | LOCATE
/'GUEST'/',
>
>           '| > LINUX USERS A'  
>
>  
>
>                                                                    
>
>             USERID = 'LINUX USERS A'                               
>
>        PARSE VALUE STREAM(USERID,'C','OPEN READ') WITH OK FILE_HANDL
>
>    end                                                             
>
>                                                                    
>
>       IF OK /= 'READY:' THEN                                       
>
>   DO                                                                
>
>     SAY 'LINUX USER HAS BEEN LOGGED OFF'                           
>
>     end                                                            
>
>    DO                                                              
>
>      SAY 'DO YOU WANT TO LOG' GUEST 'BACK ON'                      
>
>      SAY 'YES'                                                     
>
>      SAY ' OR'                                                     
>
>      SAY 'NO'                                                      
>
>        PULL REPLY                                                  
>
>       IF REPLY /= 'YES' THEN                                       
>
>        EXIT                                                        
>
>        END                                                          
>
>     DO                                                             
>
>      'PIPE CP XAUTOLOG' GUEST 
>
>  
>
>       'PIPE CP XAUTOLOG' GUEST

>
>       SAY GUEST 'HAS BEEN LOGGED ON'

>
>

>
>      IF FUNCTION = 'REIPL' THEN

>
>       DO

>
>        SAY GUEST 'VM USER REIPL STARTED'

>
>        'CP SEND CP' GUEST 'IPL 700 CLEAR'

>
>        END

>
>      'CP I CMS'

>
>       EXIT

>
>     END

>
>     END

>
>  END  /* END OF DO FOREVER LOOP */

>
>

>
>  /* =================== END OF INDIVIDUAL GUEST SHUTDOWN ============
*/ 
>
>

>
>      EXIT          /* RETURN TO CMS */

>

>
>                                        
>                                       



-- 
Kris Buelens,
IBM Belgium, VM customer support




-- 
Kris Buelens,
IBM Belgium, VM customer support

Reply via email to