SAS Loop

Posted on Jan 17, 2015 in Computer Science

Things under legendu.net/outdated are outdated technologies that the author does not plan to update any more. Please look for better alternatives.

** Things under legendu.net/outdated are outdated technologies that the author does not plan to update any more. Please look for better alternatives. **

y = 0;
do i = 1 to 10 by 2;
   y = y + i;
end;

count = 1;
do while(count<5);
   count = count+1;
end;

count = 1;
do until(count>5);
   count = count+1;
end;
data _null_;
    do x="a", "b", "c";
        put x;
    end;
run;

comma cannot be omitted.

However, you cannot do this directly in macro loops. A way to close assembly this to use the trick of %scan.

%let months = 200201 200202 200203;
%macro f;
    %local i m;
    %let i = 1;
    %let m = %scan(&months, &i);
    %do %while(&m ^= );
        %put &m;
        %let i = %eval(&i + 1);
        %let m = %scan(&months, &i);
    %end;
%mend;
%f