CA Jclchk 12.0 : $CA.USERDATA to be evaluated in CAZ1REXX INITIAL_PROCESSING section as Global Variable
Article ID: 129331
JCLCheck Workload Automation
CA Jclchk 12.0 Runtime option USERDATA allows the user to specify a data string of one to 24 characters. This data is made available to all user exits and the REXX interface. The value that is specified is at the discretion of the user and CA JCLCheck™ Workload Automation does not use or verify the value. This option has the following format:
It is possible to reference this option in Rexx, using the variable $CA.USERDATA. By default, if a batch massive JCLCheck validation is submitted, the $CA.USERDATA is reinitialized and evaluated in all the CAZ1REXX sections, a part from the INITIAL_PROCESSING, for each member validated into the run. Anyway usually in this variable it is passed a string of characters that is common to all the members validated in the same run, so it would be important to have the possibility to load the $CA.USERDATA content only once at the very beginning of the CAZ1REXX , so that the same content remains in storage for all the members validated , saving resources and decreasing process execution time, especially when thousands of members are validated in the same run.
How to implement this in CAZ1REXX?
Z/OS - JCLCheck
It is possible to achieve this, doing the following main activities:
1. apply the test APARS ST07766 and ST07767, which add a new REXX RAW call with $CA.RSTYPE = OPTS. This call is made during options processing before any JCL have been read. Updates have been done to CAZ1REXX and CAZ1REX2 Rexx samples about that. According to the Broadcom Standards, these Test APARS will be GA PTFs SO07766 and SO07767.
2. Customize CAZ1REXX in order to use this new code. A new RAW call is made after the INITIAL_PROCESSING call and before any JCL is read. The $CA.RSTYPE is set to a new value: OPTS. The $CA.RCOUNT will be 0 and there will be no $CA.RECORD.n data. The $CAJCL_REASON = RAW The $CA.USERDATA = the value specified in the JCLCheck USERDATA option.
So now this condition can be checked in the RAW_DATA_PROCESSING routine. The sample below checks the USERDATA and if blank issues a S (sever) message.
RAW_DATA_PROCESSING: When $CA.RSTYPE='OPTS' Then Do If $CA.USERDATA='' Then Do CALL $CAJCL_ERROR 'S','- JCLCHECK TERMINATING: USERDATA=null' End Else Do Parms=SUBSTR($CA.USERDATA,1,4)" "STRIP(SUBSTR($CA.USERDATA,5)) Parse Upper Var Parms ElementType Environ Say "OPTS ElementType="ElementType" Environ="Environ RETURN End
If a S or E messages is issued, JCLCheck will terminate processing, before JCL is read. If a I or W message is issued, then the message will be reported, but processing will continue. Below shows a S message issued.