Go to LeighWeb Home Page            

Back To LeighWeb Mainframe Utilities Page

View the documentation associated with this module

PROC 0 MEM(NUL) DSN()
/* ALLOWS BROWSING OF A COPY BOOK WHILE EDITING AND OPTIONALLY */
/* ENTERING THE DATA SET TO LOOK FOR THE MEMBER  IN */
/**********************************************************************
/* MODIFICATION 4/12/91 - DAVE LEIGH                                  *
/* ADDED CAPABILITY TO DISTINQUISH BETWEEN GSS AND SLSS SEARCHES,     *
/* ADDED THE CICS COPY LIBRARY TO THE SEARCH, INPROVED THE PARSING    *
/* PROCESSING TO FIND THE MEMBER NAME, ADDED EDIT AS WELL AS BROWSE   *
/* CAPABILITY (MADE "EDIT" THE DEFAULT), ADDED A "HELP" SECTION,      *
/* ADDED DEBUG CAPABILITY, AND ADDED DOCUMENTATION.                   *
/* MODIFICATION 10/23/92 - D SLEEMAN                                  *
/*    CHANGED TO BE USED AS AN EDIT MACRO OR A TSO COMMAND            *
/* MODIFICATION 12/07/94 - D LEIGH                                    *
/*    UPDATED SLSS COPYLIB CONCATENATION                              *
/*    ADDED UNISTAR LIBRARIES                                         *
/*    ADDED EXEC SQL INCLUDE CAPABILITY                               *
/**********************************************************************
CONTROL NOMSG NOLIST NOFLUSH NOPROMPT
ERROR DO
        SET &MODE=CLIST
        RETURN
      END
ISREDIT MACRO (TEMPDSN)
ERROR OFF

/*** CHECK THE DEBUG SWITCH ***/

ISPEXEC VGET DBGSWTCH PROFILE
IF &DBGSWTCH = ON THEN +
    CONTROL MSG LIST CONLIST SYMLIST NOFLUSH NOPROMPT
ELSE +
    CONTROL NOMSG NOLIST NOFLUSH NOPROMPT


IF &MODE = CLIST THEN +
  DO
    SET TEMPDSN = &DSN
    SET MEMBER = &MEM
  END

ISPEXEC CONTROL ERRORS RETURN
IF &STR(&TEMPDSN) = HELP THEN GOTO HELPSEC

