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:

  • Y - Yes

  • N - No. Default

REF

Whether to invoke the reformatting rules. Valid values are:

  • Y - Yes

  • N - No. Default

SAV

Whether to save the changed JCL statements. Valid values are:

  • Y - Yes

  • N - No. Default

OVR

Whether to override the existing member. Valid values are:

  • Y - Yes

  • N - No. Default

CTM

Whether to consider Control-M AutoEdit variables. Valid values are:

  • Y - Yes. Default

  • N - No

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

  • NODE

  • SYS

  • IE

  • PROCDD

  • Options parameters apply to the next Enforcement or Reformat request.

  • May be specified on one or more SYSIN records.

  • Parameters on a record may be separated by any number of spaces or commas.

  • Enforcement/Reformat parameters may be mixed with options parameters on the same statement.

Enforcement/Reformat parameters

  • LIB

  • MEM

  • SAVLIB

  • SAVMEM

  • Any of these parameters will trigger an Enforcement or Reformat process, based on the ENF/REF EXEC PARM value.

  • Must be specified on a single statement.

  • A statement consists of a SYSIN record, or a record followed by continuation records.

  • Continuation is signaled by a comma appended to the last parameter on a record, or by a non-blank character in column 72.

  • Parameters may be separated by any number of spaces or commas. However, a comma appended to the last parameter has a special meaning (continuation mark, as explained above).

  • Options parameters may be mixed with Enforcement or Reformat parameters on the same statement.

  • Multiple Enforcement or Reformat requests may be specified in the same CTJENR invocation.

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:

Copy
// .... 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

Copy
//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

Copy
//JCLENR  EXEC CTJENR,REF=Y           
//SYSIN    DD   *              
  LIB=WORK.LIB MEM=MEM1

The following is the output of the utility:

SYSPRINT from CTJENR batch

Copy
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

Copy
//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

Copy
//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

Copy
//JCLENR  EXEC CTJENR,ENF=Y     
//SYSIN    DD   *                 
    LIB=WORK.LIB MEM=MEM1 

The following is the output of the utility:

SYSPRINT from CTJENR batch

Copy
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

Copy
//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

Copy
 "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

Copy
//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

Copy
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

Copy
 "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

Copy
//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

Copy
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:

  • I - Information - all messages are issued.

  • W - Warning messages and errors are issued.

  • E - only Error messages are issued

  • D - as Defined by the MSGLEVEL parameter in the CTJPARM member. Default

FA

Whether to verify file access privileges. Valid values are:

  • Y - Yes

  • N - No

  • D - as Defined by the DSNACCSS parameter in the CTJPARM member. Default

FV

Whether to perform dataset verification. Valid values are:

  • Y - Yes

  • N - No

  • S - exclude SPACE check

  • U - perform file validation, without issuing any relevant messages, recommended for use with the Utility validation (UT=Y)

  • D - as Defined by the DSNEXIST parameter in the CTJPARM member. Default

ME

Whether to verify that the load modules exist. Valid values are:

  • Y - Yes

  • N - No

  • D - as Defined by the PGMCHECK parameter in the CTJPARM member. Default

STDR

Whether to use the Control-M JCL Verify rules to verify site standards. Valid values:

  • Y - Yes

  • N - No

  • D - as Defined by the STDR parameter in the CTJPARM member. Default

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:

  • Y - Yes

  • N - No

  • D - as Defined by the SUPUTIL parameter in the CTJPARM member. Default

  • If the existence and the attributes of the datasets used in the IBM utilities must be verified, set FV=Y or FV=U, as described above in this table for the FV parameter.

  • DB2 validation requires additional steps. See the "Enabling DB2 Support" section in the INCONTROL for z/OS Installation Guide: Installing.

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:

Copy
//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

Copy
//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:

  • Y - Yes

  • N - No

  • D - as Defined by the JESTTMNT parameter in the CTJPARM member. Default

FV

Whether to perform dataset verification. Valid values are:

  • Y - Yes

  • N - No

  • S - exclude SPACE check

  • U - perform file validation, without issuing any relevant messages, recommended for use with the Utility validation (UT=Y)

  • D - as Defined by the DSNEXIST parameter in the CTJPARM member. Default

FA

Whether to verify file access privileges. Valid values are:

  • Y - Yes

  • N - No

  • D - as Defined by the DSNACCSS parameter in the CTJPARM member. Default

STDR

Whether to use the Control-M JCL Verify rules to verify site standards. Valid values:

  • Y - Yes

  • N - No

  • D - as Defined by the STDR parameter in the CTJPARM member. Default

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:

  • Y - Yes

  • N - No

  • D - as Defined by the PGMCHECK parameter in the CTJPARM member. Default

ML

The minimum level of message severity to be issued. Valid values are:

  • I - Information - all messages are issued.

  • W - Warning messages and errors are issued.

  • E - only Error messages are issued

  • D - as Defined by the MSGLEVEL parameter in the CTJPARM member. Default

CTM

Whether to resolve Control-M AutoEdit variables in the job. Valid values are:

  • Y - Yes

  • N - No

  • D - as Defined by the CTMVARS parameter in the CTJPARM member. Default

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:

  • Y - Yes

  • N - No

  • D - as Defined by the SUPUTIL parameter in the CTJPARM member. Default

  • If the existence and the attributes of the datasets used in the IBM utilities must be verified, set FV=Y or FV=U, as described above in this table for the FV parameter.

  • DB2 validation requires additional steps. See the "Enabling DB2 Support" section in the INCONTROL for z/OS Installation Guide: Installing.

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:

