/* REXX */ /* */ /* ISSUES THE RACF 'LU' COMMAND AND ROUTES THE OUTPUT TO */ /* A SCROLLABLE TEMP DATASET. */ /* */ /* DIFFERENT FROM THE "LU2" EXEC IN THAT ONLY THE GROUP */ /* NAMES ARE DISPLAYED INSTEAD OF THE OTHER GROUP-CONNECTION */ /* INFORMATION. */ /* */ /* CREATED 10/16/98 STEVE NEELAND */ /* */ /* 12/28/00 - MODIFIED TO SORT THE GROUPS WHEN DISPLAYED. */ /* */ /* 05/24/01 - MODIFIED TO ALLOW FOR DISPLAY TO BE ROUTED */ /* TO EITHER THE SCREEN OR A HARDCODED PRINTER. */ /* */ $LOOP = 1 $GROUP_KNTR = 0 PARSE UPPER ARG UID $DEST . IF UID = '' THEN UID = USERID() $PRINT_FLAG = 'N' IF $DEST = 'P' THEN $PRINT_FLAG = 'Y' /*-------- GET RACF USERID PROFILE INFO --------------*/ Z = OUTTRAP('LIST.') "LISTUSER" UID "TSO DFP OMVS CICS WORKATTR" Z = OUTTRAP('OFF') /*-------- CHECK IF USERID EXISTS -------------------*/ PARSE VAR LIST.1 $MSG . IF $MSG = 'ICH30001I' THEN DO /* CLEAR */ SAY SAY 'USERID' UID 'DOES NOT EXIST.' SAY EXIT END /* IF $MSG... */ /*------------------------------------------------------------------*/ /* ALLOCATE THE TEMP FILE FOR DISPLAYING THE OUTPUT DATA */ /*------------------------------------------------------------------*/ OUTPUT = "L"RANDOM(99999) SELECT WHEN $PRINT_FLAG = 'Y' THEN /*--- SEND TO PRINTER --------------------------*/ "ALLOC FI("OUTPUT") SYSOUT(A) DEST(U0011) FORMS(STD) , COPIES(1) RECFM(F,B) LRECL(80)" /*--- SEND TO PRINTER --------------------------*/ /* "ALLOC FI("OUTPUT") SYSOUT(A) DEST(U0022) FORMS(STD) , COPIES(1) RECFM(F,B) LRECL(80)" */ OTHERWISE /*--- SEND TO SCREEN ---------------------------*/ "ALLOC FI("OUTPUT") DELETE TRACK , SPACE (5,5) LRECL(133) RECFM(F B) BLKSIZE(0) UNIT(SYSDA)" END /* SELECT */ /*-------- LIST ONLY THE USERID ATTRIBUTE INFO --------*/ DO UNTIL SUBSTR(LIST.$LOOP,2,5) = 'LOGON' QUEUE LIST.$LOOP $LOOP = $LOOP + 1 END /* DO UNTIL */ QUEUE LIST.$LOOP ; $LOOP = $LOOP + 1 QUEUE LIST.$LOOP ; $LOOP = $LOOP + 1 QUEUE LIST.$LOOP QUEUE ' ' QUEUE ' ' /*-------- GO THRU AND GET THE GROUPS CONNECTED TO --------*/ DO X = $LOOP TO LIST.0 UNTIL SUBSTR(LIST.X,1,3) = "TSO" | , SUBSTR(LIST.X,1,6) = "NO TSO" IF SUBSTR(LIST.X,3,6) = "GROUP=" THEN DO PARSE VAR LIST.X 'GROUP=' $GROUP . X = X +2 PARSE VAR LIST.X 'CONNECT ATTRIBUTES=' $ATTR $GROUP_KNTR = $GROUP_KNTR + 1 IF $ATTR = 'NONE' THEN $ATTR = ' ' ELSE $ATTR = "/"||$ATTR $GROUP_ORIG.$GROUP_KNTR = $GROUP $ATTR_ORIG.$GROUP_KNTR = $ATTR END /* IF LEFT */ END /* END X */ CALL SORT_GROUPS CALL LIST_GROUPS QUEUE ' ' QUEUE ' ' DO Y = X TO LIST.0 QUEUE LIST.Y END /* DO Y */ $TODAY = DATE() $TODAY = SUBWORD($TODAY,2,1) SUBWORD($TODAY,1,1)"," SUBWORD($TODAY,3) QUEUE '' IF $PRINT_FLAG = 'Y' THEN PUSH COPIES('=',80) PUSH ' ' PUSH "TODAY'S DATE:" DATE('W') $TODAY " JULIAN: "DATE('D') , " TIME IS:" TIME() IF $PRINT_FLAG = 'Y' THEN PUSH ' ' /*------------------------------------------------------------------*/ /* CLOSE THE 'DISPLAY' FILE */ /*------------------------------------------------------------------*/ QUEUE ' ' "EXECIO * DISKW "OUTPUT" (FINIS" /*------------------------------------------------------------------*/ /* CLEANUP */ /*------------------------------------------------------------------*/ IF $PRINT_FLAG = 'N' THEN DO /*--------------------------------------------------------------*/ /* DISPLAY RESULTS TO SCREEN */ /*--------------------------------------------------------------*/ ADDRESS ISPEXEC "LMINIT DATAID(DATAID) DDNAME("OUTPUT")" ADDRESS ISPEXEC "BROWSE DATAID("DATAID")" END /* IF PRINT_FLAG... */ "FREE F("OUTPUT")" DROPBUF 0 EXIT /*-------------------------------------------------------------*/ SORT_GROUPS: DO $LOOP1 = 1 TO $GROUP_KNTR DO $LOOP2 = $LOOP1 TO $GROUP_KNTR B41 = $GROUP_ORIG.$LOOP1 B42 = $GROUP_ORIG.$LOOP2 IF B41 > B42 THEN DO TEMP_G = $GROUP_ORIG.$LOOP1 TEMP_A = $ATTR_ORIG.$LOOP1 $GROUP_ORIG.$LOOP1 = $GROUP_ORIG.$LOOP2 $ATTR_ORIG.$LOOP1 = $ATTR_ORIG.$LOOP2 $GROUP_ORIG.$LOOP2 = TEMP_G $ATTR_ORIG.$LOOP2 = TEMP_A END /* IF B41..... */ END /* DO $LOOP2 */ END /* DO $LOOP1 */ RETURN /*----------------------------------------------------------------*/ LIST_GROUPS: DO $LOOP3 = 1 TO $GROUP_KNTR IF $LOOP3 = 1 THEN, QUEUE ' GROUPS CONNECTED TO: ', $GROUP_ORIG.$LOOP3||$ATTR_ORIG.$LOOP3 ELSE QUEUE ' ', $GROUP_ORIG.$LOOP3||$ATTR_ORIG.$LOOP3 END /* DO $LOOP3... */ RETURN