SAS:如何将用户定义的宏保存到用户定义的库中

时间:2016-07-20 17:49:53

标签: sas sas-macro

当我使用SAS宏做一些工作时遇到问题。

似乎以下代码

%MACRO macro-name;
    macro-text
%MEND macro-name;

将始终将宏保存到工作库。我想将它保存到另一个库中,例如已经存在的“mylib”。

有人能帮助我吗?

1 个答案:

答案 0 :(得分:2)

你有两个选择:编译和放大存储或自动调用。编译将固有地导致比自动调用更快的代码执行(尽管是边际的),因为需要搜索自动调用宏&在单个SAS会话中第一次调用时编译。

Autocall可能是最简单的:

%MACRO MYMACRO ;
  /* do stuff */
%MEND ;

将此保存为指定位置的mymacro.sas(例如C:\SAS\Macros\

然后在您的代码中(或最好是autoexec.sas):

filename autos "C:\SAS\Macros" ;
options append=sasautos=(autos) mrecall mautosource ;

然后你可以照常打电话

%MYMACRO ;

http://support.sas.com/documentation/cdl/en/mcrolref/61885/HTML/default/viewer.htm#a002062214.htm

编译&存储:

libname maclib "C:\SAS\Macros" ;
options mstored sasmstore=maclib ;

%MACRO MYMACRO / store source ;
  /* do stuff */
%MEND ;

然后在你的程序中(或者再次优选地,autoexec.sas

libname maclib "C:\SAS\Macros" ;
options mstored sasmstore=maclib ;

照常打电话

%MYMACRO ;

http://support.sas.com/documentation/cdl/en/mcrolref/61885/HTML/default/viewer.htm#a001328775.htm