Go to LeighWeb Home Page            

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