ISREDIT MACRO /********************************************************************/ /* THIS EDIT MACRO (CATM0006) GENERATES THE WHOHAS REPORTS AND */ /* CREATES THE WHOHXXXX MEMBER DEPENDING ON THE VALUES IN VARIABLE */ /* RESOURCE. VALUE VARIABLE CONTAINS THE RESOURCE TO BE GENERATED. */ /********************************************************************/ /* 06/29/2010 CL.Fenton Chgs to work around UNTIL on ACCESS record. /* 05/02/2019 CL Fenton Added addition accesses for CICS SPI permissions, /* STS-021044. /* *************************************** */ /* VARIABLES ARE PASSED TO THIS MACRO */ /* RESOURCE */ /* VALUE */ /* CONSLIST */ /* COMLIST */ /* SYMLIST */ /* TERMPRO */ /* TERMMSGS */ /* *************************************** */ SET RETURN_CODE = 0 /* SET RETURN CODE TO 0 */ ISPEXEC CONTROL NONDISPL ENTER ISPEXEC CONTROL ERRORS RETURN ERROR + DO SET RETURN_CODE = &LASTCC RETURN END ISPEXEC VGET ( - RESOURCE - AUDDSNS - SWITCH - VALUE - CONSLIST - COMLIST - SYMLIST - TERMPRO - ACP - ACPVER - EXAMVER - TERMMSGS - ) ASIS SET T2VGERR = 0 IF &RETURN_CODE NE 0 THEN + SET T2VGERR = &RETURN_CODE CHAPT01_MESSAGE_HOUSEKEEPING: - IF &CONSLIST = ON THEN + CONTROL CONLIST /* TURN ON CONLIST */ IF &COMLIST = ON THEN + CONTROL LIST /* TURN ON LIST */ IF &SYMLIST = ON THEN + CONTROL SYMLIST /* TURN ON SYMLIST */ IF &TERMPRO = ON THEN + CONTROL PROMPT /* TURN PROMPT ON */ IF &TERMMSGS = ON THEN + CONTROL MSG /* TURN ON MESSAGES */ ISREDIT STATS = OFF ISREDIT NUMBER OFF /***************************************************************** */ /* CLEAR MEMBER */ /***************************************************************** */ IF &SWITCH EQ Y THEN + DO ISREDIT DELETE .ZF .ZL SET SWITCH = N ISPEXEC VPUT (SWITCH) END /***************************************************************** */ /* START PROCESS */ /***************************************************************** */ SET LINE = 1 SET SPC = &STR( ) SET SPC = &STR(&SPC&SPC&SPC&SPC&SPC&SPC&SPC&SPC) SET RES = SET ACID = SET ACCESS = SET ACC8 = &STR( ) SET AUDIT = N SET DENY = &STR( ) SET FACILITY = SET OTHER = SET &SYSOUTTRAP = 999999999 SET VAR = &SUBSTR(1:8,&STR(&RESOURCE)) SET VAR = &VAR SET &SYSLIST = ON SET RETURN_CODE = 0 TSS WHOH &VAR(&VALUE) SET &SYSLIST = OFF SET A = &SYSOUTLINE DO X = 1 TO &A SET DATA = &&SYSOUTLINE&X SET DATA = &STR(&DATA) SET L = &LENGTH(&NRSTR(&DATA)) IF &SUBSTR(1:3,&NRSTR(&DATA)) EQ &STR(TSS) THEN + DO GOTO NEXT_SYSOUT END IF &SUBSTR(1:8,&NRSTR(&DATA)) EQ &STR(&VAR) THEN + DO SET RESOWNER = &SUBSTR(14:55,&NRSTR(&DATA)) GOTO NEXT_SYSOUT END IF &SUBSTR(2:6,&NRSTR(&DATA)) EQ &STR(XAUTH) THEN + DO IF &STR(&RES) NE THEN + DO SET CMD = &STR(&RES.&ACID ) SET CMD = &STR(&CMD.&ACC8) SET CMD = &STR(&CMD.&AUDIT&DENY) SET CMD = &STR(&CMD.&FACILITY @ ) SET CMD = &STR(&CMD.&STR(&OTHER)) ISREDIT LINE_AFTER .ZLAST = (CMD) SET ACCESS = SET ACC8 = &STR( ) SET AUDIT = N SET DENY = &STR( ) SET FACILITY = SET OTHER = END SET RES = &SUBSTR(14:58,&NRSTR(&DATA)) DO Z = 1 TO &LENGTH(&STR(&AUDDSNS)) BY 50 SET AUDDSN = &SUBSTR(&Z:&Z+49,&STR(&AUDDSNS)) SET X1 = &SYSINDEX(&STR( ),&STR(&AUDDSN)) SET AUDDSN = &SUBSTR(1:&X1-1,&STR(&AUDDSN)) IF &SYSINDEX(&STR(&AUDDSN),&STR(&RES)) EQ 1 THEN + DO SET AUDIT = X SET Z = &LENGTH(&STR(&AUDDSNS)) END SET AUDX = &STR(&AUDDSN) SET SCNT = 0 STAR_CHK: + IF &SUBSTR(1:1,&STR(&AUDX)) EQ &STR(*) THEN + DO SET X1 = &LENGTH(&STR(&AUDX)) SET AUDX = &SUBSTR(2:&X1,&STR(&AUDX)) SET SCNT = &SCNT + 1 GOTO STAR_CHK END IF &SYSINDEX(&STR(&AUDX),&STR(&RES)) EQ &SCNT + 1 THEN + DO SET AUDIT = X SET Z = &LENGTH(&STR(&AUDDSNS)) END IF &STR(&AUDDSN) GT &STR(&RES) THEN + SET Z = &LENGTH(&STR(&AUDDSNS)) END SET ACID = &SUBSTR(66:73,&NRSTR(&DATA)) GOTO NEXT_SYSOUT END IF &SUBSTR(4:9,&NRSTR(&DATA)) EQ &STR(ACCESS) THEN + DO SET ACC8 = SET Y = &SYSINDEX(&STR( ),&NRSTR(&DATA ),14)-1 SET ACCESS = &SUBSTR(14:&Y,&NRSTR(&DATA)) SET ACCESS = &STR(&ACCESS,) SET Y = 1 DO UNTIL &Y GT &LENGTH(&ACCESS) SET Z = &SYSINDEX(&STR(,),&STR(&ACCESS),&Y) SET ACC = &SUBSTR(&Y:&Z-1,&ACCESS) IF &ACC = ALL THEN SET ACC = A IF &ACC = ALTER THEN SET ACC = B IF &ACC = INSTALL THEN SET ACC = C IF &ACC = BLP THEN SET ACC = D IF &ACC = SCRATCH THEN SET ACC = E IF &ACC = CREATE THEN SET ACC = F IF &ACC = CONTROL THEN SET ACC = G IF &ACC = UPDATE THEN SET ACC = H IF &ACC = SET THEN SET ACC = I IF &ACC = COLLECT THEN SET ACC = J IF &ACC = DISCARD THEN SET ACC = K IF &ACC = PERFORM THEN SET ACC = L IF &ACC = WRITE THEN SET ACC = M IF &ACC = READ THEN SET ACC = N IF &ACC = INQUIRE THEN SET ACC = O IF &ACC = NOCREATE THEN SET ACC = P IF &ACC = FETCH THEN SET ACC = Q IF &ACC = EXECUTE THEN SET ACC = R IF &ACC = EXEC THEN SET ACC = S IF &ACC = NONE THEN SET ACC = T SET Y = &Z + 1 SET ACC8 = &ACC8&ACC END SET ACC8 = &SUBSTR(1:8,&ACC8 ) GOTO NEXT_SYSOUT END IF &SUBSTR(4:9,&NRSTR(&DATA)) EQ &STR(ACTION) THEN + DO SET IND = &SYSINDEX(AUDIT,&SUBSTR(14:&L,&NRSTR(&DATA))) IF &IND GT 0 AND - &AUDIT NE X THEN - SET AUDIT = Y SET IND = &SYSINDEX(DENY,&SUBSTR(14:&L,&NRSTR(&DATA))) IF &IND GT 0 THEN + SET DENY = Y GOTO NEXT_SYSOUT END IF &SUBSTR(4:9,&NRSTR(&DATA)) EQ &STR(FAC ) THEN + DO SET FACILITY = &SUBSTR(14:&L,&NRSTR(&DATA)) GOTO NEXT_SYSOUT END IF &NRSTR(&DATA) NE THEN + SET OTHER = &STR(&NRSTR(&OTHER)&NRSTR(&DATA)³) NEXT_SYSOUT:+ END IF &STR(&RES) NE THEN + DO SET CMD = &STR(&RES.&ACID ) SET CMD = &STR(&CMD.&ACC8) SET CMD = &STR(&CMD.&AUDIT&DENY) SET CMD = &STR(&CMD.&FACILITY @ ) SET CMD = &STR(&CMD.&STR(&OTHER)) END ELSE + SET CMD = &STR(&RESOWNER) ISREDIT LINE_AFTER .ZLAST = (CMD) ISPEXEC VPUT ( - T2VGERR - ) ASIS EXIT_RTN: + ISREDIT SAVE ISREDIT END SET LASTCC = 0 EXIT END