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 : B                                                   */
/* DATE WRITTEN : 9-29-88                                             */
/* AUTHOR       : DAVE LEIGH                                          */
/* DESCRIPTION  : INSERT 'STRING 2' BEFORE 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 = 1 TO &NUMZ
                ISREDIT LINE_BEFORE .CURR = (ZLINE&I)
                ISREDIT FIND PREV P'=' 1 .ZCSR .ZCSR
                ISREDIT FIND PREV P'=' 1
                ISREDIT CHANGE 'XCOUNT' '&XCOUNT' .ZCSR .ZCSR ALL
                ISREDIT SEEK FIRST P'=' .CURR .CURR
            END
        END
    ELSE +
        DO
            ISREDIT LINE_BEFORE .ZCSR = (STG2)
            ISREDIT FIND PREV P'=' 1 .ZCSR .ZCSR
            ISREDIT FIND PREV P'=' 1
            ISREDIT CHANGE 'XCOUNT' '&XCOUNT' .ZCSR .ZCSR ALL
            ISREDIT FIND NEXT P'=' 1
        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: +
CLEAR

WRITE *** HELP FOR EDIT MACRO 'B' ***
WRITE
WRITE THE 'B' EDIT MACRO ALLOWS YOU TO INSERT A LINE OF  BEFORE
WRITE EVERY LINE IN WHICH  OCCURS AT LEAST ONCE.
WRITE
WRITE BASIC SYNTAX :
WRITE
WRITE COMMAND ===> B XXXX $$$$
WRITE
WRITE FILE VIEW BEFORE COMMAND EXECUTION :
WRITE
WRITE 000100 AAAA
WRITE 000200 BBBB
WRITE 000300 XXXX
WRITE 000400 CCCC
WRITE 000500 XXXX
WRITE
WRITE FILE VIEW AFTER COMMAND EXECUTION :
WRITE
WRITE 000100 AAAA
WRITE 000200 BBBB
WRITE 000201 $$$$
WRITE 000300 XXXX
WRITE 000400 CCCC
WRITE 000401 $$$$
WRITE 000500 XXXX
WRITE
WRITE TO PROCESS ONLY EXCLUDED LINES :
WRITE
WRITE COMMAND ===> B XXXX $$$$ X
WRITE
WRITE FILE VIEW BEFORE COMMAND EXECUTION :
WRITE
WRITE 000100 AAAA
WRITE 000200 BBBB
WRITE X      XXXX
WRITE 000400 CCCC
WRITE 000500 XXXX
WRITE
WRITE FILE VIEW AFTER COMMAND EXECUTION :
WRITE
WRITE 000100 AAAA
WRITE 000200 BBBB
WRITE 000201 $$$$
WRITE 000300 XXXX
WRITE 000400 CCCC
WRITE 000500 XXXX
WRITE
WRITE TO PROCESS ONLY INCLUDED LINES :
WRITE
WRITE COMMAND ===> B XXXX $$$$ NX
WRITE
WRITE FILE VIEW BEFORE COMMAND EXECUTION :
WRITE
WRITE 000100 AAAA
WRITE 000200 BBBB
WRITE X      XXXX
WRITE 000400 CCCC
WRITE 000500 XXXX
WRITE
WRITE FILE VIEW AFTER COMMAND EXECUTION :
WRITE
WRITE 000100 AAAA
WRITE 000200 BBBB
WRITE X      XXXX
WRITE 000400 CCCC
WRITE 000401 $$$$
WRITE 000500 XXXX
WRITE
WRITE SPECIAL NOTES : IF NEITHER 'X' NOR 'NX' ARE SPECIFIED TO DEAL WITH
WRITE                 EXCLUDED OR INCLUDED LINES, ALL LINES WILL BE
WRITE                 SEARCHED REGARDLESS OF INCLUSION/EXCLUSION STATUS.
WRITE
WRITE                 SINGLE/DOUBLE QUOTE USAGE AROUND THE 2 STRINGS IS
WRITE                 IDENTICAL TO THAT OF THE EDIT 'CHANGE' (OR 'C')
WRITE                 COMMAND.
WRITE
WRITE                 THE NUMBER OF LINES INSERTED WILL BE PLACED IN THE
WRITE                 SHORT MESSAGE FIELD AT THE UPPER RIGHT HAND CORNER
WRITE                 OF YOUR SCREEN.
WRITE
WRITE                 IF YOU SPECIFY 'X' FOR PROCESSING EXCLUDED LINES,
WRITE                 ALL LINES WILL BE RESET AT THE END OF MACRO
WRITE                 EXECUTION.
WRITE
WRITE                 IF YOU DO NOT SPECIFY 'X' OR 'NX', AND EXCLUDED
WRITE                 LINES ARE FOUND WHICH CONTAIN  THEY WILL
WRITE                 BE RESET.

EXIT