Return to Mainframe Utilities Page
Module
ISREDIT MACRO (OPT1,OPT2,OPT3,OPT4,OPT5)
ISPEXEC CONTROL ERRORS RETURN
ISPEXEC VGET (DBGSWTCH) PROFILE
IF &DBGSWTCH = &STR(ON) THEN +
CONTROL MSG LIST CONLIST SYMLIST NOFLUSH
ELSE CONTROL NOMSG NOLIST NOFLUSH NOPROMPT
IF &STR(&OPT1) = HELP THEN GOTO HELPSEC
/**********************************************************************
/* EDIT MACRO : LONGEST *
/* AUTHOR : DAVID LEIGH *
/* FUNCTION : DETERMINE THE LONGEST LINE IN THE FILE. *
/**********************************************************************
SET OPTIONS = &STR(&OPT1 &OPT2 &OPT3 &OPT4 &OPT5)
SET X = 0
ISREDIT FIND FIRST P'=' 1 &STR(&OPTIONS)
DO WHILE &LASTCC = 0
ISREDIT FIND LAST P'¬' .ZCSR .ZCSR
ISREDIT (LN,CL) = CURSOR
IF &CL > &X THEN +
DO
SET X = &CL
SET LINE = &LN
END
ISREDIT FIND NEXT P'=' 1 &STR(&OPTIONS)
END
ISREDIT CURSOR = &LINE 1
SET MSG1 = &STR(THE NEXT LINE IS THE LONGEST IN THIS FILE.)
SET MSG2 = &STR(THE LAST NON-BLANK BYTE IS IN COLUMN: &X)
SET MSG3 = &STR(/ / / / / / / / / / / / / /)
ISREDIT LINE_BEFORE .ZCSR = MSGLINE (MSG1)
ISREDIT LINE_BEFORE .ZCSR = MSGLINE (MSG2)
ISREDIT UP 2
ISREDIT LINE_AFTER .ZCSR = MSGLINE (MSG3)
EXIT
HELPSEC: + 02480000
ISPEXEC SELECT PGM(ISPTUTOR) PARM(HELPSHEL) 02490000
SET ZEDLMSG = &STR(*** HELP DISPLAYED FOR LONGEST UTILITY + 02490000
*** NO PROCESSING PERFORMED ***) 02490000
ISPEXEC SETMSG MSG(UTLZ000) 02490000
EXIT
Documentation
The LONGEST edit macro will place message lines around the longest text line in the file being edited. You simply type LONGEST on the command line and press. LONGEST then searches through the file and finds the last non-blank byte on every line. When it has gone through the file, it marks the line in which the last non-blank byte is the farthest out. It marks it with ISPF/PDF editor "message" lines and it indicates which byte contains the last non-blank character on the line. You are positioned to the longest line as well.

0 Comments