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