|
- Exit 51 can be used to alter the new phase for the job. However,
the new phase must be a later phase than the current one. If the new
phase is not later, the change will be ignored.
- If a JCT address is passed to the exit, the job has completed
the current phase of processing including writing out the JCT. After
the exit completes, the JCT will not be written by JES2. Installations
should avoid updating the JCT in exit 51. Instead, earlier exits (such
as exits 20 and 50) should be used to alter the JCT.
- JCT extensions can be used to pass information from earlier exits
to exit 51. Input processing can create both local and SPOOLed JCT
extension. These can be used to pass information from user environment
exits (such as 52, 53, and 54) to process in the JES2 main task. Local
extensions are also supported in exits 2, 3, 4, and 20 so that a common
set of services can be used for all job input processing.
- Code in exit 51 must check the X051NOCH bit in X051COND and not
attempt to change the phase of the job if this bit is on. In addition,
if the X051RBLD bit is on in X051COND, the job is on the rebuild queue
(an error queue) and will be deleted when it is no longer busy. Jobs
on the rebuild queue should not be processed, because errors have
already been detected in the checkpointed data structures. They are
passed to exit 51 to allow complete tracking of the job.
- Internal reader and NJE over TCP/IP processing occurs
outside the JES2 address space. However, the code must reach across
into the JES2 address space to perform some key functions (like build
JQEs and queue them to the next phase). This processing is accomplished
using a new service call $JQESERV. There is also a set of PCEs (the
JQE Request Processors) in the main task that handle these requests
(10 of them in all). It is under these PCEs that the $QMOD is done
and that exit 51 is called. The code is careful not to $WAIT for any
extended length of time so that the JQE Request Processors can process
as many requests as possible. Adding a $CBIO to write the JCT in exit
51 will limit the number of jobs that can be processed by a given
JQE Request Processor to one per $JCT write. The design point for
internal readers was a single reader submitting hundreds of jobs at
once and completing input processing as fast as possible. If this
is the environment you are in, the extra I/O will impact performance.
If jobs are arriving at a more leisurely rate, you can wait for a
$CBIO.
- Do not issue a $GETMAIN
storage request for subpool 0 (the default for $GETMAIN), or for subpool
240 or 250, which are translated to subpool 0 for authorized callers.
Doing so would establish subpool 0 with an assigned key of 0, which
can cause problems for a job step application that shares subpool
0 and requests subpool 0 storage, thereby obtaining the storage in
key 0. To avoid this issue the exit should issue a $GETMAIN request
for subpool 229 or 230, which are high private subpools intended for
use by authorized functions, whereas subpools 0-127 are in low private
subpools and are part of the user region.
|