Temporary variables
A temporary variable exists only within a formula. Its scope is that formula and it has no attributes other than the ones assigned to it within the formula.
The syntax for creating a temporary variable is:
variableName := value
The variable takes the type of the value on the righthand side of the equation. This value can be any of the field types or boolean.
Boolean data types are returned by certain @functions and have a value of 1 (True) or 0 (False).
Variables with String data types cannot contain more than 2,048 characters. Concatenate multiple variables to handle larger amounts of text. For example, instead of trying to set the variable "Source" equal to a 3,400-character text block, set the variable "Source1" equal to the first 1,700-character text block and "Source2" to the second 1,700 characters. Concatenate the variables as follows:
@Prompt([OK];"Length";@Text(@Length((Source1+Source2))))
Using a variable name on the lefthand side of an equation results in a temporary variable unless preceded by the reserved word FIELD.
The following example makes extensive use of temporary variables to place the name of the current month in a field named MonthName. The steps are:
- Place the current date in the temporary variable date.
- Extract from date and convert to text month, the number of the month.
- Create a text list "nMonths" with the values 1 through 12.
- Create a text list "months" with the values January through December.
- Replace the number value of the current month with its name.
date := @Created;
month := @Text(@Month(date));
nMonths := "1" : "2" : "3" : "4" : "5" : "6" : "7" : "8" : "9" : "10" : "11" : "12";
months := "January" : "February" : "March" : "April" : "May" : "June" : "July" : "August" : "September" : "October" : "November" : "December";
FIELD MonthName := @Replace(month; nMonths; months)
Variables can be assigned new values as a formula progresses.
The following example reassigns the temporary variable n at each iteration of an @While loop.
n := 1;
@While(n <= @Elements(Categories);
@Prompt([OK]; "Category " + @Text(n); Categories[n]);
n := n + 1
)