Go to LeighWeb Home Page            

Back To LeighWeb Mainframe Utilities Page

View the documentation associated with this module

ISREDIT MACRO (COL1,COL2,COL3,OPT1,OPT2,OPT3,OPT4)
ISPEXEC CONTROL ERRORS RETURN
ISPEXEC VGET (DBGSWTCH) PROFILE
IF &DBGSWTCH = &STR(ON) THEN +
     CONTROL MSG LIST CONLIST SYMLIST NOFLUSH
ELSE CONTROL NOMSG NOLIST NOFLUSH NOPROMPT
IF &STR(&COL1) = HELP THEN GOTO HELPSEC
/**********************************************************************
/* EDIT MACRO : COPYCOL                                               *
/* AUTHOR     : DAVID LEIGH                                           *
/* FUNCTION   : COPY ONE COLUMN IN A FILE BEING EDITED TO ANOTHER.    *
/**********************************************************************

/**********************************************************************
/* EDIT THE USER INPUT                                                *
/**********************************************************************
ISREDIT (LN,CL) = CURSOR
ISREDIT (LRECL) = LRECL
ISREDIT (X,Y) = DISPLAY_LINES
IF &LASTCC = 8 THEN +
    DO
        SET ZEDLMSG = &STR(*** NO LINES EXIST TO PROCESS AGAINST ***)
        ISPEXEC SETMSG MSG(UTLZ001)
        EXIT
    END

IF &DATATYPE(&COL1) ¬= NUM OR +
   &DATATYPE(&COL2) ¬= NUM OR +
   &DATATYPE(&COL3) ¬= NUM THEN +
    DO
        SET ZEDLMSG = &STR(*** 1ST 3 PARAMETERS MUST BE COLUMN NUMBERS +
                           ***)
        ISPEXEC SETMSG MSG(UTLZ001)
        EXIT CODE(8)
    END

IF (&COL1 > &LRECL OR &COL1 < 1) OR +
   (&COL2 > &LRECL OR &COL2 < 1) OR +
   (&COL3 > &LRECL OR &COL3 < 1) THEN +
    DO
        SET ZEDLMSG = &STR(*** ALL COLUMNS MUST BE BETWEEN 1 AND +
                           &LRECL ***)
        ISPEXEC SETMSG MSG(UTLZ001)
        EXIT CODE(8)
    END

IF &COL1 > &COL2 THEN +
    DO
        SET ZEDLMSG = &STR(*** COLUMN 1 MUST BE LESS THAN COLUMN 2 ***)
        ISPEXEC SETMSG MSG(UTLZ001)
        EXIT CODE(8)
    END

IF &STR(&OPT4) = STRING AND +
   &STR(&OPT3) ¬= STRING THEN +
    DO
        SET ZEDLMSG = &STR(*** "STRING" CANNOT BE THE LAST OPTION ***)
        ISPEXEC SETMSG MSG(UTLZ001)
        EXIT CODE(8)
    END

/**********************************************************************
/* PROCESS THE INPUT                                                  *
/**********************************************************************
SELECT
    WHEN (&OPT1 = STRING) +
        DO
            SET STG = &STR(&OPT2)
            SET OPT = &STR(&OPT3 &OPT4)
        END
    WHEN (&OPT2 = STRING) +
        DO
            SET STG = &STR(&OPT3)
            SET OPT = &STR(&OPT1 &OPT4)
        END
    WHEN (&OPT3 = STRING) +
        DO
            SET STG = &STR(&OPT4)
            SET OPT = &STR(&OPT1 &OPT2)
        END
    OTHERWISE +
        DO
            SET STG = &STR(P'=')
            SET OPT = &STR(&OPT1 &OPT2 &OPT3 &OPT4)
        END
END

IF &STR(&OPT) =      THEN +
    DO
        %YOUSURE COLUMN(10) ROW(5) ZWINTTL('PROCESS ALL LINES?!')
        IF &LASTCC > 0 THEN +
            DO
                SET ZEDLMSG = &STR(*** NO "COPYCOL" PROCESSING +
                                   PERFORMED ***)
                ISPEXEC SETMSG MSG(UTLZ001)
                EXIT
            END
    END

ISREDIT (ONOFF,TYPE) = NUMBER
IF &ONOFF = ON AND &SYSINDEX(&STR( COBOL ),&STR(&TYPE)) > 0 THEN +
    DO
        SET COL1 = &COL1 - 6
        SET COL2 = &COL2 - 6
        SET COL3 = &COL3 - 6
    END

SET COUNT = 0
SET LEN = &COL2 - &COL1 + 1

SET PIC = &STR(=)
SET SPACE = &STR( )
DO &I = 2 TO &LEN
    SET PIC = &STR(&PIC=)
    SET SPACE = &STR(&SPACE )
END

ISREDIT FIND FIRST &STR(&STG &OPT)

DO WHILE &LASTCC = 0
    SET COUNT = &COUNT + 1
    ISREDIT CHANGE P'&PIC' '&SPACE' .ZCSR .ZCSR &COL3
    ISREDIT (LINE) = LINE .ZCSR
    SET COL = &SUBSTR(&COL1:&COL2,&NRSTR(&LINE))
    ISREDIT LINE .ZCSR = LINE + <(COL3) (COL)>
    ISREDIT FIND LAST P'=' .ZCSR .ZCSR
    ISREDIT FIND NEXT &STR(&STG &OPT)
END

SET ZEDLMSG = &STR(*** &COUNT LINE(S) PROCESSED ***)
ISPEXEC SETMSG MSG(UTLZ000)

ISREDIT CURSOR = &LN &CL

EXIT

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