我有一个程序,它使用以下语法在库中创建存储的编译宏:
options mstored sasmstore=MyLib;
%macro MyMac() /store source des='My Macro';
%let x=1;
%mend;
但是之后我似乎无法重新分配我的库(MyLib) - 我收到以下消息(sas 9.1.3):
ERROR: Unable to clear or re-assign the library MYLIB because it is still in use.
ERROR: Error in the LIBNAME statement.
有人可以提供建议吗?
答案 0 :(得分:5)
在SAS 9.3或更高版本中,您现在可以使用%SYSMSTORECLEAR Statement清除libref。
答案 1 :(得分:4)
简短回答 - 我认为您不能在同一个SAS会话中。
您无法清除libref,因为宏目录(SASMACR)仍处于打开状态。它保持开放,因为它需要资源来打开和关闭目录,而SAS假设编译的宏在生产作业中速度快,并且作为权衡,失去一些动态能力。在清除libref之前必须关闭所有资源。由于SASMACR仍然在使用(没有关闭会话似乎不是关闭它的方法),因此无法清除libref。