Index Creation Operator:   :

value1 : value2 ;

The index creation operator (:) creates a row vector with a first element that is value1. The second element is value1+1, and so on, until the last element which is less than or equal to value2.

For example, the following statement creates the vector s which contains consecutive integers, shown in Figure 23.13:

s = 7:10;
print s;

Figure 23.13: Increasing Sequence

s
7 8 9 10


If value1 is greater than value2, a reverse-order index is created. For example, the following statement creates the vector r which contains a decreasing sequence of integers, shown in Figure 23.14:

r = 10:6;
print r;

Figure 23.14: Decreasing Sequence

r
10 9 8 7 6


Neither value1 nor value2 is required to be an integer. Use the DO function if you want an increment other than 1 or $-1$.

The index creation operator also works on character arguments with a numeric suffix. For example, the following statements create a sequence of values that begin with the prefix var, shown in Figure 23.15:

varList = "var1":"var5";
print varList;

Figure 23.15: Sequence of Character Values

varList
var1 var2 var3 var4 var5


Sequences of character values are often used to assign names to variables. You can use the string concatenation operator to dynamically determine the length of a sequence, as shown in the following statements:

x = {1 2 3 4,
     5 6 7 8,
     7 6 5 4};
numVar = ncol(x);                           /* 4 columns */
varNames = "X1":"X"+strip(char(numVar));    /* "X1":"X4" */
print x[colname=varNames];

Figure 23.16: Sequence of Variable Names

x
X1 X2 X3 X4
1 2 3 4
5 6 7 8
7 6 5 4