嘿,我现在正在尝试学习SAS,而我正在尝试编写一个简单的宏。 该宏应该将两个数字之间的序列打印到日志中。 例如%seq(1,4)导致
1
2
3
4
打印出来的。不幸的是,我不知道如何做到这一点并且在网上找不到任何东西。有人有想法吗?由于
答案 0 :(得分:0)
有几种方法可以实现这一点,这里有一个:
%macro seq(x,y);
%do %until (&x>&y);
%put &x;
%let x=%eval(&x+1);
%end;
%mend;
%seq(1,4)
答案 1 :(得分:0)
目前尚不清楚你想在这里做什么。如果您只想生成一系列数字,而不需要将宏作为数据步骤,则DO语句可以非常轻松地完成。
data _null_;
do seq=1 to 4 ;
put seq= ;
end;
run;
为了使其更灵活,您可以使用宏变量替换常量1
和4
。
%let start=1;
%let end=4;
data _null_;
do seq=&start to &end ;
put seq= ;
end;
run;
为了使其更具可重用性,您可以将其包装到宏中。
%macro seq(start,end);
data _null_;
do seq=&start to &end ;
put seq= ;
end;
run;
%mend seq ;
%seq(1,4)
你甚至可以使用宏%DO循环,如果数据步骤DO循环你不需要在宏中生成实际的SAS代码。
%macro seq(start,end);
%local seq;
%do seq=&start %to &end ;
%put seq= &seq;
%end;
%mend seq ;
%seq(1,4)