Statements |
Valid: | in a DATA step |
Category: | Information |
Type: | Declarative |
Syntax |
array-name { subscript } |
is the name of an array that was previously defined with an ARRAY statement in the same DATA step.
specifies the subscript. Any of these forms can be used:
specifies a variable, or variable list that is usually used with DO-loop processing. For each execution of the DO loop, the current value of this variable becomes the subscript of the array element being processed.
Featured in: | Using Iterative DO-Loop Processing |
Tip: | You can enclose a subscript in braces ( { } ), brackets ( [ ] ), or parentheses (( )). |
forces SAS to treat the elements in the array as a variable list.
Tip: | The asterisk can be used with the INPUT and PUT statements, and with some SAS functions. |
Tip: | This syntax is provided for convenience and is an exception to usual array processing. |
Restriction: | When you define an array that contains temporary array elements, you cannot reference the array elements with an asterisk. |
Featured in: | Using the Asterisk References as a Variable List |
Range: | The expression must evaluate to a subscript value when the statement that contains the array reference executes. The expression can also be an integer with a value between the lower and upper bounds of the array, inclusive. |
Featured in: | Specifying the Subscript |
Details |
To refer to an array in a program statement, use an array reference. The ARRAY statement that defines the array must appear in the DATA step before any references to that array. An array definition is only in effect for the duration of the DATA step. If you want to use the same array in several DATA steps, redefine the array in each step.
If you inadvertently use a function name as the name of the array, SAS treats parenthetical references that involve the name as array references, not function references, for the duration of the DATA step. A warning message is written to the SAS log.
You can use an array reference anywhere that you can write a SAS expression, including SAS functions and these SAS statements:
The DIM function is often used with the iterative DO statement to return the number of elements in a dimension of an array, when the lower bound of the dimension is 1. If you use DIM, you can change the number of array elements without changing the upper bound of the DO statement. For example, because DIM(NEW) returns a value of 4, the following statements process all the elements in the array:
array new{*} score1-score4; do i=1 to dim(new); new{i}=new{i}+10; end;
Comparisons |
An ARRAY statement defines an array, whereas an array reference defines the members of the array to process.
Examples |
In this example, the statements process each element of the array, using the value of variable I as the subscript on the array references for each iteration of the DO loop. If an array element has a value of 99, the IF-THEN statement changes that value to 100.
array days{7} d1-d7; do i=1 to 7; if days{i}=99 then days{i}=100; end;
You can refer to more than one array in a single SAS statement. In this example, you create two arrays, DAYS and HOURS. The statements inside the DO loop substitute the current value of variable I to reference each array element in both arrays.
array days{7} d1-d7; array hours{7} h1-h7; do i=1 to 7; if days{i}=99 then days{i}=100; hours{i}=days{i}*24; end;
In this example, the INPUT statement reads in variables A1, A2, and the third element (A3) of the array named ARR1:
array arr1{*} a1-a3; x=1; input a1 a2 arr1{x+2};
array cost{10} cost1-cost10; totcost=sum(of cost {*});
array days{7} d1-d7; input days {*};
array hours{7} h1-h7; put hours {*};
See Also |
| |||||
| |||||
Array Processing in SAS Language Reference: Concepts |
Copyright © 2011 by SAS Institute Inc., Cary, NC, USA. All rights reserved.