%DO, Iterative Statement
         
         Executes a section of a macro repetitively based
            on the value of an index variable.
         
         
            
               | Type: | 
               Macro statement | 
            
            
               | Restriction: | 
               Allowed in macro definitions only | 
            
            
               | See: | 
               %END Statement | 
            
         
         
         
         
         
         
            Syntax 
            
            
               %DO macro-variable=start %TO stop <%BY increment> ;
 text and macro language statements 
               
             
            
            
               
                  Required Arguments
                  
                  - macro-variable
 
                     - 
                        
names a macro variable
                           or a text expression that generates a macro variable name. Its value
                           functions as an index that determines the number of times the %DO
                           loop iterates. If the macro variable specified as the index does not
                           exist, the macro processor creates it in the local symbol table.
                        
                        You can change the
                           value of the index variable during processing. For example, using
                           conditional processing to set the value of the index variable beyond
                           the 
stop value when a certain
                           condition is met ends processing of the loop.
                        
 
                      
                  
                  - startstop
 
                     - 
                        
specify integers or
                           macro expressions that generate integers to control the number of
                           times the portion of the macro between the iterative %DO and %END
                           statements is processed.
                        
                        The first time the
                           %DO group iterates, 
macro-variable is equal to 
start. As processing
                           continues, the value of 
macro-variable changes by the value of 
increment until the value of 
macro-variable is outside the range of integers included by 
start and 
stop.
                        
 
                      
                  
                  - increment
 
                     - 
                        
specifies an integer
                           (other than 0) or a macro expression that generates an integer to
                           be added to the value of the index variable in each iteration of the
                           loop.  By default, increment is 1. Increment is evaluated
                           before the first iteration of the loop. Therefore, you cannot change
                           it as the loop iterates.
                        
                      
                  
                
             
          
         Example: Generating a Series of DATA Steps
            This example illustrates
                  using an iterative %DO group in a macro definition.    
               
 
               %macro create(howmany);
   %do i=1 %to &howmany;
      data month&i;
         infile in&i;
         input product cost date;
      run;
   %end;
%mend create;
%create(3) 
               When you execute the
                  macro CREATE, it generates these statements:      
               
 
               DATA MONTH1;
   INFILE IN1;
   INPUT PRODUCT COST DATE;
RUN;
DATA MONTH2;
   INFILE IN2;
   INPUT PRODUCT COST DATE;
RUN;
DATA MONTH3;
   INFILE IN3;
   INPUT PRODUCT COST DATE;
RUN;