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

SAS在宏中包含另一个SAS脚本,sas,Sas,我希望在另一个sas程序中编写的宏中包含一个sas程序。 因此: sas_prog1.sas中的数据步骤是否也需要包装在宏中?否-不需要。当您使用%include语句时,它实际上只是写出包含文件中该位置的所有内容。在您的情况下,它只是转储datastep代码,因此它实际上变成: %macro m2; data test; a=1; run; %mend; %m2; 所以你应该准备好了。你可以在另一个文件中包含一个代码,将其作为字符写入临时文件 filename exec_c

我希望在另一个sas程序中编写的宏中包含一个sas程序。 因此:


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

否-不需要。当您使用%include语句时,它实际上只是写出包含文件中该位置的所有内容。在您的情况下,它只是转储datastep代码,因此它实际上变成:


%macro m2;
  data test;
   a=1;
  run;
%mend;

%m2;


所以你应该准备好了。

你可以在另一个文件中包含一个代码,将其作为字符写入临时文件

filename exec_code temp;
data _null_;
  file exec_code;
  put ' your sas instruction'
  put 'your sas instruction'
run;
在宏中使用include

%macro mymacro();

%include exec_code;

%mend;

假设sas_prog1.sas被用作一个模块,并且整个代码将有多个模块,您只需使用%include来执行程序。不需要在sas_prog2中的宏中执行它,但可以

保存为sas_prog1.sas的文件内容:

data test;
    a=1;
    run;
sas_prog2.sas的内容:

%include "[prog_dir]\sas_prog2.sas";
%include "[prog_dir]\sas_prog2.sas";