清除用于存储的已编译SAS宏的库

清除用于存储的已编译SAS宏的库,sas,sas-macro,Sas,Sas Macro,我有一个程序,它使用以下语法在库中创建存储的编译宏: options mstored sasmstore=MyLib; %macro MyMac() /store source des='My Macro'; %let x=1; %mend; 但是,之后我似乎无法重新分配我的库(MyLib)-我收到以下消息(sas 9.1.3): 有人能提供建议吗?简短回答-我不认为你能在同一个SAS会话中提供建议 无法清除libref,因为宏目录(SASMACR)保持打开状态。它保持打开状态,因为它

我有一个程序,它使用以下语法在库中创建存储的编译宏:

options mstored sasmstore=MyLib; 
%macro MyMac() /store source des='My Macro'; 
  %let x=1;
%mend;
但是,之后我似乎无法重新分配我的库(MyLib)-我收到以下消息(sas 9.1.3):


有人能提供建议吗?

简短回答-我不认为你能在同一个SAS会话中提供建议


无法清除libref,因为宏目录(SASMACR)保持打开状态。它保持打开状态,因为它需要资源来打开和关闭目录,而SAS假设编译的宏在生产作业中会加快速度,作为一种折衷,它会失去一些动态功能。在清除libref之前,必须关闭所有资源。由于SASMACR仍在使用中(并且如果没有关闭会话,则似乎无法关闭会话),因此无法清除libref。

在SAS 9.3或更高版本中,现在可以使用清除libref

对不起,克里斯-虽然这对我当时的问题(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.