SAS在宏中包含另一个SAS脚本

时间:2019-07-03 18:15:44

标签: sas

我希望将一个sas程序包含在另一个sas程序编写的宏内。 所以:

sas_prog1.sas:
data test;
a=1;
run;

sas_prog2.sas:

%macro m2;
%include sas_prog1.sas;
%mend;
%m2;

sas_prog1.sas中的数据步骤是否也需要包装在宏中?

3 个答案:

答案 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";