System Debug Reference Manual (32650-90888)
Chapter 2 39
User Interface
Variables
Variables
System Debug provides variables in which values may be stored for use as operands in
expressions. Variable names must begin with an alphabetic character, which may be
followed by any combination of alphanumeric, apostrophe ('), underscore (_), or dollar sign
($) characters. Variable names are case insensitive and may not exceed 32 characters.
System Debug supports two levels of variable scoping: global and local. Global variables
are defined by the VAR command and exist for the lifetime of the System Debug session
(unless removed by the VARD command):
$nmdebug > var v1 $2f
$nmdebug > var s2 = "hello mom"
$nmdebug > var p3:lptr = 2f.102c
The type of a variable is determined by the type of the expression which computes its
value. The optional :
type
syntax which follows the variable name imposes a check on the
expression type for that particular assignment only. It does not establish the variable's
type over its entire lifetime. A value of a different type may be assigned to the same
variable by a subsequent VAR command.
Local variables are defined by the LOC command only from within macro bodies and exist
only for the lifetime of the macro in which they are defined. Local variable definitions nest
with macro execution level, and they supercede global variables of the same name. Note
that local variables normally are not visible from outside the macro in which they are
created (that is, from macros called by the one in which they are created). To make local
variable visible to called macros, the environment variable NONLOCALVARS must be TRUE.
loc v1 200
loc s2 = "new string"
Note that, although a macro cannot reference the value of a global variable once a local
variable of the same name has been defined, it may change the global value by using the
VAR command instead of LOC.
!variable
The use of the letters a through f to denote hex digits implies the possibility of ambiguity
between hex constants and variable names composed of just these characters. System
Debug warns the user of this occurrence when such variables are defined by the VAR and
LOC commands, but uses the value of the constant when the name occurs in an expression.
This may be overridden by preceding the variable name with the exclamation point as
follows:
$nmdebug > var a 123
Variable name collides with hex numeric literal. (warning #55)
Name: "a"
$nmdebug > wl a+1 /* a is a hex constant here
$b
$nmdebug > wl !a+1 /* !a references the variable a
$124
$nmdebug >