There has always been a need to automate date cards, JCL overrides and SYSIN input parameters in batch jobs. Unicenter CA-Jobtrac provides three features which allow you to automate your JCL to handle these processes.
The Automatic JCL Override (AJO) feature allows for automatic deletion and addition of JCL statements. The Automatic Date Insertion (ADI) feature allows you to insert dates in JCL SYSIN control cards or any 80-byte JCL record. The JCL Management Facility (JMF) feature allows you to change global variables and dates in JCL or Procs. These features only work with jobs submitted by Unicenter CA-Jobtrac. These features also interface with JCLTRAC providing the correct JCL resolution and with each other. Below are sample solutions that can be used as guideline in using each feature.
Automatic JCL Override allow for you to select JCL statements to be included in the submitted JCL by specifying a process period or generic date. For example, you run a job to execute an IEBGENER every Tuesday and the rest of the week you want it to execute an IEFBR14. You could have this set up two run two different jobs or using process periods you can do the following with AJO:
Cols. 60 73
// job //SCHED EXEC PGM=IEFBR14 M.WTFSS I=SCHD //ONLYTUE EXEC PGM=IEBGENER TUESDAY I=SCHD
The above job will include JCL to do execute IEFBR14 everyday except for Tuesdays, the IEBGENER will be inserted only on Tuesdays. AJO can be used on any JCL statement. AJO will also allow you to specify generic dates for selection of JCL statements instead of using standard process periods. Additional information can be found in the CA-Jobtrac Release 3.5 Extended Scheduling Guide.
Automatic Date Insertion (ADI) is used to calculate and insert dates in the correct format in a date control card. By using ADI you can reduce the chance of error if done manually on a daily bases.
For example, you run a job that runs daily and you want the date control card to reflect the current date. You could do this manually but there is a chance that the wrong date could be coded causing incorrect results and reruns. Below is an example of the ADI control card (ADI control card is always prefixed with a ':') following the SYSIN DD. When it is encountered Unicenter CA-Jobtrac will insert the date or date calculation that you specified in the Unicenter CA-Jobtrac DATELIB PRODDATE member.
The ADIDATE date card is defined in the PRODDATE member of DATELIB file to create a date card of the format yy/mm/dd. ADI variables \Y (year), \M (month), and \D (Day) are user to define the date. The following it the definition for the ADI variable:
Here is what the JCL looks like before submission, using the ADIDATE variable.
// JOB //STEP1 EXEC PGM=IEBGENER //SYSPRINT DD SYSOUT=* //SYSUT1 DD DUMMY //SYSUT2 DD SYSOUT=* //SYSIN DD * :ADIDATE
Here is the JCL Uncenter CA-Jobtrac will submit to the operating system:
// JOB //STEP1 EXEC PGM=IEBGENER //SYSPRINT DD SYSOUT=* //SYSUT1 DD DUMMY //SYSUT2 DD SYSOUT=* //SYSIN DD * 03/12/22
Additional information can be found in the CA-Jobtrac Release 3.5 Extended Scheduling Guide on how to define the ADI control record. Additionally, you can use ADI to insert JMF variables.
The JCL Management Facility (JMF) is the most robust of the three facilities. JMF can be used to insert JCL substitution by a date range, it can be used to substitute any JCL statements or SYSIN data. JMF allows date arithmetic for dynamic date variables based on the Unicenter CA-Jobtrac OSD or TOD clock. You also have the ability to restrict JMF usage by location.
Below are examples of its usage:
JMF Variables as Cataloged Procedures
You can use a JMF variable as a substitution variable of a cataloged procedure. The JMF variable is resolved before the JES expansion of the cataloged procedure.
For example, the following is in the JMFSYM01 member:
And we have a cataloged procedure called ABC as follows:
//ABC PROC MEM='',D='' //S1 EXEC PGM=IEBGENER //SYSUT1 DD DISP=OLD,DSN=&D(&MEM) //SYSUT2 DD SYSOUT= //SYSIN DD DUMMY //PEND
To invoke the above procedure we have JCL as follows:
//TESTJ1 JOB (ACCNT111),'JMF_TEST2',CLASS=A //STEP1 EXEC ABC, // MEM=&:B,D=&:A /
JMF Variables as SYSIN Data
You can use a JMF quoted variable as SYSIN DD data. The limit is 44 characters. If you want to supply a full 80 characters of data, use two JMF variables. When specifying the data portion in the JMFSYM01 member, you can include spaces in the value by enclosing the value in single or double quotes. For example:
A='123456789 123456789 123456789 123456789' B=AAAAAAAAAABBBBBBBBBBCCCCCCCCCCDDDDDDDDDD
The JMF variables above each represent a 40-character string of numeric data. JMF variables A and B could be used as input to a program as follows:
//TEST1 JOB (ACCNT 1),'JMF_TEST', //CLASS=A,REGION=512K //STEP1 EXEC PGM=ABCD111 //STEPLIB DD DISP=SHR,DSN=TEST.CONTROL.LOAD //SYSUT1 DD DISP=OLD,DSN=MONTH.MASTER //SYSUT2 DD DISP=(,CATLG),DSN=NEW.MONTH.MASTER //DCB=(LRECL=1 ,BLKSIZE=1 ,RECFM=FB),UNIT=SYSDA, //SPACE=(TRK,(1 ,1 ),RLSE) //SYSIN DD &:A.&:B &:B.&:A /
JMF Variables as Positional Values and Keyword Values
You can use a JMF variable as a JCL positional value. The JMF variable is resolved before the expansion of the JCL by the OS converter. For example, the following is in the JMFSYM01 member:
ACT1 ="(ACCT1 1)" Positional Values PRDPGM5="PAYGP_5 " Positional Values TSOB1=HOU.TSO 2.BKUP(+1) Keyword Values EXP1="EXPDT=99365" Keyword Values
To use the above JMF variables in a production job, the JCL could be as follows (Unicenter CA-Jobtrac JCL member BKTSO002):
//BKTSO 2 JOB &:ACT1 ,'&:PRDPGM5 ',CLASS=D,MSGCLASS=X //DUMPTSO EXEC PGM=ADRDSSU,REGION=4 96K //SYSPRINT DD SYSOUT=H // //FULL PACK BACKUP OF TSO 2 // //TAPE1 DD DSN=&:TSOB1,DISP=(,CATLG,DELETE), //LABEL=&:EXP1,DCB=GSI.MODDSCB,UNIT=TAPE //SYSIN DD DUMP - DATASET(INCLUDE()- EXCLUDE(.HASPACE,.HASPCKPT))- ALLDATA(SYS1.JOBTRAC)- INDYNAM(TSO 2,SYSALLDA)- OUTDD(TAPE1)- CANCELERROR - TOL(ENQF)- SHR / //
Concatenating JMF Variables
You can concatenate previously defined JMF variables. The JMF variables are resolved before the expansion of the JCL by the OS converter. For example, the following is in the JMFSYM01 member:
A=1234 B=ABCD C='000999' D=&:A.&:B.&:C E =&:A..&:B..&:C D would have a value of 1234ABCD000999. E would have a value of 1234.ABCD.000999.
You cannot use dynamic variables (&:GMM) and non-dynamic variables (A=B) elements in a concatenated string. For example:
These three features allows Unicenter CA-Jobtrac Job Management to automate your JCL and prevent costly reruns. Additional information on setting up and implementing these features can be found in the CA-Jobtrac Release 3.5 Extend Scheduling Guide.