我一直在使用宏库,这样我就可以使用宏而无需先编译它们。问题是当我更改宏并保存时,然后刷新宏库的文件名,这还不足以更新和使用新宏吗?
任何人都知道为什么它在保存之前仍在使用和编译旧宏?
我一直在使用宏库,这样我就可以使用宏而无需先编译它们。问题是当我更改宏并保存时,然后刷新宏库的文件名,这还不足以更新和使用新宏吗?
任何人都知道为什么它在保存之前仍在使用和编译旧宏?
第一次调用宏时,如果尚未定义,SAS 将检查您的自动调用路径并遍历这些位置以尝试找到它。
当它在您的自动调用库中找到宏时,它会对其进行编译并将编译后的版本保存到您的工作文件夹中。对宏的后续调用将导致 SAS 使用宏的编译版本。
为了刷新它(如果您在编译后进行了更改),您需要打开宏的代码并再次提交。这将为您重新定义/重新编译它。
或者,您也可以在包含宏的编译版本的工作文件夹中找到目录,然后将其从那里删除(通常是work.sasmacr
)。
罗伯特解释了为什么你会看到这种行为。
我使用以下内容轻松地重新包含已更改的宏。这假设您已为相关文件夹定义了一个FILENAME
调用MACROREF
。
%include MACROREF(my_macro);
显然将 更改为my_macro
您需要编译的宏。
filename macroref "c:\temp";
%include MACROREF(MacroOne);
如果您有一个充满宏的文件夹(如评论中所述),您可以包含整个文件夹。
%include "%sysfunc(pathname(MACROREF))/*.sas";
这将重新编译整个文件夹。只是该文件夹中没有任何非宏 sas 文件,否则您也在运行它们。