Go to LeighWeb Home Page            

Back To LeighWeb Mainframe Utilities Page

View the documentation associated with this module

         /*********************************************************/
         /*   ISPF/PDF EDIT MACRO TO WRITE LINES FROM A FILE TO A */
         /*   ISPF TABLE IN MEMBER FOR LATTER INCLUSION BY THE    */
         /*   PASTE MACRO.                                        */
         /*                                                       */
         /*   SUPPORT                                             */
         /*    STEVEN SMITH SECURITY PACIFIC AUTOMATION CO OCT 88 */
         /*                                                       */
         /*   FOR HELP ON RUNNING THIS MACRO, UNDER EDIT ENTER:   */
         /*       CUT HELP                                        */
         /*********************************************************/
         ISREDIT MACRO (PARM1 PARM2 PARM3) NOPROCESS
/*** CHECK THE DEBUG SWITCH ***/
ISPEXEC VGET DBGSWTCH PROFILE
IF &DBGSWTCH = ON THEN +
    CONTROL MSG LIST CONLIST SYMLIST NOFLUSH NOPROMPT ASIS
ELSE +
    CONTROL NOMSG NOLIST NOFLUSH NOPROMPT ASIS

         /* CONTROL LIST CONLIST SYMLIST
         ISPEXEC CONTROL ERRORS RETURN
         ISPEXEC VGET (CUTDEF PASTEDEF CUTLIMIT CUTNAME) PROFILE
         SET ACTN=&Z
         SET CT=&Z
         SET CUTCOUNT=&Z
         IF &STR(&PARM1)=&Z THEN GOTO VERIFY
         IF &LENGTH(&STR(&PARM1))=2 THEN SET CT=&PARM1
           ELSE IF &DATATYPE(&PARM1) = NUM THEN SET CUTCOUNT=&PARM1
             ELSE SET ACTN=&PARM1
         IF &STR(&PARM2)=&Z THEN GOTO VERIFY
         IF &LENGTH(&STR(&PARM2))=2 THEN SET CT=&PARM2
           ELSE IF &DATATYPE(&PARM2) = NUM THEN SET CUTCOUNT=&PARM2
             ELSE SET ACTN=&PARM2
         IF &STR(&PARM3)=&Z THEN GOTO VERIFY
         IF &LENGTH(&STR(&PARM3))=2 THEN SET CT=&PARM3
           ELSE IF &DATATYPE(&PARM3) = NUM THEN SET CUTCOUNT=&PARM3
             ELSE SET ACTN=&PARM3
         VERIFY: -
         ISPEXEC CONTROL NONDISPL
         PROMPT: -
         ISPEXEC DISPLAY PANEL(CUTPROM)
         IF &LASTCC>7 THEN EXIT CODE(0)
         IF &ACTN = HELP THEN +
          DO
         /*ISPEXEC BROWSE DATASET('SYS6.DOC.DATA(CUT)')
           ISPEXEC SELECT PGM(ISPTUTOR) PARM(CUTHELP@)
           SET ACTN=&Z
           GOTO PROMPT
          END
         IF &ACTN=PROMPT THEN +
          DO
           SET ACTN=&Z
           GOTO PROMPT
          END
         /* GET DEFAULT MODE */
         DEFAULT: -
         IF &ACTN=DEFAULTS THEN SET ACTN=&Z
         ELSE ISPEXEC CONTROL NONDISPL
         ISPEXEC DISPLAY PANEL(CUTDEF)
         IF &LASTCC>7 THEN EXIT CODE(0)
         IF &ACTN = &Z THEN SET ACTN=&CUTDEF
         GOTO PROCS
         /* PROCESS LINE COMMANDS, CHECK IF C OR M WAS SPECIFIED */
         PROCS: -
         ISREDIT PROCESS RANGE C M
         IF &LASTCC >= 16 THEN DO
              EXIT CODE(12)
              END
         ELSE +
           IF &LASTCC >= 4 THEN +
              DO
              SET ZEDSMSG = ENTER "C" ¦ "M" LINE CMD
              SET ZEDLMSG = CUT REQUIRES A "C" OR "M" LINE COMMAND
              ISPEXEC SETMSG MSG(ISRZ001)
              EXIT CODE(12)
              END

         ISREDIT (CMD) = RANGE_CMD            /* GET THE COMMAND     */
         ISREDIT (LINE1) = LINENUM .ZFRANGE   /* FIRST LINE IN RANGE */
         ISREDIT (LINE2) = LINENUM .ZLRANGE   /* LAST LINE IN RANGE  */
         SET LINESTOCUT = &LINE2 - &LINE1 + 1

         /* GET THE NUM OF LINES THAT HAVE BEEN CUT BUT NOT PASTED,  */
         /* INITIALIZE TO ZERO IF FIRST TIME.                        */
         SET CUTPST=CUTPST&CT
         ISPEXEC TBQUERY &CUTPST ROWNUM(CUTCNTMX)
         IF &LASTCC ¬= 0 THEN DO
            ISPEXEC TBCREATE &CUTPST  NAMES(CTPT) NOWRITE SHARE
            IF &LASTCC ¬= 0 THEN DO
                ISPEXEC TBOPEN &CUTPST NOWRITE SHARE
                IF &LASTCC ¬= 0 THEN DO
                   EXIT CODE(12)
                END
            END
            SET CUTCNTMX=0
         END

         ISPEXEC TBBOTTOM &CUTPST
         IF &ACTN=REPLACE THEN +
            DO
               SET &LCC=0
               DO WHILE &LCC=0
                   ISPEXEC TBDELETE &CUTPST
                   SET LCC=&LASTCC
               END
                  SET CUTCNTMX = 0
            END
         SET CUTCNTMXSAVE = &CUTCNTMX

         /* CHECK TO SEE IF THE LIMIT WILL BE EXCEEDED BY STORING   */
         /* THE LINES                                               */
         SET COUNT = &CUTCNTMX + &LINESTOCUT
         IF &COUNT > &CUTCOUNT THEN DO
         SET ZEDSMSG = > &CUTCOUNT LINES TO CUT
         SET ZEDLMSG=REDUCE THE RANGE OR CHANGE LIMIT WITH "CUT &COUNT"
         ISPEXEC SETMSG MSG(ISRZ001)
         EXIT CODE(12)
         END

         /* CUT THE LINES TO THE TABLE */
         SET CUTCNT = &CUTCNTMX
         SET I = &LINE1
         DO WHILE &I <= &LINE2
           SET CUTCNT = &CUTCNT + 1
           ISREDIT (CTPT) = LINE &I
           ISPEXEC TBADD &CUTPST
           SET I = &I + 1
         END



         /* IF THE NUMBER OF LINES CUT THIS TIME
         /* IS GREATER THAN THE MAXIMUM CUT,
         /* THEN SAVE THE NEW MAXIMUM.
         /* PASTE WILL SET THIS VARIABLE TO
         /* ZERO IF IT DELETES THE VARIABLES.
         IF &CMD = M THEN DO
             ISREDIT DELETE &LINE1 &LINE2
             IF &CUTCNTMXSAVE = 0 THEN +
              DO
              SET ZEDSMSG = &LINESTOCUT LINES CUT AND DELETED
              SET ZEDLMSG = &LINESTOCUT LINES WERE CUT AND
              SET ZEDLMSG = &ZEDLMSG DELETED FROM THE CURRENT FILE
              END
             ELSE +
              DO
              SET ZEDSMSG = &LINESTOCUT LINES CUT AND DELETED'
              SET ZEDLMSG = A TOTAL OF &CUTCNTMX LINES HAVE BEEN CUT
              SET ZEDLMSG = &ZEDLMSG, THE LAST &LINESTOCUT WERE DELETED
              END
             ISPEXEC SETMSG MSG(ISRZ000)
           END
         ELSE +
             DO
             IF &CUTCNTMXSAVE = 0 THEN +
              DO
              SET ZEDSMSG = &LINESTOCUT LINES CUT
              SET ZEDLMSG = &LINESTOCUT LINES WERE CUT
              SET ZEDLMSG = &ZEDLMSG FROM THE CURRENT FILE
              END
             ELSE +
              DO
              SET ZEDSMSG = &LINESTOCUT LINES PLUS &CUTCNTMXSAVE LINES
              SET ZEDSMSG = &ZEDSMSG CUT
              SET ZEDLMSG = A TOTAL OF &CUTCNTMX LINES HAVE BEEN CUT
              END
             ISPEXEC  SETMSG MSG(ISRZ000)
           END

         EXIT