Iterative
DO statements can be executed within a DO loop. Putting a DO loop
within a DO loop is called nesting.
do i=1 to 20;
...more SAS statements...
do j=1 to 10;
...more SAS statements...
end;
...more SAS statements...
end;
The DATA step below
computes the value of a one-year investment that earns 7.5% annual
interest, compounded monthly.
data work.earn;
Capital=2000;
do month=1 to 12;
Interest=capital*(.075/12);
capital+interest;
end;
run;
Assume that the same
amount of capital is to be added to the investment each year for 20
years. The new program must perform the calculation for each month
during each of the 20 years. To do this, you can include the monthly
calculations within another DO loop that executes 20 times.
data work.earn;
do year=1 to 20;
Capital+2000;
do month=1 to 12;
Interest=capital*(.075/12);
capital+interest;
end;
end;
run;
During each iteration
of the outside DO loop, an additional 2,000 is added to the capital,
and the nested DO loop executes 12 times.
data work.earn;
do year=1 to 20;
Capital+2000;
do month=1 to 12;
Interest=capital*(.075/12);
capital+interest;
end;
end;
run;
Remember, in order for
nested DO loops to execute correctly, you must do the following:
-
Assign a unique
index-variable name in each iterative DO statement.
data work.earn;
do year=1 to 20;
Capital+2000;
do month=1 to 12;
Interest=capital*(.075/12);
capital+interest;
end;
end;
run;
-
End each DO loop with an END statement.
data work.earn;
do year=1 to 20;
Capital+2000;
do month=1 to 12;
Interest=capital*(.075/12);
capital+interest;
end;
end;
run;
It is easier to manage
nested DO loops if you indent the statements in each DO loop as shown
above.