ISREDIT MACRO /* CATM1004 EDIT MACRO */ /* 05/01/2009 CL Fenton corrected script for empty dataset. /* 10/25/2019 CL Fenton Added automation for ACP00310 and /* generate finding details, STS-023407. /* 08/19/2020 CL Fenton Chgs made to correct CC 900, /* STS-025132. /********************************************************************/ /* This edit macro reads a formatted report created by CATC1002 */ /* CLIST of selected ACIDS that have beed unsued for more that */ /* the value of variable CHKDATE. Those records that have been */ /* identified as unused will be written to the output file. */ /********************************************************************/ /******************************************/ /* VARIABLES ARE PASSED TO THIS MACRO */ /* CONSLIST */ /* COMLIST */ /* SYMLIST */ /* TERMMSGS */ /* CHKDATE */ /* PDIDD */ /******************************************/ SET PGMNAME = &STR(CATM1004 08/19/20) SET RETURN_CODE = 0 /* SET RETURN CODE TO 0 */ NGLOBAL AC PDIMBR PDIDD RETURN_CODE SET PDIMBR = ACP00310 ISPEXEC CONTROL NONDISPL ENTER ISPEXEC CONTROL ERRORS RETURN ERROR DO SET RETURN_CODE = &LASTCC IF &RETURN_CODE GE 16 THEN + WRITE &PGMNAME LASTCC = &RETURN_CODE &ZERRLM RETURN END ISPEXEC VGET ( - CONSLIST - COMLIST - SYMLIST - TERMMSGS - CHKDATE - PDIDD - ) ASIS SET TM4VGE = &RETURN_CODE 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 SYSASIS = ON /* CONTROL ASIS - caps off */ /******************************************************************/ /* THE FOLLOWING IS TO SETUP PROCESS TO GENERATE THE REPORT */ /******************************************************************/ SET RETURN_CODE = 0 ISREDIT FIND "0" 1 ALL SET FIND_0_SW = &RETURN_CODE IF &RETURN_CODE GT 0 THEN DO SET AC = &NRSTR(Not a Finding.) SYSCALL PUT_IT SYSCALL ADD_MEMBER END ELSE DO SET AC = &STR(ACIDS found inactive for more than 35 days and not + suspended.) SYSCALL PUT_IT END ISREDIT SORT 1 9 A ISREDIT CURSOR = .ZLAST 1 ISREDIT (ROW,COL) = CURSOR ISREDIT CURSOR = 1 1 SET LINE = 1 SET TYPCNT = 0 SET CHKDATE = &STR(&SUBSTR(5:6,&CHKDATE)/&SUBSTR(7:8,&CHKDATE)/+ &SUBSTR(3:4,&CHKDATE)) OPENFILE OUTFILE OUTPUT SET OUTFILE = &STR( USER ID'S that are unused as of &CHKDATE.) PUTFILE OUTFILE LOOP: + SET RETURN_CODE = 0 /* SET RETURN CODE TO 0 */ IF &LINE GT &ROW THEN GOTO END_EDIT ISREDIT (DATA) = LINE &LINE IF &SUBSTR(1:1,&NRSTR(&DATA)) NE &TYP THEN DO SET TYP = &SUBSTR(1:1,&NRSTR(&DATA)) IF &TYPCNT > 0 THEN DO SET OUTFILE = &STR( ) PUTFILE OUTFILE SET OUTFILE = &STR( **** Total for above group of + USERS is &TYPCNT. ****) PUTFILE OUTFILE SET TYPCNT = 0 END SET OUTFILE = &STR( ) PUTFILE OUTFILE PUTFILE OUTFILE IF &TYP = 2 THEN + SET OUTFILE = &STR( The following records have attribute + of ASUSPEND and exceed 35 days.) ELSE + IF &TYP = 1 THEN + SET OUTFILE = &STR( The following records have attribute + of SUSPEND and exceed 35 days.) ELSE + SET OUTFILE = &STR( The following records exceed 35 days.) PUTFILE OUTFILE END SET OUTFILE = &STR( ) PUTFILE OUTFILE IF &TYP EQ 0 THEN DO SET AC = &STR( &OUTFILE) SYSCALL PUT_IT END SET ACID = &SUBSTR(2:9,&NRSTR(&DATA)) SET NAME = &SUBSTR(10:41,&NRSTR(&DATA)) SET OUTFILE = &STR( ACCESSORID = &ACID NAME = &NRSTR(&NAME)) PUTFILE OUTFILE IF &TYP EQ 0 THEN DO SET AC = &STR( &OUTFILE) SYSCALL PUT_IT END SET ACIDTYP = &SUBSTR(42:49,&NRSTR(&DATA)) SET OUTFILE = &STR( TYPE = &ACIDTYP) PUTFILE OUTFILE IF &TYP EQ 0 THEN DO SET AC = &STR( &OUTFILE) SYSCALL PUT_IT END IF &TYP = 2 THEN + SET SUSPEND = ASUSPEND ELSE + IF &TYP = 1 THEN + SET SUSPEND = SUSPEND ELSE + SET SUSPEND = SET OUTFILE = &STR( ATTRIBUTES = &SUSPEND) PUTFILE OUTFILE IF &TYP EQ 0 THEN DO SET AC = &STR( &OUTFILE) SYSCALL PUT_IT END SET CRDATE = &SUBSTR(50:57,&NRSTR(&DATA)) SET MODDATE = &SUBSTR(58:65,&NRSTR(&DATA)) SET OUTFILE = &STR( CREATED = &CRDATE LAST MOD = &MODDATE) PUTFILE OUTFILE IF &TYP EQ 0 THEN DO SET AC = &STR( &OUTFILE) SYSCALL PUT_IT END SET LASTUSED = &SUBSTR(66:73,&NRSTR(&DATA)) SET COUNT = &SUBSTR(74:78,&NRSTR(&DATA)) SET OUTFILE = &STR( LAST USED = &LASTUSED &COUNT) PUTFILE OUTFILE IF &TYP EQ 0 THEN DO SET AC = &STR( &OUTFILE) SYSCALL PUT_IT END SET SRCTXT = &STR( SOURCES = ) SET SOURCES = SET SRCCNT = 0 IF &LENGTH(&NRSTR(&DATA)) GE 81 THEN + DO X = 81 TO 180 BY 9 UNTIL &SUBSTR(&X:&X,&NRSTR(&DATA)) EQ &STR( ) SET SRC_DATA = &SUBSTR(&X:&X+8,&NRSTR(&DATA)) IF &SRCCNT = 4 THEN DO SET SRCCNT = 0 SET OUTFILE = &STR(&SRCTXT&SOURCES) PUTFILE OUTFILE IF &TYP EQ 0 THEN DO SET AC = &STR( &OUTFILE) SYSCALL PUT_IT END SET SRCTXT = &STR( ) SET SOURCES = END SET SOURCES = &SOURCES&SRC_DATA&STR( ) SET SRCCNT = &SRCCNT + 1 END IF &SOURCES NE &STR( ) THEN DO SET OUTFILE = &STR(&SRCTXT&SOURCES) PUTFILE OUTFILE IF &TYP EQ 0 THEN DO SET AC = &STR( &OUTFILE) SYSCALL PUT_IT END END SET TYPCNT = &TYPCNT + 1 SET LINE = &LINE + 1 GOTO LOOP END_EDIT: + SET OUTFILE = &STR( ) PUTFILE OUTFILE SET OUTFILE = &STR( **** Total for above group of + USERS is &TYPCNT. ****) PUTFILE OUTFILE CLOSFILE OUTFILE IF &FIND_0_SW EQ 0 THEN + SYSCALL ADD_MEMBER ISPEXEC VPUT ( - TM4VGE - ) ASIS ISREDIT END EXIT /*******************************************/ /* SYSCALL SUBROUTINES */ /*******************************************/ ADD_MEMBER: PROC 0 SET RETURN_CODE = 0 ISPEXEC LMMADD DATAID(&PDIDD) MEMBER(&PDIMBR) IF &RETURN_CODE EQ 4 THEN DO /* MEMBER ALREADY EXISTS SET RETURN_CODE = 0 ISPEXEC LMMREP DATAID(&PDIDD) MEMBER(&PDIMBR) IF &RETURN_CODE NE 0 THEN + WRITE &PGMNAME LMMREP_PDI_RC = &RETURN_CODE &PDIMBR &ZERRSM END ELSE DO IF &RETURN_CODE NE 0 THEN + WRITE &PGMNAME LMMADD_PDI_RC = &RETURN_CODE &PDIMBR &ZERRSM END END PUT_IT: PROC 0 ISPEXEC LMPUT DATAID(&PDIDD) MODE(INVAR) DATALOC(AC) + DATALEN(&LENGTH(&NRSTR(&AC))) MEMBER(&PDIMBR) END