Return to Mainframe Utilities Page
Module
/********************************************************************** /* UTILITY : FINDMOD * /* AUTHOR : DAVID LEIGH * /* FUNCTION : SEARCH A GIVEN ALLOCATED DDNAME CONCATENATION FOR THE * /* FIRST OCCURANCE OF THE PASSED MEMBER NAME. * /************************* MODIFICATIONS ****************************** /* WHO WHEN WHAT AND WHY * /* =========== ======== =========================================== * /* DAVID LEIGH 09/18/90 INITIAL CREATION OF THE UTILITY * /********************************************************************** PROC 2 MEMBER_TO_FIND DDNAME_TO_SEARCH UTILITY(FINDMOD) + EDIT BROWSE DEBUG BATCH IF &DEBBG = DEBUG THEN + CONTROL MSG LIST CONLIST SYMLIST NOFLUSH ELSE CONTROL NOMSG NOLIST NOFLUSH NOPROMPT IF &MEMBER_TO_FIND = HELP THEN GOTO HELPSEC /********************************************************************** /* LET THE USER KNOW WHAT THE HECK IS HAPPENING * /********************************************************************** SET ZEDLMSG = &STR(SEARCHING FOR "&MEMBER_TO_FIND" IN THE + "&DDNAME_TO_SEARCH" DD CONCATENATION) IF &BATCH ¬= BATCH THEN + IF &SYSISPF = ACTIVE THEN + DO ISPEXEC CONTROL DISPLAY LOCK ISPEXEC DISPLAY PANEL(MSGPANEL) END ELSE + WRITE &STR(&ZEDLMSG) /********************************************************************** /* FIND THAT MEMBER! * /********************************************************************** SET ZEDLMSG = SET SPACE = &STR( ) SET SYSOUTTRAP = 500 LISTA ST DO &I = 3 TO &SYSOUTLINE SET CURRLINE = &&SYSOUTLINE&I SET H = &I - 1 SET PREVLINE = &&SYSOUTLINE&H SET J = &I + 1 SET NEXTLINE = &&SYSOUTLINE&J SET PREVLINE = &STR(&PREVLINE&SPACE) SET CURRLINE = &STR(&CURRLINE&SPACE) SET NEXTLINE = &STR(&NEXTLINE&SPACE) SELECT WHEN (&SUBSTR(3:10,&STR(&CURRLINE)) = &DDNAME_TO_SEARCH AND + &SUBSTR(1:2,&STR(&CURRLINE)) = &STR( )) + DO SET DSNAME = &PREVLINE SET SWITCH = ON END WHEN (&SUBSTR(1:10,&STR(&CURRLINE)) = &STR( )) + SET DSNAME = WHEN (&SUBSTR(3:10,&STR(&NEXTLINE)) > &STR( ) AND + &SUBSTR(1:2,&STR(&NEXTLINE)) = &STR( ) AND + &STR(&SWITCH) = ON) + DO SET DSNAME = SET I = &SYSOUTLINE + 1 END WHEN (&STR(&SWITCH) ¬= &STR(ON)) SET DSNAME = OTHERWISE SET DSNAME = &CURRLINE END IF &STR(&DSNAME) > THEN + IF &SYSDSN('&DSNAME(&MEMBER_TO_FIND)') = OK THEN + IF &BATCH = BATCH THEN + DO SET DSN = &STR(&DSNAME(&MEMBER_TO_FIND)) ISPEXEC VPUT DSN SHARED SET SYSOUTTRAP = 0 EXIT CODE(0) END ELSE + DO SET I = &SYSOUTLINE + 1 SET ZEDLMSG = &STR(*** "&MEMBER_TO_FIND" IS IN + "&DSNAME" IN DD : + "&DDNAME_TO_SEARCH" ***) IF &SYSISPF = ACTIVE THEN + ISPEXEC SETMSG MSG(UTLZ000) ELSE + WRITE &STR(&ZEDLMSG) END END SET SYSOUTTRAP = 0 IF &STR(&ZEDLMSG) = THEN + DO IF &BATCH = BATCH THEN EXIT CODE(8) ELSE + DO SET ZEDLMSG = &STR(*** "&MEMBER_TO_FIND" NOT FOUND IN + DD : "&DDNAME_TO_SEARCH" ***) IF &SYSISPF = ACTIVE THEN + ISPEXEC SETMSG MSG(UTLZ001) ELSE + WRITE &STR(&ZEDLMSG) END END ELSE + DO IF &EDIT = EDIT THEN + IF &SYSISPF = ACTIVE THEN + ISPEXEC EDIT DATASET('&DSNAME(&MEMBER_TO_FIND)') ELSE + DO PDS '&DSNAME' EDIT &MEMBER_TO_FIND END IF &LASTCC = 20 OR &BROWSE = BROWSE THEN + IF &SYSISPF = ACTIVE THEN + DO ISPEXEC BROWSE DATASET('&DSNAME(&MEMBER_TO_FIND)') IF &LASTCC = 20 THEN + DO SET ZEDLMSG = &STR(*** COULD NOT ACCESS + "&MEMBER_TO_FIND" IN "&DSNAME" ***) ISPEXEC SETMSG MSG(UTLZ001) END END ELSE + DO PDS '&DSNAME' BROWSE &MEMBER_TO_FIND END END EXIT HELPSEC: + WRITE *** HELP FOR CLIST "FINDMOD" *** WRITE WRITE "FINDMOD" WILL SEARCH A GIVEN DDNAME (LIKE "SYSPROC" OR WRITE "ISPPLIB") WHICH IS ACTUALLY A CONCATENATION OF SEVERAL PDS'S WRITE AND TELL YOU WHERE A SPECIFIC MEMBER IN THAT CONCATENATION IS WRITE FOUND FIRST. YOU MAY INVOKE "FINDMOD" BY TYPING "TSO FINDMOD WRITE XXXXXXXX YYYYYYYY" WHERE "XXXXXXXX" IS THE MEMBER YOU WISH TO WRITE FIND AND "YYYYYYYY" IS THE DDNAME YOU WISH TO SEARCH. IF YOU WRITE ARE NOT IN "ISPF" YOU CAN INVOKE THIS CLIST WITH THE SAME SYNTAX WRITE EXCEPT FOR THE "TSO" (E.G. "FINDMOD XYZCLIST SYSPROC"). WRITE WRITE *** END OF HELP *** NO PROCESSING PERFORMED *** EXIT
Documentation