Using Variables

A variable is a character or group of characters representing a value. A variable can contain either single- or double-byte characters or both. (Double-byte characters are valid only if OPTIONS ETMODE is the first instruction of your program.) The following variable big represents the value one million or 1,000,000.

big = 1000000

Variables can refer to different values at different times. If you assign a different value to big, it gets the value of the new assignment, until it is changed again.

big = 999999999

Variables can also represent a value that is unknown when the program is written. In the following example, the user's name is unknown, so it is represented by the variable who.

                          /* Gets name from current input stream */
PARSE PULL who            /* and puts it in variable "who"       */

Variable Names

A variable name, the part that represents the value, is always on the left of the assignment statement and the value itself is on the right. In the following example, the variable name is variable1.

variable1 = 5
SAY variable1

As a result of the preceding assignment statement, the language processor assigns variable1 the value 5, and the SAY produces:

5

Variable names can consist of:

A-Z
uppercase alphabetic
a-z
lowercase alphabetic
0-9
numbers
? ! . _
special characters
X'41'-X'FE'
double-byte character set (DBCS) characters. (OPTIONS ETMODE must be the first instruction in your program for these characters to be valid in a variable name.)

Restrictions on the variable name are:

Examples of acceptable variable names are:

ANSWER    ?98B    A   Word3   number  the_ultimate_value

Also, if OPTIONS ETMODE is the first instruction in your program, the following are valid DBCS variable names, where < represents shift-out, > represents shift-in, X, Y, and Z represent DBCS characters, and lowercase letters and numbers represent themselves.

<.X.Y.Z>   number_<.X.Y.Z>   <.X.Y>1234<.Z>

Variable Values

The value of the variable, which is the value the variable name represents, might be categorized as follows:

Before a variable is assigned a value, its value is the value of its own name translated to uppercase. For example, if the variable new has not been assigned a value, then

SAY new

produces

NEW

Exercises - Identifying Valid Variable Names

Which of the following are valid REXX variable names?

  1. 8eight
  2. £25.00
  3. MixedCase
  4. nine_to_five
  5. result

ANSWERS

  1. Incorrect, because the first character is a number.
  2. Incorrect, because the first character is a "£".
  3. Valid
  4. Valid
  5. Valid, but it is a special variable name that you should use only to receive results from a subroutine.