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
