//******************************************************************* //* THIS WILL READ THE RACF DATABASE FLATFILE AND COPY ONLY THE //* TYPE '0205' RECORDS TO A TEMP DATASET THAT IS USED AS INPUT //* INTO THE SECOND STEP. //* //* THIS JOB WILL REPORT ALL USERIDS THAT HAVE BEEN CONNECTED TO //* A SPECIFIC RACF GROUP IN X NUMBER OF DAYS OR MORE. //* //******************************************************************* //SORT EXEC PGM=SORT //SORTIN DD DISP=SHR,DSN=PROD.RACF.IRRDBU00.UNLOAD(0) //SORTOUT DD DSN=&TEMP,DISP=(,PASS), // SPACE=(0,(3000,1500),RLSE), // DCB=(LRECL=800,RECFM=VB), // UNIT=SYSDA //SYSPRINT DD SYSOUT=* //SYSOUT DD SYSOUT=* //*---------------------------> GROUP NAME >--------, //* | //* V //SYSIN DD * SORT FIELDS=COPY INCLUDE COND=(5,4,CH,EQ,C'0205',AND,19,7,CH,EQ,C'BNVDCOP') OPTION VLSHRT /* //*-------------------------------------------------------------------* //* Execute the Rexx exec and create the output file * //*-------------------------------------------------------------------* //REPORT EXEC PGM=IKJEFT01,DYNAMNBR=128,COND=(0,NE) //SYSTSPRT DD SYSOUT=* //INPUT DD DSN=&TEMP,DISP=SHR //OUTPUT DD SYSOUT=(A,,STD),HOLD=YES ,DEST=U0022 //SYSPROC DD DSN=RACF.LIB.REXX,DISP=SHR //*----# OF DAYS--, //*--GROUP NAME | //* | | //* V V //SYSTSIN DD * ICE63 BNVDCOP 90 // /* REXX */ /*********************************************************************/ /* */ /* */ /*********************************************************************/ /*------------------------------------------------------------------*/ /* SET THE TARGET RACF GROUP NAME TO CHECK THE CONNECT DATES FROM. */ /* (PASSED AS THE FIRST ARGUMENT FROM THE JCL) */ /*------------------------------------------------------------------*/ /*------------------------------------------------------------------*/ /* SET THE NUMBER OF DAYS THAT A USER IS CONNECTED TO THE TARGET */ /* RACF GROUP BEFORE THEY ARE LISTED ON THE REPORT. */ /* (PASSED AS THE 2ND ARGUMENT FROM THE JCL) */ /*------------------------------------------------------------------*/ PARSE ARG $TARGET_GROUP $DATE_RANGE . /*------------------------------------------------------------------*/ /* ALLOCATE THE INPUT FILE */ /*------------------------------------------------------------------*/ "EXECIO * DISKR INPUT (STEM IN_REC. FINIS" /*------------------------------------------------------------------*/ /* PRINT REPORT HEADER */ /*------------------------------------------------------------------*/ CALL HEADER /*------------------------------------------------------------------*/ /* READ EACH INPUT RECORD */ /*------------------------------------------------------------------*/ SAY IN_REC.0 'RECORDS TO PROCESS.' SAY ; SAY ' WORKING......' ; SAY DO $X = 1 TO IN_REC.0 /*-- FIND THE USERID RECORD (TYPE=0200) -----------*/ PARSE VAR IN_REC.$X $RECTYPE , $USERID , $GROUP , $CONNECT_DATE , $CONNECT_OWNER . , 118 $GROUP_REVOKE_DATE 127 $CONNECT_DATE = STRIP($CONNECT_DATE) $CONNECT_DATE2 = LEFT($CONNECT_DATE,4)||, SUBSTR($CONNECT_DATE,6,2)||, SUBSTR($CONNECT_DATE,9,2) $TODAY = DATE('B') $CONNECT_DATE2 = DATE('B',$CONNECT_DATE2,'S') $DIFF = $TODAY - $CONNECT_DATE2 /*------------------------------------------------------------------*/ /* IF THE USERID WAS CONNECTED TO THE TARGET RACF GROUP 'LESS' THAN */ /* THE VALUE PASSED AS $DATE_RANGE, THEN SKIP THIS RECORD AND GET */ /* THE NEXT RECORD. */ /*------------------------------------------------------------------*/ IF $DIFF < $DATE_RANGE THEN ITERATE $X $RECTYPE = STRIP($RECTYPE) $USERID = STRIP($USERID) $GROUP = STRIP($GROUP) $CONNECT_OWNER = STRIP($CONNECT_OWNER) $GROUP_REVOKE_DATE = STRIP($GROUP_REVOKE_DATE) /* SAY ' ' , LEFT($USERID,13) , LEFT($CONNECT_DATE,19) , RIGHT($DIFF,4) */ QUEUE ' ' , LEFT($USERID,13) , LEFT($CONNECT_DATE,19) , RIGHT($DIFF,4) EXECIO 1 DISKW OUTPUT END /* $X */ /*------------------------------------------------------------------*/ /* CLOSE THE 'DISPLAY' FILE */ /*------------------------------------------------------------------*/ QUEUE ' ' "EXECIO 1 DISKW" OUTPUT "(FINIS" /*------------------------------------------------------------------*/ /* CLEANUP */ /*------------------------------------------------------------------*/ "FREE F(INPUT,"OUTPUT")" DROPBUF 0 EXIT /*******************************************************************/ HEADER: $LINE = ' DATE:' DATE('W')',' DATE('N') QUEUE $LINE QUEUE ' ' $LINE = 'USERIDS CONNECTED TO RACF GROUP "'||$TARGET_GROUP||, '" >='||$DATE_RANGE||' DAYS AGO' QUEUE CENTER($LINE,80) QUEUE CENTER(COPIES('=',60),80) QUEUE ' ' QUEUE ' USERID CONNECT DATE DAYS AGO' QUEUE ' ======== ============ ========' EXECIO 7 DISKW OUTPUT RETURN