/*********************************************************/ /* 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 /* 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=8 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=8 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