Copy
// .... 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:

Copy
//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:

Copy
//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

Copy
//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

Copy
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:

Copy
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

Copy
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=&REG
                  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=&REG,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:

  • Y - Yes

  • N - No

  • D - as Defined by the JESTTMNT parameter in the CTJPARM member. Default

FV

Whether to perform dataset verification. Valid values are:

  • Y - Yes

  • N - No

  • S - exclude SPACE check

  • U - perform file validation, without issuing any relevant messages, recommended for use with the Utility validation (UT=Y)

  • D - as Defined by the DSNEXIST parameter in the CTJPARM member. Default

FA

Whether to verify file access privileges. Valid values are:

  • Y - Yes

  • N - No

  • D - as Defined by the DSNACCSS parameter in the CTJPARM member. Default

STDR

Whether to use the Control-M JCL Verify rules to verify site standards. Valid values:

  • Y - Yes

  • N - No

  • D - as Defined by the STDR parameter in the CTJPARM member. Default

ME

Whether to verify that the load modules exist. Valid values are:

  • Y - Yes

  • N - No

  • D - as Defined by the PGMCHECK parameter in the CTJPARM member. Default

ML

The minimum level of message severity to be issued. Valid values are:

  • I - Information - all messages are issued.

  • W - warning messages and errors are issued.

  • E - Only error messages are issued

  • D - as Defined by the MSGLEVEL parameter in the CTJPARM member. Default

CTM

Whether to resolve Control-M AutoEdit variables in the job. Valid values are:

  • Y - Yes

  • N - No

  • D - as Defined by the CTMVARS parameter in the CTJPARM member. Default

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:

  • Y - Yes

  • N - No

  • D - as Defined by the SUPUTIL parameter in the CTJPARM member. Default

  • If the existence and the attributes of the datasets used in the IBM utilities must be verified, set FV=Y or FV=U, as described above in this table for the FV parameter.

  • DB2 validation requires additional steps. See the "Enabling DB2 Support" section in the INCONTROL for z/OS Installation Guide: Installing.

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

  • USER

  • ENV

  • IE

  • NODE

  • SYS

  • AR

  • PROCDD

  • LINKDD

  • CNDLAC

  • ODATE

  • Options parameters apply to the next verification request.

  • May be specified on one or more SYSIN records.

  • Parameters on a record may be separated by any number of spaces or commas.

  • Verification parameters may be mixed with options parameters on the same statement.

Verification parameters

  • LIB

  • MEM

  • SCHEDLIB

  • TABLE

  • JOB

  • ORDERID

  • AJF

  • Any of these parameters will trigger a verification process.

  • Must be specified on a single statement.

  • A statement consists of a SYSIN record, or a record followed by continuation records.

  • Continuation is signaled by a comma appended to the last parameter on a record, or by a non-blank character in column 72.

  • Parameters may be separated by any number of spaces or commas. However, a comma appended to the last parameter has a special meaning (continuation mark, as explained above).

  • Options parameters may be mixed with verification parameters on the same statement.

  • Multiple verifications may be requested in the same CTJVER invocation.

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
task:

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:

  • user_ID

  • *DEFAULT - use the default user ID (either the user invoking the CTJVER utility, or in the case of a Control-M job definition, the Control-M owner)

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
//SYSIN DD *    USER=M01
    ODATE=ODAT
    ENV=PROD
    LIB=MY.PROD.LIB,MEM=*
    ENV=TEST
    LIB=MY.TEST.LIB,MEM=*
/*

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 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:

  • Y - Yes

  • N - No.

  • D - as Defined by the AROUTE parameter in the CTJPARM

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.

  • N – NO,Control-M JCL Verify considers all steps as if they always run, regardless of being conditional or not.

  • Y – YES, Control-M JCL Verify considers all the dataset references in conditional steps as references that may or may not occur and issues warning messages when a later step relies on it (because dataset status is in doubt).

  • D - as Defined by the CNDALC parameter in the CTJPARM.

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:

Copy
// .... 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

Copy
// . . . JOB . . .
//      EXEC CTJVER,JES=D,FE=Y,FA=Y,ME=N
//SYSIN DD *
  USER=M01
  LIB=XX.YY,MEM=JOB1
/*
//

CTJVER Example 2

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 2

Copy
// . . . JOB . . .
//      EXEC CTJVER,JES=D,FE=Y,FA=Y,ME=N
//SYSIN DD *
  USER=M01
  LIB=XX.YY.ZZ,MEM=*
/*
//

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

Copy
// . . . 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=*
/*
//

CTJVER Example 4

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

Copy
//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

Copy
//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

Copy
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

CTJVER Example 5

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

Copy
//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

Copy
//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

Copy
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

CTJVER Example 6

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

Copy
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

Copy
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

Copy
//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

Copy
//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

Copy
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

Copy
//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

Copy
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

Copy
//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

Copy
//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

Copy
//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

Copy
//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

Copy
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

Copy
//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

Copy
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

Copy
            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

Copy
//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

Copy
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

Copy
//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

Copy
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

Copy
//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

Copy
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