Rexx has inbuilt tracing support, this can be enabled or disabled with
"REXXTRACE" DebugLevel:
#define REXXTRACE ALL ;;Define the level of tracing
#option DebugLevel=^+RexxTrace^ ;;Turn it on (on by default though)
You can do interactive tracing as well as simply dumping information
as the rexx code executes.
Depending on the options chosen there can be a huge amount of output
generated.
Note that rexx tracing in regina is virtually useless and so its use
is not recommended here.
Probably the biggest disadvantage with debugging rexx this way
is that the output will never appear in
error or
console
files.
To capture the output you will need to redirect PPWIZARD's output
(if you get "garbage" characters in the output then turn colors off
with /Color).
Because of the above restrictions and I use regina I tend to use
"#DefineRexx Tracing".
If you need to check out a few values you can set a
break point and perform
say or other commands to examine the current state.
This debug output is supplied by the rexx interpreter.
The output from Regina is much inferior to that of OS/2 however its still
very useful.
The following can be used as a guide to understanding the output:
- Every clause traced will be displayed with automatic formatting
(indentation) according to its logical depth of nesting and so
on, and the results (if requested) are indented an extra two
spaces and are enclosed in double quotation marks so that leading
and trailing blanks are apparent.
- All lines displayed during tracing have a three-character prefix
to identify the type of data being traced. The prefixes and their
definitions are the following:
- *-*
Identifies the source of a single clause, that is,
the data actually in the program.
- +++
Identifies a trace message. This can be the
nonzero return code from a command, the prompt
message when interactive debug is entered, an
indication of a syntax error when in interactive
debug, or the traceback clauses after a syntax
error in the program.
- >>>
Identifies the result of an expression (for TRACE R) or
the value assigned to a variable during parsing, or the value
returned from a subroutine call.
- >.>
Identifies the value assigned to a placeholder
during parsing.
- >C>
The data traced is the name of a compound
variable, traced after substitution and before
use, provided that the name had the value of a
variable substituted into it.
- >F>
The data traced is the result of a function call.
- >L>
The data traced is a literal (string or constant symbol).
- >O>
The data traced is the result of an operation on two terms.
- >P>
The data traced is the result of a prefix operation.
- >V>
The data traced is the contents of a variable.
PPWIZARD Manual
Saturday May 28 2022 at 2:55pm