刷新宏库

时间:2018-03-26 14:17:54

标签: macros sas sas-studio

我一直在使用宏库,这样我就可以使用宏而无需先编译它们。问题是当我更改宏并保存它,然后刷新宏库的文件名时,这还不足以更新并使用新的宏吗?

任何人都有任何想法为什么它在保存之前仍在使用和编译旧宏?

2 个答案:

答案 0 :(得分:4)

第一次调用宏时,如果尚未定义宏,SAS将检查您的自动调用路径并遍历那些尝试查找它的位置。

当它在您的自动调用库中找到宏时,它会编译它并将编译后的版本保存到您的工作文件夹中。对宏的后续调用将导致SAS使用宏的编译版本。

为了刷新它(如果您在编译后进行了更改),则需要打开宏代码并再次提交。这将为您重新定义/重新编译它。

或者,您也可以在工作文件夹中找到包含宏的编译版本的目录,并从那里删除它(通常为work.sasmacr)。

答案 1 :(得分:1)

罗伯特解释了为什么你会看到这种行为。

我使用以下内容轻松重新包含已更改的宏。这假设您为相关文件夹定义了FILENAME MACROREF

%include MACROREF(my_macro);

显然将my_macro更改为您需要编译的宏。

filename macroref "c:\temp";

%include MACROREF(MacroOne);

如果您有一个装满宏的文件夹(如评论中所述),您可以包含整个文件夹。

%include "%sysfunc(pathname(MACROREF))/*.sas";

这将重新编译整个文件夹。只是在该文件夹中没有任何非宏的sas文件,否则你也在运行它们。