Like MVS, CA JCLCheck stores information in a number of control blocks. Most exit routines need to reference one or more of these blocks. Addresses within these control blocks and addresses pointing to control blocks should be tested for zero prior to usage. If they are not zero, an ABEND can occur. The CA JCLCheck macro library, CAZ2MAC, contains mapping macros for the following control blocks:
This block is the common data area for CA JCLCheck, containing control block chain headers, addresses of key routines, DCBs and other important information.
Throughout CA JCLCheck, its address is in register 12. (Its mapping macro automatically generates a USING statement for this register.)
Important! No CA JCLCheck exit should ever alter register 12.
There are four fields available to you ($USER, $USER2, $USER3, and $USER4) to anchor user control blocks or pass information between exits. They are initialized to zero (or to the value passed by a user program invoking CA JCLCheck dynamically) and left unmodified thereafter.
The GLBL mapping macro is $JCLGLBL (or $JCLCB GLBL).
Note: All assembler exits should execute in 31-bit mode since most CA JCLCheck data areas are 31-bit eligible (that is SPB, RTB, XJB, DDT, and so on).
This block is the Extended Global area, and it has a similar purpose to the Global area. The Extended Global, however, is above-the-line (31-bit address) on an MVS system. Obtain an address for the Extended Global using the $J6XGLBL LOCATE service described in the chapter "Installation Options" in this guide.
To map the extended global, specify $JCLCB XGBL or $JCLCB ALL.
One SPB exists for each JCL statement CA JCLCheck scans. SPBs are chained together, with the head of the chain in the $SPBSTRT field of the Global Area. Each SPB contains the statement name and points to the other control block chains associated with the statement.
The global area also contains fields $SPBJOB and $SPBEXEC to point to the SPB for the current JOB and EXEC statement. If these are zero, CA JCLCheck has not processed the JOB and/or EXEC statements.
Throughout CA JCLCheck, the SPB for the current statement's address is in register 9.
The SPB mapping macro is $JCLSPB (or $JCLCB SPB).
This block contains the text of each JCL statement, both before and after symbolic parameter substitution. RJBs are chained together, with the head of the chain in the SPBRJB field.
The RJB mapping macro is $JCLRJB (or $JCLCB RJB).
This control block contains decoded values saved by the SAVE operand of the $VTB macro. (The SAVE operand always points to a field in the XJB.) There is one XJB per statement, except for an overridden procedure statement that shares an XJB with the overriding statement.
The XJB address is located in the SPBXJB field in the SPB.
A different XJB exists for each type of JCL statement. Each XJB contains a 20-byte user data field, named XJBxUSER, where x signifies the statement type:
JOB statement
EXEC statement
DD statement
JES2 /*OUTPUT statement
JES2 /*JOBPARM statement
JES3 Format
JES3 main control statement
Utility control statement
INCLUDE statement
IF/THEN statement
Its mapping macro is:
$JCLXJB TYPE=ALL/JOB/EXEC/DD/HASP/UTIL/JES3/INCL/IF
Or:
$JCLCB XJBJOB/XJBEXEC/XJBDD/XJBHASP/XJBUTIL/XJBJES3
One DDT exists for each different data set referenced by the job. The DDT contains VOLUME, UNIT, DCB and references for the data set. DDTs are chained in alphabetical order from the field $DDTHEAD in the Global Data Area.
The field XJBDDDT in each DD statement's XJB points to the DDT for the data set. XJBDDDT contains either X'00000000' or X'40404040' if there is no data set associated with the DD statement.
The DDT mapping macro is $JCLDDT (or $JCLCB DDT).
This block contains the text of a parameter, together with the keyword name (if the parameter was a keyword). JPBs for a statement are organized in a tree structure, with the root addressed by the SPBJPB field. JPBs exist only for the life of the statement. The address pointing to the SPB is not cleared when the JPB area is reused.
The JPB mapping macro is $JCLJPB (or $JCLCB JPB).
This is the decoding control block constructed by the $VTB macro. This control block is addressed by the field PCBVTB.
The VTB mapping macro is $JCLVTB (or $JCLCB VTB).
This is the decoding control block constructed by the $PTB macro. This control block is addressed by the field PCBPTB.
The PTB mapping macro is $JCLPTB (or $JCLCB PTB).
|
Copyright © 2014 CA.
All rights reserved.
|
|