|
As ever, you use these free programs
and modifications at your own risk. Abbydale Systems LLC. do
not accept any responsibility for any failure or outage caused by
this software or these modification. This software is working on our own system.
It is the users responsibility to assess the usefulness of this software to their own site.
Feel free to use any of the free software on this
site but please honor the copyright.
WARNING!
Any failure in a JES2 Exit may result in an
unstable or potentially unusable system. Please use extreme
caution when modifying, removing or reinstalling any JES exits.
Reading this document does not make you an
expert!
This page details some enhancements to the JES2
Mellon Bank modifications that were being supported and distributed by
Stephen McColley. These modifications are now called the Shared Spool Mods (SSM).
The
modifications available on the CBT tape files are as follows:
What are the Mellon Bank Modifications?
The original Mellon Bank modifications added
support to JES2 for some basic job scheduling functions that were already
available on JES3. These were primarily by use of the /*AFTER, /*BEFORE and /*CNTL
JECL cards.
How do they work?
The modifications work as an interdependent set
of JES2 exits. These exits are documented thoroughly in the SSM
documentation and it is not our intention to further document them here, but it
should be noted that if your site currently uses an old version of the SSM
(Mellon Bank Modifications) you may need to review how the exits currently work
to see if they match the way the new SSM modifications work.
For example at one site if the jobname on the
/*AFTER was not in the system when the job was submitted, then the job became
eligible for execution immediately. However, in their old system, this was not
the case. The job remained held until a job matching that of the name on the
/*AFTER card had run. The site depended on this feature for scheduling jobs.
Another issue was that one site had allowed for 8 /*CNTL
cards to be used but 'out of the box' SSM allows only 5.
This page will detail the changes needed to make
SSM work the way the site was already using the old exits.
It was decided to limit the number of changes in the SSM code so
that the support for SSM could remain with McColley System group for the most
part. The only exception to this was for increasing the number of /*CNTL cards
allowed.
Increasing the Number of /*CNTL cards.
In order to increase the amount of permitted /*CNTL
cards you will need to change 2 of the SSM assembler macros ($STJCTX & $STQNAME).
As shipped SSM allows for 5 /*CNTL cards. To increase this to 10 make the
following changes (changes are highlighted and underlined):
|
$STJCTX
|
* The following line
was commented out as part of CNTLPTF fix *
*JCXDNAM DS CL45 CNTLPTF NAMES FROM CNTL CARDS AND THEIR
UJCXDNAM DS CL90
CNTLPTF NAMES FROM CNTL CARDS AND THEIR
|
|
|
|
$STQNAME
|
* The following line
was commented out as part of CNTLPTF fix *
*BRDNAME DS CL45 CNTLPTF NAMES FROM CNTL CARDS AND SHARE TYPES
UBRDNAME DS
CL90 CNTLPTF NAMES FROM CNTL CARDS AND SHARE TYPES
. ....and . * The following line was commented out as part of CNTLPTF fix *
*BRNCTL EQU X'08' MAX # OF NAMES INCLUDING ***CNTLPTF
UBRNCTL EQU
X'0D' MAX # OF NAMES INCLUDING ***CNTLPTF
|
|
Once these macros have been
changed you will need to assemble all the SSM exits again and re-IPL. You will
probably have to IPL all members of the shared spool in order for the fix to be
fully implemented.
Holding JOBS with missing /*AFTER jobs
This fix is a little trickier as
it involves an additional 4 JES exits. These exits should be 'stacked' with the
SSM exits so they can be kept as separate exits. The additional exits are for
EXIT07, EXIT28, EXIT49 with one new exit to support a new operator command for
releasing jobs manually if needed (EXIT05). The zip file with all of these exits in is available from
here.
JES EXIT07 (BSLJX07B) |
EXIT07 is the JES2 $JCT read/write exit. |
|
This exit is used as a job termination
exit to release the hold on jobs that have the terminating job defined on a /*AFTER
card providing that the terminating job was successful. It will search through
the JES2 JQE's and free up the hold if the terminating job is a prerequisite for a
job awaiting execution, again, providing that the terminating job was successful.
'Successful' means that the job ended with a maximum condition code no greater than
condition code 4.
The exit navigates through the input
queue job classes looking for jobs that have a matching /*AFTER card for the job that
is finishing. If it finds one that matches the input queue job's JQE is updated to
release the /*AFTER condition.
If this exit is not activated then the
/*AFTER condition gets released when a job ends regardless of if it was successful
or not.
This EXIT has the ability to real screw
up JES2 if incorrectly coded; therefore it builds its own ESTAE routine in order to
try to protect JES2 from any failures within the code.
The SSM (Mellon Bank) JQE extension (STQNAME)
macro is used by this EXIT. If
the SSM modifications are disabled then this will not adversely affect this
exit. The exit can remain in place regardless of the status of the SSM JES
exits.
If the structure or length of any of the fields of SSM JQE
extension macro is altered then this exit will need to be reassembled to pick up the new structure. |
|
|
JES EXIT28 (BSLJX28B) |
EXIT28 is the JOB termination exit. |
|
The only purpose of this exit is to set bit 1 of the
field JCTUSER0 on if the task terminating is a started task (STC), JOB or a TSO user (TSU)
This bit is set so that BSLJX07B (EXIT07C) is forced to
search through the JQE's to look for any jobs that may be waiting for this task
to terminate.
This exit is critical to the correct functioning of SSM if you want a job with a
/*AFTER card to wait until the job specified on that card runs even if it isn't in the system when the job is originally submitted.
This exit requires that SSM is installed in order for it to do
anything!
|
|
|
JES EXIT49 (BSLJX49B) |
EXIT49 is the JOB queue work selection QGOT exit. |
|
This exit is called after JES2 has selected job for potential execution. The exit is
given the chance to accept or reject the selection. The exit is needed to prevent SSM from allowing jobs to run when the job specified on a /*AFTER card is not yet in the
system.
If you disable this exit then the requirement that a prerequisite job is
already in the system before the dependent job is submitted is in effect. With this
exit that is not the case and a job will not be considered eligible for selections
until the prerequisite job terminates. This exit uses the SSM macro (STQNAME).
If the SSM
modifications are disabled this should not adversely affect this exit. The exit
can remain in place regardless of the status of the SSM JES exits.
If the structure or length of any of the
fields of SSM JQE
extension macro is altered then this exit will need to be reassembled to pick up the new structure. |
|
|
JES EXIT05 (BSLJX05B) |
EXIT05 is the JES2 command
preprocessor exit. |
|
This exit gets control after a JES2 command is entered.
Its sole purpose is to allow the operators to release the /*AFTER condition on
a job.
The format of the release command is $AJnnnnn,AFT
The release command only works when it is issued using
the job number. It will not work at all using the jobname (i.e. you have to
use $AJ1234,AFT not $AJ'jobname',AFT)
The exit establishes an ESTAE environment to make sure
that any failure in the exit will not result in an unusable JES2 system. Switching off this EXIT05C will not cause any issues
other than the fact that a job with an unsatisfied /*AFTER condition will never be
eligible for execution until the job specified on the /*AFTER card has run. The only way
of releasing this condition would be to run a job with the same name as
that coded on the /*AFTER card.
This exit uses the SSM macro (STQNAME)
If the SSM
modifications are disabled this should not adversely affect this exit. The exit
can remain in place regardless of the status of the SSM JES exits.
If the structure or length of any of the
fields of SSM JQE
extension macro is altered then this exit will need to be reassembled to pick up the new structure. |
|
|
|
|