|
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
|
|