It is important to remember that Exit 6 is invoked because either:
- The converter just completed converting a JCL statement to C/I
text
- The converter completed processing the entire job.
You could implement Exit 6 to keep certain counters—for instance,
the number of DD cards received. Then, when the JCL for the entire
job has been processed, the second part of your routine, the part
that receives control when the code in R0 is 4 (or X006IND
is set to X006CEND), can determine whether to allow the job to
continue based on the contents of these counters.
You should use extreme caution when modifying C/I text. If any
of your changes cause a job to fail (because of an interpreter error),
there will be no correlation of the error with the resulting abend
on the user's output. To modify or examine the C/I text:
- Ensure register 0 contains a X'00' (or X006IND is
set to X006TEXT) to indicate the invocation of Exit 6 is to process
a converted JCL statement.
- Use any information from the C/I text for any installation-written
control blocks.
- Make any necessary modifications to the C/I text. z/OS MVS Installation Exits describes the rules for changing C/I text to ensure the changes
you make will not cause the other problems in your installation, such
as loss of data, loss of integrity and performance.
Note:
- You can issue messages to the JCLMSG data set to track the changes
that you make to the C/I text, because none of your changes will be
reflected in the job output. However, the changes you make will be
reflected in the job's SWA control blocks.
- The current job class for a job is passed to the exit
in XPL field X006JCLS. You can modify this field to alter the job
class for the job. Alternately, you can use the JCTJCLAS and JCXJCLA8
fields in the JCT. When conversion and all Exit 6 processing is completed
for a job, JES2 uses these fields to update the corresponding JQE
fields JQEJCLAS and JQXJCLAS. JES2 also ensures that these changes
are checkpointed. Ensure that the specified job class exists to avoid
a resulting job failure.
- If you need to change the job priority, use the JCTIPRIO
fields in the JCT. When conversion and all Exit 6 processing is completed
for a job, JES2 will use this field to update the corresponding JQE
field JQEPRIO. JES2 also ensures that these changes are checkpointed.
- The current scheduling environment for a job is passed
to the exit in the XPL field X006SCHE. You can modify this field to
alter the scheduling environment for the job. Alternatively, you can
supply a scheduling environment directly in the JCTSCHEN field in
the JCT, which overrides any value that is specified on the job card.
The converter validates the scheduling environment after Exit 6 receives
control. If the scheduling environment is not valid, JES2 fails the
job with a JCL error. Alternatively, you can update the internal text
for the job card to specify a new scheduling environment.
The
current hold state of the job is passed to the exit in bit X006HOLD
of the XPL. You can modify this bit to alter the current hold status
of the job. Alternatively, you can set bit JCTTHOLD in the JCT.
- Set the appropriate return code in register 15 or perform additional
processing.
If you decide to fail the job, you should issue error messages
to the operator and to the user. You can fail the job in Exit 6 by
either:
- Setting flag CNMBFJOB in byte CNMBOPTS of the CNMB. See z/OS MVS Installation Exits for information about obtaining and initializing the CNMB. If
you set this flag, the converter continues to convert the job's JCL
and will fail the job after it has completely processed the job.
You can only fail the job in this manner when register 0 contains
a X'00'.
- Setting a return code of 8 in register 15 before returning to
JES2.
If you want to issue messages to the:
- JCLMSG data set, you must obtain a CNMB and initialize it with
the message text. You can not issue any messages to the JCLMSG data
set, if this is the last invocation of the exit (register 0 contains
a 4). See z/OS MVS Installation Exits for additional information about how to initialize the CNMB.
- Operator or user, issue a $WTO macro.