256:%include

作者: SASPRO的打工人生活 | 来源:发表于2023-07-30 21:59 被阅读0次

    %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;

    image.png
    data test;
      if 7>1 then;
       %include "D:\Practice\SAS\test1.sas";
    run;
    

    上面这段程序是能正确运行的。

    相关文章

      网友评论

        本文标题:256:%include

        本文链接:https://www.haomeiwen.com/subject/gzwspdtx.html