如何在sas中使用循环进行宏函数调用

时间:2016-09-22 10:02:49

标签: loops macros sas

我在sas

中使用以下语句进行函数调用
%loopit(26062015,bbbbbbINFY,FUTSTK,30Jul2015);
%loopit(26062015,bbbbbbSBIN,FUTSTK,30Jul2015);
%loopit(26062015,bbbbbbbTCS,FUTSTK,30Jul2015);

我已经在代码中定义了loopit宏。可以看出,在函数调用中,只有一个参数发生变化,而其余参数相同。我想如果有任何循环结构(例如阵列),我可以使用它来使它更有用。

2 个答案:

答案 0 :(得分:0)

您可以定义要循环的参数列表,然后在每个参数上调用%loopit

%let param_list = bbbbbbINFY bbbbbbSBIN bbbbbbbTCS;

%macro loop_them;

    %do i = 1 %to %sysfunc(countw(&param_list.));
    %let this_param = %scan(&param_list., &i.);

        %loopit(26062015,&this_param.,FUTSTK,30Jul2015);

    %end;

%mend loop_them;

%loop_them;

答案 1 :(得分:0)

您可以使用call execute功能。例如,如果您有一个顺序计数基本参数,那么您可以使用以下代码:

Data _NULL_;
count = 0;
for i=0 to 10;
call execute ( ‘%loopit(count)’ );
end;
run;

我不完全确定上面使用的语法。谷歌更清晰。我之前以同样的方式使用过call execute