CTJXVER Edit Macro
The CTJXVER edit macro, which is capable of verifying a JCL job before it is submitted, can be invoked from the ISPF editor. CTJXVER can also be used for reformatting and enforcement of JCL.
This chapter includes the following topics:
Overview
The CTJXVER edit macro can be used to verify JCL jobs before they are submitted. The CTJXVER edit macro can be invoked from the ISPF editor or from any other compatible editor. In an Edit or View session of the job member, enter the CTJXVER macro on the command line or use it as a line command.
BMC ships the edit macro as CTJXVER, but the macro can be copied to the SYSPROC library as JVER, making it easier to run. For details, refer to the INCONTROL for z/OS Installation Guide: Installing, Step 6.3 - Edit Macro Customization.
The CTJXVER edit macro works with the member in memory, so any change while editing the member will be verified even if the member is not saved.
After processing, the CTJXVER edit macro displays the results in the job member. The displayed results is a simulation of the error messages that would be displayed if the job actually ran. The display is divided into the following two sections:
-
header
-
main body
The header section includes a summary of the number and types of messages.
The main body section contains the job member with the messages appearing immediately after the lines in the job where they are relevant.
Syntax
The CTJXVER edit macro has the following syntax:
CTJXVER [REF/ENF/HELP/?] [P]
The CTJXVER edit macro can be invoked in one of the following modes:
-
verification
-
reformatting
-
enforcement
Verification mode
In verification mode, the CTJXVER edit macro uses the following syntax:
CTJXVER [P]
When CTJXVER is invoked without the P option, the verification tests are performed using the latest default parameters.
CTJXVER takes the value of VERIFICATION CRITERIA from the User IOA Profile or the site default profile member which is in the IOA Profile library (not the ISPF Profile library). The user must enter the JD screen in the IOA online environment to set the defaults (if needed). The user profile is saved only when the user exits the IOA online environment.
To set new default parameters, invoke CTJXVER with the P option. A window opens (see the following figure) allowing you to set the new parameters, before the verification.
-------------- CONTROL-M/JCL VERIFY DEFAULTS FACILITY ------------
COMMAND ===>
ENTER THE PARAMETERS BELOW:
MEMBER => LIBRARY =>
USER=> PROCDD=> LINKDD =>
NODE=> SYSTEM=> IOA ENV=> AUTO ROUTE=> Y (Y/N/D)
SUMMARY FORMAT ===> D (T/M/N/D) T - TABLE M - MESSAGES N - NO SUMMARY
MESSAGE ID ===> D (Y/N/D) Y - SHOW MSGID N - HIDE MSGID D-DEFAULT
RULE TRACE ===> D (Y/N/D) SHOW TRIGGERED RULE INFORMATION
SPECIFY VERIFICATION CRITERIA:
JES SYNTAX ==> D (Y/N/D)
DATASET VERIFICATION ==> D (Y/N/S/U/D) CNDALC=> D (Y/N/D)
DATASET AUTHORIZATION ==> D (Y/N/D)
PROGRAM EXISTENCE ==> D (Y/N/D)
RESOLVE CONTROL-M AUTO-EDIT VARIABLE ==> D (Y/N/D) ODATE=> (YYMMDD)
SITE STANDARDS RULES ==> D (Y/N/D) ENV => GENERAL
UTILITIES VALIDATION ==> Y (Y/N/D)
MESSAGE LEVEL ==> D (I/W/E/D)
SAVE REPORTS ==> N (Y/N/D) Y-SAVE N-NO SAVE D-DEFAULT VALUES (CTJPARM)
JREPPREF => JREPVOL => JREPUNIT ==>
Y - ALWAYS CHECK N - NEVER CHECK S - NO SPACE CHECK U - UTILITIES CHECK
E - ERRORS W - WARNING I - INFORMATION D - DEFAULT
PRESS ENTER TO CONTINUE, END OR PF03/PF15 TO EXIT
The following table describes the configuration parameters of the Control-M JCL Verify Defaults panel and indicates the modes in which they are available (verification, reformatting, or enforcement). These parameters are only available under the ISPF editor.
Tab.JV.7.1 Control-M JCL Verify Defaults panel parameters
Criteria |
Description |
VER |
ENF |
REF |
---|---|---|---|---|
SAVE CHANGES |
Save the invocation parameter values into the user's profile member in the IOA.PROF library. Valid values are:
|
Y |
Y |
Y |
USER |
Name of user who is currently logged on. |
Y |
N |
N |
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, seeJES2/3 Predefined PROCLIBs. |
Y |
Y |
Y |
LINKDD |
Name of a predefined DD card in which the load modules are searched when the JCLs are verified. For more information, see CTJLINK: User Link Libraries for Program Existence Check. |
Y |
N |
N |
NODE |
Indicates the computer where the verification is being performed. |
Y |
Y |
Y |
SYSTEM |
Identifies the target SYSTEM in the target SYSPLEX. Default: A blank specifies any SYSTEM in the target SYSPLEX. Preference is given to SYSTEM with the same name as the originating SYSTEM, when IOA ENV is not blank or *. |
Y |
Y |
Y |
IOA ENV |
Identifies the target CTJMON by the QNAME of the IOA environment in the target SYSPLEX/SYSTEM. Default: A blank specifies any IOA environment in the target SYSPLEX. Preference is given to the same IOA environment as that of the originating CTJMON when SYSTEM is not blank or *. Masking: * has the same meaning as blank |
Y |
Y |
Y |
AUTO ROUTE |
Enables automatic routing so the JCL can be verified on different Control-M JCL Verify monitors located in different systems, depending on JES routing commands and JOB card routing keywords. Valid values are:
|
Y |
N |
N |
SUMMARY FORMAT/ SUMMFRMT |
Display format for the message summary section. Valid values are:
|
Y |
N |
N |
MESSAGE ID/ MSGID |
Display message ID. Valid values are:
|
Y |
N |
N |
RULE TRACE |
Display triggered rule information ID. Valid values are:
|
Y |
Y |
Y |
The following table describes the criteria that are available only in verification mode for verifying the JCL members:
Tab.JV.7.2 Control-M JCL Verify verification criteria
Criteria |
Description |
---|---|
JES SYNTAX |
Whether to verify that the JES2 or JES3 statements are correct. Valid values are:
|
DATASET VERIFICATION |
Whether to verify dataset. Valid values are:
|
CNDALC |
Whether to consider datasets that are created or deleted by conditional steps as conditional references and issue warnings when the dataset is later referenced by a step later in the job if this reference may not be valid.
For more information and examples, see Conditional dataset references. |
DATASET AUTHORIZATION |
Whether to verify file access privileges. Valid values are:
|
PROGRAM EXISTENCE |
Whether to verify that the load modules exist. Valid values are:
|
RESOLVE CONTROL-M AUTO-EDIT VARIABLE |
Whether to resolve Control-M AutoEdit variables in the job. Valid values are:
|
SITE STANDARDS RULES |
Whether to verify site standards. Valid values are:
In the ENV field, specify which rules, in addition to the GENERAL rules, are to be used in the site standard verifications. The default value is GENERAL, indicating that only the GENERAL rules are to be used in the verifications. |
UTILITY VALIDATION |
Whether to verify the syntax of the IBM utilities (for details, see JCL and syntax verification) and the DB2 related validation. Valid values are:
|
MESSAGES LEVEL |
The minimum level of message severity to be issued. Valid values are:
|
The following table describes parameters for automatic saving of generated reports.
Tab.JV.7.2a Control-M JCL Verify Auto-Save Reports parameters
Criteria |
Description |
---|---|
SAVE REPORTS |
Whether to save reports generated through IOA or Edit-Macro. Valid values are:
|
JREPPREF |
Defines a prefix for the flat file that contains saved reports. Up to 19 characters. Besides this prefix, the file name also includes the date and time when saved and the name of the verifying JCL. |
JREPVOL |
Defines the VOLUME where reports are saved. To use SMS to manage the saving location, leave this parameter blank. If you specify a value for JREPVOL, you must also specify a value for JREPUNIT. |
JREPUNIT |
Defines the UNIT where reports are saved. To use SMS to manage the saving location, leave this parameter blank. |
The criteria are associated with each user and are saved in the following profile variables:
-
SJVDJES (verify that the JES2 or JES3 statements are correct)
-
SJVDDSEX (verify dataset existence)
-
SJVDDSAU (verify file access privileges)
-
SJVDPGEX (load modules existence test)
-
SJVDUTL (the utility validation)
-
SJVDMSGL (minimum level of message severity to be issued)
-
SJVDCND (Conditional allocation consideration)
-
SJVDSVRP (whether to save reports)
-
SJVDPREF (prefix for file names of saved reports)
-
SJVDVOL (the VOLUME where reports are saved)
-
SJVDUNIT (the UNIT where reports are saved)
Reformatting mode
In reformatting mode, the CTJXVER edit macro uses the following syntax:
CTJXVER REF [P]
A window opens (see the following figure) allowing you to set the parameters, before the processing.
Fig.JV.7.2 Control-M JCL Verify Reformat and Enforcement Facility
------ CONTROL-M JCL REFORMAT AND ENFORCEMENT FACILITY -----
ENTER THE PARAMETERS BELOW: SAVE CHANGES => N (Y/N)
LIBRARY NAME => QUEST.JVER.JCL.RENF
MEMBER NAME => DREF0001
PROCDD =>
NODE NAME => LOCAL SYSTEM NAME => IOA ENV NAME =>
CONSIDER CONTROL-M VARIABLES ==> D (Y/N/D)
ENVIRONMENT => GENERAL
PRESS ENTER TO CONTINUE, END OR PF03/PF15 TO EXIT
This assumes the CLIST command is the default CTJXVER. The value of the ENV parameter, as set in the CONTROL-M JCL REFORMAT AND ENFORCEMENT FACILITY panel, is used in the processing. When CTJXVER is invoked without the P option, the reformatting is performed using the latest default parameters.
For a description of the parameters in this window, see the list of parameters on the Control-M JCL Verify Defaults panel in Verification mode.
Enforcement mode
In enforcement mode, the CTJXVER edit macro uses the following syntax:
CTJXVER ENF [P]
A window opens (see the previous figure) allowing you to set the parameters, before the processing.
This assumes the CLIST command is the default CTJXVER. The value of the ENV parameter, as set in the CONTROL-M JCL REFORMAT AND ENFORCEMENT FACILITY panel, is used in the processing. When CTJXVER is invoked without the P option, the enforcement is performed using the latest default parameters.
For a description of the parameters in this window, see the list of parameters on the Control-M JCL Verify Defaults panel in Verification mode.
Return Codes
If the return code is greater than 04, reformatting and enforcement will not be performed. All the error messages and the rule's DO MSGs will be displayed at the beginning of the JCL.
Tab.JV.7.3 CTJXVER Edit Macro 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 CTJXVER parameters or statements. Review the previous error messages in JOBLOG and SYSPRINT, and then correct the parameters or the control statements. |
16 and above (except for 24, 30, and 112) |
Internal error in the Control-M JCL Verify product. Try again. If the problem reoccurs, contact BMC Customer Support. |
20 |
Invalid input parameter. Internal error. |
24 |
Under ISPF: Control-M JCL Verify is not APF-authorized. |
30 |
Getmain failed. The user needs to increase the TSO region. To validate a large JCL member, set VARSTORAGE(HIGH). |
32 |
GETMAIN error during initialization. Increase user region size. |
34 |
IOA INIT failed. Review the TSO user's JESLOG for additional messages, and contact BMC Customer Support. |
35 |
CTJAPI INIT failed. Review the TSO user's JESLOG for additional messages, and contact BMC Customer Support. |
36 |
GETMAIN error during initialization. Increase user region size. |
38 |
A parameter scan error. One or more input parameters are not valid. Perform CTJXVER P to correct the values. If the problem reoccurs, contact BMC Customer Support. |
42 |
Error on IKJCT441. Internal error, check TSO user's JESLOG for additional messages, and contact BMC Customer Support. |
46 |
No data returned from the Verify function (empty buffer). Internal error, check TSO user's JESLOG for additional messages, and contact BMC Customer Support. |
50 |
An abend occurred returning from recovery routine MLIJ10034T. Review TSO user's JESLOG for additional messages, and call BMC Customer Support. |
54 |
Control-M JCL Verify password is invalid or expired. |
58 |
The specified member or library does not exist. |
60 |
The CTJMON monitor is down or has not been started. |
100 |
Under all environments except ISPF: Control-M JCL Verify is not installed. |
112 |
Under all environments except ISPF: Control-M JCL Verify is not APF-authorized. |
Example 1
In the following example, the CTJXVER edit macro is used to verify job ACCEP000. CTJXVER is invoked from the command line of the ACCEP000 member (located in the CTJP.TESTS.JCLS library) without options, as shown in the following figure. Since the P option is not specified, the default parameters are used.
Fig.JV.7.3 CTJXVER edit macro invoked in job member- Example 1
File Edit Edit_Settings Menu Utilities Compilers Test Help
________________________________________________________________________________
VIEW CTJP.TESTS.JCLS(ACCEP000) - 01.03 Columns 00001 00072
Command ===> CTJXVER Scroll ===> PAGE
****** ***************************** Top of Data *******************************
==MSG> -Warning- The UNDO command is not available until you change
==MSG> your edit profile using the command RECOVERY ON.
000001 //ACCEP000 JOB 0,YY,CLASS=A,MSGCLASS=X,
000002 // NOTIFY=&SYSUID
000003 //* JCLLIB ORDER=IOAP.V900.PROCLIB
000004 // JCLLIB ORDER=IOAP.V900.PROCLIB
000005 //STEP1 EXEC PGM=IEFBR14
000006 //ACC1NO DD DISP=SHR,DSN=N18.ACCESS.NONE
000007 //ACC2YES DD DISP=SHR,DSN=N18.ACCESS.READ
000008 //ACC2NO DD DISP=OLD,DSN=N18.ACCESS.READ
000009 //ACC3NDEL DD DISP=(SHR,DELETE),DSN=N18.ACCESS.READ
****** **************************** Bottom of Data ****************************
A screen capture of CTJXVER invoked from the command line of the ACCEP000 member is shown in the following figure.
The following figure shows that the macro JVER is invoked. This assumes that the CTJXVER edit macro was copied to the SYSPROC library as JVER.
Fig.JV.7.4 CTJXVER edit macro invoked in job member screen capture - Example 1
After the CTJXVER macro command is submitted, the output of the verification process is displayed in the job member, as shown in the following figures. This output can be saved by copying and pasting, or by performing a screen print.
Fig.JV.7.5 CTJXVER edit macro output- Example 1
****** ***************************** Top of Data ******************************
=NOTE= Control-M JCL Verify IS STARTING. LEVEL IJ10249
=NOTE= PROCESSING PERFORMED BY MONITOR $GJMON / S0433699 ON SYSTEM MVS4
=NOTE= RUNTIME PARAMETERS: FA=Y FV=Y JES=Y ME=Y ML=I CTM=Y STDR=Y UT=Y
=NOTE= ENV=GENERAL USER=Q55A
=NOTE=
=NOTE= JOB VERIFICATION COMPLETED WITH
=NOTE= 2 ERROR MESSAGES
=NOTE= 7 WARNING MESSAGES
=NOTE= 7 INFORMATION MESSAGES
=NOTE=
==MSG> ---------------------- VERIFICATION SUMMARY --------------------------
==MSG> LABEL MSGID MESSAGE
==MSG> ------------------------------------------------------------------------
=NOTE= .BAAA IEFC653I SUBSTITUTION JCL - 0,YY,CLASS=A,MSGCLASS=X,
=NOTE= MSGLEVEL=(1,1),NOTIFY=Q55A
==MSG> .BAAB IEFC003I ALLOCATION ERROR IN PROCESSING A JCLLIB STATEMENT
==MSG> .BAAC CTJD05W WARNING: DSN WITH DISP=SHR NOT FOUND.
==MSG> DSN=IOAQ.E7CONVPB.LOAD
=NOTE= .BAAD CTJP0GI INFORMATION: PGM IEFBR14 FOUND IN LINKLIST
=NOTE= SYS1.LINKLIB
==MSG> .BAAE CTJD05W WARNING: DSN WITH DISP=SHR NOT FOUND.
==MSG> DSN=IOAQ.E7CONVPB.TLOAD
==MSG> .BAAF CTJD05W WARNING: DSN WITH DISP=SHR NOT FOUND.
==MSG> DSN=IOAQ.E7CONVPB.LOAD
==MSG> .BAAG CTJD05W WARNING: DSN WITH DISP=OLD NOT FOUND.
==MSG> DSN=SYS2.ACCESS.ERROR
=NOTE= .BAAH CTJP0HI INFORMATION: PGM IKJEFT01 FOUND IN LPA/PLPA
=NOTE= SYS1.LPALIB
==MSG> .BAAI CTJD05W WARNING: DSN WITH DISP=SHR NOT FOUND.
==MSG> DSN=IOAQ.E7CONVPB.TLOAD
==MSG> .BAAJ CTJD05W WARNING: DSN WITH DISP=SHR NOT FOUND.
==MSG> DSN=IOAQ.E7CONVPB.LOAD
==MSG> .BAAK CTJSA3W WARNING: PERMISSION TO UPDATE WAS NOT GRANTED FOR
==MSG> DSN=SYS1.ACCESS.ERROR
=NOTE= .BAAK CTJDS9I INFORMATION: USING DATA CLASS STORAGE CLASS
=NOTE= BASE MANAGEMENT CLASS STANDARD
=NOTE= .BAAK CTJDSAI INFORMATION: USING STORAGE GROUP SGPRIM
=NOTE= .BAAK CTJUV0I INFORMATION: VERIFYING UTILITY IKJEFT01
==MSG> .BAAK CTJUVAE ERROR: MISSING MANDATORY DD STATEMENT SYSTSIN
=NOTE= .BAAK CTJUV1I INFORMATION: VERIFYING UTILITY IKJEFT01 ENDED
=NOTE= RC=0008
==MSG> ---------------------- VERIFICATION SUMMARY END ----------------------
=NOTE=
000001 //Q55ACC00 JOB 0,YY,CLASS=A,MSGCLASS=X,MSGLEVEL=(1,1),
.BAAA // NOTIFY=&SYSUID
=NOTE= IEFC653I SUBSTITUTION JCL - 0,YY,CLASS=A,MSGCLASS=X,MSGLEVEL=(1,1),
=NOTE= NOTIFY=Q55A
000003 //*-----------------------------------------------------
000004 //* STEPLIB->JOBLIB->SYSLIB
000005 //* SYSTEM LOAD MODULES RESLOVE
000006 //* LOCAL LOAD MODULES RESOLVE
000007 //* WITH NON EXISTANCE ERRORS
000008 //*-----------------------------------------------------
.BAAB // JCLLIB ORDER=IOAQ.E7CONVPB.PROCLIB
==MSG> IEFC003I ALLOCATION ERROR IN PROCESSING A JCLLIB STATEMENT
.BAAC //JOBLIB DD DISP=SHR,DSN=IOAQ.E7CONVPB.LOAD
==MSG> CTJD05W WARNING: DSN WITH DISP=SHR NOT FOUND. DSN=IOAQ.E7CONVPB.LOAD
.BAAD //LINKLIST EXEC PGM=IEFBR14 <-- LINKLIST
=NOTE= CTJP0GI INFORMATION: PGM IEFBR14 FOUND IN LINKLIST SYS1.LINKLIB
.BAAE //STEPLIB DD DISP=SHR,DSN=IOAQ.E7CONVPB.TLOAD
==MSG> CTJD05W WARNING: DSN WITH DISP=SHR NOT FOUND. DSN=IOAQ.E7CONVPB.TLOAD
.BAAF // DD DISP=SHR,DSN=IOAQ.E7CONVPB.LOAD
==MSG> CTJD05W WARNING: DSN WITH DISP=SHR NOT FOUND. DSN=IOAQ.E7CONVPB.LOAD
.BAAG //NOFILE DD DISP=OLD,DSN=SYS2.ACCESS.ERROR
==MSG> CTJD05W WARNING: DSN WITH DISP=OLD NOT FOUND. DSN=SYS2.ACCESS.ERROR
000015 //*
.BAAH //PLPA EXEC PGM=IKJEFT01 <-- LPA
=NOTE= CTJP0HI INFORMATION: PGM IKJEFT01 FOUND IN LPA/PLPA SYS1.LPALIB
.BAAI //STEPLIB DD DISP=SHR,DSN=IOAQ.E7CONVPB.TLOAD
==MSG> CTJD05W WARNING: DSN WITH DISP=SHR NOT FOUND. DSN=IOAQ.E7CONVPB.TLOAD
.BAAJ // DD DISP=SHR,DSN=IOAQ.E7CONVPB.LOAD
==MSG> CTJD05W WARNING: DSN WITH DISP=SHR NOT FOUND. DSN=IOAQ.E7CONVPB.LOAD
000019 //ACCESS DD DISP=(,CATLG),DSN=SYS1.ACCESS.ERROR,UNIT=SMS,
.BAAK // SPACE=(TRK,1)
==MSG> CTJSA3W WARNING: PERMISSION TO UPDATE WAS NOT GRANTED FOR
==MSG> DSN=SYS1.ACCESS.ERROR
=NOTE= CTJDS9I INFORMATION: USING DATA CLASS STORAGE CLASS BASE
=NOTE= MANAGEMENT CLASS STANDARD
=NOTE= CTJDSAI INFORMATION: USING STORAGE GROUP SGPRIM
=NOTE= CTJUV0I INFORMATION: VERIFYING UTILITY IKJEFT01
==MSG> CTJUVAE ERROR: MISSING MANDATORY DD STATEMENT SYSTSIN
=NOTE= CTJUV1I INFORMATION: VERIFYING UTILITY IKJEFT01 ENDED RC=0008
****** **************************** Bottom of Data ****************************
The output is divided into two main sections. The header section, which begins just after the Top of Data line, displays the parameters used during the verification, a summary of the messages generated during the verification, and a list of the messages generated. The header section is following by the main body section that displays the job member line by line, with messages being displayed immediately after the lines to which they apply.
The first 6 columns in each row of the output header, which is usually reserved for indicating the line number of the job, indicates the type of message, a reference label, or other information as follows:
-
==MSG> - error or warning message or label to job line in main body of output
-
=NOTE= - information message, label to job line in main body of output, or other information such as runtime parameters and job verification summary
In this example, the runtime parameters are: FA=Y FV=Y JES=Y ME=Y ML=I USER=N05. See Parameters for explanations of these parameters.
In this example, the job verification summary indicates that there are no error messages, 3 warning messages, and 2 information messages. The first information message can be quickly located in the job using the label .BAAA. In the command line, enter the following command:
locate .BAAA
The display jumps to the following job line:
.BAAA // NOTIFY=&SYSUID
Note that the job line number (000002) was replaced by the label (.BAAA) during the verification process.
The next line that is displayed is the following information message:
=NOTE= IEFC653I SUBSTITUTION JCL-0,YY,CLASS=A,MSGCLASS=X,NOTIFY=N05
The IEF prefix of the message indicates that this is an IBM generated message.
The advantage of the header becomes quickly apparent when verifying a lengthy job member. You can review the messages without scrolling through the entire job, and you can jump to the messages that interest you, using the labels.
In the following figure, some of the color coding is apparent. For example, the job line numbers are blue and JCL job lines are displayed in green. The first 6 characters in each row, which includes message type indicators, and labels, are red if they were inserted during the verification process. Information messages and information inserted during the verification process are displayed in blue. Warning messages are displayed in white. Error messages are displayed in yellow.
Fig.JV.7.6 CTJXVER edit macro output screen capture - Example 1