Sas 宏:对数组中的每个元素运行宏

  • 本文关键字:运行 元素 数组 Sas sas
  • 更新时间 :
  • 英文 :


>我正在尝试为数组中的每个元素调用另一个宏。这是对同一问题的简单描述。我希望宏在另一行中打印每个变量,但它没有。为什么?如何解决这个问题?

%macro test(varlist);
%local var i ;
%do i = 1 %to %sysfunc(countw(&varlist)) ;
%let var = %scan(&varlist,&i) ;
%put looped var is &var;
%end ;
%mend test;
%test(var1 var2 var3)

SAS 宏不包含数组结构。 但是,在 SAS 宏中,描述分隔项列表的文本序列可以以类似数组的方式进行处理。 所描述的项可以表示可以进一步利用或作为源代码发出以进行进一步处理的其他事物。

发布的代码确实在您调用变量名称的空格分隔列表中为每个项目记录一行。

SAS 日志

1    %macro test(varlist);
2    %local var i ;
3    %do i = 1 %to %sysfunc(countw(&varlist)) ;
4      %let var = %scan(&varlist,&i) ;
5      %put looped var is &var;
6
7    %end ;
8    %mend test;
9
10   %test(var1 var2 var3)
looped var is var1
looped var is var2
looped var is var3

对于代码的情况,尤其是宏代码,如果没有预期的登录信息,则可能存在其他不正确的编程语句并更改预期状态。 您可能有不平衡的引号,导致宏源代码被视为另一个步骤的一部分。 有时,当执行程序无法返回到正确的"就绪"状态时,重新启动 SAS 会话是最佳操作过程。

最新更新