【问题标题】:SAS Looping Through Macro VariablesSAS 循环通过宏变量
【发布时间】:2017-02-23 03:25:33
【问题描述】:

我想要一个程序,它遍历一个宏变量名列表,并返回 %DO 循环中每个宏变量的值,而不是只返回宏变量名。

%let macro_list = AA BB CC;
%let loop = %sysfunc(countw(&macro_list.));

%let AA = 123;
%let BB = 456;
%let CC = 789;

%macro test();

    %do i = 1 %to &loop.;

%let var = %scan(&macro_list.,&i);
%put &var.; /* I want this to return 123 not AA!!!*/

    %end;
%mend test;

%test;

当前宏返回 AA、BB、CC 的值,而不是 123、456、789。

我也愿意接受其他方式来实现这一点。谢谢!

【问题讨论】:

  • 当您请求&var 时,它会返回列表中的var 的值。向它询问 &&var.,它返回 &AA,然后解析为 123。谷歌“解析双 & 号 SAS”以获取更多信息。

标签: loops sas sas-macro


【解决方案1】:

您需要添加更多&

%put &var = &&&var ;

或者使用%superq()函数。

%put &var = %superq(&var) ;

【讨论】:

  • 谢谢,我在故障排除过程中尝试了两个 &&,应该是三个 &&& ! %superq() 看起来很简洁,应该更容易阅读。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多