The prefixes ! and ? are valid either alone
or with one of the alphabetic character options. You can specify both
prefixes, in any order, on one TRACE instruction. You can specify
a prefix more than one time, if desired. Each occurrence of a prefix
on an instruction reverses the action of the previous prefix. The
prefix(es) must immediately precede the option (no intervening blanks).
The prefixes
! and
? modify tracing and execution
as follows:
- ?
- Controls interactive debug. During usual execution, a TRACE
option with a prefix of ? causes interactive debug to be
switched on. (See Interactive Debugging of Programs for full details of this facility.)
While interactive debug is on, interpretation pauses after most clauses
that are traced. For example, the instruction TRACE ?E makes
the language processor pause for input after executing any command
that returns an error (that is, a nonzero return code).
Any TRACE
instructions in the program being traced are ignored. (This is so
that you are not taken out of interactive debug unexpectedly.)
You
can switch off interactive debug in several ways:
- Entering TRACE O turns off all tracing.
- Entering TRACE with no options restores the defaults—it
turns off interactive debug but continues tracing with TRACE Normal
(which traces any failing command after execution) in effect.
- Entering TRACE ? turns off interactive debug and continues
tracing with the current option.
- Entering a TRACE instruction with a ? prefix before
the option turns off interactive debug and continues tracing with
the new option.
Using the
? prefix, therefore, switches you alternately
in or out of interactive debug. (Because the language processor ignores
any further TRACE statements in your program after you are in interactive
debug, use
CALL TRACE '?' to turn off interactive debug.)
- !
- Inhibits host command execution. During regular execution, a
TRACE instruction with a prefix of ! suspends execution
of all subsequent host commands. For example, TRACE !C causes
commands to be traced but not processed. As each command is bypassed,
the REXX special variable RC is set to 0. You can use this
action for debugging potentially destructive programs. (Note that
this does not inhibit any commands entered manually while in interactive
debug. These are always processed.)
You can switch off command
inhibition, when it is in effect, by issuing a TRACE instruction with
a prefix !. Repeated use of the ! prefix, therefore,
switches you alternately in or out of command inhibition mode. Or,
you can turn off command inhibition at any time by issuing TRACE
O or TRACE with no options.