2.3.1.2.1.1 Assignment Statements

The assignment statement takes the general form:

LHS = expression ;

expression (RHS, right-hand side) is evaluated and put into LHS (left-hand side). If LHS does not exist, it is created if possible, otherwise an error will be reported.

When a new data object is created with an assignment statement, the object created is:

• A string variable if LHS ends with a $as in stringVar$ = "Hello."
• A numeric variable if expression evaluates to a scalar.
• A dataset if expression evaluates to a range.

When new values are assigned to an existing data object, the following conventions apply:

• If LHS is a dataset and expression is a scalar, every value in LHS is set equal to expression.
• If LHS is a numeric variable, then expression must evaluate into a scalar. If expression evaludate into a dataset, LHS retrieves the first element of the dataset.
• If both LHS and expression represent datasets, each value in LHS is set equal to the corresponding value in expression.
• If LHS is a string, then expression is assumed to be a string expression.
• If the LHS is the object.property notation, with or without $at the end, then this notation is used to set object properties, such as the number of columns in a worksheet, like wks.ncols=3; Examples of Assignment Statements Assign the variable B equal to 2. B = 2; Assign Test equal to B raised to the third power. Test = B^3; Assign %A equal to Austin TX. %A = Austin TX; Assign every value in Book1_B to 4. Book1_B = 4; Assign each value in Book2_B to the corresponding position in Book1_B. Book1_B = Book2_B; Sets the row heading width for the Book1 worksheet to 100, using the worksheet object's rhw property. The doc -uw command refreshes the window. Book1!wks.rhw = 100; doc -uw; The calculation is carried out for the values at the corresponding index numbers in more and yetmore. The result is put into myData at the same index number. myData = 3 * more + yetmore; Note: If a string register to the left of the assignment operator is enclosed in parentheses, the string register is substitution processed before assignment. For example: %B = DataSet; (%B) = 2 * %B; The values in DataSet are multiplied by 2 and put back into DataSet. %B still holds the string "DataSet". Similar to string registers, the assignment statement is also used for string variables, like: fname$=fdlg.path\$+"test.csv";

In this case, the expression is a string expression which can be string literals, string variables, or a concatenation of multiple strings with the + character.