如何使用宏参数调用SAS中的另一个宏
How to use a macro parameter to call another macro in SAS
我发现我的很多宏观工作都具有相似的结构。为了使我的代码更整洁,我想制作一个通用宏,其中我有三个输入,即我 运行 工作的第一个日期。 运行 它的日期数,以及我要为这些日期执行的宏的名称
下面是我的代码,如果我在 run_dates 宏中对宏进行硬编码,它就可以工作,但是我不能使用作为参数传递的宏变量来调用它。
如何使用作为参数传递的宏变量来调用另一个宏?
我在代码中不起作用的地方添加了注释。我已经简化了输出,因此它们看起来既不有趣也不符合逻辑,但我正在寻找的只是能够使用该宏变量。
%macro test_macro(dt);
%put macro date is &dt;
%mend test_macro;
%macro run_dates(dt_start, num, macro_name);
%put ¯o_name;
%do i =0 %to &num ;
data _null_;
call symput('querydate',"'" || put(intnx('month',&dt_start.d ,&i,'e'),date9.) || "'");
run;
%put prepaid daily for &querydate;
/*this is where I want to call the macro*/
%¯o_name(&querydate);
%end;
%mend run_dates;
/*now run the main macro*/
%run_dates('03jun2012', 10,'test_macro');
只需删除 macro_name
中的引号
%run_dates('03jun2012', 10,test_macro);
我发现我的很多宏观工作都具有相似的结构。为了使我的代码更整洁,我想制作一个通用宏,其中我有三个输入,即我 运行 工作的第一个日期。 运行 它的日期数,以及我要为这些日期执行的宏的名称
下面是我的代码,如果我在 run_dates 宏中对宏进行硬编码,它就可以工作,但是我不能使用作为参数传递的宏变量来调用它。 如何使用作为参数传递的宏变量来调用另一个宏?
我在代码中不起作用的地方添加了注释。我已经简化了输出,因此它们看起来既不有趣也不符合逻辑,但我正在寻找的只是能够使用该宏变量。
%macro test_macro(dt);
%put macro date is &dt;
%mend test_macro;
%macro run_dates(dt_start, num, macro_name);
%put ¯o_name;
%do i =0 %to &num ;
data _null_;
call symput('querydate',"'" || put(intnx('month',&dt_start.d ,&i,'e'),date9.) || "'");
run;
%put prepaid daily for &querydate;
/*this is where I want to call the macro*/
%¯o_name(&querydate);
%end;
%mend run_dates;
/*now run the main macro*/
%run_dates('03jun2012', 10,'test_macro');
只需删除 macro_name
中的引号%run_dates('03jun2012', 10,test_macro);