Return to Mainframe Utilities Page
Module
ISREDIT MACRO (STRING,VAR1,VAR2,VAR3,VAR4,VAR5,VAR6,VAR7,VAR8,VAR9) ISPEXEC CONTROL ERRORS RETURN ISPEXEC VGET (DBGSWTCH) PROFILE IF &DBGSWTCH = &STR(ON) THEN + CONTROL MSG LIST CONLIST SYMLIST NOFLUSH ASIS ELSE CONTROL NOMSG NOLIST NOFLUSH NOPROMPT ASIS IF &STR(&STRING) = HELP THEN GOTO HELPSEC /********************************************************************** /* EDIT MACRO : ATEND * /* AUTHOR : DAVID LEIGH * /* FUNCTION : PLACE A STRING IN THE FIRST BLANK POSITION AFTER THE * /* LAST NON-BLANK POSITION ON EACH LINE MEETING THE * /* PASSED EDIT CRITERIA. * /********************************************************************** DO &X = 1 TO 9 SET VARIABLES = &SYSCAPS(&STR(&VARIABLES &&VAR&X)) END IF &STR(&VARIABLES) = THEN + DO %YOUSURE COLUMN(10) ROW(5) ZWINTTL('PROCESS ALL LINES?!') IF &LASTCC > 0 THEN + DO SET ZEDLMSG = &STR(*** NO "ATEND" PROCESSING + PERFORMED ***) ISPEXEC SETMSG MSG(UTLZ001) EXIT END END IF (&SUBSTR(1:1,&STR(&STRING)) = &STR(') AND + &SUBSTR(&LENGTH(&STR(&STRING)):+ &LENGTH(&STR(&STRING)),+ &STR(&STRING)) = &STR(')) OR + (&SUBSTR(1:1,&STR(&STRING)) = &STR(") AND + &SUBSTR(&LENGTH(&STR(&STRING)):+ &LENGTH(&STR(&STRING)),+ &STR(&STRING)) = &STR(")) THEN + SET STRING = + &SUBSTR(2:&EVAL(&LENGTH(&STR(&STRING)) - 1),&STR(&STRING)) IF &SYSINDEX(&STR('),&NRSTR(&STRING)) > 0 AND + &SYSINDEX(&STR("),&NRSTR(&STRING)) > 0 THEN + DO SET ZEDLMSG = &STR(*** "ATEND" CANNOT PROCESS + STRINGS WITH BOTH SINGLE AND + DOUBLE QOUTES ***) ISPEXEC SETMSG MSG(UTLZ001) EXIT CODE(8) END SET ZEDLMSG = &STR(PLACING "&STRING" AT END OF LINES W/CRITERIA + "&VARIABLES") ISPEXEC CONTROL DISPLAY LOCK ISPEXEC DISPLAY MSG(UTLZ000W) SET QT = &STR(') IF &SYSINDEX(&STR('),&NRSTR(&STRING)) > 0 THEN SET QT = &STR(") ISREDIT (SLN,SCL) = CURSOR SET BAD = 0 SET GOOD = 0 ISREDIT (LBOUND,RBOUND) = BOUNDS ISREDIT FIND FIRST P'=' &VARIABLES DO WHILE &LASTCC = 0 ISREDIT FIND LAST P'¬' .ZCSR .ZCSR IF &LASTCC = 0 THEN SET X = 1 ELSE SET X = 0 ISREDIT (LN,CL) = CURSOR SET CL = &CL + &X IF &CL > &RBOUND THEN SET BAD = &BAD + 1 ELSE + DO ISREDIT CHANGE P'=' &QT&NRSTR(&STRING)&QT &CL .ZCSR .ZCSR SET GOOD = &GOOD + 1 END ISREDIT FIND NEXT P'=' 1 &VARIABLES END SET TOTAL = &GOOD + &BAD SET ZEDLMSG = &STR(*** PROCESSED &GOOD OF &TOTAL LINES ***) ISPEXEC SETMSG MSG(UTLZ000) ISREDIT CURSOR = &SLN &SCL EXIT HELPSEC: + 02480000 ISPEXEC SELECT PGM(ISPTUTOR) PARM(HELPSHEL) 02490000 SET ZEDLMSG = &STR(*** HELP DISPLAYED FOR ATEND UTILITY + 02490000 *** NO PROCESSING PERFORMED ***) 02490000 ISPEXEC SETMSG MSG(UTLZ000) 02490000 EXIT
Documentation
This utility allows the user to place a given string at the end of each line which satisfies a specified edit criteria. The "END" of a line is defined as the last non-blank character within the current editing "bounds". For example, if you wanted to place a period (".") at the end of each "non-excluded" line, you would type => atend '.' nx <= on the command line, and a period would be placed in the first blank space following the last non-blank character in each non-excluded line. You may specify edit criteria such as explicit line numbers; excluded status; label ranges; a combination of label ranges and excluded status; etc.