刷新宏库

Refreshing the macro library

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

有人知道为什么它仍在使用和编译保存之前的旧宏吗?

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

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

为了刷新它(如果您在编译后进行了更改),您需要将代码打开到宏并再次提交。那会 redefine/recompile 给你的。

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

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

我使用以下方法轻松重新包含已更改的宏。这假设您有一个名为 MACROREFFILENAME 定义到相关文件夹。

%include MACROREF(my_macro);

显然把my_macro改成你需要编译的宏

filename macroref "c:\temp";

%include MACROREF(MacroOne);

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

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

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