ISREDIT MACRO /* CARM0100 EDIT MACRO */ /* 06/06/2006 C. STERN UPDATED ERROR ROUTINE. /* 11/15/2008 CL FENTON Updated to create evaluation records. /* 02/28/2009 CL FENTON Update in format of UID data information. /* 03/10/2011 CL FENTON Update in obtain addition information. /* 02/26/2015 CL FENTON Corrected RC 900 and other errors that occur /* when processing information. Problem identified as /* a single ampersand within the report of a specific /* user. Also corrected the use of &racuid in a users /* HOME entry in the OMVS segment, STS-009492. /* 03/30/2017 CL FENTON Corrected &NRSTR being in output for home /* directory of users. SET PGMNAME = &STR(CARM0100 03/30/17) SET RETURN_CODE = 0 /* SET RETURN CODE TO 0 */ ISPEXEC CONTROL NONDISPL ENTER ISPEXEC CONTROL ERRORS RETURN SET SYSPROMPT = OFF /* CONTROL NOPROMPT */ SET SYSFLUSH = OFF /* CONTROL NOFLUSH */ SET SYSASIS = ON /* CONTROL ASIS - CAPS OFF */ ISPEXEC VGET ( + CONSLIST + COMLIST + SYMLIST + TERMPRO + TERMMSGS + ) ASIS /* *************************************** */ /* TURN ON MESSAGES */ /* *************************************** */ SET SYSSYMLIST = &SYMLIST /* CONTROL SYMLIST/NOSYMLIST */ SET SYSCONLIST = &CONSLIST /* CONTROL CONLIST/NOCONLIST */ SET SYSLIST = &COMLIST /* CONTROL LIST/NOLIST */ SET SYSMSG = &TERMMSGS /* CONTROL MSG/NOMSG */ /* ERROR ROUTINE */ ERROR DO SET RETURN_CODE = &LASTCC /* SAVE LAST ERROR CODE */ IF &LASTCC GE 16 THEN + WRITE &PGMNAME LASTCC = &LASTCC &ZERRLM RETURN END SET RETURN_CODE = 0 /* SET RETURN CODE TO 0 */ /* *************************************** */ /* SORT LOOP */ /* *************************************** */ CARM0100_HOUSEKEEPING: - - ISREDIT (MEMBER) = MEMBER SET RETURN_CODE = 0 ISREDIT (ENDER) = LINENUM .ZLAST /*CONTROL LIST CONLIST SYMLIST /* *************************************** */ /* MAIN LOOP */ /* *************************************** */ CONTROL ASIS ISREDIT CURSOR = 1 1 LOOP: + SET RETURN_CODE = 0 ISREDIT FIND 'OMVS INFORMATION' 2 IF &RETURN_CODE NE 0 THEN DO GOTO END_EDIT END ISREDIT (CNT1,COL) = CURSOR ISREDIT LABEL &CNT1 = .B SET RETURN_CODE = 0 ISREDIT FIND ' ' 1 IF &RETURN_CODE NE 0 THEN + SET CNT2 = &ENDER ELSE + ISREDIT (CNT2,COL) = CURSOR SET UID = &STR( ) SET GID = SET PGM = &STR( ) SET HOME = &STR( ) DO X = &CNT1 + 2 TO &CNT2 ISREDIT (DATA) = LINE &X IF &SYSINDEX(UID= ,&NRSTR(&DATA)) GT 0 THEN DO SET UID = &SUBSTR(7:16,&NRSTR(&DATA)) SET UID = &UID IF &DATATYPE(&UID) EQ &STR(NUM) THEN DO SET LUID = &LENGTH(&UID) SET UID = &SUBSTR(&LUID:10,&STR(0000000000))&STR(&UID) END ELSE + SET UID = &SUBSTR(1:11,&STR(&UID )) SET UID = U&STR(&UID) SET GID = END IF &SYSINDEX(GID= ,&NRSTR(&DATA)) GT 0 THEN DO SET GID = &SUBSTR(7:16,&NRSTR(&DATA)) SET GID = &GID SET LGID = &LENGTH(&GID) SET GID = &SUBSTR(&LGID:10,&STR(0000000000))&STR(&GID) SET GID = G&STR(&GID) SET UID = END IF &SYSINDEX(HOME= ,&NRSTR(&DATA)) GT 0 THEN + SET HOME = &SUBSTR(8:36,&NRSTR(&DATA)) IF &SYSINDEX(PROGRAM= ,&NRSTR(&DATA)) GT 0 THEN + SET PGM = &SUBSTR(11:25,&NRSTR(&DATA)) END ISREDIT CURSOR = &CNT1 0 IF &STR(&UID) NE &STR( ) THEN DO ISREDIT FIND PREV 'USER=' 2 ISREDIT (CNT,COL) = CURSOR ISREDIT LABEL &CNT = .A ISREDIT (DATA) = LINE &CNT SET X = &SYSINDEX( ,&NRSTR(&DATA),7) SET USER = &SUBSTR(7:&X,&NRSTR(&DATA)) SET USER = &SUBSTR(1:8,&USER ) SET GRP = &STR( ) SET RETURN_CODE = 0 ISREDIT FIND ' DEFAULT-GROUP=' 2 .A .B IF &RETURN_CODE EQ 0 THEN DO ISREDIT (DATA) = LINE .ZCSR SET X = &SYSINDEX(&STR( ),&NRSTR(&DATA),16) SET GRP = &SUBSTR(17:&X,&NRSTR(&DATA)) SET GRP = &SUBSTR(1:8,&GRP ) END END ELSE DO SET GRP = &STR( ) ISREDIT FIND PREV 'INFORMATION FOR GROUP' 2 ISREDIT (CNT,COL) = CURSOR ISREDIT (DATA) = LINE &CNT SET X = &SYSINDEX( ,&NRSTR(&DATA),24) SET USER = &SUBSTR(24:&X,&NRSTR(&DATA)) SET USER = &SUBSTR(1:8,&USER ) END SET DATA1 = &NRSTR(&USER &UID.&GID &GRP&PGM.&HOME) ISREDIT LINE_AFTER .ZLAST = DATALINE (DATA1) /*ISREDIT LINE_AFTER .ZLAST = DATALINE '&USER &UID.&GID &GRP+ &PGM.&NRSTR(&HOME)'*/ /*WRITE '&USER.*&UID.*&PGM.*&HOME' ISREDIT CURSOR = &CNT2 1 GOTO LOOP /* *************************************** */ /* END PROCESSES */ /* *************************************** */ END_EDIT: + ISREDIT DELETE 1 &ENDER SET RETURN_CODE = 0 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 ISREDIT END EXIT