我希望将一个sas程序包含在另一个sas程序编写的宏内。 所以:
sas_prog1.sas:
data test;
a=1;
run;
sas_prog2.sas:
%macro m2;
%include sas_prog1.sas;
%mend;
%m2;
sas_prog1.sas中的数据步骤是否也需要包装在宏中?
答案 0 :(得分:2)
否-您不需要。当您使用%include语句时,它实际上只是在该位置写出包含文件中的所有内容。在您的情况下,它只是转储数据步骤代码,因此它实际上变为:
%macro m2;
data test;
a=1;
run;
%mend;
%m2;
所以你应该很好。
答案 1 :(得分:1)
您可以在另一个代码中包含一个代码,将其作为字符写入到临时文件中。
filename exec_code temp;
data _null_;
file exec_code;
put ' your sas instruction'
put 'your sas instruction'
run;
并在您的宏中使用包含
%macro mymacro();
%include exec_code;
%mend;
答案 2 :(得分:0)
假设sas_prog1.sas被用作模块,并且整个代码中将有多个模块,则只需使用%include即可执行该程序。无需在sas_prog2中的宏内部执行它,但是可以执行。
另存为sas_prog1.sas的文件内容:
data test;
a=1;
run;
sas_prog2.sas的内容:
%include "[prog_dir]\sas_prog2.sas";