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