GeoffDS
GeoffDS

Reputation: 1271

Put list of values into several macro variables in SAS

I have a list of values defined in a macro variable, e.g.,

%let datelist = 20100614 20120309 20151215;

Now, I want to put these values into the corresponding number of macro variables. In this case, I want to put them into Date1, Date2, Date3.

Of course, I could manually type out:

%let Date1 = 20100614;
%let Date2 = 20120309;
%let Date3 = 20151215;

How can I do that in a dynamic way so that if there were 25 dates, or 2, it would still work?

Upvotes: 0

Views: 600

Answers (1)

Reeza
Reeza

Reputation: 21274

Ok, I'll suggest a data step, because I prefer that over macro loops any day. Use COUNTW() to count the number of loops required and use CALL SYMPUTX to create the macro variables. You should look into the third parameter of the function if you want to control the scope of the macro variable.

%let datelist = 20100614 20120309 20151215;

data _null_;
word = "&datelist";
n=countw(word);
do i=1 to n;
    call symputx('date'||Put(i, 8. -l), scan(word, i));
end;
run;

%put &date1.;
%put &date2.;
%put &date3.;

Upvotes: 2

Related Questions