当我使用SAS宏做一些工作时遇到问题。
似乎以下代码
%MACRO macro-name;
macro-text
%MEND macro-name;
将始终将宏保存到工作库。我想将它保存到另一个库中,例如已经存在的“mylib”。
有人能帮助我吗?
答案 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