Variables tab

Because a variable belongs to the entire macro, and not to any one screen, there is a separate high-level tab for Variables. The Variables tab allows you to:
  • Create a variable.
  • Remove a variable.
  • Import a Java™ class as a new variable type.
To create a variable belonging to a standard data type, use the Variables tab in the AME. Figure 1 shows a sample Variables tab:
Figure 1. Variables tab
Variables tab of the Macro Editor
In Figure 1, the Variables tab of the AME is selected. The name of the currently selected variable, $strUserName$, is displayed in the Variables list box. Three other fields contain information that the macro runtime needs to create this variable: the Name input field, the Type list box, and the Initial Value input field.

The Variables list box contains the names of all the variables that have been created for this macro. It allows you to select a variable to edit or to remove, and it also contains a <new variable> entry for creating new variables.

Notice that the entry of the currently selected variable is contained in parentheses after another string:
The string Variable1 is a setting that shows how many variables you have created. It is not saved in the macro script. The real name of the variable is $strUserName$, and you should use this name alone throughout the macro wherever you use the variable.

You have probably noticed that the variable name $strUserName$ is enclosed in dollar signs ($). This is a requirement. You must enclose the variable name in dollar signs ($) wherever you use it in the macro.

The Name input field displays the name of the currently selected variable, $strUserName$. You can change the name of the variable by typing over the old name. Mostly you should use this field only for assigning a name to a newly created variable. Although you can come back later at any time and change the name of this variable (for example to $strUserFirstName$), remember that you might have already used the variable's old name elsewhere in the macro, in some action or descriptor. If you change the name here in the Variables tab, then you must also go back to every place in the macro where you have you used the variable and change the old variable name to the new variable name.

You can choose any variable name you like, although there are a few restrictions on the characters you can choose (see Variable names and type names). You do not have to choose names that begin with an abbreviated form of the data type (such as the str in the string variable $strUserName$), as this book does.

The Type list box lists the available types for variables and lets you select the type that you want to use for a new variable. The standard types are string, integer, double, boolean, and field. Also, whenever you import a Java class, such as java.util.Hashtable, as an imported type, the Type list box picks up this imported type and adds it to the list of available types, as shown in Figure 2:
Figure 2. Contents of the Type list box after an imported type has been declared
You should use this list box for assigning a type to a newly created variable. You can come back later and change the variable's type to another type, but, as with variable names, remember that you might have already used the variable throughout the macro in contexts that require the type that you initially selected. If so, you must go to each of those places and make sure that the context in which you are using the variable is appropriate for its new type.
The Initial Value input field allows you to specify an initial value for the variable. The AME provides the following default values, depending on the type:
Table 1. Default initial values for variables
Type of variable: Default initial value:
string No string
integer 0
double 0.0
boolean false
field (No initial value)
(any imported type) null
To specify a new initial value just type over the default value.

The Remove button removes the currently selected variable.

The Import button and the Import popup window are discussed in Creating an imported type for a Java class.