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
我在使用 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