Nesting DO Loops

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.
Last updated: January 10, 2018
..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset
3.142.135.249