Make your own free website on
8.5.1 Symbolic or Direct

First, let us define two terms, symbolic variable name and direct
variable name, which are used in connection with the variable

A symbolic variable name is the name of a variable, but it needs
normalization and tail substitution before it names the real
variable. The name is a symbolic variable name, and it is
transformed by normalization, to FOO.BAR, and then by tail
substitution to FOO.42 (assuming that the current value of  BAR is

Normalization is the process of uppercasing all characters in the
symbolic name; and tail substitution is the process of
substituting each distinct simple symbol in the tail for its

On the other hand, a direct variable refers directly to the name
of the variable. In a sense, it is a symbolic variable that has
already been normalized and tail substituted. For instance, is not a valid direct variable name, since lower case
letters are not allowed in the variable stem. The direct variable
FOO.42 is the same as the variable above. For simple variables,
the only difference between direct and symbolic variable names is
that lower case letters are allowed in symbolic names

Note that the two direct variable names and FOO.BAR refer
to different variables, since upper and lower case letters differ
in the tail. In fact, the tail of a compound direct variable may
contain any character, including ASCII NUL. The stem part of a
variable, and all simple variables can not contain any lower case

As a remark, what would the direct variable FOO. refer to: the
stem FOO. or the compound variable having stem FOO. and a
nullstring as tail? Well, I suppose the former, since it is the
more useful. Thus, the latter is inaccessible as a direct