%include语句的作用是在当前程序中,再调用其他路径下的程序。
用法很简单,直接一个物理路径加上SAS程序的名称,比如下面这样:
%include "D:\Practice\SAS\test1.sas" ;
test1.sas
%let dsn=sashelp.cars;
data test;
set &dsn;
run;
运行完%include之后,相当于直接运行了test1这个程序。
同时我创建了一个test2.sas,需要注意的是在这个程序中没有任何的宏变量的值可以使用,所以单独跑肯定会报错的。
data test2;
set &dsn;
run;
一:
很多小公司可能会用%include来batch程序,或者在SASEG里面把程序都放在一个work flow里面,然后按顺序执行程序,但是这样会存在很大隐患的。
比如我们现在关闭SAS base,写两个%include语句跑test1.sas和test2.sas,我们肯定会认为跑test2.sas的时候程序会报错,但是我们来看看结果
image.png image.png image.png可以看到test2数据集正常输出,且log一切正常,所以我们可以看到用%include来batch程序是存在隐患的,尤其是后面的TFL,数据集名多了,输出多了,如果一个同事粗心忘记写输出名,很可能就继承了上一个程序的输出名,这是需要注意的一个地方。
二:
当然,对于我们自己平时练习,想调用某个文件夹下的程序,还是挺有帮助的。需要注意几个点
第一个就是如果你在data步中使用%include,要么%include作为第一个语句,要么紧跟在另一个以分号结尾的语句后面(When used in the DATA step, the %INCLUDE statement must be the first statement or it must immediately follow a semicolon that ends another statement. ),比如下面这样
data test;
if 7>1 then;
%include "D:\Practice\SAS\test1.sas";
run;
data test;
if 7>1 then;
%include "D:\Practice\SAS\test1.sas";
run;
data test;
if 7>1 then;
%include "D:\Practice\SAS\test1.sas";
run;
上面这段程序是能正确运行的。
网友评论