我有一个宏变量中定义的值列表,例如
%let datelist = 20100614 20120309 20151215;
现在,我想将这些值放入相应数量的宏变量中。在这种情况下,我想将它们放入Date1,Date2,Date3。
当然,我可以手动输入:
%let Date1 = 20100614;
%let Date2 = 20120309;
%let Date3 = 20151215;
我怎样才能以动态的方式做到这一点,以便如果有25个日期或2个日期,它仍然有用?
答案 0 :(得分:2)
好的,我建议一个数据步骤,因为我喜欢任何一天的宏循环。 使用COUNTW()计算所需的循环数,并使用CALL SYMPUTX创建宏变量。如果要控制宏变量的范围,则应查看函数的第三个参数。
%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.;