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

Reply via email to