/* REXX */ /* */ /* AUTHOR: MARK ZELDEN */ /* Last Updated 02/16/2007 */ /*********************************************************/ /* "HIDE EXCLUDED" is used on systems that are running */ /* z/OS 1.6 (ISPF 5.6) and above. */ /* Remove if you like to see excluded lines or issue */ /* "RESET HIDE" after you run the macro. */ /*********************************************************/ /* Trace ?R */ Address ISREDIT "MACRO (parm col1 col2)" /* Address ISPEXEC "CONTROL ERRORS RETURN" */ If pos('&',parm) <> 0 then do parmx = Translate(parm) /* upper case */ parmx = C2X(parmx) /* change to hex for seek/find */ amp = 'Y' End /* check for numeric column numbers */ If col1 <> '' then do If Datatype(col1,Number) <> 1 then do zedsmsg = 'START COLUMN NOT NUMERIC' zedlmsg = 'THE STARTING COLUMN FOR THE', 'SEARCH MUST BE NUMERIC.' Address ISPEXEC "SETMSG MSG(ISRZ001)" /* msg - with alarm */ Exit 12 End If col2 = '' then col2 = col1 End If col2 <> '' then do If Datatype(col2,Number) <> 1 then do zedsmsg = 'END COLUMN NOT NUMERIC' zedlmsg = 'THE ENDING COLUMN FOR THE', 'SEARCH MUST BE NUMERIC.' Address ISPEXEC "SETMSG MSG(ISRZ001)" /* msg - with alarm */ Exit 12 End If col2 < col1 then do zedsmsg = 'END COL < START COL' zedlmsg = 'THE ENDING COLUMN MUST BE GREATER THAN OR', 'EQUAL TO THE STARTING COLUMN.' Address ISPEXEC "SETMSG MSG(ISRZ001)" /* msg - with alarm */ Exit 12 End If Length(Strip(Translate(parm,'','"'''''))) , > COL2-COL1+1 then do zedsmsg = 'PARM TOO LONG' zedlmsg = 'THE STRING WILL NOT FIT BETWEEN THE', 'SPECIFIED COLUMNS.' Address ISPEXEC "SETMSG MSG(ISRZ001)" /* msg - with alarm */ Exit 12 End "(width) = DATA_WIDTH " /* length of line */ width = Format(width) /* remove leading zeros */ If col1 < 1 | col2 < 1 | col1 > width | col2 > width then do zedsmsg = 'INVALID COLUMN NUMBER' zedlmsg = 'ALL COLUMN SPECIFICATIONS MUST BE' , 'BETWEEN 1 AND' width Address ISPEXEC "SETMSG MSG(ISRZ001)" /* msg - with alarm */ Exit 12 End End parmck = Translate(parm) If parmck = 'X' | parmck = 'NX' | parmck = '*' , | parmck = '/*' then parm = "'" ||parm|| "'" If AMP = 'Y' then "SEEK x'"parmx"'" col1 col2" FIRST" Else "SEEK "parm col1 col2" FIRST" If rc = 0 then do If AMP = 'Y' then do "EXCLUDE X'"parmx"'" col1 col2" ALL" "SEEK X'"parmx"'" col1 col2" ALL" End Else Do "EXCLUDE "parm col1 col2" ALL" "SEEK "parm col1 col2" ALL" End "(count,lines) = SEEK_COUNTS" Address ISPEXEC "VGET ZENVIR" If Substr(ZENVIR,6,3) >= 5.5 then "HIDE EXCLUDED" count = Format(count) lines = Format(lines) parm = Translate(parm) /* upper case */ zedsmsg = count' "'parm'" EXCLUDED' zedlmsg = 'THE STRING "'parm'" WAS EXCLUDED 'count' TIMES', 'FROM 'lines' LINES.' Address ISPEXEC "SETMSG MSG(ISRZ000)" /* msg - no alarm */ Exit 0 End Else do parm = Translate(parm) /* upper case */ zedsmsg = 'STRING NOT FOUND' zedlmsg = 'THE STRING "'parm'" WAS NOT FOUND IN THE FILE.' "RESET" Address ISPEXEC "SETMSG MSG(ISRZ001)" /* msg - with alarm */ Exit 12 End