Hi all,
I need 41 files from Y1980 to Y2020 with one variable (index) going from year*1000 to year*1000+900.
So for Y1980, Index will range from 19800000 to 19800900.
I wrote the following but the result is not as expected.
%macro myloop;
%do i=1980 %to 2020;
data Y&i;
%do index=&i*1000 %to &i*1000+900;
output;
%end;
run;
%end;
%mend;
%myloop;
Looks like you are confusing macro and SAS code loops. Is this more like it?
%macro myloop;
%do i=1980 %to 2020;
data Y&i;
do index=&i*1000 to &i*1000+900;
output;
end;
run;
%end;
%mend;
%myloop;
Looks like you are confusing macro and SAS code loops. Is this more like it?
%macro myloop;
%do i=1980 %to 2020;
data Y&i;
do index=&i*1000 to &i*1000+900;
output;
end;
run;
%end;
%mend;
%myloop;
The macro language is a code generator, and the code you created through it looks like this:
data Y1980;
output;
output;
output;
/* repeat 901 times all in all */
output;
run;
To create or manipulate data, you use the data step language, to create code, you use the macro language.
Macro variables (&index in your case) are only "visible" to the macro processor, not to the created code (unless you use them as parts of the created code).
Good news: We've extended SAS Hackathon registration until Sept. 12, so you still have time to be part of our biggest event yet – our five-year anniversary!
Learn how use the CAT functions in SAS to join values from multiple variables into a single value.
Find more tutorials on the SAS Users YouTube channel.
Ready to level-up your skills? Choose your own adventure.