/* Rexx **************************************************************/ /***** Sample Edit Macro *********************************************/ /*********************************************************************/ /* */ /* The ONLY macro is a combination of EXCLUDE and FIND such that */ /* "only" the lines containing the search string will be displayed. */ /* The parameters for ONLY are the same as those for the FIND */ /* command with the exception of FIRST, LAST, NEXT, and PREV. */ /* */ /*********************************************************************/ Trace Address ispexec
'ISREDIT MACRO (FNDPARM)' 'CONTROL ERRORS RETURN'/* Clist handles ISPF and PDF
return codes greater than 12 */ 'ISREDIT (RECFM) = RECFM'/* Request record format */ 'ISREDIT (NUMMODE,NUMTYPE) = NUMBER'/* Request number mode info */
Parse Var numtype std cobol display /* NUMBER returns a string of 3 words for the second value. We need to parse NUMTYPE into its
3 parts. */ If nummode = 'ON'Then Do /************************************************************/ /* Number mode on can cause a mismatch between col numbers */ /* known to the user and to this macro if there are */ /* sequence numbers at the beginning of the line. To avoid */ /* the confusion number mode is turned off while the macro */ /* runs. Doing this can cause the bounds to change to */ /* include the line numbers if the bounds were originally */ /* set to the default. Therefore if they change the macro */ /* must override that change to prevent the search from */ /* including the line numbers. */ /************************************************************/ If recfm = 'V' ! cobol = 'COBOL'Then Do/* These types have seq numbers at
the beginning of the record. */ 'ISREDIT (LEFTON,RIGHTON) = BOUNDS'/* Note the current bounds
*/ 'ISREDIT NUMBER OFF'/* Set number mode off. This may
cause the left bound to move.*/ 'ISREDIT (LEFTOFF,RIGHTOFF) = BOUNDS'/* Note where the bounds
are now */ If leftoff = 1 Then Do/* Number mode would not have allowed a left bound within the seq num, therefore a value of 1 means it was changed by the NUMBER OFF, indicating default
bounds */
lefton = ' '/* Blank the values to be */
righton = ' '/* restored to cause defaults */ /* to be restored */ If recfm = 'V'Then 'ISREDIT BOUNDS = 9 *'/* Override the left bound to
exclude the seq number */ Else/* RECFM = F, therefore must be */ Do cobol line numbers */ If std='STD'Then Do/* Cobol may have sequence numbers at the end in addition to the
beginning */ 'ISREDIT (LRECL) = LRECL'/* Right bound depends on
record length */ 'ISREDIT BOUNDS = 7' lrecl-8 /* Override both bounds */ End Else 'ISREDIT BOUNDS = 7 *'/* For NOSTD override only the
left */ End End End End
Ifsubstr(fndparm,1,1) ^= "'" &, substr(fndparm,1,1) ^= '"'Then/* Not already a quoted string */ Ifpos("'",fndparm) ^= 0 Then/* Single quote in parm string */
fndparm = '"'fndparm'"'/* Put find string in double
quotes */ Else/* No single quotes found */
fndparm = "'"fndparm"'"/* Put find string in single
quotes */
'ISREDIT SEEK' fndparm 'FIRST'/* First see if there is a string
*/ If rc = 0 Then Do/* If so, exclude all lines */ 'ISREDIT EXCLUDE ALL' 'ISREDIT FIND' fndparm 'ALL'/* Show only lines with the string
*/
onlyrc = 0 /* Indicate success */ End Else/* If not, say so */ Do
zedsmsg = 'String not found'
zedlmsg = '"'fndparm'" not found in the entire file' 'SETMSG MSG(ISRZ001)'/* Set message with alarm */
onlyrc = 12 /* Cause the cmd to remain on */ End/* the PDF edit command line */
If nummode = 'ON' & (recfm = 'V' ! cobol = 'COBOL') Then Do/* If number was turned off */ 'ISREDIT NUMBER = ('nummode','numtype')'/* Turn it back on and */ 'ISREDIT BOUNDS =' lefton righton /* Restore the bounds */ End Exit onlyrc
¤ Dauer der Verarbeitung: 0.21 Sekunden
(vorverarbeitet)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung ist noch experimentell.