Product SiteDocumentation Site

2.29.5. The Format of Trace Output

Every clause traced appears with automatic formatting (indentation) according to its logical depth of nesting, for example. Results, if requested, are indented by two extra spaces and are enclosed in double quotation marks so that leading and trailing whitespace characters are apparent. Any control codes in the data encoding (ASCII values less than "20"x) are replaced by a question mark (?) to avoid screen interference. Results other than strings appear in the string representation obtained by sending them a STRING message. The resulting string is enclosed in parentheses. The line number in the program precedes the first clause traced on any line. All lines displayed during tracing have a three-character prefix to identify the type of data being traced. These can be:
*-*
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 debugging is entered, an indication of a syntax error when in interactive debugging.
>I>
Identifies an entry to a routine or method. This trace entry will only appear if tracing is enabled using the ::OPTIONS directive using TRACE A, TRACE R, or TRACE I.
>>>
Identifies the result of an expression (for TRACE R) or the value returned from a subroutine call, or a value evaluated by execution of a DO loop.
>=>
Identifies a variable assignment or a message assignment result. The trace message includes both the name of the assignment target and the assigned value. Assignment trace lines are displayed by assignment instructions, variable assigned via PARSE, ARG, PULL, or USE ARG, as well as control variable updates for DO and LOOP instructions.
>.>
Identifies the value assigned to a placeholder during parsing (see Section 9.1.2, “The Period as a Placeholder”).
The following prefixes are used only if TRACE Intermediates is in effect:
>A>
Identifies a value used as a function, subroutine, or message argument.
>C>
The data traced is the original name of the compound variable and the name of a compound variable, after the name has been replaced by the value of the variable but before the variable is used. If no value was assigned to the variable, the trace shows the variable in uppercase characters.
>E>
The data traced is the name and value of an environment symbol.
>F>
The data traced is the name and result of a function call.
>L>
The data traced is a literal (string, uninitialized variable, or constant symbol).
>M>
The data traced is the name and result of an object message.
>O>
The data traced is the name and result of an operation on two terms.
>P>
The data traced is the name and result of a prefix operation.
>V>
The data traced is the name and contents of a variable.

Note

The characters => indicate the value of a variable or the result of an operation.
The characters <= indicate a value assignment. The name to the left of the marker is the assignment topic. The data to the right of the marker is the assigned value.
The character ? could indicate a non-printable character in the output.
If no option is specified on a TRACE instruction, or if the result of evaluating the expression is null, the default tracing actions are restored. The defaults are TRACE N and interactive debugging (?) off.
Following a syntax error that SIGNAL ON SYNTAX does not trap, the clause in error is always traced.