Control-M JCL Verify Utilities
This chapter provides a detailed description of the Control-M JCL Verify utilities.
CTJENR - JCL Job Reformatting and Enforcement
The CTJENR utility is capable of reformatting or enforcement of JCL jobs. CTJENR can either process a single job or multiple jobs (for example, reformatting all the jobs in a library).
CTJENR Procedure Parameters
The utility receives the following parameters from the JCL procedure:
Table JV1 CTJENR PROCEDURE parameters
Parameter |
Description |
---|---|
ENF |
Whether to invoke the enforcement rules. Valid values are:
|
REF |
Whether to invoke the reformatting rules. Valid values are:
|
SAV |
Whether to save the changed JCL statements. Valid values are:
|
OVR |
Whether to override the existing member. Valid values are:
|
CTM |
Whether to consider Control-M AutoEdit variables. Valid values are:
|
NODE |
Name of the remote verification node. The default is LOCAL. |
ENV |
Whether to use the rules that are defined for the specified environment, in addition to the GENERAL rules, for the site standard verifications. If the keyword GENERAL is specified, only the GENERAL rules are used for the site standard verifications. |
NODE=<IOAGATE node> |
Identifies the target SYSPLEX by providing the NODE of the IOAGATE which runs in that target SYSPLEX. This IOAGATE must be connected to the IOAGATE in the LOCAL SYSPLEX. When the target SYSPLEX is the local SYSPLEX, then this parameter should be omitted. The value LOCAL is also supported to mean the local SYSPLEX. The verification request will be forwarded to the CTJMON associated with the IOAGATE/CTJAS with the given NODE. The request may be forwarded to another CTJMON depending on the SYSTEM and IOA ENV parameters. Specifying only the NODE in another SYSPLEX means that the request will be performed by the CTJMON which is associated with the IOAGATE with the given NODE. An asterisk (*) is not a valid value |
If any of the PROCEDURE parameters are omitted, the default values are used.
When running both REF=Y and ENF=Y together, enforcement is executed first, followed by reformatting.
CTJENR SYSIN Parameters
SYSIN statements for CTJENR must comply with the following general syntax rules:
-
Parameters may be entered in columns 1-71.
-
Do not split parameters between SYSIN records.
The following table describes the guidelines for the use of SYSIN parameters:
Table JV2 CTJENR SYSIN parameter guidelines
Type of parameters |
Parameter keywords |
Guidelines |
---|---|---|
Options parameters |
|
|
Enforcement/Reformat parameters |
|
|
The following keywords are used in the SYSIN statements:
Table JV3 CTJENR SYSIN statement keywords
Parameter |
Description |
---|---|
LIB |
Specifies the library where the JCL is located. Mandatory. |
MEM |
Specifies the member where the JCL is located. Optional. Supports masking (* and ?). |
SAVLIB |
Specifies the library where the JCL will be saved. |
SAVMEM |
Specifies the member where the JCL will be saved. Optional. (Applicable for one member only). |
NODE=<IOAGATE node> |
Identifies the target SYSPLEX by providing the NODE of the IOAGATE which runs in that target SYSPLEX. This IOAGATE must be connected to the IOAGATE in the LOCAL SYSPLEX. When the target SYSPLEX is the local SYSPLEX, then this parameter should be omitted. The value LOCAL is also supported to mean the local SYSPLEX. The verification request will be forwarded to the CTJMON associated with the IOAGATE/CTJAS with the given NODE. The request may be forwarded to another CTJMON depending on the SYSTEM and IOA ENV parameters. Specifying only the NODE in another SYSPLEX means that the request will be performed by the CTJMON which is associated with the IOAGATE with the given NODE. An asterisk (*) is not a valid value |
SYS=<system> |
Identifies the target SYSTEM in the target SYSPLEX. A blank or an asterisk (*) specifies any SYSTEM in the target SYSPLEX, and when IOA ENV is not blank or *, preference is given to SYSTEM with the same name as the originating SYSTEM. |
IE=<ioa env> |
Identifies the target CTJMON by the QNAME of the IOA environment in the target SYSPLEX/SYSTEM. A blank or an asterisk (*) specifies any IOA environment at the target SYSPLEX, and when SYSTEM is not blank or *, preference is given to the same IOA environment as that of the originating CTJMON. |
PROCDD |
Enables you to change the PROCLIB where the procedures are resolved. PROCDD is the name of a predefined DD card from which the procedures are resolved when the JCLs are verified. For example, PROC01. The DD card must be predefined in JES PROCLIB or in the CTJPRC member and will be the only procedure library searched. For more information, see JES2/3 Predefined PROCLIBs in the Control-M JCL Verify User Guide. |
Activating the CTJENR Utility
You can activate the utility through a batch JCL. The following is a sample batch JCL used to invoke CTJENR:
// .... JOB ....
//JCLENR EXEC CTJENR,parameters
//SYSIN DD *
statement1
statement2
...
...
...
/*
//
CTJENR Return Codes
Table JV4 CTJENR Return Codes
Code |
Description |
---|---|
0 |
Operation performed successfully. |
4 |
Control-M JCL Verify discovered an error. Review the status and decide if there is a need to make a change in the job. |
8 |
Control-M JCL Verify discovered a problem in the job. |
12 |
Error in the CTJENR parameters or statements. Review the previous error messages in JOBLOG and SYSPRINT, and then correct the parameters or the control statements. |
16 and above |
Internal error in the Control-M JCL Verify product. Try again. If the problem reoccurs, contact BMC Customer Support. |
CTJENR output report
The report includes
-
the JCL listing as received from z/OS
-
the enforced and/or reformatted JCL (depending on the specified PROCEDURE parameters)
-
messages issued by z/OS
-
messages issued by the Control-M JCL Verify DO MSG command
-
the original JCL records (if SHOW ORIGINAL Y is defined in rules)
-
lines with AutoEdit variables before and after they are resolved, each on a separate line
-
messages issued by JVER which are separated into 3 severity types: I-Information, W-Warning, and E-Error
-
The user can choose the minimum level of messages to be issued using the CTJPARM parameter MSGLEVEL, which can be overridden from the interfaces. These messages are issued only after the job has passed the valid syntax check.
CTJENR Examples
The examples in this section perform enforcement or reformatting, or both, on the sample JCL shown below. In these examples, the sample enforcement and reformatting rules that are used are provided in the installation.
It is assumed that the following JCL member, MEM1, is located in the WORK.LIB library.
Original sample JCL used in the enforcement or reformatting examples
//IEFBR14 JOB ,BR14,MSGCLASS=X,
// NOTIFY=USER,MSGLEVEL=(1,1)
//S1 EXEC PGM=IEFBR14,COND=EVEN
//NEWTEMP DD SPACE=(TRK,1),DSN=NEW.FILE.NO.DISP
//FILEOK DD DISP=SHR,DSN=CTJP.V900.JCL.SAMPLES
CTJENR Example 1
In this example, the sample JCL is reformatted (without saving the resulting JCL) using the following batch utility:
Batch utility for reformatting sample JCL
//JCLENR EXEC CTJENR,REF=Y
//SYSIN DD *
LIB=WORK.LIB MEM=MEM1
The following is the output of the utility:
SYSPRINT from CTJENR batch
CTJU00I Control-M/JCL Verify Utility started. Date/Time 25.08.15 / 15:30
CTJU01I REF=Y ENF=N SAV=N OVR=N ENV=GENERAL CTM=Y NODE=LOCAL
CTJU01I LIB=WORK.LIB MEM=MEM1
CTJ000I Control-M/JCL Verify is starting. Level IJ10248
CTJM0DI Control-M/JCL Verify processing performed by Monitor L0JMON /
CTJE13I Control-M/JCL Verify processing REFORMAT
CTJE19I Runtime parameters: SAV=N OVR=N CTM=Y ENV=GENERAL
************************************************************************
CTJ002I * Start processing MEMBER=MEM1 JOBNAME=IEFBR14 *
CTJ008I * DSNAME=WORK.LIB *
************************************************************************
CTJ00SI RULE-INFO: REFORMAT SAMPLE RULE FOR JOB STATEMENT
//IEFBR14 JOB ,BR14,MSGCLASS=X,MSGLEVEL=(1,1),NOTIFY=USER
CTJ00SI RULE-INFO: REFORMAT SAMPLE RULE FOR EXEC STATEMENT
//S1 EXEC PGM=IEFBR14,COND=EVEN
CTJ00SI RULE-INFO: REFORMAT SAMPLE RULE FOR DD STATEMENT
//NEWTEMP DD DSN=NEW.FILE.NO.DISP,
// SPACE=(TRK,1)
CTJ00SI RULE-INFO: REFORMAT SAMPLE RULE FOR DD STATEMENT
//FILEOK DD DSN=CTJP.V900.JCL.SAMPLES,
// DISP=SHR
CTJ009I Processing ended RC=0000 for JOB IEFBR14 MEMBER MEM1
CTJ003I Processing ended RC=0000 REASON 00000000 MEMBER MEM1 DSNAME=WORK.LIB
CTJU02I Control-M/JCL Verify Utility ended. RC=0000
CTJENR Example 2
This example is similar to Example 1, except that in this example the reformatted JCL will be saved to the MEM2 member in the WORK.LIB library.
Batch utility for reformatting sample JCL and saving the resulting JCL
//JCLENR EXEC CTJENR,REF=Y,SAV=Y
//SYSIN DD *
LIB=WORK.LIB MEM=MEM1 SAVLIB=WORK.LIB SAVMEM=MEM2
Reformatted JCL saved in the MEM2 member in the WORK.LIB library
//IEFBR14 JOB ,BR14,MSGCLASS=X,MSGLEVEL=(1,1),NOTIFY=USER
//S1 EXEC PGM=IEFBR14,COND=EVEN
//NEWTEMP DD DSN=NEW.FILE.NO.DISP,
// SPACE=(TRK,1)
//FILEOK DD DSN=CTJP.V900.JCL.SAMPLES,
// DISP=SHR
CTJENR Example 3
In this example, enforcement is performed on the sample JCL (without saving the resulting JCL) using the following batch utility:
Batch utility for enforcement sample JCL
//JCLENR EXEC CTJENR,ENF=Y
//SYSIN DD *
LIB=WORK.LIB MEM=MEM1
The following is the output of the utility:
SYSPRINT from CTJENR batch
CTJU00I Control-M/JCL Verify Utility started. Date/Time 25.08.15 / 15:30
CTJU01I REF=N ENF=Y SAV=N OVR=N ENV=GENERAL CTM=Y NODE=LOCAL
CTJU01I LIB=WORK.LIB MEM=MEM1
CTJ000I Control-M/JCL Verify is starting. Level IJ10248
CTJM0DI Control-M/JCL Verify processing performed by Monitor L0JMON /
CTJE13I Control-M/JCL Verify processing ENFORCEMENT
CTJE19I Runtime parameters: SAV=N OVR=N CTM=Y ENV=GENERAL
************************************************************************
CTJ002I * Start processing MEMBER=MEM1 JOBNAME=IEFBR14 *
CTJ008I * DSNAME=WORK.LIB *
************************************************************************
"THIS RECORD IS ADDED BY ENFORCEMENT SAMPLE RULE ENFSAMP FROM TABLE ENFSAMP"
//IEFBR14 JOB ,BR14,MSGCLASS=X,
// NOTIFY=USER,MSGLEVEL=(1,1)
//S1 EXEC PGM=IEFBR14,COND=EVEN
//NEWTEMP DD SPACE=(TRK,1),DSN=NEW.FILE.NO.DISP
//FILEOK DD DISP=SHR,DSN=CTJP.V900.JCL.SAMPLES
CTJ009I Processing ended RC=0000 for JOB IEFBR14 MEMBER MEM1
CTJ003I Processing ended RC=0000 REASON 00000000 MEMBER MEM1 DSNAME=WORK.LIB
CTJU02I Control-M/JCL Verify Utility ended. RC=0000
CTJENR Example 4
This example is similar to Example 3, except that in this example the JCL will be saved to the MEM2 member in the WORK.LIB1 library.
Batch utility for enforcement of the sample JCL and saving the resulting JCL
//JCLENR EXEC CTJENR,ENF=Y,SAV=Y
//SYSIN DD *
LIB=WORK.LIB MEM=MEM1 SAVLIB=WORK.LIB1 SAVMEM=MEM2
Enforced JCL saved in the MEM2 member in the WORK.LIB1 library
"THIS RECORD IS ADDED BY ENFORCEMENT SAMPLE RULE ENFSAMP FROM TABLE ENFS
//IEFBR14 JOB ,BR14,MSGCLASS=X,
// NOTIFY=USER,MSGLEVEL=(1,1)
//S1 EXEC PGM=IEFBR14,COND=EVEN
//NEWTEMP DD SPACE=(TRK,1),DSN=NEW.FILE.NO.DISP
//FILEOK DD DISP=SHR,DSN=CTJP.V900.JCL.SAMPLES
CTJENR Example 5
In this example, the sample JCL is enforced and reformatted, and then saved to the MEM2 member (if MEM2 already exists, it will be overwritten) in the WORK.LIB1 library using the following batch utility:
Batch utility for enforcement and reformatting of the sample JCL and saving the result
//JCLVENR EXEC CTJENR,ENF=Y,REF=Y,SAV=Y,OVR=Y
//SYSIN DD *
LIB=WORK.LIB MEM=MEM1 SAVLIB=WORK.LIB1 SAVMEM=MEM2
The following is the output of the utility:
SYSPRINT from CTJENR batch utility for enforcement and reformatting of the sample JCL
CTJU00I Control-M/JCL Verify Utility started. Date/Time 25.08.15 / 15:40
CTJU01I REF=Y ENF=Y SAV=Y OVR=Y ENV=GENERAL CTM=Y NODE=LOCAL
CTJU01I LIB=WORK.LIB MEM=MEM1 SAVLIB=WORK.LIB1 SAVMEM=MEM2
CTJ000I Control-M/JCL Verify is starting. Level IJ10248
CTJM0DI Control-M/JCL Verify processing performed by Monitor L0JMON /
CTJE13I Control-M/JCL Verify processing REFORMAT AND ENFORCEMENT
CTJE19I Runtime parameters: SAV=Y OVR=Y CTM=Y ENV=GENERAL
************************************************************************
CTJ002I * Start processing MEMBER=MEM1 JOBNAME=IEFBR14 *
CTJ008I * DSNAME=WORK.LIB *
************************************************************************
"THIS RECORD IS ADDED BY ENFORCEMENT SAMPLE RULE ENFSAMP FROM TABLE ENFSAMP"
CTJ00SI RULE-INFO: REFORMAT SAMPLE RULE FOR JOB STATEMENT
//IEFBR14 JOB ,BR14,MSGCLASS=X,MSGLEVEL=(1,1),NOTIFY=USER
CTJ00SI RULE-INFO: REFORMAT SAMPLE RULE FOR EXEC STATEMENT
//S1 EXEC PGM=IEFBR14,COND=EVEN
CTJ00SI RULE-INFO: REFORMAT SAMPLE RULE FOR DD STATEMENT
//NEWTEMP DD DSN=NEW.FILE.NO.DISP,
// SPACE=(TRK,1)
CTJ00SI RULE-INFO: REFORMAT SAMPLE RULE FOR DD STATEMENT
//FILEOK DD DSN=CTJP.V900.JCL.SAMPLES,
// DISP=SHR
CTJ009I Processing ended RC=0000 for JOB IEFBR14 MEMBER MEM1
CTJ003I Processing ended RC=0000 REASON 00000000 MEMBER MEM1 DSNAME=WORK.LIB
CTJE11I Updated JCL saved to member MEM2 in library WORK.LIB1
CTJU02I Control-M/JCL Verify Utility ended. RC=0000
Processed JCL saved in the MEM2 member in the WORK.LIB1 library
"THIS RECORD IS ADDED BY ENFORCEMENT SAMPLE RULE ENFSAMP FROM TABLE ENFSAMP"
//IEFBR14 JOB ,BR14,MSGCLASS=X,MSGLEVEL=(1,1),NOTIFY=USER
//S1 EXEC PGM=IEFBR14,COND=EVEN
//NEWTEMP DD DSN=NEW.FILE.NO.DISP,
// SPACE=(TRK,1)
//FILEOK DD DSN=CTJP.V900.JCL.SAMPLES,
// DISP=SHR
CTJENR Example 6
In this example, multiple JCL members (specified by MEM00*) are reformatted and enforced, and then saved to the WORK.LIB1 library (if there are members that already exist, they will be overwritten) using the following batch utility:
Batch utility for enforcement and reformatting of the multiple JCL members and saving the results
//JCLVENR EXEC CTJENR,ENF=Y,REF=Y,SAV=Y,OVR=Y
//SYSIN DD *
LIB=WORK.LIB MEM=MEM00* SAVLIB=WORK.LIB1
The following is the output of the utility:
SYSPRINT from CTJENR batch utility for enforcement and reformatting of the multiple JCL members
CTJU00I Control-M/JCL Verify Utility started. Date/Time 25.08.15 / 15:50
CTJU01I REF=Y ENF=Y SAV=N OVR=N ENV=GENERAL CTM=Y NODE=LOCAL
CTJU01I LIB=WORK.LIB MEM=MEM00*
CTJ000I Control-M/JCL Verify is starting. Level IJ10248
CTJM0DI Control-M/JCL Verify processing performed by Monitor L0JMON /
CTJ004I Processed 000002 members from WORK.LIB
CTJE13I Control-M/JCL Verify processing REFORMAT AND ENFORCEMENT
CTJE19I Runtime parameters: SAV=N OVR=N CTM=Y ENV=GENERAL
************************************************************************
CTJ002I * Start processing MEMBER=MEM0001 JOBNAME=IEFBR14 *
CTJ008I * DSNAME=WORK.LIB *
************************************************************************
"THIS RECORD IS ADDED BY ENFORCEMENT SAMPLE RULE ENFSAMP FROM TABLE ENFSAMP"
CTJ00SI RULE-INFO: REFORMAT SAMPLE RULE FOR JOB STATEMENT
//IEFBR14 JOB ,BR14,MSGCLASS=X,MSGLEVEL=(1,1),NOTIFY=USER
CTJ00SI RULE-INFO: REFORMAT SAMPLE RULE FOR EXEC STATEMENT
//S1 EXEC PGM=IEFBR14,COND=EVEN
CTJ00SI RULE-INFO: REFORMAT SAMPLE RULE FOR DD STATEMENT
//NEWTEMP DD DSN=NEW.FILE.NO.DISP,
// SPACE=(TRK,1)
CTJ00SI RULE-INFO: REFORMAT SAMPLE RULE FOR DD STATEMENT
//FILEOK DD DSN=CTJP.V900.JCL.SAMPLES,
// DISP=SHR
CTJ009I Processing ended RC=0000 for JOB IEFBR14 MEMBER MEM0001
CTJ003I Processing ended RC=0000 REASON 00000000 MEMBER MEM0001 DSNAME=WORK.LIB
CTJE19I Runtime parameters: SAV=N OVR=N CTM=Y ENV=GENERAL
************************************************************************
CTJ002I * Start processing MEMBER=MEM0002 JOBNAME=IEFBR14 *
CTJ008I * DSNAME=WORK.LIB *
************************************************************************
"THIS RECORD IS ADDED BY ENFORCEMENT SAMPLE RULE ENFSAMP FROM TABLE ENFSAMP"
CTJ00SI RULE-INFO: REFORMAT SAMPLE RULE FOR JOB STATEMENT
//IEFBR14 JOB ,BR14,MSGCLASS=X,MSGLEVEL=(1,1),NOTIFY=USER2
CTJ00SI RULE-INFO: REFORMAT SAMPLE RULE FOR EXEC STATEMENT
//S1 EXEC PGM=IEFBR14,COND=EVEN
CTJ00SI RULE-INFO: REFORMAT SAMPLE RULE FOR DD STATEMENT
//NEWTEMP DD DSN=NEW.FILE.NO.DISP,
// SPACE=(TRK,1)
CTJ00SI RULE-INFO: REFORMAT SAMPLE RULE FOR DD STATEMENT
//FILEOK DD DSN=CTJP.V900.JCL.SAMPLES,
// DISP=SHR
CTJ009I Processing ended RC=0000 for JOB IEFBR14 MEMBER MEM0002
CTJ003I Processing ended RC=0000 REASON 00000000 MEMBER MEM0002 DSNAME=WORK.LIB
CTJU02I Control-M/JCL Verify Utility ended. RC=0000
CTJMRFLW - JCL Job Flow Verification
In addition to single job verification, Control-M JCL Verify can validate work flows through the verification of the job order and dependencies. Control-M JCL Verify can verify a mixture of Control-M schedule definition and regular JCL jobs.
A procedure, named CTJMRFLW, invokes Control-M to determine the job order and job dependencies. Then, after arranging the jobs and schedule definitions in the order as they are intended to run, CTJMRFLW invokes Control-M JCL Verify for the job flow verification. At each stage of the job flow, Control-M JCL Verify examines the datasets of the previously verified jobs to determine if those datasets still exist or were deleted, and, based on the dependencies, verifies the job flow.
The CTJMRFLW can manage up to 10,000 accumulated datasets that are used by all the jobs that are verified in the execution. The limitation in this utility is not based on the maximum jobs number, but from the number of all the datasets that are processed by all the jobs in the execution.
To verify the current job's datasets, the status of the datasets are determined by the following factors:
-
the entire job flow hierarchy to which the job belongs
-
the previous instances of the datasets
-
all the verified jobs at the parallel hierarchic level, whether they are directly or indirectly related to the job
In some situations, where the results of the dependence analysis might be ambiguous, warning messages are displayed and the user must investigate the situation.
For example, if two jobs are both directly dependent on a previous job, by definition these two jobs will run on the same level of hierarchy, which is lower than the previous job. Even though it is certain that these two jobs will run after the higher-level job, it is not certain in what order the two equal-level jobs will run. The warning messages alert the user to investigate whether the actual order of the jobs will be problematic or not.
Even though that Control-M arranges the JCLs for Control-M JCL Verify, there is a chance that datasets will be allocated or handled besides these JCLs.
CTJMRFLW Parameters
The following parameters are used for the CTJMRFLW procedure:
Table JV5 CTJMRFLW PROCEDURE parameters
Parameter |
Description |
---|---|
ML |
The minimum level of message severity to be issued. Valid values are:
|
FA |
Whether to verify file access privileges. Valid values are:
|
FV |
Whether to perform dataset verification. Valid values are:
|
ME |
Whether to verify that the load modules exist. Valid values are:
|
STDR |
Whether to use the Control-M JCL Verify rules to verify site standards. Valid values:
|
ENV |
Whether to use the rules that are defined for the specified environment, in addition to the GENERAL rules, for the site standard verifications. If the keyword GENERAL is specified, only the GENERAL rules are used for the site standard verifications. |
ODATE |
Original scheduling date of the job, in yymmdd format. Mandatory. |
UT |
Whether to verify the syntax of the IBM utilities (for details, see JCL and syntax verification in the Control-M JCL Verify User Guide) and the DB2 related validation. Valid values are:
|
EMUSRDLY |
EM system name list member. |
AJFSZ |
Active Jobs file size. |
CHARSET |
CHARSET=GS10 for standard English character set. |
CHARST2 |
CHARST2=FM10 for character set that contains box elements. |
OUT |
General SYSOUT class. |
The following keywords are used in the SYSIN (or JOBLIST.DAJOB) statements to perform various verification tasks. The table indicates which keywords are used for each task. For more details, refer to CTMJOB – Order Jobs to the Active Jobs File.
Table JV6 CTJMRFLW JOBLIST.DAJOB statement keywords
Use these keywords: |
Description |
---|---|
ORDER |
Defines a new statement. It is used only for simulation. |
DSN |
Schedule library name where the JCL jobs to be verified are located. Mandatory. |
MEMBER |
Member name where the Control-M Schedule table containing the JCL jobs to be verified is located. Character masking (* & %) is supported so that "MEMBER=*" indicates that all the jobs in the library are to be verified. |
JOB |
Name of the job scheduling definition to be verified. Character masking (* & %) is supported so that "JOB=*" indicates that all the jobs in the table are to be verified. Optional. |
Activating the CTJMRFLW Utility
You can only activate the utility through a batch JCL. The following is a sample batch JCL used to invoke CTJMRFLW:
//JVERFLW EXEC CTJRFLW,FA=D,ENV=GENERAL, ODATE=odate
//JOBLIST.DAJOB DD *
ORDER DSN=CTMP.V900.OPR.SCHEDULE,MEMBER=TEST,JOB=TESTVAR2
//
When FA, FV and other parameters are not specified in the EXEC statement, CTJMRFLW uses the default values according to the batch rules.
CTJMRFLW Return Codes
The following table explains the return codes for the CTJMRFLW utility:
Table JV7 CTJMRFLW Return Codes
Code |
Description |
---|---|
0 |
Operation performed successfully. |
4 |
Control-M JCL Verify discovered that the verified resource is not in the required status at the time of the verification. For example, an input dataset does not exist. Review the status and decide if there is a need to make a change in the job. |
8 |
Control-M JCL Verify discovered a problem in the job that will cause it to fail with a JCL error or to be rejected by JES2 or JES3, either during job submission or execution. Correct the JCL in the job. |
12 |
Error in the CTJMRFLW parameters or statements. Review the previous error messages in JOBLOG and SYSPRINT, and then correct the parameters or the control statements. |
16 and above |
Internal error in the Control-M JCL Verify product. Try again. If the problem reoccurs, contact BMC Customer Support. |
Example for CTJMRFLW
In the following sample job, located at ilprefa.CTJ.JCL(CTJJRFLW), CTJMRFLW verifies the job dependencies of the series of JCL jobs according to the order that they are intended to run.
Figure JV1 Dependency awareness- Example 1
//I900INVD JOB ,IOA900,MSGCLASS=X,CLASS=A//*
//*
// JCLLIB ORDER=IOAE.R800TEST.PROCLIB
// INCLUDE MEMBER=IOASET
//********************************************************************
//** *
//** PARAMETERS TO CTJMRFLW *
//** ML=D/I/W/E I=INFO W=WARNING E=ERROR *
//** FA=D/Y/N *
//** FV=D/Y/N/S/U *
//** ME=D/Y/N *
//** UT=D/Y/N *
//** STDR=D/Y/N *
//** D=DEFAULT (SET IN CTJPARM) Y=YES N=NO *
//** *
//** ODATE= CONTROL-M WORKING DATE (MANDATORY)*
//** DATE TYPE: W DDMMYY, A MMDDYY *
//** J YYMMDD *
//** *
//** ENV=GENERAL *
//** NODE=LOCAL MONITOR NODE NAME *
//** EMUSRDLY=EMUSRDLY, EM SYSTEM NAME LIST MEMBER *
//** AJFSZ=1000, EQUAL TO AJF SIZE *
//** CHARSET=GS10, STANDARD ENGLISH CHARACTER SET *
//** CHARST2=FM10, CHAR-SET CONTAINS BOX ELEMENTS *
//** OUT='*' GENERAL SYSOUT CLASS *
//** STATEMENTS *
//** ORDER DEFINE NEW STATEMENT,IT IS ONLY FOR SIMULATION *
//** DSN= SCHEDULE LIBRARY (MANDATORY) *
//** MEMBER= NAME OF CTM SCHED TABLE SUPPORT MASKING (* & %)*
//** JOB= JOB IS OPTIONAL AND SUPPORT MASKING (* & %) *
//** *
//** REFER TO CTJPLAN UTILITY CHAPTER IN CONTROL-M/JCL VERIFY *
//** USER GUIDE *
//** *
//********************************************************************
//JVERFLW EXEC CTJMRFLW,ODATE=odate
//JOBLIST.DAJOB DD *
ORDER DSN=CTM.V900.OPR.SCHEDULE MEMBER=MAINDAY <- CHANGE THIS
CTJPLAN - Scheduled JCL Job Verification
The CTJPLAN utility is designed as part of a procedure that is capable of verifying JCL jobs that are scheduled for submission. The procedure requires that Control-M is installed. The procedure involves using the CTMRPLN and CTJVER utilities.
The procedure can verify jobs referred to from Control-M job definitions that will be ordered on the specified date. The procedure can either verify a single table or work in mass mode, verifying many jobs together (for example, verifying all the jobs in a library).
Procedure for verifying scheduled JCL jobs using CTJPLAN
To verify JCL jobs that are scheduled for submission
Run the CTJPLAN job, which consists of the following two steps:
-
CTMRPLN gets the list of all the jobs that are scheduled for a specified ODATE. CTMRPLN creates the list of jobs as valid statements for CTJVER.
-
CTJVER processes the scheduled jobs using the SYSIN statements generated by CTMRPLN in the preceding step.
If MULTJOBS=Y is specified in the CTMPARM member, only the first job will be submitted from the JCL member by Control-M. Therefore, if the JCL member to be verified contains more than one job, only the first job will be verified.
CTJPLAN Parameters
The utility receives the following parameters from the JCL procedure:
Table JV8 CTJPLAN PROCEDURE parameters
Parameter |
Description |
---|---|
ODATE |
Original scheduling date of the job, in yymmdd format. |
JES |
Whether to verify that the JES2 or JES3 statements are correct. Valid values are:
|
FV |
Whether to perform dataset verification. Valid values are:
|
FA |
Whether to verify file access privileges. Valid values are:
|
STDR |
Whether to use the Control-M JCL Verify rules to verify site standards. Valid values:
|
ENV |
Whether to use the rules that are defined for the specified environment, in addition to the GENERAL rules, for the site standard verifications. If the keyword GENERAL is specified, only the GENERAL rules are used for the site standard verifications. |
ME |
Whether to verify that the load modules exist. Valid values are:
|
ML |
The minimum level of message severity to be issued. Valid values are:
|
CTM |
Whether to resolve Control-M AutoEdit variables in the job. Valid values are:
|
UT |
Whether to verify the syntax of the IBM utilities (for details, see JCL and syntax verification in the Control-M JCL Verify User Guide) and the DB2 related validation. Valid values are:
|
The utility also receives parameters as SYSIN statements:
-
For the //JVER.SYSIN DD * statement, parameters and guidelines are the same as for the CTJVER utility (see CTJVER SYSIN parameters).
-
For the //SYSIN DD * statement, the following table describes the relevant parameter:
Table JV9 CTJPLAN SYSIN parameters
Parameter |
Description |
---|---|
TABLES abc*, xyz* |
Enables use of generic table names to process individual or multiple tables. |
Activating the CTJPLAN Utility
You can activate the utility through a batch JCL. The following is a sample batch JCL used to invoke CTJPLAN:
// .... JOB ....
// EXEC CTJPLAN,ODATE=odate
/*
//
In the sample, the scheduling library is the Control-M installation scheduling library.
To specify another library, override the SCHEDLIB DD statement. For example, add the following statement:
//SCHEDLIB DD DISP=SHR,DSN=MY.CTM.SCHEDLIB
When FA, FV and other parameters are not specified in the EXEC statement, CTJPLAN uses the default values according to the batch rules.
To specify an individual or multiple tables, add a SYSIN statement with the TABLES parameter. For example, adding the following statement will include all tables with either a abc or xyz prefix:
//SYSIN DD
*TABLES abc*,xyz*
/*
CTJPLAN Return Codes
The return codes for the RPLAN step are explained in CTMRPLN – Job Plan Report.
The following table explains the return codes for the CTJVER JVER step:
Table JV10 Return Codes for CTJVER JVER Step in CTJPLAN Procedure
Code |
Description |
---|---|
0 |
Operation performed successfully. |
4 |
Control-M JCL Verify discovered that the verified resource is not in the required status at the time of the verification. For example, an input dataset does not exist. Review the status and decide if there is a need to make a change in the job. |
8 |
Control-M JCL Verify discovered a problem in the job that will cause it to fail with a JCL error or to be rejected by JES2 or JES3, either during job submission or execution. Correct the JCL in the job. |
12 |
Error in the CTJVER parameters or statements. Review the previous error messages in JOBLOG and SYSPRINT, and then correct the parameters or the control statements. |
16 and above |
Internal error in the Control-M JCL Verify product. Try again. If the problem reoccurs, contact BMC Customer Support. |
CTJPLAN output report
The report includes
-
the JOB definitions listing as selected by the CTMRPLN utility
-
the JCL listing as received from z/OS
-
the messages issued by z/OS messages issued by JVER which are separated into 3 severity types: I-Information, W-Warning, and E-Error.
-
The user can choose the minimum level of messages to be issued using the CTJPARM parameter MSGLEVEL, which can be overridden from the interfaces. These messages are issued only after the job has passed the valid syntax check.
Example for CTJPLAN
The selection is performed on the first step of the CTJPLAN procedure, which creates a list of scheduling libraries, members, and jobs for verification.
The verification is performed in the second step.
Figure JV2 CTJPLAN - sample job - Example 1
//CTJPLAN JOB ,IOA630,MSGCLASS=X,CLASS=A,MSGLEVEL=(1,1)//*
//*----------------------------------------------------------*
//* SAMPLE USER DAILY JOB FOR SYSTEM'S JOBS. *
//*----------------------------------------------------------*
// JCLLIB ORDER=IOAP.V900.PROCLIB
// INCLUDE MEMBER=IOASET
//************************************************************
//CTJPLAN EXEC CTJPLAN,ODATE=130606
//SCHEDLIB DD DISP=SHR,DSN=IOAZ.CTJDR3.CTM.OPR.SCHEDULE
In the following example, CTJPLAN verifies all jobs that are planned to be executed on June 6, 2013.
The verification parameters are the same as in CTJVER utility and in the above sample use the defaults.
In the first step, the CTMRPLN utility creates DAREPORT, which contains the list of the jobs that are planned to be executed on June 6, 2013.
Figure JV3 CTJPLAN - CTMRPLN planned JOBS report
PRODUCED BY CONTROL-M 8.0.03 JOB PLAN REPORT FROM 060615 UNTIL 060615
BMC SOFTWARE, INC. ================
JOBS PLANNED FOR 06/06/15
MEMNAME TABLE LIBRARY
----------------------------------------------------------------------------------
DAILYPRD MAINDAY IOAZ.CTJDR3.CTM.OPR.SCHEDULE
DAILYSYS MAINDAY IOAZ.CTJDR3.CTM.OPR.SCHEDULE
IOACLCND MAINDAY IOAZ.CTJDR3.CTM.OPR.SCHEDULE
IOALDNRS MAINDAY IOAZ.CTJDR3.CTM.OPR.SCHEDULE
The following figure shows the output report job (in slightly abbreviated form) for the jobs in the list shown in the previous figure above.
Please note the following about the verification report shown in the following figure:
-
The RC=08 resulted because not all JCL members contained valid JCL JOB statements.
-
Each job is called separately from CTJVER utility using the following code:
SCHEDLIB=ControlM.SCHEDULE.library TABLE=table
+JOB=jobname
The "+" (appearing in column 72) allows the input to continue with JOB=jobname on the next CTJVER statement.
-
When the CTJPLAN was executed, the shared table was not initialized and therefore the CTJ202I message was issued.
Figure JV4 CTJPLAN - CTJVER verification report
CTJU01I FA=D FV=D JES=D ME=D ML=D
CTJU01I ODATE=150606
CTJU01I SCHEDLIB=IOAZ.CTJDR3.CTM.OPR.SCHEDULE TABLE=MAINDAY +
CTJU01I JOB=DAILYPRD
CTJ202I Shared INFO does not exist. Issue Modify command 'REFRESH,SCOPE=ALL' for CTJ monitor.
CTJ000I Control-M/JCL Verify is starting. Level IJ10086
CTJ00CI Runtime parameters: FA=Y FV=Y STDR=Y ENV=GENERAL JES=Y ME=Y ML=I USER=N18
CTJR08I Verify JCL in JOB DAILYPRD from TABLE MAINDAY in LIBRARY IOAZ.CTJDR3.CTM.OPR.SCHEDULE
CTJ002I Start processing MEMBER MAINDAY DSNAME=CTMP.V900.JCL
CTJR05I //I800INDP JOB ,IOA800,MSGCLASS=X,CLASS=A
CTJ008I Start verifying JOB I800INDP MEMBER MAINDAY
1 //I800INDP JOB ,IOA800,MSGCLASS=X,CLASS=A, 00010000
// MSGLEVEL=(1,1),
// USER=PRODMNGR
//*NET ID=AESUSER
//*---- SUBMITTED BY CONTROL-M (FROM MEMLIB) ODATE=150702
//*---- SCHEDULE (UNKNOWN)
//*---- SCHEDULED DUE TO RBC:
//*---- JCL CTMP.V900.JCL(DAILYPRD)
//*---- CONTROL-M JOB IDENTIFICATION: ORDER ID= RUN NO.=00001
//* 00020000
//* 00030000
//*----------------------------------------------------------* 00040000
//* SAMPLE USER DAILY JOB FOR PRODUCTIONS JOBS. * 00050000
//*----------------------------------------------------------* 00060000
2 // JCLLIB ORDER=IOAP.V900.PROCLIB 00070000
3 // INCLUDE MEMBER=IOASET
3 IEFC002I INCLUDE GROUP IOASET WAS EXPANDED USING PRIVATE LIBRARY IOAP.V900.PROCLIB
73 //PRDDAILY EXEC CTMDAILY, 00090000
// DATEREC=DATERECU <== CHANGE 00100000
73 IEFC001I PROCEDURE CTMDAILY WAS EXPANDED USING PRIVATE LIBRARY IOAP.V900.PROCLIB
74 XXCTMDAILY PROC REG='0M', DEFAULT REGION
XX PROGLST=PROGUSR, PROGRAMS ACTIVATED ON DAILY
XX DATEREC=, USER DATEREC
XX* EMUSRDLY=EMUSRDLY, EM SYSTEM NAME LIST MEMBER
XX OUT='*' GENERAL SYSOUT CLASS
XX*
75 XXUSRDAILY EXEC PGM=CTMILU,REGION=®
IEFC653I SUBSTITUTION JCL - PGM=CTMILU,REGION=0M
CTJP0EI 75 INFORMATION: PGM CTMILU FOUND IN STEPLIB LIBRARY IOAP.V900.LOAD
76 XX INCLUDE MEMBER=&IOAENV
IEFC653I SUBSTITUTION JCL - MEMBER=IOAENV
76 IEFC002I INCLUDE GROUP IOAENV WAS EXPANDED USING PRIVATE LIBRARY IOAP.V900.PROCLIB
77 XXSTEPLIB DD DISP=SHR,DSN=IOAP.V900.TLOAD
78 XX DD DISP=SHR,DSN=&STEPLIB
IEFC653I SUBSTITUTION JCL - DISP=SHR,DSN=IOAP.V900.LOAD
79 XX DD DISP=SHR,DSN=IOAP.V900.TLOADE
80 XX DD DISP=SHR,DSN=&STEPLIBE
IEFC653I SUBSTITUTION JCL - DISP=SHR,DSN=IOAP.V900.LOADE
81 XX DD DISP=SHR,DSN=&CTRANS
IEFC653I SUBSTITUTION JCL - DISP=SHR,DSN=IOAP.V900.CTRANS
82 XXDAPARM DD DISP=SHR,DSN=&ILPREFA..PARM
IEFC653I SUBSTITUTION JCL - DISP=SHR,DSN=IOAP.V900.PARM
83 XX DD DISP=SHR,DSN=&ILPREFA..IOAENV
IEFC653I SUBSTITUTION JCL - DISP=SHR,DSN=IOAP.V900.IOAENV
XX*
84 XXDAALOCIN DD DISP=SHR,DSN=&DAALOCIN(ALCMUDAY)
IEFC653I SUBSTITUTION JCL - DISP=SHR,DSN=IOAP.V900.IOAENV(ALCMUDAY)
85 XXDAPROG DD DISP=SHR,DSN=&OLPREFM..PARM(&PROGLST)
IEFC653I SUBSTITUTION JCL - DISP=SHR,DSN=CTMP.V900.CTM.OPR.PARM(PROGUSR)
86 XXDACHK DD DISP=SHR,DSN=&OLPREFM..PARM(&DATEREC)
IEFC653I SUBSTITUTION JCL - DISP=SHR,DSN=CTMP.V900.CTM.OPR.PARM(DATERECU)
87 XXDAOUT DD SYSOUT=&OUT
IEFC653I SUBSTITUTION JCL - SYSOUT=*
XX*DAONAME DD DISP=SHR,DSN=&OLPREFM..PARM(&EMUSRDLY)
88 XXSYSPRINT DD SYSOUT=&OUT
IEFC653I SUBSTITUTION JCL - SYSOUT=*
89 XXSYSABEND DD SYSOUT=&OUTDUMP
IEFC653I SUBSTITUTION JCL - SYSOUT=X
90 //DAJOB DD DISP=SHR,DSN=&OLPREFM..SCHEDULE(TABLE1) <== CHANGE 00110001
IEFC653I SUBSTITUTION JCL - DISP=SHR,DSN=CTMP.V900.SCHEDULE(TABLE1)
CTJD0OW 90 WARNING: MEMBER=TABLE1 IS NOT FOUND AT DSN=CTMP.V900.SCHEDULE
91 // DD DISP=SHR,DSN=&OLPREFM..SCHEDULE(TABLE2) <== CHANGE 00120001
IEFC653I SUBSTITUTION JCL - DISP=SHR,DSN=CTMP.V900.SCHEDULE(TABLE2)
CTJD0OW 91 WARNING: MEMBER=TABLE2 IS NOT FOUND AT DSN=CTMP.V900.SCHEDULE
92 // 00130000
CTJ009I Processing ended RC=0004 for JOB I700INDP MEMBER MAINDAY
// 00130000
CTJ003I Processing ended RC=0004 REASON 00000000 MEMBER MAINDAY DSNAME=CTMP.V900.JCL
CTJU01I SCHEDLIB=IOAZ.CTJDR3.CTM.OPR.SCHEDULE TABLE=MAINDAY +
CTJU01I JOB=DAILYSYS
CTJ00CI Runtime parameters: FA=Y FV=Y STDR=Y ENV=GENERAL JES=Y ME=Y ML=I USER=N18
CTJR08I Verify JCL in JOB DAILYSYS from TABLE MAINDAY in LIBRARY IOAZ.CTJDR3.CTM.OPR.SCHEDULE
CTJ002I Start processing MEMBER MAINDAY DSNAME=CTMP.V900.JCL
//*:666666666666666666
CTJS03E ERROR: Invalid or missing JOB statement
//*NET ID=AESUSER
//*---- SUBMITTED BY CONTROL-M (FROM MEMLIB) ODATE=120702
//
CTJ003I Processing ended RC=0008 REASON 00000000 MEMBER MAINDAY DSNAME=CTMP.V900.JCL
CTJU01I SCHEDLIB=IOAZ.CTJDR3.CTM.OPR.SCHEDULE TABLE=MAINDAY +
CTJU01I JOB=IOACLCND
CTJ00CI Runtime parameters: FA=Y FV=Y STDR=Y ENV=GENERAL JES=Y ME=Y ML=I USER=N18
CTJ002I Start processing MEMBER MAINDAY DSNAME=IOAP.V900.JC
SUB136E NO JOB CARD
//*xkdjfbglzdkfgzdkjfgkdjng
CTJS03E ERROR: Invalid or missing JOB statement
//*NET ID=AESUSER
//*---- SUBMITTED BY CONTROL-M (FROM MEMLIB) ODATE=120702
//
CTJ003I Processing ended RC=0008 REASON 00000000 MEMBER MAINDAY DSNAME=CTMP.V900.JCL
CTJU01I SCHEDLIB=IOAZ.CTJDR3.CTM.OPR.SCHEDULE TABLE=MAINDAY +
CTJU01I JOB=IOALDNRS
CTJ00CI Runtime parameters: FA=Y FV=Y STDR=Y ENV=GENERAL JES=Y ME=Y ML=I USER=N18
CTJR08I Verify JCL in JOB IOALDNRS from TABLE MAINDAY in LIBRARY IOAZ.CTJDR3.CTM.OPR.SCHEDULE
CTJ002I Start processing MEMBER MAINDAY DSNAME=IOAP.V900.JC
SUB136E NO JOB CARD
CTJR05I //I700INLD JOB ,IOA700,MSGCLASS=X,CLASS=A,NOTIFY=K60
CTJ008I Start verifying JOB I700INLD MEMBER MAINDAY
1 //I700INLD JOB ,IOA700,MSGCLASS=X,CLASS=A,NOTIFY=K60, 00010000
// MSGLEVEL=(1,1),
// USER=PRODMNGR
//*NET ID=AESUSER
//*---- SUBMITTED BY CONTROL-M (FROM MEMLIB) ODATE=120702
//*---- SCHEDULE (UNKNOWN)
//*---- SCHEDULED DUE TO RBC:
//*---- JCL IOAP.V900.JCL(IOALDNRS)
//*---- CONTROL-M JOB IDENTIFICATION: ORDER ID=00012 RUN NO.=00001
//* 00020000
//* 00030000
2 // JCLLIB ORDER=IOAP.V900.PROCLIB 00030102
3 // INCLUDE MEMBER=IOASET
3 IEFC002I INCLUDE GROUP IOASET WAS EXPANDED USING PRIVATE LIBRARY IOAP.V900.PROCLIB
73 //LOADMAN EXEC IOALDNRS 00070001
73 IEFC001I PROCEDURE IOALDNRS WAS EXPANDED USING PRIVATE LIBRARY IOAP.V900.PROCLIB
75 XXIOALDNRS EXEC PGM=CTMLNR,REGION=®,PARM='ALL' 00120000
IEFC653I SUBSTITUTION JCL - PGM=CTMLNR,REGION=0M,PARM='ALL'
CTJP0EI 75 INFORMATION: PGM CTMLNR FOUND IN STEPLIB LIBRARY IOAP.V900.LOAD
76 XX INCLUDE MEMBER=&IOAENV 00130000
EFC653I SUBSTITUTION JCL - MEMBER=IOAENV
76 IEFC002I INCLUDE GROUP IOAENV WAS EXPANDED USING PRIVATE LIBRARY IOAP.V900.PROCLIB
77 XXSTEPLIB DD DISP=SHR,DSN=IOAP.V900.TLOAD
78 XX DD DISP=SHR,DSN=&STEPLIB
IEFC653I SUBSTITUTION JCL - DISP=SHR,DSN=IOAP.V900.LOAD
79 XX DD DISP=SHR,DSN=IOAP.V900.TLOADE
80 XX DD DISP=SHR,DSN=&STEPLIBE
IEFC653I SUBSTITUTION JCL - DISP=SHR,DSN=IOAP.V900.LOADE
81 XX DD DISP=SHR,DSN=&CTRANS
IEFC653I SUBSTITUTION JCL - DISP=SHR,DSN=IOAP.V900.CTRANS
82 XXDAPARM DD DISP=SHR,DSN=&ILPREFA..PARM
IEFC653I SUBSTITUTION JCL - DISP=SHR,DSN=IOAP.V900.PARM
83 XX DD DISP=SHR,DSN=&ILPREFA..IOAENV
IEFC653I SUBSTITUTION JCL - DISP=SHR,DSN=IOAP.V900.IOAENV
84 XXSORTIN DD DSN=&&SORTIN,UNIT=&WORKUNIT,SPACE=(CYL,(1,1)) 00140000
IEFC653I SUBSTITUTION JCL - DSN=&&SORTIN,UNIT=SYSALLDA,SPACE=(CYL,(1,1))
85 XXSORTOUT DD DSN=&&SORTOUT,UNIT=&WORKUNIT,SPACE=(CYL,(1,1)), 00150000
XX DCB=(LRECL=49) 00160000
IEFC653I SUBSTITUTION JCL - DSN=&&SORTOUT,UNIT=SYSALLDA,SPACE=(CYL,(1,1)),DCB=(LRECL=49)
86 XXSORTWK01 DD UNIT=&WORKUNIT,SPACE=(CYL,(1,1)) 00170000
IEFC653I SUBSTITUTION JCL - UNIT=SYSALLDA,SPACE=(CYL,(1,1))
87 XXSORTWK02 DD UNIT=&WORKUNIT,SPACE=(CYL,(1,1)) 00180000
IEFC653I SUBSTITUTION JCL - UNIT=SYSALLDA,SPACE=(CYL,(1,1))
88 XXSORTWK03 DD UNIT=&WORKUNIT,SPACE=(CYL,(1,1)) 00190000
IEFC653I SUBSTITUTION JCL - UNIT=SYSALLDA,SPACE=(CYL,(1,1))
89 XXSYSPRINT DD SYSOUT=&OUT 00200000
IEFC653I SUBSTITUTION JCL - SYSOUT=X
90 XXSYSOUT DD SYSOUT=&OUT 00210000
IEFC653I SUBSTITUTION JCL - SYSOUT=X
91 XXSYSABEND DD SYSOUT=&OUTDUMP 00220000
IEFC653I SUBSTITUTION JCL - SYSOUT=X
92 XXPRTDBG DD SYSOUT=&OUTDUMP 00230000
IEFC653I SUBSTITUTION JCL - SYSOUT=X
93 XXDAALOCIN DD DISP=SHR,DSN=&DAALOCIN(ALCLDNRS) 00240000
IEFC653I SUBSTITUTION JCL - DISP=SHR,DSN=IOAP.V900.IOAENV(ALCLDNRS)
94 XXDALNRIN DD DDNAME=SYSIN 00250000
WARNING 94 IEF686I DDNAME REFERRED TO ON DDNAME KEYWORD IN PRIOR STEP WAS NOT RESOLVED
95 // 00080000
CTJ009I Processing ended RC=0004 for JOB I800INLD MEMBER MAINDAY
// 00080000
CTJ003I Processing ended RC=0004 REASON 00000000 MEMBER IOALDNRS DSNAME GENERAL
CTJU02I Control-M/JCL Verify Utility ended. RC=0008
CTJVER - JCL Job Pre-Submission Verification
The CTJVER utility is capable of verifying a JCL job before it is submitted. The utility can also verify jobs referred to from or contained inside Control-M definitions. CTJVER can either verify a single job or work in mass mode, verifying many jobs together (for example, verifying all the jobs in a library).
CTJVER Procedure parameters
The following table describes the parameters that the utility receives from the JCL procedure:
Table JV11 CTJVER PROCEDURE parameters
Parameter |
Description |
---|---|
JES |
Whether to verify that the JES2 or JES3 statements are correct. Valid values are:
|
FV |
Whether to perform dataset verification. Valid values are:
|
FA |
Whether to verify file access privileges. Valid values are:
|
STDR |
Whether to use the Control-M JCL Verify rules to verify site standards. Valid values:
|
ME |
Whether to verify that the load modules exist. Valid values are:
|
ML |
The minimum level of message severity to be issued. Valid values are:
|
CTM |
Whether to resolve Control-M AutoEdit variables in the job. Valid values are:
|
UT |
Whether to verify the syntax of the IBM utilities (for details, see JCL and syntax verification in the Control-M JCL Verify User Guide) and the DB2 related validation. Valid values are:
|
If any of the PROCEDURE parameters are omitted, the default values are used.
CTJVER SYSIN parameters
SYSIN statements for CTJVER must comply with the following general syntax rules:
-
Parameters may be entered in columns 1-71.
-
Do not split parameters between SYSIN records.
The following table describes the guidelines for the use of SYSIN parameters:
Table JV12 CTJVER SYSIN parameter guidelines
Type of parameters |
Parameter keywords |
Guidelines |
---|---|---|
Options parameters |
|
|
Verification parameters |
|
|
The following table describes the keywords used in the SYSIN statements to perform various verification tasks. The table indicates which keywords are used for each task.
Table JV13 CTJVER SYSIN statement keywords
To perform this |
Use these keywords: |
Description |
---|---|---|
To specify which user is used in the verifications: |
USER |
The user ID to be used in the file access privileges (FA) verifications. Valid values are:
The default user ID is determined according the criteria described in "File Access" in Environment verification in the Control-M JCL Verify User Guide. |
To specify the odate used for odate variable resolutions: |
ODATE |
The odate to be used in odate variable resolutions. The valid format is: YYMMDD The ODATE value is used in the SCHEDLIB statements that follow it, until a new ODATE is specified. |
To specify the environment rules used in the verifications: |
ENV |
The rules that are defined for the specified environment, in addition to the GENERAL rules, are to be used in site standard verifications. The ENV keyword applies to all the verifications until the ENV is redefined as shown in the following example: Copy
The default is blank, meaning that only the GENERAL rules are used for the site standard verifications. |
To verify jobs in their library:
|
LIB |
JCL library name where the JCL job to be verified is located. Mandatory. |
MEM |
Member name where the JCL job to be verified is located. Character masking is supported so that "MEM=*" indicates that all the jobs in the library are to be verified. |
|
To verify jobs referred by DDNAME |
DD |
DDNAME that refers to the JCL. This can be a PDS/E member, flat file, or instream data. |
To verify jobs referred to from or contained inside Control-M definitions:
|
SCHEDLIB |
Name of the library containing the job scheduling definition to be verified. Mandatory. |
TABLE |
Name of the table containing the job scheduling definition to be verified. Character masking is supported so that "TABLE=*" indicates that all the jobs in all the tables in the scheduling library are to be verified. In this case, "JOB=*" can be omitted since "JOB=*" is assumed. |
|
JOB |
Name of the job scheduling definition to be verified. Character masking is supported so that "JOB=*" indicates that all the jobs in the table are to be verified. |
|
To verify ordered jobs:
|
ORDERID |
Specifies the order ID of the job in the AJF that will be verified. |
AJF |
Specifies that all jobs in the AJF will be verified. |
|
To enable Remote Processing:
|
NODE |
The NODE name of the IOAGATE running on a remote sysplex. For more details, see Defining the target CTJMON where the verification should run in the Control-M JCL Verify User Guide. |
IE |
The QNAME of a CTJMON running on the target sysplex. For more details, see Defining the target CTJMON where the verification should run in the Control-M JCL Verify User Guide. |
|
SYS |
The MVS system name of the target system in the target SYSPLEX. For more details, see Defining the target CTJMON where the verification should run in the Control-M JCL Verify User Guide. |
|
To enable Auto Routing: |
AR |
Whether to enable Auto Routing. Valid values are:
|
To change the PROCLIB where the procedures are resolved: |
PROCDD |
Name of a predefined DD card from which the procedures are resolved when the JCLs are verified. For example, PROC01. The DD card must be predefined in JES PROCLIB or in the CTJPRC member and will be the only procedure library searched. For more information, see JES2/3 Predefined PROCLIBs in the Control-M JCL Verify User Guide. |
To include LOAD libraries for searching load modules: |
LINKDD |
Name of a predefined DD card in which the load modules are searched when the JCLs are verified. For more information, see H CTJLINK – User link libraries for program existence check in the Control-M JCL Verify User Guide. |
To set conditional dataset allocation considerations |
CNDALC |
Whether to consider datasets that are created or deleted by conditional steps as conditional references, and issue warnings when the dataset is referenced by a step later in the job if this reference may not be valid.
For more information and examples, see Conditional dataset references in the Control-M JCL Verify User Guide. |
The SCHEDLIB, TABLE, JOB, ORDERID, and AJF keywords are available only when Control-M is installed.
Regarding the SCHEDLIB statement: If MULTJOBS=Y is specified in CTMPARM, only the first job will be submitted from the JCL member by Control-M. Therefore, if the JCL member to be verified contains more than one job, only the first job will be verified.
Activating the CTJVER Utility
You can activate the utility through a batch JCL. The following is a sample batch JCL used to invoke CTJVER:
// .... JOB ....
// EXEC CTJVER,parameters
//SYSIN DD *
statement1
statement2
...
...
...
/*
//
CTJVER Return Codes
Table JV14 CTJVER Return Codes
Code |
Description |
---|---|
0 |
Operation performed successfully. |
4 |
Control-M JCL Verify discovered that the verified resource is not in the required status at the time of the verification. For example, an input dataset does not exist. Review the status and decide if there is a need to make a change in the job. |
8 |
Control-M JCL Verify discovered a problem in the job that will cause it to fail with a JCL error or to be rejected by JES2 or JES3, either during job submission or execution. Correct the JCL in the job. |
12 |
Error in the CTJVER parameters or statements. Review the previous error messages in JOBLOG and SYSPRINT, and then correct the parameters or the control statements. |
16 and above |
Internal error in the Control-M JCL Verify product. Try again. If the problem reoccurs, contact BMC Customer Support. |
CTJVER output report
The report includes
-
the JCL listing as received from z/OS
-
the messages issued by z/OS
-
lines with AutoEdit variables before and after they are resolved, each on a separate line
-
messages issued by JVER which are separated into 3 severity types: I-Information, W-Warning, and E-Error.
-
The user can choose the minimum level of messages to be issued using the CTJPARM parameter MSGLEVEL, which can be overridden from the interfaces.
These messages are issued only after the job has passed the valid syntax check.
For examples of output reports see CTJVER Example 4 and CTJVER Example 5.
CTJVER Examples
CTJVER Example 1
In the following example, CTJVER verifies all the jobs in the JOB1 member located in the XX.YY library.
JES2 or JES3 statements are verified or not verified depending on JESTTMNT in CTJPARM. The existence of the dataset will be verified. The M01 user is verified for file access privileges. The existence of the load modules will not be verified. The minimum level of message severity to be issued depends on how MSGLEVEL is defined in CTJPARM.
Figure JV5 CTJVER - Example 1
// . . . JOB . . .
// EXEC CTJVER,JES=D,FE=Y,FA=Y,ME=N
//SYSIN DD *
USER=M01
LIB=XX.YY,MEM=JOB1
/*
//
CTJVER Example 1a
In the following example, CTJVER verifies that all the jobs in all the members located in the XX.YY.ZZ library. The M01 user is verified for file access privileges. The existence of load modules will not be verified.
Figure JV6 CTJVER - Example 1a
// . . . JOB . . .
// EXEC CTJVER,JES=D,FE=Y,FA=Y,ME=N
//SYSIN DD *
USER=M01
LIB=XX.YY.ZZ,MEM=*
/*
//
CTJVER Example 2
In the following examples, CTJVER verifies jobs referred to by a DDNAME.
-
In the following example, CTJVER verifies all the jobs of the JCL that the DDNAME INPUTDD refers to (a member of PDS). The M01 user is verified for file access privileges. The existence of load modules is not verified.
Figure JV6a CTJVER - Example 2a
Copy// . . . JOB . . .
// EXEC CTJVER,JES=D,FE=Y,FA=Y,ME=N
//SYSIN DD *
USER=M01
DD=INPUTDD
/*
//INPUTDD DD DISP=SHR,DSN=XX.YY(MEMBER) -
In the following example, CTJVER verifies all the jobs of the JCL that the DDNAME INPUTDD refers to (a flat file), and after that, all the jobs in the JOB1 member located in the XX.YY library.
Figure JV6b CTJVER - Example 2b
Copy// . . . JOB . . .
// EXEC CTJVER
//SYSIN DD *
DD=INPUTDD
LIB=XX.YY MEM=JOB1
/*
//INPUTDD DD DISP=SHR,DSN=MYPRFX.FILE.MYJCL
CTJVER Example 3
In the following example, CTJVER verifies the following:
-
the ODATE of all jobs is set to December 1, 2013
-
all jobs from table TAB1 and library AA.CC
-
all jobs from all tables in library AA.DD
The JOB's definition owner is the user ID for verifying the file access privileges.
Figure JV7 CTJVER - Example 3
// . . . JOB . . .
// EXEC CTJVER,JES=D,FE=Y,FA=Y,ME=N
//SYSIN DD *
ODATE=131201
USER=*DEFAULT
SCHEDLIB=AA.BB,TABLE=TAB1,JOB=JOB1
SCHEDLIB=AA.CC,TABLE=TAB1,JOB=*
SCHEDLIB=AA.DD,TABLE=*
/*
//
The following example shows a CTJVER output report for a job with Control-M JCL Verify messages.
The following figure shows the job that is to be verified.
Figure JV8 Verified job - Sample00 - Example 4
//IEFBR14 JOB ,BR14,MSGCLASS=X,NOTIFY=N18A,MSGLEVEL=(1,1)
//S1 EXEC PGM=IEFBR14,COND=EVEN
//NEWTEMP DD SPACE=(TRK,1),DSN=NEW.FILE.NO.DISP
//FILEOK DD DISP=SHR,DSN=CTJP.V900.JCL.SAMPLES
The following figure shows the job that performs the verification.
Figure JV9 CTJVER utility - Example 4
//SAMPLE00 JOB 0,YY,CLASS=A,MSGCLASS=X,
// NOTIFY=&SYSUID
// JCLLIB ORDER=IOAP.V900.PROCLIB
// INCLUDE MEMBER=IOASET
//SAMPLE1 EXEC CTJVER
//SYSIN DD *
LIB=CTJP.V900.JCL.SAMPLES MEM=IEFBR14
/*
The CTJVER utility output report, shown in the following figure, includes various messages. To simplify the reading and interpretation of the messages, Control-M JCL Verify combines the messages that are issued by the system in the JESYSMSG member with the JCL statements.
The CTJVER utility output report includes CTJVER batch utility messages, which are indicated by a CTJU prefix. The first CTJU01I message displays the CTJVER PROCEDURE parameters, which in this example are specified as defined in CTJPARM. The other CTJU01I messages are input statement echo messages.
The normal JCL statements are displayed similar to how they appear in the JOB JESJCL output.
The user set the ME (Module Existence) option to the default value by setting the PGMCHECK parameter to Y in the CTJPARM member. As a result, the CTJP0GI message is displayed. The message indicates that the IEFBR14 load module exists in SYS1.LINKLIB, one of the LINKLIST libraries.
The CTJ009I message is issued for each processed job. For members with multiple jobs, the message is displayed after each job.
The CTJ003I message is issued for each control statement.
If no warning or error messages are issued, the validation ends with return code (RC) zero.
Figure JV10 CTJVER utility - SYSPRINT - Example 4
CTJU01I FA=D FE=D JES=D ME=D ML=DCTJU01I LIB=CTJP.V900.JCL.SAMPLES MEM=IEFBR14
CTJ002I Start processing member IEFBR14 DSNAME CTJP.V900.JCL.SAMPLES
CTJ008I Start verifying JOB IEFBR14 MEMBER IEFBR14
1 //IEFBR14 JOB ,BR14,MSGCLASS=X,NOTIFY=N18A,MSGLEVEL=(1,1)
2 //S1 EXEC PGM=IEFBR14,COND=EVEN
CTJP0GI 2 INFORMATION: PGM IEFBR14 FOUND IN LINKLIST LIBRARY SYS1.LINKLIB
3 //NEWTEMP DD SPACE=(TRK,1),DSN=NEW.FILE.NO.DISP
4 //FILEOK DD DISP=SHR,DSN=CTJP.V900.JCL.SAMPLES
5 //
CTJ009I Processing ended RC=0000 for job IEFBR14 member IEFBR14
CTJ003I Processing ended RC=0000 REASON 00000000 member IEFBR14 DSNAME CTJP.V900.JCL.SAMPLES
CTJU02I Control-M/JCL Verify Utility ended. RC=0000
The following example shows a CTJVER output report for a job, which if submitted, would be rejected by the system because of a JCL error.
When a JCL error is found, Control-M JCL Verify does not perform the second verification phase because the input might be invalid. The following figure shows the job that is to be verified.
Figure JV11 Verified job - Sample01 - Example 5
//JCLERROR JOB ,BR14,MSGCLASS=X,NOTIFY=N18A,MSGLEVEL=(1,1)
//S1 EXEC PGM=IEFBR14,COND=NEVER
//DSNM DD DISP=SHR,DSM=CTJP.V900.JCL.SAMPLES(JCLERR)
//DISP= DD SPACE=(TRK,1),DSN=N18.SYSTEM.NO.OS35
The following figure shows the job that performs the verification.
Figure JV12 CTJVER utility - Example 5
//SAMPLE01 JOB 0,YY,CLASS=A,MSGCLASS=X,
// NOTIFY=&SYSUID
// JCLLIB ORDER=IOAP.V900.PROCLIB
// INCLUDE MEMBER=IOASET
//SAMPLE1 EXEC CTJVER
//SYSIN DD *
LIB=CTJP.V900.JCL.SAMPLES MEM=JCLERR1
/*
As shown in the following figure, IBM informational messages, usually starting with an IEFC prefix, are displayed similar to how they appear in the JOB JESJCL output. Control-M JCL Verify marks the IBM messages with JCLERR> at the beginning of the line.
If the job has a JCL error, or contains any error that requires changing the JCL statements, the validation ends with return code (RC) 8.
Figure JV13 CTJVER utility - SYSPRINT - Example 5
CTJU01I FA=D FE=D JES=D ME=D ML=DCTJU01I LIB=CTJP.V900.JCL.SAMPLES MEM=JCLERR
CTJ002I Start processing member JCLERR DSNAME CTJP.V900.JCL.SAMPLES
CTJ008I Start verifying JOB JCLERROR MEMBER JCLERR
1 //JCLERROR JOB ,BR14,MSGCLASS=X,NOTIFY=N18A,MSGLEVEL=(1,1)
2 //S1 EXEC PGM=IEFBR14,COND=NEVER
3 //DSNM DD DISP=SHR,DSM=CTJP.V900.JCL.SAMPLES(JCLERR)
JCLERR> 3 IEFC630I UNIDENTIFIED KEYWORD DSM
4 //DISP= DD SPACE=(TRK,1),DSN=N18.SYSTEM.NO.OS35
JCLERR> 4 IEFC662I INVALID LABEL
5 //
CTJ009I Processing ended RC=0008 for job JCLERROR member JCLERR
CTJ003I Processing ended RC=0008 REASON 00000000 member JCLERR DSNAME CTJP.V900.JCL.SAMPLES
CTJU02I Control-M/JCL Verify Utility ended. RC=0008
The following example shows a CTJVER output report for a job that is to be submitted by Control-M monitor.
The job is part of SMART table SAMPLE08.
The following figure shows the relevant parts of the SMART Table Entity Definition in Screen 2. The SMART Table contains variable that %%EX_SYSTEM will be set in the JCL.
Figure JV14 SMART Table with variable %%EX_SYSTEM - Example 6
TBL SAMPLE08 CTJP.TESTS.SCHEDULE(SAMPLE08)
COMMAND ===> SCROLL===> CRSR
+-----------------------------------------------------------------------------+
| TABLE SAMPLE08 GROUP |
| OWNER N18A |
| APPL |
| DESC SAMPLE08 - SMART TABLE |
| |
| ADJUST CONDITIONS N TBL MAXWAIT 00 STAT CAL |
| SET VAR %%EX_SYSTEM=%%$SYSNAME |
| SET VAR |
| DOCMEM SAMPLE08 DOCLIB CTMP.V900.DOC |
| =========================================================================== |
| SCHEDULE RBC JVERRBC LEVEL TBL |
| DAYS ALL DCAL |
| AND/OR |
| WDAYS WCAL |
| MONTHS 1- Y 2- Y 3- Y 4- Y 5- Y 6- Y 7- Y 8- Y 9- Y 10- Y 11- Y 12- Y |
| DATES |
| CONFCAL SHIFT MAXWAIT 00 |
| SCHEDULE RBC ACTIVE FROM UNTIL |
| =========================================================================== |
The following figure shows the relevant parts of the JOB Definition SAMPLE08 in Screen 2. The JOB definition table contains variable that %%EXDATE will be set in the JCL.
Figure JV15 Job definition with variable %%EXDATE - Example 6
JOB: SAMPLE08 LIB CTJP.TESTS.SCHEDULE TABLE: SAMPLE08
COMMAND ===> SCROLL===> CRSR
+-----------------------------------------------------------------------------+
| MEMNAME SAMPLE08 MEMLIB CTJP.TESTS.JCL |
| OWNER N18A TASKTYPE JOB PREVENT-NCT2 DFLT N |
| APPL GROUP |
| DESC SAMPLE08 - JOB SUBMITED BY CONTROL-M MONITOR |
| |
| OVERLIB STAT CAL |
| SCHENV SYSTEM ID NJE NODE |
| SET VAR %%EXDATE=%%ODATE |
| SET VAR |
| CTB STEP AT NAME TYPE |
| DOCMEM SAMPLE08 DOCLIB CTMP.V900.DOC |
| =========================================================================== |
| SCHEDULE RBC JVERRBC |
| SCHEDULE RBC |
| RELATIONSHIP (AND/OR) O |
| DAYS DCAL |
| AND/OR |
| WDAYS WCAL |
| MONTHS 1- Y 2- Y 3- Y 4- Y 5- Y 6- Y 7- Y 8- Y 9- Y 10- Y 11- Y 12- Y |
| DATES |
| CONFCAL SHIFT RETRO N MAXWAIT 00 D-CAT |
| MINIMUM PDS |
| DEFINITION ACTIVE FROM UNTIL |
| =========================================================================== |
The following figure shows JCL of the job specified in the SAMPLE08 definition above. The job contains three statements that are resolved when Control-M monitor submits the job:
-
/*ROUTE PRINT %%EX_SYSTEM - A JES2 statement that sends the printout to a specific z/OS system.
-
//* %%SET %%SAMPLE08_OLD=%%$CALCDTE %%$ODATE -1 - A Control-M statement to resolve the day of the day before the run
-
//NEWFILE DD DISP=(,DELETE),DSN=CTJP.SAMPLE08.D%%EXDATE, - A JCL statement that its DSN last level contains the current date.
Figure JV16 Job with three statements to be resolved - Example 6
//SAMPLE08 JOB ,BR14,MSGCLASS=X,MSGLEVEL=(1,1)
/*ROUTE PRINT %%EX_SYSTEM
//*
//* %%SET %%ODATE_OLD=%%$CALCDTE %%$ODATE -1
//* %%SET %%SAMPLE08_OLD =%%SUBSTR %%ODATE_OLD 3 6
//*
//DELETE EXEC PGM=IEFBR14,COND=EVEN
//OLDFILE DD DISP=(MOD,DELETE),
// DSN=CTJP.SAMPLE08.D%%SAMPLE08_OLD
//*
//ALLOC EXEC PGM=IEFBR14,COND=EVEN
//NEWFILE DD DISP=(,DELETE),DSN=CTJP.SAMPLE08.D%%EXDATE,
// UNIT=SYSDA,SPACE=(CYL,(10,10),RLSE)
The following figure shows the job that performs the verification.
Figure JV17 Verified job - Sample08 - Example 6
//CTJCTMS1 JOB 0,YY,CLASS=A,MSGCLASS=X,// NOTIFY=&SYSUID
//*******************************************************************
//**
//** PARAMETERS TO CTJVER
//** ML=D/I/W/E I=INFO W=WARING E=ERROR
//** FA=D/Y/N
//** FE=D/Y/N
//** ME=D/Y/N
//** D= DEFAULT Y=YES N=NO
//** STATEMENTS
//** USER= IF NOT VERIFY THE USER THAT IS NOT
//** THE CTJVER
//** LIB= MEM= LIB IS MANDATORY
//** MEM IS OPTIONAL AND SUPPORT MASKING (* & %)
//**
//*******************************************************************
// JCLLIB ORDER=IOAP.V900.PROCLIB
// INCLUDE MEMBER=IOASET
//JCLVRFY EXEC CTJVER
//SYSIN DD *
SCHEDLIB=CTJP.TESTS.SCHEDULE MEM=SAMPLE08
/*
The CTJVER utility output report, shown in the following figure, includes various messages. To simplify the reading and interpretation of the messages, Control-M JCL Verify combines the messages that are issued by the system in the JESYSMSG member with the JCL statements.
Figure JV18 CTJVER utility - SYSPRINT - Example 6
CTJU01I FA=D FE=D JES=D ME=D ML=DCTJU01I SCHEDLIB=CTJP.TESTS.SCHEDULE MEM=SAMPLE08
CTJ000I Control-M/JCL Verify is starting. Level IJ10086
CTJ00CI Runtime parameters: FA=Y FE=Y JES=Y ME=Y ML=I USER=N18A
CTJ002I Start processing MEMBER SAMPLE08 DSNAME=CTJP.TESTS.JCLS
CTJR05I //SAMPLE08 JOB ,BR14,MSGCLASS=X,MSGLEVEL=(1,1)
CTJ008I Start verifying JOB SAMPLE08 MEMBER SAMPLE08
1 //SAMPLE08 JOB ,BR14,MSGCLASS=X,MSGLEVEL=(1,1),
// USER=N18A
//*NET ID=AESUSER
//*---- SUBMITTED BY CONTROL-M (FROM MEMLIB) ODATE=130628
//*---- SCHEDULE (UNKNOWN)
//*---- SCHEDULED DUE TO RBC:
//*---- JCL CTJP.TESTS.JCLS(SAMPLE08)
//*---- CONTROL-M JOB IDENTIFICATION: ORDER ID= RUN NO.=00001
CTJR05I /*ROUTE PRINT %%EX_SYSTEM
/*ROUTE PRINT MVS3
//*
CTJR05I //* %%SET %%ODATE_OLD=%%$CALCDTE %%$ODATE -1
//* %%SET %%ODATE_OLD=%%$CALCDTE 20120628 -1
CTJR05I //* %%SET %%SAMPLE08_OLD =%%SUBSTR %%ODATE_OLD 3 6
//* %%SET %%SAMPLE08_OLD =%%SUBSTR 20130627 3 6
//*
2 //DELETE EXEC PGM=IEFBR14,COND=EVEN
CTJP0GI 2 INFORMATION: PGM IEFBR14 found in LINKLIST SYS1.LINKLIB
3 //OLDFILE DD DISP=(MOD,DELETE),
CTJR05I // DSN=CTJP.SAMPLE08.D%%SAMPLE08_OLD
// DSN=CTJP.SAMPLE08.D130627
CTJD06W 3 WARNING: DSN with DISP=DELETE not found. DSN=CTJP.SAMPLE08.D130627
//*
4 //ALLOC EXEC PGM=IEFBR14,COND=EVEN
CTJP0GI 4 INFORMATION: PGM IEFBR14 found in LINKLIST SYS1.LINKLIB
CTJR05I //NEWFILE DD DISP=(,DELETE),DSN=CTJP.SAMPLE08.D%%EXDATE,
5 //NEWFILE DD DISP=(,DELETE),DSN=CTJP.SAMPLE08.D130628,
// UNIT=SYSDA,SPACE=(CYL,(10,10),RLSE)
6 //
CTJ009I Processing ended RC=0004 for JOB SAMPLE08 MEMBER SAMPLE08
CTJ003I Processing ended RC=0004 REASON 00000000 MEMBER SAMPLE08 DSNAME=CTJP.TESTS.JCLS
CTJU02I Control-M/JCL Verify Utility ended. RC=0004
In the above sample:
-
CTJ002I - shows from which library the JCL member was read
-
CTJR05I - echoes the original record in the JCL member that contains Control-M AutoEdit Variables or IOA Global AutoEdit Variables. This record is replaced by the JCL statement appearing in the next record, which follows it in the SYSPRINT output. This message is also displayed if Control/M/JCL verify changes a JCL statement.
If the MEMLIB is a DD name like GENERAL, the library name is the first library in the DD statement concatenation.
CTJVER Example 7
The following example shows a CTJVER output report for the job in SAMPLE08 (see CTJVER Example 6), which was ordered and is now in the Control-M AJF. The orderid of the job is 020QM.
The following figure shows the job that performs the verification.
Figure JV19 Verified job - Sample01 - Example 7
//CTJCTMS2 JOB 0,YY,CLASS=A,MSGCLASS=X,// NOTIFY=&SYSUID
//*******************************************************************
//**
//** PARAMETERS TO CTJVER
//** ML=D/I/W/E I=INFO W=WARNING E=ERROR
//** FA=D/Y/N
//** FE=D/Y/N
//** STDR=D/Y/N
//** ME=D/Y/N
//** D= DEFAULT Y=YES N=NO
//** STATEMENTS
//** USER= IF NOT VERIFY THE USER THAT IS NOT
//** THE CTJVER
//** LIB= MEM= LIB IS MANDATORY
//** MEM IS OPTIONAL AND SUPPORT MASKING (* & %)
//** ENV= ENV IS OPTIONAL AND SUPPORT MASKING (* & %)
//**
//*******************************************************************
// JCLLIB ORDER=IOAP.V900.PROCLIB
// INCLUDE MEMBER=IOASET
//JCLVRFY EXEC CTJVER
//SYSIN DD *
ORDERID=020QM
/*
The CTJVER utility output report, shown in the following figure, includes various messages. To simplify the reading and interpretation of the messages, Control-M JCL Verify combines the messages that are issued by the system in the JESYSMSG member with the JCL statements.
Figure JV20 CTJVER utility - SYSPRINT - Example 7
CTJU01I FA=D FE=D JES=D ME=D ML=DCTJU01I ORDERID=020QM
CTJU01I
CTJU00I Control-M/JCL Verify Utility started. Date/Time 23.07.13 / 16:01. Level 8.0.02 IJ10105
CTJU01I FA=D FE=D JES=D ME=D ML=D STDR=D ENV=GENERAL
CTJU01I ORDERID=020QM
CTJU04I Order ID= 020QM Memname= CTMSMP01 Memlib= CTJP.V900.SAMPLE.JCLS
CTJ000I Control-M/JCL Verify is starting. Level IJ10086
CTJ00CI Runtime parameters: FA=Y FE=Y JES=Y ME=Y ML=I STDR=D ENV=GENERAL USER=N18A
CTJ002I Start processing MEMBER SAMPLE08 DSNAME=CTJP.TESTS.JCLS
CTJR05I //SAMPLE08 JOB ,BR14,MSGCLASS=X,MSGLEVEL=(1,1)
CTJ008I Start verifying JOB SAMPLE08 MEMBER SAMPLE08
1 //SAMPLE08 JOB ,BR14,MSGCLASS=X,MSGLEVEL=(1,1),
// USER=N18A
//*NET ID=AESUSER
//*---- SUBMITTED BY CONTROL-M (FROM MEMLIB) ODATE=120628
//*---- SCHEDULE CTJP.V900.SAMPLE.SCHEDULE(SAMPLE08)
//*---- SCHEDULED DUE TO RBC:
//*---- JCL CTJP.TESTS.JCLS(SAMPLE08)
//*---- CONTROL-M JOB IDENTIFICATION: ORDER ID=020QM RUN NO.=00001
CTJR05I /*ROUTE PRINT %%EX_SYSTEM
/*ROUTE PRINT MVS3
//*
CTJR05I //* %%SET %%ODATE_OLD=%%$CALCDTE %%$ODATE -1
//* %%SET %%ODATE_OLD=%%$CALCDTE 20130628 -1
CTJR05I //* %%SET %%SAMPLE08_OLD =%%SUBSTR %%ODATE_OLD 3 6
//* %%SET %%SAMPLE08_OLD =%%SUBSTR 20130627 3 6
//*
2 //DELETE EXEC PGM=IEFBR14,COND=EVEN
CTJP0GI 2 INFORMATION: PGM IEFBR14 found in LINKLIST SYS1.LINKLIB
3 //OLDFILE DD DISP=(MOD,DELETE),
CTJR05I // DSN=CTJP.SAMPLE08.D%%SAMPLE08_OLD
// DSN=CTJP.SAMPLE08.D130627
CTJD06W 3 WARNING: DSN with DISP=DELETE not found. DSN=CTJP.SAMPLE08.D130627
//*
4 //ALLOC EXEC PGM=IEFBR14,COND=EVEN
CTJP0GI 4 INFORMATION: PGM IEFBR14 found in LINKLIST SYS1.LINKLIB
CTJR05I //NEWFILE DD DISP=(,DELETE),DSN=CTJP.SAMPLE08.D%%EXDATE,
5 //NEWFILE DD DISP=(,DELETE),DSN=CTJP.SAMPLE08.D130628,
// UNIT=SYSDA,SPACE=(CYL,(10,10),RLSE)
6 //
CTJ009I Processing ended RC=0004 for JOB SAMPLE08 MEMBER SAMPLE08
CTJ003I Processing ended RC=0004 REASON 00000000 MEMBER SAMPLE08 DSNAME=CTJP.TESTS.JCLS
CTJU02I Control-M/JCL Verify Utility ended. RC=0004
In the above sample, the values of the resolved variables are taken from the Control-M AJF records and they are the values that Control-M will use when the job is submitted.
CTJVER Example 8
In the following example, CTJVER verifies the control statements in IEBGENER.
The required input and output DD files are:
-
SYSPRINT - The BLKSIZE value can be any value up to 32670 that is a multiple of 121 and a RECFM of F or FB.
-
SYSUT1
-
SYSUT2
-
SYSIN - The BLKSIZE must be a multiple of 80, with a maximum allowed value of 32,720, and a RECFM of F or FB.
Figure JV21 IEBGENER - Example 8
//JS10 EXEC PGM=IEBGENER//SYSPRINT DD SYSOUT=*
//SYSUT1 DD DSN=MY.FB.CLIST.LIB,
// DISP=SHR
//SYSUT2 DD DSN=MY.VB.CLIST.LIB,
// DISP=SHR
//SYSIN DD *
GENERATE MAXFLDS=2,MAXNAME=1
RECORD FIELD=(8,73,,1),FIELD=(72,1,,9)
MEMBER NAME=myclist
CTJVER Example 9
In the following example, CTJVER verifies the control statements in SORT.
Sort has several aliases that can be used in JCL.
Figure JV22 SORT - Example 9
//K68TALL JOB ,K68,MSGCLASS=X,CLASS=A,// NOTIFY=N18
//*
//SORT EXEC PGM=SORT PARM='MSGDDN=MSGDD'
//*
//SORTIN DD DISP=SHR,DSN=CTJP.SORT.CTMDAILY.SYSOUT
//SORTOUT DD SYSOUT=*
//SORTWK01 DD UNIT=SYSDA,SPACE=(CYL,(5,1))
//SORTWK02 DD UNIT=SYSDA,SPACE=(CYL,(5,1))
//SYSOUT DD SYSOUT=*
//MSGDD DD SYSOUT=*
//DFSPARM DD *
OPTION MSGDDN=MSGDD
//SYSIN DD *
SORT FIELDS=COPY
INCLUDE COND=(11,7,CH,EQ,C'JOB501I',AND,19,1,CH,NE,C'*')
RECORD TYPE=F
OPTION DYNALLOC=SYSDA
OUTFIL OUTREC=(18,97)
OPTION NOOPTIONS
CTJVER Example 10
In the following example, CTJVER verifies the control statements in IEBCOPY.
The required input and output DD files are:
-
SYSPRINT - The BLKSIZE value can be any value up to 32670 that is a multiple of 121 and a RECFM of F or FB.
-
SYSIN - The BLKSIZE must be a multiple of 80, with a maximum allowed value of 32,720, and a RECFM of F or FB.
-
If SYSIN is a dummy file, SYSUT1 or SYSUT2, or both, might be required, depending on the parameters in the EXEC statement.
Figure JV23 IEBCOPY - Example 10
//K68TALL JOB ,K68,MSGCLASS=X,CLASS=A,
// NOTIFY=N18
//*
//IEBCOPY JOB (ACCOUNT),'IEBCOPY'
//*
//COPYJOBS EXEC PGM=IEBCOPY,PARM='LIST=NO'
//SYSPRINT DD SYSOUT=*
//RESOURCE DD DISP=SHR,DSN=QUEST.JVER.INPUTA
//BACKUP DD DISP=(,CATLG),DSN=QUEST.JVER.INPUTA,
// LRECL=80,BLKSIZE=32000,RECFM=FB,SPACE=(CYL,(1,1,10))
//SYSIN DD *
COPY001 COPY O=OUTX,I=INA
CTJVER Example 11
In the following example, CTJVER verifies the DB2 plan, subsystem, and program name specified in the DSN command of a TSO batch job.
Figure JV24 DB2 - Example 11
//M91B JOB ,ASM,MSGCLASS=X,
// REGION=0M,NOTIFY=M91
//JOBLIB DD DISP=SHR,
// DSN=SYS3.DV02.DSNEXIT
// DD DISP=SHR,
// DSN=CSGI.DB2V11S.DSNLOAD
//W2 EXEC PGM=IKJEFT01
//SYSPRINT DD SYSOUT=*
//SYSTSPRT DD SYSOUT=*
//SYSTSIN DD *
DSN SYSTEM(DV02)
RUN PROGRAM(QAPROG) PLAN(QAPLAN) -
LIB('M91.QA.LOAD')
END
Figure JV25 CTJVER output of verifying the job in Example 11
CTJU00I Control-M/JCL Verify Utility started. Date/Time 28.05.14 / 14:57. Level 8.0.02 BJ100
CTJU01I JES=D,FV=Y,FA=Y,ME=Y,ML=I
CTJU01I USER=M91 00003702
CTJU01I LIB=M91.DB2.CNTL,MEM=QARUN3 00003807
CTJ000I Control-M/JCL Verify is starting. Level N27
CTJ00CI Runtime parameters: FA=Y FV=Y JES=Y ME=Y ML=I CTM=Y STDR=Y UT=Y ENV=GENERAL USER=M91
CTJ50GI ***********************************************************************
CTJ002I Start processing MEMBER=QARUN3 JOBNAME= *
CTJ008I DSNAME=M91.DB2.CNTL *
CTJ50GI ***********************************************************************
CTJR05I //M91B JOB ,ASM,MSGCLASS=X
1 //M91B JOB ,ASM,MSGCLASS=X,
// MSGLEVEL=(1,1)
CTJ00SI RULE-INFO: YES=DOE
CTJV00E Rule=AAAA Table=ISNUM Command=DO SET RC=08 RS=0000000D
CTJV01I Text=%%VAR=%%$ORIGIN %%$JOBREGN
CTJV03I Internal error: ON not found in LVLTAB
//*---- SUBMITTED BY CONTROL-M (FROM MEMLIB) ODATE=140528
//*---- SCHEDULE (UNKNOWN)
//*---- SCHEDULED DUE TO RBC:
//*---- JCL M91.DB2.CNTL(QARUN3)
//*---- CONTROL-M JOB IDENTIFICATION: ORDER ID=00000 RUN NO.=00001
2 //JOBLIB DD DISP=SHR,
// DSN=SYS3.DV02.DSNEXIT
3 // DD DISP=SHR,
// DSN=CSGI.DB2V11S.DSNLOAD
4 //W2 EXEC PGM=IKJEFT01
TJ20QI INFORMATION: LLA Library is not authorized for reading
CTJP0HI 4 INFORMATION: PGM IKJEFT01 found in LPA/PLPA SYS1.LPALIB
5 //SYSPRINT DD SYSOUT=*
6 //SYSTSPRT DD SYSOUT=*
7 //SYSTSIN DD *
DSN SYSTEM(DV02)
RUN PROGRAM(QAPROG) PLAN(QAPLAN) -
LIB('M91.QA.LOAD')
END
CTJUV0I INFORMATION: Verifying utility IKJEFT01
CTJUTMI DSN SYSTEM(DV02)
CTJUTMI RUN PROGRAM(QAPROG) PLAN(QAPLAN) -
CTJUTMI LIB('M91.QA.LOAD')
CTJP0II INFORMATION: PGM QAPROG found in LIBRARY M91.QA.LOAD
CTJUT6I Using DB2 subsystem DV02 from DSN COMMAND
CTJUT7I Plan QAPLAN is valid and operative.
CTJUTMI END
CTJUV1I INFORMATION: Verifying utility IKJEFT01 ended RC=0000
8 //
CTJ009I Processing ended RC=0000 for JOB M91B MEMBER QARUN3
CTJ003I Processing ended RC=0000 REASON 00000000 MEMBER QARUN3 DSNAME=M91.DB2.CNTL
CTJU02I Control-M/JCL Verify Utility ended. RC=0000
CTJVER Example 12
In the following example, CTJVER verifies a job containing an IDCAMS step.
Figure JV26 IDCAMS - Example 12
//M914 JOB ,ASM,MSGCLASS=X,
// REGION=0M,NOTIFY=&SYSUID
//D EXEC PGM=IDCAMS
//SYSPRINT DD SYSOUT=*
//SYSIN DD *
SET MAXCC=0
IF MAXCC>0 THEN DO
IF LASTCC < 2 THEN DO
IF LASTCC < 3 THEN DO
IF LASTCC < 4 THEN DO
IF LASTCC < 5 THEN DO
IF LASTCC < 6 THEN DO
IF LASTCC < 7 THEN DO
IF LASTCC < 8 THEN DO
IF LASTCC < 9 THEN DO
ALTER M91.JOBS.* NEWNM(M91.ASM.*)
END
ELSE SET MAXCC = 16
END
ELSE SET MAXCC = 17
END
ELSE SET MAXCC = 18
END
ELSE SET MAXCC = 19
END
ELSE SET MAXCC = 20
END
ELSE SET MAXCC = 21
END
ELSE SET MAXCC = 22
END
ELSE SET MAXCC = 23
/*
//
END
Figure JV27 CTJVER output of verifying the job in Example 12
CTJU00I Control-M/JCL Verify Utility started. Date/Time 28.07.14 / 15:3-7. Level 8.0.02
N27CTJU01I JES=D,FV=Y,FA=Y,ME=Y,ML=I
CTJU01I USER=M91 00003513
CTJU01I LIB=M91.A,MEM=ALTER1 00003616
CTJ000I Control-M/JCL Verify is starting. Level N27
CTJ00CI Runtime parameters: FA=Y FV=Y JES=Y ME=Y ML=I CTM=Y STDR=Y UT=Y ENV=GENERAL USER=M91
CTJ50GI ***********************************************************************
CTJ002I * Start processing MEMBER=ALTER1 JOBNAME=M914 *
CTJ008I * DSNAME=M91.A *
CTJ50GI ***********************************************************************
1 //M914 JOB ,ASM,MSGCLASS=X,
// REGION=0M,NOTIFY=&SYSUID, CTJV00E
// MSGLEVEL=(1,1)
IEFC653I SUBSTITUTION JCL -,ASM,MSGCLASS=X,REGION=0M,NOTIFY=M91,MSGLEVEL=(1,1)
//*---- SUBMITTED BY CONTROL-M (FROM MEMLIB) ODATE=140728
//*---- SCHEDULE (UNKNOWN)
//*---- SCHEDULED DUE TO RBC:
//*---- JCL M91.A(ALTER1)
//*---- CONTROL-M JOB IDENTIFICATION: ORDER ID=00000 RUN NO.=00001
2 //D EXEC PGM=IDCAMS
CTJP0GI 2 INFORMATION: PGM IDCAMS found in LINKLIST SYS1.LINKLIB
3 //SYSPRINT DD SYSOUT=*
4 //SYSTSIN DD *
SET MAXCC=0
IF MAXCC>0 THEN DO
IF LASTCC < 2 THEN DO
IF LASTCC < 3 THEN DO
IF LASTCC < 4 THEN DO
IF LASTCC < 5 THEN DO
IF LASTCC < 6 THEN DO
IF LASTCC < 7 THEN DO
IF LASTCC < 8 THEN DO
IF LASTCC < 9 THEN DO
ALTER M91.JOBS.* NEWNM(M91.ASM.*)
END
ELSE SET MAXCC = 16
END
ELSE SET MAXCC = 17
END
ELSE SET MAXCC = 18
END
ELSE SET MAXCC = 19
END
ELSE SET MAXCC = 20
END
ELSE SET MAXCC = 21
END
ELSE SET MAXCC = 22
END
ELSE SET MAXCC = 23
/*
CTJUV0E INFO: Verifying utility IDCAMS
CTJUA0I SET MAXCC=0 END
CTJUA0I IF MAXCC>0 THEN DO
CTJUA0I IF LASTCC < 2 THEN DO
CTJUA0I IF LASTCC < 3 THEN DO
CTJUA0I IF LASTCC < 4 THEN DO
CTJUA0I IF LASTCC < 5 THEN DO
CTJUA0I IF LASTCC < 6 THEN DO
CTJUA0I IF LASTCC < 7 THEN DO
CTJUA0I IF LASTCC < 8 THEN DO
CTJUA0I IF LASTCC < 9 THEN DO
CTJUA0I ALTER M91.JOBS.* NEWNM(M91.ASM.*)
CTJUAII M91.JOBS.ALOADE will be altered
CTJUAJI M91.ASM.ALOADE is the new name
CTJUAII M91.JOBS.C will be altered
CTJUAJI M91.ASM.C is the new name
CTJUAII M91.JOBS.CNTL will be altered
CTJUAJI M91.ASM.CNTL is the new name
CTJUAII M91.JOBS.CNTL1 will be altered
CTJUAJI M91.ASM.CNTL1 is the new name
CTJUAII M91.JOBS.LOAD will be altered
CTJUAJI M91.ASM.LOAD is the new name
CTJUAII M91.JOBS.LOADE will be altered
CTJUAJI M91.ASM.LOADE is the new name
CTJUAII M91.JOBS.OBJ will be altered
CTJUAJI M91.ASM.OBJ is the new name
CTJUA0I END
CTJUA0I ELSE SET MAXCC = 16
CTJUA0I END
CTJUA0I ELSE SET MAXCC = 17
CTJUA0I END
CTJUA0I ELSE SET MAXCC = 18
CTJUA0I END
CTJUA0I ELSE SET MAXCC = 19
CTJUA0I END
CTJUA0I ELSE SET MAXCC = 20
CTJUA0I END
CTJUA0I ELSE SET MAXCC = 21
CTJUA0I END
CTJUA0I ELSE SET MAXCC = 22
CTJUA0I END
CTJUA0I ELSE SET MAXCC = 23
CTJUV1I INFORMATION: Verifying utility IDCAMS ended RC=0000
5 //
CTJ009I Processing ended RC=0000 for JOB M914 MEMBER ALTER1
CTJ003I Processing ended RC=0000 REASON 00000000 MEMBER ALTER1 DSNAME=M91.A
************************************************************************
* Report Summary *
************************************************************************
MEMBER DSNAME ERR# WRN# MAX-RC
----------------------------------------------------------------------
ALTER1 M91.A 0000 0000 00
----------------------------------------------------------------------
TOTAL ISSUED - 56
INFORMATION MESSAGES - 56
WARNING MESSAGES - 0
ERRORS MESSAGES - 0
THE HIGHEST SEVERITY CODE ENCOUNTERD WAS 00
************************************************************************
* Statistics *
************************************************************************
JOBS\PROCS PROCESSED - 1
ENDED WITH ERRORS - 0
ENDED WITH WARNING - 0
ENDED OK - 1
STEP PROCESSED - 1
DD STATEMENTS PROCESSED - 16
CTJ50FI Control-M/JCL Verify Summary Report ended
CTJU02I Control-M/JCL Verify Utility ended. RC=0000
CTJVER Example 13
A temporary dataset, starting with a prefix of &&* and followed by a number, is used when the DSN keyword does not exist in the JCL DD statement.
In this case, the %%$DDDSN variable shows this temporary value.
Figure JV28 CTJVER output with temporary dataset - Example 13
4 //NDSNDEV DD DISP=(NEW,PASS),
// DCB=(LRECL=0080,BLKSIZE=3120,RECFM=FB,DSORG=PS),
// SPACE=(TRK,(0001,0001),RLSE),
// MGMTCLAS=TOTO
CTJDSIW 4 WARNING: SPECIFIED MGMTCLAS TOTO does not exist. DSN=&&*00000001
CTJVER Example 14
In the following example, CTJVER verifies a job containing an IEHPROGM step.
Figure JV29 IEHPROGM – Example 14
//M91I JOB ,ASM,MSGCLASS=X
//ZZZ EXEC PGM=IEHPROGM
//SYSPRINT DD SYSOUT=*
//A DD UNIT=3390,VOL=SER=IOAU03,DISP=SHR
//B DD UNIT=3390,VOL=SER=TL321M,DISP=SHR
SCRATCH VTOC,VOL=3390=IOAXXX
RENAME DSNAME=M91.JOBS.CNTL1,VOL=3390=IOAU03, X
NEWNAME=M91.JOBS.CNTL2
CATLG DSNAME=SYS1.LINKLIB,VOL=3390=TL321M
UNCATLG DSNAME=SYS1.LINKLIB
ADD DSNAME=M91.A,PASWORD2=NEWPAS,DATA='CHANGED BY X.Y ON 2.7.16'
DELETEP DSNAME=M91.A,VOL=3390=IOAU03
LIST DSNAME=M91.B,PASWORD1=NEWPAS
RENAME DSNAME=A,NEWNAME=D
SCRATCH VTOC,VOL=3390=TL321M,PURGE
Figure JV30 CTJVER output of verifying the job in example 14
CTJ000I Control-M JCL Verify is starting. Level IJ10248
CTJ00CI Runtime parameters: FA=Y FV=Y JES=Y ME=Y ML=I CTM=Y STDR=Y UT=Y ENV=GENERAL USER=M91
************************************************************************
CTJ002I * Start processing MEMBER=PROGOK JOBNAME=M91I *
CTJ008I * DSNAME=M91.B *
************************************************************************
CTJR05I //M91I JOB ,ASM,MSGCLASS=X
CTJ00SI RULE-INFO: MEMBER NAME: PROGOK
1 //M91I JOB ,ASM,MSGCLASS=X,
// MSGLEVEL=(1,1),
// UJOBCORR='CTM_$UNKNWN$_00000'
//*---- SUBMITTED BY CONTROL-M (FROM MEMLIB) ODATE=150720
//*---- SCHEDULE (UNKNOWN)
//*---- SCHEDULED DUE TO RBC:
//*---- JCL M91.B(PROGOK)
//*---- CONTROL-M JOB IDENTIFICATION: ORDER ID=00000 RUN NO.=00001
2 //ZZZ EXEC PGM=IEHPROGM
CTJP0GI 2 INFORMATION: PGM IEHPROGM found in LINKLIST SYS1.LINKLIB
3 //SYSPRINT DD SYSOUT=*
4 //A DD UNIT=3390,VOL=SER=IOAU03,DISP=SHR
5 //B DD UNIT=3390,VOL=SER=TL321M,DISP=SHR
CTJ105I 6 //SYSIN DD * GENERATED BY CTJVER
SCRATCH VTOC,VOL=3390=IOAXXX
RENAME DSNAME=M91.JOBS.CNTL1,VOL=3390=IOAU03, X
NEWNAME=M91.JOBS.CNTL2
CATLG DSNAME=SYS1.LINKLIB,VOL=3390=TL321M
UNCATLG DSNAME=SYS1.LINKLIB
ADD DSNAME=M91.A,PASWORD2=NEWPAS,DATA='CHANGED BY X.Y ON 2.7.16'
DELETEP DSNAME=M91.A,VOL=3390=IOAU03
LIST DSNAME=M91.B,PASWORD1=NEWPAS
RENAME DSNAME=A,NEWNAME=B
SCRATCH VTOC,VOL=3390=TL321M,PURGE
CTJUV0I INFORMATION: Verifying utility IEHPROGM
CTJUH0I IEHPROGM SCRATCH VTOC,VOL=3390=IOAXXX
CTJUHEE IEHPROGM DD statement missing or invalid device type for volume IOAXXX
CTJUH0I IEHPROGM RENAME DSNAME=M91.JOBS.CNTL1,VOL=3390=IOAU03, X
CTJUH0I IEHPROGM NEWNAME=M91.JOBS.CNTL2
CTJUH0I IEHPROGM CATLG DSNAME=SYS1.LINKLIB,VOL=3390=TL321M
CTJD08W IEHPROGM WARNING: file was already cataloged. DSN=SYS1.LINKLIB
CTJUH0I IEHPROGM UNCATLG DSNAME=SYS1.LINKLIB
CTJSA6W IEHPROGM WARNING: Permission to UNCATALOG was not granted for SYS1.LINKLIB
CTJUH0I IEHPROGM ADD DSNAME=M91.A,PASWORD2=NEWPAS,DATA='CHANGED BY X.Y ON 2.7.16'
CTJUH0I IEHPROGM DELETEP DSNAME=M91.A,VOL=3390=IOAU03
CTJUH0I IEHPROGM LIST DSNAME=M91.B,PASWORD1=NEWPAS
CTJUH0I IEHPROGM RENAME DSNAME=A,NEWNAME=B
CTJUH2E IEHPROGM Required parameter or value missing - VOL=
CTJUH0I IEHPROGM SCRATCH VTOC,VOL=3390=TL321M,PURGE
CTJUHLE IEHPROGM Attempt to scratch the VTOC of the SYSRES volume
CTJUHHI IEHPROGM SCRATCH VTOC - individual file verification bypassed
CTJUV1I INFORMATION: Verifying utility IEHPROGM ended RC=0008
7 //
CTJ009I Processing ended RC=0008 for JOB M91I MEMBER PROGOK
CTJ003I Processing ended RC=0008 REASON 00000000 MEMBER PROGOK DSNAME=M91.B
CTJVER Example 15
In the following example, CTJVER verifies a job containing an IEHLIST step.
Figure JV31 IEHLIST – Example 15
//M91I JOB ,ASM,MSGCLASS=X
//ZZZ EXEC PGM=IEHLIST
//SYSPRINT DD SYSOUT=*
//S DD UNIT=3390,VOL=SER=TL321M,DISP=SHR
//SYSIN DD *
LISTVTOC DSNAME=(SYS1.MACLIB,SYS2.MACLIB),VOL=3390=TL321M
LISTPDS DSNAME=SYS1.LINKLIB,FORMAT
Figure JV32 CTJVER output of verifying the job in example 15
CTJ000I Control-M JCL Verify is starting. Level IJ10248
CTJ00CI Runtime parameters: FA=Y FV=Y JES=Y ME=Y ML=I CTM=Y STDR=Y UT=Y ENV=GENERAL USER=M91
************************************************************************
CTJ002I * Start processing MEMBER=LISTOK JOBNAME=M91I *
CTJ008I * DSNAME=M91.B *
************************************************************************
CTJR05I //M91I JOB ,ASM,MSGCLASS=X
CTJ00SI RULE-INFO: MEMBER NAME: LISTOK
1 //M91I JOB ,ASM,MSGCLASS=X,
// MSGLEVEL=(1,1),
// UJOBCORR='CTM_$UNKNWN$_00000'
//*---- SUBMITTED BY CONTROL-M (FROM MEMLIB) ODATE=150721
//*---- SCHEDULE (UNKNOWN)
//*---- SCHEDULED DUE TO RBC:
//*---- JCL M91.B(LISTOK)
//*---- CONTROL-M JOB IDENTIFICATION: ORDER ID=00000 RUN NO.=00001
2 //ZZZ EXEC PGM=IEHLIST
CTJP0GI 2 INFORMATION: PGM IEHLIST found in LINKLIST SYS1.LINKLIB
3 //SYSPRINT DD SYSOUT=*
4 //S DD UNIT=3390,VOL=SER=TL321M,DISP=SHR
5 //SYSIN DD *
LISTVTOC DSNAME=(SYS1.MACLIB,SYS2.MACLIB),VOL=3390=TL321M
LISTPDS DSNAME=SYS1.LINKLIB,FORMAT
CTJUV0I INFORMATION: Verifying utility IEHLIST
CTJUH0I IEHLIST LISTVTOC DSNAME=(SYS1.MACLIB,SYS2.MACLIB),VOL=3390=TL321M
CTJD01W IEHLIST WARNING: VOLUMES list and VOLUMES in catalog are not matched. DSN=SYS2.MACLIB
CTJUH0I IEHLIST LISTPDS DSNAME=SYS1.LINKLIB,FORMAT
CTJUV1I INFORMATION: Verifying utility IEHLIST ended RC=0004
6 //
CTJ009I Processing ended RC=0004 for JOB M91I MEMBER LISTOK
CTJ003I Processing ended RC=0004 REASON 00000000 MEMBER LISTOK DSNAME=M91.B
CTJVER Example 16
In the following example, CTJVER verifies a job containing an ADRDSSU step.
Figure JV33 ADRDSSU – Example 16
//M91K JOB
//BACKUP EXEC PGM=ADRDSSU
//SYSPRINT DD SYSOUT=*
IF MAXCC > 8 THEN DO
DUMP DATASET(INCLZDE(PAYROLL.FEDTAX.**) -
BY((DSCHA,EQ,YES) (MGMTCLAS,EQ,DAILY))) -
OUTDD(DROUT)
Figure JV34 CTJVER output of verifying the job in example 16
CTJ000I Control-M JCL Verify is starting. Level K27
CTJ00CI Runtime parameters: FA=Y FV=Y JES=Y ME=Y ML=I CTM=Y STDR=Y UT=Y
***************************************************************
CTJ002I * Start processing MEMBER=CTJUADG7 JOBNAME=M91K
CTJ008I * DSNAME=M91.TEST.CNTL
***************************************************************
CTJR05I //M91K JOB
1 //M91K JOB
// MSGCLASS=X,
// MSGLEVEL=(1,1)
2 //BACKUP EXEC PGM=ADRDSSU
CTJP0GI 2 INFORMATION: PGM ADRDSSU found in LINKLIST SYS1.LINKLIB
3 //SYSPRINT DD SYSOUT=*
CTJ105I 4 //SYSIN DD * GENERATED BY CTJVER
IF MAXCC > 8 THEN DO
DUMP DATASET(INCLZDE(PAYROLL.FEDTAX.**) -
BY((DSCHA,EQ,YES) (MGMTCLAS,EQ,DAILY))) -
OUTDD(DROUT)
CTJUV0I INFORMATION: Verifying utility ADRDSSU
CTJUHOI ADRDSSU IF MAXCC > 8 THEN DO
CTJUHOI ADRDSSU DUMP DATASET(INCLZDE(PAYROLL.FEDTAX.**) -
CTJUHOI ADRDSSU BY((DSCHA,EQ,YES) (MGMTCLAS,EQ,DAILY))) -
CTJUHOI ADRDSSU OUTDD(DROUT)
CTJUHOI ADRDSSU ADR181T TOO MANY LEVELS OF 'IF' COMMAND NESTING
CTJUV1I INFORMATION: Verifying utility ADRDSSU ended RC=0008
5 //
CTJ009I Processing ended RC=0008 for JOB M91K MEMBER CTJUADG7 DSN=M91.TEST.CNTL
CTJ003I Processing ended RC=0008 REASON 00000000 MEMBER CTJUADG7 DSNAME