//*******************************************************************   
//*   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                                                                






    Source: geocities.com/steveneeland