Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Loops SAS通过宏变量循环_Loops_Sas_Sas Macro - Fatal编程技术网

Loops SAS通过宏变量循环

Loops SAS通过宏变量循环,loops,sas,sas-macro,Loops,Sas,Sas Macro,我想要一个程序,它循环遍历宏变量名列表,并返回%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

我想要一个程序,它循环遍历宏变量名列表,并返回%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,而不是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()看起来很整洁,应该更容易阅读。