/*********************************************************/ /* ISPF/PDF EDIT MACRO TO WRITE LINES FROM A ISPF */ /* ISPF TABLE INTO THE CURRENT FILE. */ /* THIS MACRO IS USED IN CONJUNCTION WITH THE CUT */ /* CUT MACRO */ /* */ /* SUPPORT */ /* STEVEN SMITH SECURITY PACIFIC AUTOMATION CO OCT 88 */ /* */ /* FOR HELP ON RUNNING THIS MACRO, UNDER EDIT ENTER: */ /* PASTE HELP */ /*********************************************************/ ISREDIT MACRO (PARM1 PARM2) NOPROCESS /* CONTROL LIST CONLIST SYMLIST ISPEXEC CONTROL ERRORS RETURN ISPEXEC VGET (CUTDEF PASTEDEF CUTLIMIT CUTNAME) PROFILE SET ACTN=&Z SET CT=&Z IF &STR(&PARM1)=&Z THEN GOTO VERIFY IF &LENGTH(&STR(&PARM1))=2 THEN SET CT=&PARM1 ELSE SET ACTN=&PARM1 IF &STR(&PARM2)=&Z THEN GOTO VERIFY IF &LENGTH(&STR(&PARM2))=2 THEN SET CT=&PARM2 ELSE SET ACTN=&PARM2 VERIFY: - ISPEXEC CONTROL NONDISPL PROMPT: - ISPEXEC DISPLAY PANEL(PASTEPRM) IF &LASTCC=8 THEN EXIT CODE(0) IF &ACTN = HELP THEN + DO /*ISPEXEC BROWSE DATASET('SYS6.DOC.DATA(PASTE)') 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(PASTEDEF) IF &LASTCC=8 THEN EXIT CODE(0) IF &ACTN = &Z THEN SET ACTN=&PASTEDEF GOTO PROCS /* PROCESS LINE COMMANDS, CHECK IF A OR B WAS SPECIFIED */ PROCS: - ISREDIT PROCESS DEST SET RC = &LASTCC /* IF NO LINES RC = 20 AND A OR B IS NOT NEEDED - MSZ */ IF &RC = 20 THEN SET &RC = 0 /* MSZ */ IF &RC >= 16 THEN EXIT CODE(12) ELSE + IF &RC >= 4 THEN + DO SET ZEDSMSG = ENTER "A"]"B" LINE CMD SET ZEDLMSG = PASTE REQUIRES AN "A" OR "B" LINE COMMAND ISPEXEC SETMSG MSG(ISRZ001) EXIT CODE(12) END /* CONTROL LIST CONLIST SYMLIST ISPEXEC CONTROL ERRORS RETURN /* GET THE NUMBER OF LINES VARIABLE */ SET CUTPST=CUTPST&CT ISPEXEC TBQUERY &CUTPST ROWNUM(CUTCNT) IF &LASTCC ^= 0 THEN DO ISPEXEC TBCREATE &CUTPST NAMES(CTPT) NOWRITE SHARE IF &LASTCC = 0 THEN DO SET ZEDSMSG = USE CUT BEFORE PASTE SET ZEDLMSG = THE CUTCNT PROFILE VARIABLE WAS NOT FOUND SET ZEDLMSG = &ZEDLMST &STR(-) USE CUT FIRST ISPEXEC SETMSG MSG(ISRZ001) EXIT CODE(12) END ELSE DO ISPEXEC TBOPEN &CUTPST NOWRITE SHARE IF &LASTCC ^= 0 THEN DO EXIT CODE(12) END ISPEXEC TBQUERY &CUTPST ROWNUM(CUTCNT) END END IF &CUTCNT <= 0 THEN + DO SET ZEDSMSG = USE CUT BEFORE PASTE SET ZEDLMSG = NO DATA HAS BEEN STORED VIA THE CUT MACRO ISPEXEC SETMSG MSG(ISRZ001) EXIT CODE(12) END ISREDIT (ZDEST) = LINENUM .ZDEST SET TRUNCCNT = 0 SET CUTCOUNT = &CUTCNT /* GET EACH CUT LINE FROM THE TABLE AND ADD IT TO THE FILE */ SET I = &CUTCNT ISPEXEC TBBOTTOM &CUTPST DO WHILE &I > 0 ISREDIT LINE_AFTER &ZDEST = DATALINE (CTPT) IF &LASTCC = 4 THEN SET TRUNCCNT = &TRUNCCNT + 1 ISPEXEC TBSKIP &CUTPST NUMBER(-1) SET I = &I - 1 END /* IF KEEP PARAMETER NOT GIVEN AND NO LINES WERE TRUNCATED, */ /* SET TO NULL ALL VARIABLES STORED IN THE PROFILE. */ IF &ACTN=ZERO THEN + DO SET &LCC=0 ISPEXEC TBBOTTOM &CUTPST DO WHILE &LCC=0 ISPEXEC TBDELETE &CUTPST SET LCC=&LASTCC END END /* CHECK IF TRUNCATION OCCURRED, IF SO DISPLAY MESSAGE */ IF &TRUNCCNT > 0 THEN + DO SET ZEDSMSG = &TRUNCCNT LINES TRUNCATED SET ZEDLMSG = CURRENT RECORD LENGTH SHORTER THAN ORIGIN SET ZEDLMSG = &ZEDLMSG &STR(-) &TRUNCCNT OF &CUTCOUNT SET ZEDLMSG = &STR(&ZEDLMSG) RECORDS WERE TRUNCATED ISPEXEC SETMSG MSG(ISRZ001) END ELSE + DO SET ZEDSMSG = &CUTCOUNT LINES PASTED SET ZEDLMSG = &CUTCOUNT LINES WERE PASTED INTO THE SET ZEDLMSG = &ZEDLMSG CURRENT FILE ISPEXEC SETMSG MSG(ISRZ000) END SET LINE1 = &ZDEST + 1 ISREDIT CURSOR = &LINE1 0 EXIT