Kris,
I was in meetings most of yesterday and needed an answer quickly. This
morning there was time to write test execs and as per Alan all RDR files
are processed before the SMSG. We are updating an application that
receives many reader files so the question was, "What happens if 50 RDR
files are in the queue then an SMSG arrives followed by 20 or more RDR
files. We all now know the 70 files are processed then the SMSG is
processed. So, if we want the SMSG processed, then something like
"WAKEUP +00:01 (SMSG NOEXT CC" needs to be inserted into the
rdr_file_received: routine.
An extract of my test code is attached.
Jim
/* REXX */
address "COMMAND"
"WAKEUP (NOEXT CC"
do forever
"MAKEBUF"; bufno = rc
"WAKEUP (CC SMSG CONS RDR"
unknown_rc = rc
select
when rc = 1 then call smsg_received
when rc = 4 then call rdr_file_received
when rc = 6 then exit 6
otherwise
say "UNKNOWN RETURN CODE OF" unknown_rc
exit rc
end
"DROPBUF" bufno
end
exit 0
rdr_file_received:
"WAKEUP +00:01 (SMSG NOEXT CC"
select
when rc = 1 then call smsg_received
when rc = 2 then nop
when rc = 6 then exit 66
otherwise
say "UNKNOWN RETURN CODE OF" unknown_rc
exit rc
end
do queued()
pull junk
end
"PIPE CP QUERY RDR ALL * | DROP 1 | TAKE 1 | VAR RDR_INFO"
parse var rdr_info from_id fileno . type . . . . . fn ft .
And the sending TEST EXEC
/* */
address "COMMAND"
"EXEC SENDFILE TEST EXEC A TO SCXJXS"
"EXEC SENDFILE TEST EXEC A TO SCXJXS"
"EXEC SENDFILE TEST EXEC A TO SCXJXS"
"EXEC SENDFILE TEST EXEC A TO SCXJXS"
"EXEC SENDFILE TEST EXEC A TO SCXJXS"
"EXEC SENDFILE TEST EXEC A TO SCXJXS"
"CP SMSG SCXJXS Burpie"
"CP SLEEP 4 SEC"
"EXEC SENDFILE TEST EXEC A TO SCXJXS"
"EXEC SENDFILE TEST EXEC A TO SCXJXS"
"EXEC SENDFILE TEST EXEC A TO SCXJXS"
"EXEC SENDFILE TEST EXEC A TO SCXJXS"
"EXEC SENDFILE TEST EXEC A TO SCXJXS"
"EXEC SENDFILE TEST EXEC A TO SCXJXS"
________________________________
From: The IBM z/VM Operating System [mailto:[email protected]] On
Behalf Of Kris Buelens
Sent: Wednesday, April 22, 2009 10:33 AM
To: [email protected]
Subject: Re: WAKEUP Order of Processing
What I coded in RxServer: when a RDR file is found, the RDR_Event
subroutine basically issues
'PIPE CP Q RDR *!stem rdrfiles.'
do i=1 to rdrfiles.0
....
Otherwise: test it
Code a CP SLEEP in the RDR file handler
then send a file and an SMSG and see what WAKEUP calles first
2009/4/22 James Stracka (DHL US) <[email protected]>
We have an EXEC that has within it: 'WAKEUP (SMSG RDR QUIET'
According to HELP WAKEUP:
Seven WAKEUP options cause data to be stacked: EXT, FILE, IO, IUCVMSG,
SMSG,
TIME, and VMCF. WAKEUP stacks the data in the following order regardless
of
the order the options are specified when you invoke WAKEUP:
1. Current date and time
2. Line from the WAKEUP TIMES file, or an asterisk (*) if no line is
found
3. An IUCV, SMSG or VMCF message, or EXT or IO interrupt data.
My question is: "If the EXEC is doing some processing for a prior
WAKEUP trigger and several READER files come to it and somewhere in the
process an SMSG command is sent to it, will the SMSG command be
processed first or will it attempt to process the READER files when the
code goes back to 'WAKEUP (SMSG RDR QUIET'?
--
Kris Buelens,
IBM Belgium, VM customer support