|
Back To LeighWeb Mainframe Utilities Page
View the documentation associated with this module
ISREDIT MACRO NOPROCESS (STG1,STG2,OPT1,OPT2,OPT3,OPT4,OPT5,OPT6,OPT7)
ISPEXEC CONTROL ERRORS RETURN
/**** SET MESSAGE DISPLAY ON/OFF BASED ON THE DEBUG SWITCH ***/
ISPEXEC VGET (DBGSWTCH) PROFILE
IF &DBGSWTCH = &STR(ON) THEN CONTROL MSG LIST CONLIST SYMLIST NOFLUSH
ELSE CONTROL NOMSG NOLIST NOFLUSH NOPROMPT
/**********************************************************************/
/* UTILITY NAME : A */
/* DATE WRITTEN : 9-29-88 */
/* AUTHOR : DAVE LEIGH */
/* DESCRIPTION : INSERT 'STRING 2' AFTER LINE WITH (AN) OCCURANCE(S) */
/* : OF 'STRING 1' */
/*========================== MODIFICATIONS ===========================*/
/* WHO |WHEN |WHY */
/* --- |---- |--- */
/* DAVE LEIGH |8-11-89 |TOOK OFF THE 'CODE(&MAXCC)' PORTION OF THE */
/* | |EXIT STATEMENT SINCE A CODE OF > 0 WOULD */
/* | |CAUSE THE INVOCATION COMMAND ON THE COMMAND */
/* | |TO REMAIN AFTER IT WAS COMPLETE, AND HITTING*/
/* | |THE LAST LINE OF THE FILE WOULD ALWAYS CAUSE*/
/* | |THE RETURN CODE TO BE > 0. */
/* DAVE LEIGH |8-17-89 |CHANGED &STRING_ TO &NRSTR(&STRING_) TO TAKE*/
/* | |CARE OF STRINGS WITH '&' IN THEM. */
/**********************************************************************/
IF &NRSTR(&STG2) = THEN +
IF &NRSTR(&STG1) = &STR(HELP) THEN GOTO HELPSEC
ELSE +
DO
SET ZEDSMSG = &STR(2ND STRING MISSING)
ISPEXEC SETMSG MSG(UTLZ001)
EXIT CODE(8)
END
IF &SYSNSUB(1,&STG2) = ZLINE OR +
&SYSNSUB(1,&STG2) = &SYSNSUB(0,&ZLINE) THEN +
DO
ISREDIT PROCESS RANGE Z
IF &LASTCC ¬= 0 THEN +
DO
SET ZEDLMSG = &STR(*** NO LINE MARKED "Z" TO INSERT ***)
ISPEXEC SETMSG MSG(UTLZ001)
EXIT
END
ELSE +
DO
SET I = 0
ISREDIT FIND FIRST P'=' 1 .ZFRANGE .ZLRANGE
DO WHILE &LASTCC = 0
SET I = &I + 1
ISREDIT (ZLINE&I) = LINE .ZCSR
ISREDIT FIND NEXT P'=' 1 .ZFRANGE .ZLRANGE
END
SET NUMZ = &I
END
END
ELSE +
IF &SUBSTR(1:1,&STR(&SYSNSUB(1,&STG2))) = &STR(') OR +
&SUBSTR(1:1,&STR(&SYSNSUB(1,&STG2))) = &STR(") THEN +
DO
SET X = &LENGTH(&SYSNSUB(1,&STG2))
SET STG2 = &SUBSTR(2:&X-1,&SYSNSUB(1,&STG2))
END
SET OPTIONS = &SYSCAPS(&OPT1 &OPT2 &OPT3 &OPT4 &OPT5 &OPT6 &OPT7)
ISREDIT (SLINE,SCOL) = CURSOR
SET XCOUNT = 0
ISREDIT FIND FIRST &NRSTR(&STG1) &OPTIONS
DO WHILE &LASTCC = 0
SET XCOUNT = &XCOUNT + 1
IF &SYSNSUB(1,&STG2) = ZLINE OR +
&SYSNSUB(1,&STG2) = &SYSNSUB(0,&ZLINE) THEN +
DO
ISREDIT LABEL .ZCSR = .CURR
DO &I = &NUMZ TO 1 BY -1
ISREDIT LINE_AFTER .CURR = (ZLINE&I)
ISREDIT FIND NEXT P'=' 1
ISREDIT CHANGE 'XCOUNT' +
'&XCOUNT' .ZCSR .ZCSR ALL
IF &I = &NUMZ THEN ISREDIT LABEL .ZCSR = .NEXT
ISREDIT SEEK FIRST P'=' .CURR .CURR
END
ISREDIT FIND FIRST P'=' .NEXT .NEXT
END
ELSE +
DO
ISREDIT LINE_AFTER .ZCSR = (STG2)
ISREDIT FIND NEXT P'=' 1
ISREDIT CHANGE 'XCOUNT' '&XCOUNT' .ZCSR .ZCSR ALL
END
ISREDIT SEEK LAST P'=' .ZCSR .ZCSR
ISREDIT FIND NEXT &NRSTR(&STG1) &OPTIONS
END
ISREDIT CURSOR = &SLINE &SCOL
IF &STR(&NUMZ) > 1 THEN SET XCOUNT = &XCOUNT * &NUMZ
SET ZEDSMSG = &STR(&XCOUNT LINES INSERTED)
ISPEXEC SETMSG MSG(UTLZ000)
EXIT
HELPSEC: +
ISPEXEC SELECT PGM(ISPTUTOR) PARM(UTILH010)
SET ZEDLMSG = &STR(*** HELP DISPLAYED FOR "A" EDIT MACRO +
*** NO PROCESSING PERFORMED ***)
ISPEXEC SETMSG MSG(UTLZ000)
EXIT
|
|