/**********************************************************************
/* SAVE THE USER'S CURRENT LOCATION.                                  *
/**********************************************************************
IF &MODE ¬= CLIST THEN +
  ISREDIT (SLN,SCL) = CURSOR

/**********************************************************************
/* ATTEMPT TO DETERMINE IF THIS IS A GSS OR SLSS SEARCH               *
/**********************************************************************
IF &MODE ¬= CLIST THEN +
    DO
        ISREDIT (DATASET) = &TEMPDSN
        ISREDIT (MEMBER) = MEMBER
    END

IF &SUBSTR(1:2,&STR(&SYSUID)) = &STR(P@) THEN SET SEARCH = SLSS
IF &SUBSTR(1:2,&STR(&SYSUID)) = &STR(P#) THEN SET SEARCH = GSS
IF &SYSINDEX(&STR(SLSS.),&STR(&DATASET)) > 0 THEN SET SEARCH = SLSS
IF &SYSINDEX(&STR(GSS.),&STR(&DATASET)) > 0 THEN SET SEARCH = GSS
IF &SYSINDEX(&STR(SLS),&STR(&DATASET)) = 1 THEN SET SEARCH = SLSS
IF &SYSINDEX(&STR(GSS),&STR(&DATASET)) = 1 THEN SET SEARCH = GSS
IF &SEARCH =      THEN SET SEARCH = SLSS

/**********************************************************************
/* WHAT EDIT PROFILE NUMBERING SCHEME IS BEING USED?                  *
/**********************************************************************
IF &MODE = CLIST THEN +
  GOTO SKIPFIND
ISREDIT (X,Y) = NUMBER
IF &X = ON AND &SYSINDEX(&STR( COBOL),&STR(&Y)) > 0 THEN +
    DO
        SET COL1 = 1
        SET COL2 = 66
    END
ELSE +
    DO
        SET COL1 = 7
        SET COL2 = 72
    END

/**********************************************************************
/* GET OUT IF THIS IS A COMMENT LINE.                                 *
/**********************************************************************
ISREDIT FIND FIRST '*' &COL1 .ZCSR .ZCSR
IF &LASTCC = 0 THEN +
    DO
        SET ZEDSMSG = &STR(COMMENT LINE)
        SET ZEDLMSG = &STR(*** THIS IS A COMMENT LINE *** +
                           NO PROCESSING PERFORMED ***)
        ISPEXEC SETMSG MSG(UTLZ001)
        GOTO FINISH
    END

/**********************************************************************
/* FIND THE MEMBER NAME ON THE LINE.                                  *
/**********************************************************************
SET MEMBER =
ISREDIT FIND FIRST ' COPY ' &COL1 &EVAL(&COL1 + 55 + 3) .ZCSR .ZCSR
IF &LASTCC ¬= 0 THEN +
    DO
        ISREDIT FIND FIRST ' CICSCOPY ' +
                &COL1 &EVAL(&COL1 + 51 + 3) .ZCSR .ZCSR
        IF &LASTCC ¬= 0 THEN +
            DO
                ISREDIT FIND FIRST ' INCLUDE ' +
                        &COL1 &EVAL(&COL1 + 52 + 3) .ZCSR .ZCSR
                IF &LASTCC ¬= 0 THEN +
                    DO
                        SET ZEDSMSG = &STR(NO COPY VERB)
                        SET ZEDLMSG = &STR(*** COULD NOT FIND +
                                           "COPY", "CICSCOPY", OR +
                                           "INCLUDE" +
                                           VERB ON THIS +
                                           LINE ***)
                        ISPEXEC SETMSG MSG(UTLZ001)
                        GOTO FINISH
                    END
            END
    END
ISREDIT FIND NEXT P'¬' .ZCSR .ZCSR
ISREDIT FIND NEXT ' ' .ZCSR .ZCSR
ISREDIT FIND NEXT P'¬' .ZCSR .ZCSR
ISREDIT (LN,CL1) = CURSOR
ISREDIT CURSOR = &LN &EVAL(&CL1 + 8)
ISREDIT FIND PREV '.' .ZCSR .ZCSR
ISREDIT FIND PREV P'¬' .ZCSR .ZCSR
ISREDIT (NULL,CL2) = CURSOR
ISREDIT (MEMBER) = LINE .ZCSR
IF &CL2 < &CL1 OR &CL2 > &LENGTH(&STR(&MEMBER)) THEN +
    SET MEMBER =
ELSE +
    SET MEMBER = &SUBSTR(&CL1:&CL2,&STR(&MEMBER))

IF &STR(&MEMBER) =     THEN +
    DO
        SET ZEDSMSG = &STR(NO COPYBOOK)
        SET ZEDLMSG = &STR(*** COULD NOT FIND THE COPYBOOK NAME ON +
                           THIS LINE ***)
        ISPEXEC SETMSG MSG(UTLZ001)
        GOTO FINISH
    END
GOTO SKPCLIST

SKIPFIND: +
SET MEMBER = &MEM

/**********************************************************************
/* FIND FIRST OCCURANCE OF THE COPYBOOK MEMBER IN THE LIBRARIES       *
/**********************************************************************
SKPCLIST: +
SELECT
    WHEN (&SYSDSN('&TEMPDSN(&MEMBER)')=OK) +
        SET DSN = &STR(&TEMPDSN(&MEMBER))
    WHEN (&SYSDSN('&SYSUID..&SEARCH..COPYLIB(&MEMBER)')=OK) +
        SET DSN = &STR(&SYSUID..&SEARCH..COPYLIB(&MEMBER))
    WHEN (&SYSDSN('&SYSUID..STR.COPYLIB(&MEMBER)')=OK) +
        SET DSN = &STR(&SYSUID..STR.COPYLIB(&MEMBER))
    WHEN (&SYSDSN('QDEVL.STR.COPYLIB(&MEMBER)')=OK) +
        SET DSN = &STR(QDEVL.STR.COPYLIB(&MEMBER))
    WHEN (&SYSDSN('PDBA.USSTRD00.DCLGEN(&MEMBER)')=OK) +
        SET DSN = &STR(PDBA.USSTRD00.DCLGEN(&MEMBER))
    WHEN (&SYSDSN('QQUAL.STR.COPYLIB(&MEMBER)')=OK) +
        SET DSN = &STR(QQUAL.STR.COPYLIB(&MEMBER))
    WHEN (&SYSDSN('PDBA.USSTRQ00.DCLGEN(&MEMBER)')=OK) +
        SET DSN = &STR(PDBA.USSTRQ00.DCLGEN(&MEMBER))
    WHEN (&SYSDSN('&SEARCH..RFP.COPYLIB(&MEMBER)')=OK) +
        SET DSN = &STR(&SEARCH..RFP.COPYLIB(&MEMBER))
    WHEN (&SYSDSN('MMODO.STR.COPYLIB(&MEMBER)')=OK) +
        SET DSN = &STR(MMODO.STR.COPYLIB(&MEMBER))
    WHEN (&SYSDSN('PDBA.USSTRM00.DCLGEN(&MEMBER)')=OK) +
        SET DSN = &STR(PDBA.USSTRM00.DCLGEN(&MEMBER))
    WHEN (&SYSDSN('&SEARCH..PRD.COPYLIB(&MEMBER)')=OK) +
        SET DSN = &STR(&SEARCH..PRD.COPYLIB(&MEMBER))
    WHEN (&SYSDSN('PEMER.STR.COPYLIB(&MEMBER)')=OK) +
        SET DSN = &STR(PEMER.STR.COPYLIB(&MEMBER))
    WHEN (&SYSDSN('PPROD.STR.COPYLIB(&MEMBER)')=OK) +
        SET DSN = &STR(PPROD.STR.COPYLIB(&MEMBER))
    WHEN (&SYSDSN('PDBA.USSTRP00.DCLGEN(&MEMBER)')=OK) +
        SET DSN = &STR(PDBA.USSTRP00.DCLGEN(&MEMBER))
    WHEN (&SYSDSN('SYS4.CICS.COBLIB(&MEMBER)')=OK) +
        SET DSN = &STR(SYS4.CICS.COBLIB(&MEMBER))
    WHEN (&SYSDSN('SYS3.CACOMMON.PROD.CAIMAC(&MEMBER)')=OK) +
        SET DSN = &STR(SYS3.CACOMMON.PROD.CAIMAC(&MEMBER))
    WHEN (&SYSDSN('SYS3.ACF2CICS.PROD.ACFMAC(&MEMBER)')=OK) +
        SET DSN = &STR(SYS3.ACF2CICS.PROD.ACFMAC(&MEMBER))
    WHEN (&SYSDSN('CRS.V2R1M0.SELACOPY(&MEMBER)')=OK) +
        SET DSN = &STR(CRS.V2R1M0.SELACOPY(&MEMBER))
    OTHERWISE DO
        SET ZEDSMSG = &STR("&MEMBER" NOT FOUND)
        SET ZEDLMSG = &STR("&MEMBER" NOT FOUND IN ANY COPY LIBRARY)
        ISPEXEC SETMSG MSG(UTLZ001)
        GOTO FINISH
    END
END

/**********************************************************************
/* PERFORM THE EDIT/BROWSE                                            *
/**********************************************************************
ISPEXEC EDIT DATASET('&DSN')
SELECT (&LASTCC)
    WHEN (0 ¦ 4) DO
        SET ZEDSMSG = &STR("&MEMBER" EDITED)
        SET ZEDLMSG = &STR("&DSN" WAS EDITED)
        ISPEXEC SETMSG MSG(UTLZ000)
        SET BROWSE = NO
    END
    WHEN (14) DO
        SET ZEDSMSG = &STR("&MEMBER" IN USE)
        SET ZEDLMSG = &STR(UNABLE TO EDIT "&MEMBER" *** +
                           IN USE BY ANOTHER USER/TASK)
        ISPEXEC SETMSG MSG(UTLZ000)
        SET BROWSE = YES
    END
    WHEN (16) DO
        SET ZEDSMSG = &STR("&MEMBER" NOT FOUND)
        SET ZEDLMSG = &STR("&MEMBER" DOES NOT EXIT)
        ISPEXEC SETMSG MSG(UTLZ001)
        SET BROWSE = NO
    END
    WHEN (20) DO
        SET ZEDSMSG = &STR("&MEMBER" EDIT ERROR)
        SET ZEDLMSG = &STR(SEVERE ERROR "20" TRYING TO EDIT +
                           "&MEMBER")
        ISPEXEC SETMSG MSG(UTLZ001)
        SET BROWSE = YES
    END
    OTHERWISE DO
        SET ZEDSMSG = &STR("&MEMBER" EDIT ERROR)
        SET ZEDLMSG = &STR(ERROR CC "&LASTCC" TRYING TO EDIT +
                           "&MEMBER")
        ISPEXEC SETMSG MSG(UTLZ001)

        SET BROWSE = YES
    END
END
IF &BROWSE = NO THEN GOTO FINISH
ISPEXEC BROWSE DATASET('&DSN')
SELECT (&LASTCC)
    WHEN (0) DO
        SET ZEDSMSG = &STR("&MEMBER" BROWSED)
        SET ZEDLMSG = &STR("&DSN" WAS BROWSED)
        ISPEXEC SETMSG MSG(UTLZ000)
    END
    WHEN (12) DO
        SET ZEDSMSG = &STR("&MEMBER" IS EMPTY)
        SET ZEDLMSG = &STR("&DSN" HAS NO LINES *** UNABLE TO BROWSE)
        ISPEXEC SETMSG MSG(UTLZ001)
    END
    WHEN (14 ¦ 16) DO
        SET ZEDSMSG = &STR("&MEMBER" NOT FOUND)
        SET ZEDLMSG = &STR("&DSN" WAS NOT FOUND)
        ISPEXEC SETMSG MSG(UTLZ001)
    END
    WHEN (20) DO
        SET ZEDSMSG = &STR("&MEMBER" BROWSE ERROR)
        SET ZEDLMSG = &STR(SEVERE ERROR "20" TRYING TO BROWSE +
                           "&MEMBER")
        ISPEXEC SETMSG MSG(UTLZ001)
    END
    OTHERWISE DO
        SET ZEDSMSG = &STR("&MEMBER" BROWSE ERROR)
        SET ZEDLMSG = &STR(ERROR CC "&LASTCC" TRYING TO BROWSE +
                           "&MEMBER")
        ISPEXEC SETMSG MSG(UTLZ001)
    END
END

/**********************************************************************
/* RETURN TO THE SAME CURSOR POSITION AND GET OUT                     *
/**********************************************************************
FINISH: +
IF &MODE ¬= CLIST THEN +
    ISREDIT CURSOR = &SLN &SCL
EXIT

HELPSEC: +                                                              02480000
ISPEXEC SELECT PGM(ISPTUTOR) PARM(HELPSHEL)                             02490000
SET ZEDLMSG = &STR(*** HELP DISPLAYED FOR CPY UTILITY +                 02490000
                   *** NO PROCESSING PERFORMED ***)                     02490000
ISPEXEC SETMSG MSG(UTLZ000)                                             02490000
EXIT