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

SAS: How to save a user-defined macro to a user-defined library

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

好像是下面的代码

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

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

有人能帮帮我吗?

您有两个选择:编译并存储,或自动调用。编译本质上会导致比自动调用更快的代码执行(尽管是微不足道的),因为在单个 SAS 会话中首次调用时需要搜索和编译自动调用宏。


自动调用可能是最简单的:

%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