Loops SAS通过宏变量循环
我想要一个程序,它循环遍历宏变量名列表,并返回%DO循环中每个宏变量的值,而不是只返回宏变量名Loops SAS通过宏变量循环,loops,sas,sas-macro,Loops,Sas,Sas Macro,我想要一个程序,它循环遍历宏变量名列表,并返回%DO循环中每个宏变量的值,而不是只返回宏变量名 %let macro_list = AA BB CC; %let loop = %sysfunc(countw(¯o_list.)); %let AA = 123; %let BB = 456; %let CC = 789; %macro test(); %do i = 1 %to &loop.; %let var = %scan(¯o_list
%let macro_list = AA BB CC;
%let loop = %sysfunc(countw(¯o_list.));
%let AA = 123;
%let BB = 456;
%let CC = 789;
%macro test();
%do i = 1 %to &loop.;
%let var = %scan(¯o_list.,&i);
%put &var.; /* I want this to return 123 not AA!!!*/
%end;
%mend test;
%test;
目前,宏返回的值是AA、BB、CC,而不是123456789
我也愿意采用其他方式来实现这一点。谢谢 您需要添加更多
&
%put &var = &&&var ;
或者使用%superq()
函数
%put &var = %superq(&var) ;
您需要添加更多的
&
%put &var = &&&var ;
或者使用%superq()
函数
%put &var = %superq(&var) ;
当您请求
&var
时,它返回列表中的var
值。要求它输入&&var.
,它返回&AA
,然后解析为123。Google“resolving double ampersand SAS”获取更多信息。当您询问&var
时,它会返回列表中的var
值。要求它输入&&var.
,它返回&AA
,然后解析为123。Google“resolving double ampersand SAS”以获取更多信息。谢谢,我在故障排除过程中尝试了两个&&&本应转到三个&&&&!!!!%superq()看起来很整洁,应该更容易阅读。谢谢,我在故障排除过程中尝试了两个&&&应该是三个&&&!!!!%superq()看起来很整洁,应该更容易阅读。