我有一个SAS程序。我需要多次调用SAS程序,每次都传递不同的date参数。 我是否正确,首先我需要将整个.sas文件包装到某种宏中,然后需要重复调用该宏?还是有一种无需将其包装在宏中的方法?
答案 0 :(得分:0)
简而言之:也许是。
也许:
如果您有特定的程序,则希望每次使用可以从命令行完成的某些参数启动。有sysparm
变量,将其导入到程序中,如下所示:
> <path>SASHome\SASFoundation\9.4\sas.exe -sysparm "21537"
在SAS代码中等同于:
%let sysparm = 21537;
这使您可以根据需要限制,标记和输入数据。您也可以使用任意参数多次运行程序。我们要做的是解析Sysparm,以允许传递多个参数。
For more on Sysparm, see documentation
是:
如果您想在一个会话中多次运行代码,则理想情况下,您需要以下代码:
%macro do_stuff(your_date):
%put Processing date &your_date.;
data data_&your_date.;
set someLib.begin;
if your_date < data_date < (your_date-20) ;
run;
/*And so forth....*/
%mend do_stuff;
%do_stuff(date_1);
%do_stuff(date_2);
%do_stuff(date_3);