0
我试图将变量值从数据集传递到宏,并在do
循环中使用它。使用SYMGETN指定要在%DO语句中循环的次数
data work.b;
set work.a;
if _N_ = 1 then call symput('foo', foo_var);
run;
%macro bar(max_loop_count);
%do i = 1 %to &max_loop_count;
* Some data steps here ;
%end;
%mend;
%bar(symgetn('foo'));
不过,我得到这个错误:
ERROR: Required operator not found in expression: &max_loop_count
ERROR: The %TO value of the %DO I loop is invalid.
ERROR: The macro BAR will stop executing.
我在做什么错在这里?
是否有一个特殊的原因,使用symgetn而不是&foo在macrocall? http://www.lexjansen.com/nesug/nesug04/pm/pm13.pdf在页面顶部它说:“相反,SYMGET是一种SAS语言 函数 ,它返回一个宏变量的 值到DATA步骤执行期间的DATA步骤“。我的猜测是symgetn函数只能在datastep中执行,所以你不能在宏调用中使用它。但是我不能用更多的参考来备份,所以我只发表这个评论。 – kl78