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 >
|