z/OS JES Application Programming
Previous topic | Next topic | Contents | Contact z/OS | Library | PDF


Listening for Events

z/OS JES Application Programming
SA32-0987-00

During the course of JES operations, data sets and jobs are subject to changes for various reasons. When such events occur for a client data set (for example, a data set that was allocated with the DALRTCTK text unit) or a job containing at least one client data set, JES issues an Event Notification (ENF) signal. The ENF number of the signal is 58. The signal is issued only for data sets that have been allocated using the DALRTCTK text unit.

To listen for this signal, you could do something like the following:
ENFREQ ACTION=LISTEN,CODE=58,EXIT=exit_address,XSYS=YES,
     PARM=parameter_address,DTOKEN=end_token_address
Note: The XSYS=YES parameter is used because JES could be issuing signals on a different processor from the one where your server runs.
To stop listening for this signal, you could do something like the following:
ENFREQ ACTION=DELETE,CODE=58,DTOKEN=end_token_address
The data area received by your listen exit from ENF is mapped by the IAZENF58 macro. You must include this macro in your program in order to use the data supplied by the ENF signal. This data area contains the following information:
ENF58_LENGTH
Length of parameter list
ENF58_QUALIFIER
Qualifier code — defined below:
ENF58_Q_PURGE
Data set was purged
ENF58_Q_SELECT
Data set was selected
ENF58_Q_DESELECT_PROCESSED
Data set was processed
ENF58_Q_DESELECT_NOT_PROCESSED
Data set is no longer selected, disposition was not changed
ENF58_Q_DESELECT_NOT_PROCESSED_HELD
Data set is no longer selected, disposition was not changed and data set is held
ENF58_Q_DESELECT_ERROR
An error resulting in a system level hold occurred
ENF58_Q_EOD_OK
End of data set notification occurred — successful
ENF58_Q_EOD_ERROR
End of data set notification occurred — unsuccessful
ENF58_Q_JOB_CHANGE
Job-status change occurred
ENF58_Q_TOKEN_CHANGE
Client token has changed
ENF58_Q_CHECKPOINT
A checkpoint has occurred on the printer on which the data set is printing.
ENF58_SYS_HOLD
System hold reason — refer to IAZOHLD for possible values
ENF58_JES_NAME
JES2 Member Name / JES3 MAIN name
ENF58_REASON
Reason text
ENF58_CTOKEN
Data Set Client Token
ENF58_NEW_CTOKEN
New client token that should replace the CTOKEN for a TOKEN_CHANGE ENF type

You should determine what action you need to take based on this event. For example, if you receive a signal with ENF58_Q_PURGE it usually means that you should delete from your list all information pertaining to the dataset with the CTOKEN of ENF58_CTOKEN.

To take action on the CTOKEN, you must first go through your CTOKEN list and issue IAZXCTKN macros, comparing ENF58_CTOKEN to CTOKENs from your list until you find the CTOKEN specified in the signal in your list. If ENF58_QUALIFIER is ENF58_Q_JOB_CHANGE, it means that ENF58_CTOKEN is a job level CTOKEN and you must go through your entire list of CTOKENs until you have identified, and taken action on, all data set level tokens covered by the job level CTOKEN.

Note:
  1. When ENF58_QUALIFIER is ENF58_Q_JOB_CHANGE, the CTOKEN in ENF58_CTOKEN is a job level CTOKEN. At all other times it is a data set level CTOKEN.
  2. When ENF58_QUALIFIER is ENF58_Q_TOKEN_CHANGE, the ENF58 parameter list contains a new CTOKEN and ENF58_LENGTH reflects the existence of this new CTOKEN.
  3. When an event with ENF58_Q_TOKEN_CHANGE is received, the CTOKEN in your list should be replaced with the contents of ENF58_NEW_CTOKEN. This is the only time that you should change the contents of a CTOKEN. Replacing this CTOKEN does not change the ordering of the CTOKEN you previously had in your list for this data set.
  4. ENF58_NEW_CTOKEN is present only when ENF58 QUALIFIER is ENF58_Q_TOKEN_CHANGE. ENF58_LENGTH is larger for this qualifier type than it is for other types.
  5. When an event with ENF58_Q_CHECKPOINT is received, the below fields are also present and contain the status of the print at the time that the checkpoint is taken.
    ENF58_COPY
    Checkpointed copy count
    ENF58_RECORD
    Checkpointed current record
    ENF58_PAGE
    Checkpointed current page

    These fields are present only when ENF58_QUALIFIER is ENF58_Q_CHECKPOINT. ENF58_LENGTH is larger for this qualifier type than it is for other types except ENF58_NEW_CTOKEN.

    If checkpoints occur frequently, ENF58 checkpoint signals may be generated at a fast rate.

    If a restart of JES or the printer occurs after a checkpoint, the next checkpoint could be for a page or record count that represents reprocessed records or pages. This is because after a restart a writer will continue at the last checkpointed record or page, not the last one that completed printing.

  6. Start of changeTrace ID 43 traces ENF58 events that are sent and trace ID 44 traces ENF58 events that are received.End of change

See z/OS MVS Programming: Authorized Assembler Services Guide and z/OS MVS Programming: Authorized Assembler Services Reference EDT-IXG for information about using the ENFREQ macro and coding the listen exit.

Go to the previous page Go to the next page




Copyright IBM Corporation 1990, 2014