Please enable JavaScript to view this site.

A-Shell Reference

Rewritten December 2023

The identifier DEBUG can be either a read-only system variable returning the debug level as set by SET.LIT, or a standard variable, depending on the following:

If the /X:2 compiler switch is specified, then DEBUG is treated as the system variable, provided it has not been previously mapped as a regular user variable.  
If the /DEBUG compiler switch is specified, then DEBUG is always treated as a read-only system variable whose value is 1. This is intended to allow an easy way of compiling a program in "debug mode".
If neither /X:2 nor /DEBUG switches specified, then DEBUG is treated as an ordinary variable. If not mapped and /M not specified, it will be auto-mapped like any other unmapped variable.

Example

if DEBUG then

? "--DEBUG level set to ";DEBUG

else

? "--DEBUG not set"

endif

 

If the above program was named SHOWDEBUG and compiled using the /X:2 switch, then...

.SET DEBUG

.RUN SHOWDEBUG

-DEBUG level set to 1

 

.SET DEBUG 9

.RUN SHOWDEBUG

--DEBUG level set to 9 

 

.SET NODEBUG

.RUN SHOWDEBUG

--DEBUG not set

 

If compiled without the /X:2 switch, DEBUG would be treated as an unmapped variable, either initialized to 0, or if /M specified, generating an unmapped variable error.

If compiled with both the /DEBUG and /X:2 switches, then regardless of any prior SET DEBUG statement, the result would be...

    .RUN SHOWDEBUG

    --DEBUG level set to 1

 

Comments

Regardless of the compiler switches, DEBUG acts like a variable and not a symbol, and thus cannot be tested by the ++IFxxx Conditional Compilation directives.

See Also

SET.LIT