PROC 0 - CONSLIST(OFF) /* DEFAULT IS OFF */ - COMLIST(OFF) /* DEFAULT IS OFF */ - SYMLIST(OFF) /* DEFAULT IS OFF */ - TERMMSGS(OFF) /* DEFAULT IS OFF */ - CAAT0001(CAAT0001) /* Resource table */ - CAAM0004(CAAM0004) /* Process resource table */ - CACC1000(CACC1000) /* Security check program */ - CAAM0102(CAAM0102) /* Edit macro resource output */ - CAAM0013(CAAM0013) /* Edit macro for LIDs */ - TRACE(OFF) /* TRACE ACTIONS AND ERRORS */ /* 01/31/2008 CL.FENTON Copied from CAAC0001. /* 07/16/2009 CL.FENTON Added LIDLINE variable. /* 05/17/2010 CL.FENTON Changes made in the collection of SHOW CLASMAP /* output from V12 to V14 of ACF2. /* 03/22/2013 CL.FENTON Changes evaluation of REC1TBL for a 3 char RESNAME /* replacing this as RESTYPE, STS-002186. CONTROL NOFLUSH SET PGMNAME = &STR(CAAC0101 03/22/13) /* ERROR CODES PREFIXED BY AC0001 */ /* ERROR ROUTINE */ ERROR DO SET RETURN_CODE = &LASTCC /* save LAST ERROR CODE */ IF &LASTCC GE 16 THEN + WRITE &PGMNAME LASTCC = &LASTCC &ZERRLM RETURN END ISPEXEC CONTROL NONDISPL ENTER ISPEXEC CONTROL ERRORS RETURN CONTROL NOFLUSH /* *************************************** */ /* NO VARIABLES ARE PASSED TO THIS CLIST */ /* BUT KEYWORDS OF */ /* CAN BE PASSED TO LET */ /* THIS CLIST BE AWARE OF WHAT ACCESS */ /* CONTROL PRODUCT AND EXAMINE VERSION */ /* YOU ARE */ /* WORKING WITH */ /* *************************************** */ /* CONSLIST = CONLIST */ /* COMLIST = LIST */ /* SYMLIST = SYMLIST */ /* TERMMSGS = MESSAGES */ /* TRACE TURNS ON MESSAGING */ /* *************************************** */ SET RETURN_CODE = 0 /* SET RETURN CODE TO 0 */ IF &TRACE = ON THEN /* TURN TRACE ON */ - DO SET CONSLIST = ON SET COMLIST = ON SET SYMLIST = ON SET TERMMSGS = ON END SET SYSSYMLIST = &SYMLIST /* CONTROL SYMLIST/NOSYMLIST */ SET SYSCONLIST = &CONSLIST /* CONTROL CONLIST/NOCONLIST */ SET SYSLIST = &COMLIST /* CONTROL LIST/NOLIST */ SET SYSMSG = &TERMMSGS /* CONTROL MSG/NOMSG */ SET TERMPRO = OFF SET SYSASIS = ON SET RETURN_CODE = 0 SET LIDLINE = 0 ISPEXEC VPUT ( + LIDLINE + CONSLIST + COMLIST + SYMLIST + TERMPRO + TERMMSGS + ) ASIS SET AC01VPUT = &RETURN_CODE IF &RETURN_CODE NE 0 THEN + WRITE &PGMNAME VPUT RC = &RETURN_CODE &ZERRSM /* Determine which security system is running */ SET RETURN_CODE = 0 ISPEXEC SELECT CMD(&CACC1000 ACP) ISPEXEC VGET ( + ACPNAME + ACPVERS + ) ASIS IF &STR(&ACPNAME) NE &STR(ACF2) THEN - DO WRITE &PGMNAME ACF2 Job running on the wrong system WRITE &PGMNAME &ACPNAME &ACPVERS SET RETURN_CODE = 12 GOTO ERR_EXIT END /* *************************************** */ /* INITIALIZE LIBRARY MANAGEMENT */ /* *************************************** */ SET RETURN_CODE = 0 /* SET RETURN CODE TO 0 */ ISPEXEC LMINIT DATAID(CNTL) DDNAME(CNTL) SET LMINIT_CNTL_RC = &RETURN_CODE IF &RETURN_CODE NE 0 THEN DO WRITE &PGMNAME LMINIT_CNTL_RC &RETURN_CODE &ZERRSM GOTO ERR_EXIT END ISPEXEC LMINIT DATAID(RESID) DDNAME(RESOURCE) SET LMINIT_RESOURCE_RC = &RETURN_CODE IF &RETURN_CODE NE 0 THEN DO WRITE &PGMNAME LMINIT_RESOURCE_RC &RETURN_CODE &ZERRSM GOTO ERR_EXIT END ISPEXEC LMINIT DATAID(OUTPUT) DDNAME(REPORT) SET LMINIT_OUTPUT_RC = &RETURN_CODE IF &RETURN_CODE NE 0 THEN DO WRITE &PGMNAME LMINIT_OUTPUT_RC &RETURN_CODE &ZERRSM GOTO ERR_EXIT END ISPEXEC LMINIT DATAID(TEMP4) DDNAME(TEMP4) SET LMINIT_TEMP4_RC = &RETURN_CODE IF &RETURN_CODE NE 0 THEN DO WRITE &PGMNAME LMINIT_TEMP4_RC &RETURN_CODE &ZERRSM GOTO ERR_EXIT END ISPEXEC LMOPEN DATAID(&OUTPUT) OPTION(OUTPUT) SET LMOPEN_OUTPUT_RC = &RETURN_CODE IF &RETURN_CODE NE 0 THEN DO WRITE &PGMNAME LMOPEN_OUTPUT_RC &RETURN_CODE &ZERRSM GOTO ERR_EXIT END ISPEXEC EDIT DATAID(&TEMP4) MEMBER(LIDS) MACRO(&CAAM0013) SET EDIT_TEMP4_RC = &RETURN_CODE SET RETURN_CODE = 0 /* SET RETURN CODE TO 0 */ /* *************************************** */ /* PUT VARS IN POOL */ /* *************************************** */ ISPEXEC VPUT ( - CNTL - OUTPUT - TEMP4 - CAAM0013 - ) ASIS SET VPUT_CNTL_RC = &RETURN_CODE IF &RETURN_CODE NE 0 THEN DO WRITE &PGMNAME VPUT_CNTL_RC &RETURN_CODE &ZERRSM GOTO ERR_EXIT END /* *************************************** */ /* OBTAIN RESOURCES */ /* *************************************** */ SET RESOURCE = SET TYPE = I SET SPC = &STR( ) SET &SYSOUTTRAP = 999999999 ACF SHOW CL SET A = &SYSOUTLINE DO X = 1 TO &A SET DATA = &&SYSOUTLINE&X SET DATA = &STR(&DATA) IF &SUBSTR(1:12,&NRSTR(&DATA)&SPC) EQ &STR(-- MERGED CL) THEN + SET MERGE = Y IF &SUBSTR(1:12,&NRSTR(&DATA)&SPC) EQ &STR(-- EXTERNAL) THEN + SET TYPE = E SET B = &LENGTH(&NRSTR(&DATA)) IF &MERGE = Y AND + &B GE 50 THEN + IF &SYSINDEX(&STR( EXT ),&NRSTR(&DATA)&SPC) GT 50 THEN + SET TYPE = E ELSE + SET TYPE = I IF &B GT 33 THEN DO SET C = &SUBSTR(30:35,&NRSTR(&DATA&SPC&SPC)) IF &SYSINDEX(&STR(=),&STR(&C)) EQ 0 THEN + SET C = &C IF &DATATYPE(&STR(&C)) EQ NUM THEN DO SET C = &SUBSTR(12:26,&NRSTR(&DATA))&TYPE IF &SYSINDEX(&NRSTR( &C),&NRSTR(&RESOURCE)) EQ 0 THEN DO SET XX = &SYSINDEX(&SUBSTR(1:9,&NRSTR( &C)),+ &NRSTR(&RESOURCE)) IF &XX = 0 THEN + SET RESOURCE = &NRSTR(&RESOURCE)&NRSTR( &C) ELSE + IF &XX = 1 THEN + SET RESOURCE = &NRSTR( &C)&NRSTR(&RESOURCE) ELSE + SET RESOURCE = &SUBSTR(1:&XX-1,&NRSTR(&RESOURCE))+ &NRSTR( &C)+ &SUBSTR(&XX:&LENGTH(&NRSTR(&RESOURCE)),+ &NRSTR(&RESOURCE)) END END END END QUIT ISPEXEC VPUT ( - RESOURCE - ) ASIS IF &RETURN_CODE GT 0 THEN /* IF ERROR THEN */ - DO SET VPUT_RESOURCE_RC = &RETURN_CODE GOTO ERR_EXIT /* EXIT */ END ELSE - DO SET VPUT_RESOURCE_RC = 0 END SET RETURN_CODE = 0 /* SET RETURN CODE TO 0 */ ISPEXEC VIEW DATAID(&CNTL) MACRO(&CAAM0004) MEMBER(&CAAT0001) IF &RETURN_CODE GT 4 THEN /* IF ERROR THEN */ - DO SET VIEW_CNTL_RC = &RETURN_CODE GOTO ERR_EXIT /* EXIT */ END ELSE - DO SET VIEW_CNTL_RC = 0 END SET RETURN_CODE = 0 SET RECTYPE = 1 SET PDINAME = SET RESNAME = ISPEXEC VPUT ( + RECTYPE + PDINAME + RESNAME + ) ASIS SET RETURN_CODE = 0 ISPEXEC VIEW DATAID(&CNTL) MEMBER(CACT0008) MACRO(CACM042R) SET VIEW_CACT0008_RC = &RETURN_CODE IF &VIEW_CACT0008_RC GT 4 THEN DO WRITE &PGMNAME VIEW CNTL &CACT0008 RC = &VIEW_CACT0008_RC SET RETURN_CODE = &RETURN_CODE + 16 GOTO BYPASS_CACT0008 END ISPEXEC VGET ( + REC1TBL + RESOURCE + ) ASIS DO X = 1 TO &LENGTH(&NRSTR(&REC1TBL)) BY 18 SET PDINAME = &SUBSTR(&X:&X+7,&NRSTR(&REC1TBL)) /* PDI ID SET RESNAME= &SUBSTR(&X+9:&X+16,&NRSTR(&REC1TBL)) /* RESOURCE NAME SET RESSP = &SYSINDEX(&STR( ),&STR(&RESNAME)) SET RESIND = &SYSINDEX(&STR( &RESNAME),&STR(&RESOURCE)) SET RESTYPE = SET TYPE = IF &RESIND GT 0 THEN DO SET RESTYPE = &SUBSTR(&RESIND+9:&RESIND+11,&STR(&RESOURCE)) SET TYPE = &SUBSTR(&RESIND+12,&STR(&RESOURCE)) WRITE &PGMNAME Processing &PDINAME for resource class &RESNAME + TYPE(&RESTYPE). END ELSE DO IF &RESSP EQ 4 THEN DO SET RESTYPE = &SUBSTR(1:&RESSP-1,&NRSTR(&RESNAME)) WRITE &PGMNAME Processing &PDINAME for TYPE(&RESTYPE). END ELSE DO WRITE &PGMNAME Unable to processing &PDINAME for resource + class &RESNAME.. END END ISPEXEC VPUT ( + RESTYPE + PDINAME + ) ASIS SET RETURN_CODE = 0 /* *************************************** */ /* VIEW RESOURCE OUTPUT AND CREATE TEMP4 */ /* *************************************** */ ISPEXEC VIEW DATAID(&RESID) MACRO(&CAAM0102) SET VIEW_RESOURCE_RC = &RETURN_CODE SET RETURN_CODE = 0 END BYPASS_CACT0008:+ SET RETURN_CODE = 0 /* *************************************** */ /* CLOSE OUTPUT */ /* *************************************** */ ISPEXEC LMCLOSE DATAID(&OUTPUT) SET LMCLOSE_OUTPUT_RC = &RETURN_CODE SET RETURN_CODE = 0 /* *************************************** */ /* FREE FILES */ /* *************************************** */ ISPEXEC LMFREE DATAID(&CNTL) SET LMFREE_CNTL_RC = &RETURN_CODE SET RETURN_CODE = 0 ISPEXEC LMFREE DATAID(&RESID) SET LMFREE_RESOURCE_RC = &RETURN_CODE SET RETURN_CODE = 0 ISPEXEC LMFREE DATAID(&OUTPUT) SET LMFREE_OUTPUT_RC = &RETURN_CODE SET RETURN_CODE = 0 ISPEXEC LMFREE DATAID(&TEMP4) SET LMFREE_TEMP4_RC = &RETURN_CODE SET RETURN_CODE = 0 /* *************************************** */ /* ERROR EXIT */ /* *************************************** */ ERR_EXIT: + IF &MAXCC GE 16 OR + &RETURN_CODE GT 0 THEN DO ISPEXEC VGET (ZISPFRC) SHARED IF &MAXCC GT &ZISPFRC THEN + SET ZISPFRC = &MAXCC ELSE + SET ZISPFRC = &RETURN_CODE ISPEXEC VPUT (ZISPFRC) SHARED WRITE &PGMNAME ZISPFRC = &ZISPFRC END IF &TERMMSGS = ON THEN /* TURN TRACE ON */ - DO WRITE =============================================================== WRITE &PGMNAME LMINIT_CNTL_RC + &LMINIT_CNTL_RC WRITE &PGMNAME LMINIT_RESOURCE_RC + &LMINIT_RESOURCE_RC WRITE &PGMNAME LMINIT_OUTPUT_RC + &LMINIT_OUTPUT_RC WRITE &PGMNAME LMINIT_TEMP4_RC + &LMINIT_TEMP4_RC WRITE =============================================================== WRITE &PGMNAME LMOPEN_OUTPUT_RC + &LMOPEN_OUTPUT_RC WRITE =============================================================== WRITE &PGMNAME EDIT_TEMP4_RC + &EDIT_TEMP4_RC WRITE =============================================================== WRITE &PGMNAME VPUT_CNTL_RC + &VPUT_CNTL_RC WRITE &PGMNAME VPUT_RESOURCE_RC + &VPUT_RESOURCE_RC WRITE =============================================================== WRITE &PGMNAME VIEW_CNTL_RC + &VIEW_CNTL_RC WRITE =============================================================== WRITE &PGMNAME VIEW_RESOURCE_RC + &VIEW_RESOURCE_RC WRITE =============================================================== WRITE &PGMNAME LMCLOSE_OUTPUT_RC + &LMCLOSE_OUTPUT_RC WRITE =============================================================== WRITE &PGMNAME LMFREE_CNTL_RC + &LMFREE_CNTL_RC WRITE &PGMNAME LMFREE_RESOURCE_RC + &LMFREE_RESOURCE_RC WRITE &PGMNAME LMFREE_TEMP4_RC + &LMFREE_TEMP4_RC END END