Return to Mainframe Utilities Page
Module
ISREDIT MACRO (PARM)
ISPEXEC CONTROL ERRORS RETURN
/**** SET MESSAGE DISPLAY ON/OFF BASED ON THE DEBUG SWITCH ***/
ISPEXEC VGET (DBGSWTCH) PROFILE
IF &DBGSWTCH = &STR(ON) THEN CONTROL MSG LIST CONLIST SYMLIST NOFLUSH
ELSE CONTROL NOMSG NOLIST NOFLUSH NOPROMPT
IF &STR(&PARM) = HELP THEN GOTO HELPSEC
/**********************************************************************
/* UTILITY : PAGECONT *
/* AUTHOR : DAVID LEIGH *
/* DATE : 10-22-90 *
/* FUNCTION : COUNT THE NUMBER OF LINES AND PAGES IN A FILE BEING *
/* EDITED WHICH HAS ANSI CONTROL CHARACTERS IN COLUMN 1. *
/**********************************************************************
SET ZEDLMSG = &STR(*** COUNTING PAGES AND LINES ***)
ISPEXEC CONTROL DISPLAY LOCK
ISPEXEC DISPLAY MSG(UTLZ000W)
ISREDIT (LN,CL) = CURSOR
FREE DDNAME(TEMPDD)
DELETE TEMP.PAGECONT
ALLOC DD(TEMPDD) DSN(TEMP.PAGECONT) +
NEW CATALOG +
UNIT(SYSDA) VOLUME(WRK$$$) +
SPACE(2,2) TRACKS RELEASE +
RECFM(F B) LRECL(80) BLKSIZE(23440) DSORG(PS)
OPENFILE TEMPDD OUTPUT
SET PAGE = 0
SET LINE = 0
SET BAD = 0
ISREDIT FIND FIRST P'=' 1
DO WHILE &LASTCC = 0
ISREDIT (COL) = LINE .ZCSR
SET COL = &SUBSTR(1:1,&NRSTR(&COL))
SELECT (&STR(&COL))
WHEN (&STR( )) SET LINE = &LINE + 1
WHEN (&STR(0)) SET LINE = &LINE + 2
WHEN (&STR(-)) SET LINE = &LINE + 3
WHEN (&STR(+)) SET LINE = &LINE
WHEN (&STR(1)) +
DO
SET PAGE = &PAGE + 1
SET TEMPDD = &STR(PAGE &PAGE CONTAINS &LINE LINES)
PUTFILE TEMPDD
SET LINE = 1
SET ZEDLMSG = &STR(*** &PAGE PAGES COUNTED SO FAR ***)
ISPEXEC CONTROL DISPLAY LOCK
ISPEXEC DISPLAY MSG(UTLZ000W)
END
OTHERWISE +
DO
SET BAD = &BAD + 1
SET LINE = &LINE + 1
END
END
ISREDIT FIND NEXT P'=' 1
END
IF &LINE > 0 THEN +
DO
SET PAGE = &PAGE + 1
SET TEMPDD = &STR(PAGE &PAGE CONTAINS &LINE LINES)
PUTFILE TEMPDD
SET ZEDLMSG = &STR(*** &PAGE PAGES COUNTED SO FAR ***)
ISPEXEC CONTROL DISPLAY LOCK
ISPEXEC DISPLAY MSG(UTLZ000W)
END
IF &BAD > 0 THEN +
DO
SET TEMPDD = &STR(&BAD LINES DID NOT CONTAIN VALID ANSI +
CONTROL CHARACTERS)
PUTFILE TEMPDD
SET TEMPDD = &STR(THEY WERE COUNTED AS " " CONTROL CHARACTERS)
PUTFILE TEMPDD
END
CLOSFILE TEMPDD
FREE DDNAME(TEMPDD)
ISPEXEC EDIT DATASET(TEMP.PAGECONT)
ISREDIT CURSOR = &LN &CL
EXIT
HELPSEC: + 02480000
ISPEXEC SELECT PGM(ISPTUTOR) PARM(HELPSHEL) 02490000
SET ZEDLMSG = &STR(*** HELP DISPLAYED FOR PAGECONT UTILITY + 02490000
*** NO PROCESSING PERFORMED ***) 02490000
ISPEXEC SETMSG MSG(UTLZ000) 02490000
EXIT
Documentation
The PAGECONT EDIT MACRO counts the number of pages and number of lines in each
page in a file which has ANSI control characters in column 1. It then takes
the user in to an edit of a "results" file where the number of lines in each
page is listed.
This can be a good tool to see if your document has any pages which need to be
broken up so as to page break properly.
See the PAGINATE Edit Macro for more information on re-paginating documents
with ANSI control characters.

0 Comments