2009-10-27 2 views
3

У меня есть программа, которая создает хранимую скомпилированный макрос в библиотеке, используя синтаксис:очистка библиотеки, который используется для хранится скомпилирован SAS макросъемки

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. 

Может кто-нибудь посоветуете?

ответ

4

Короткий ответ - я не думаю, что вы можете в том же сеансе SAS.

Вы не можете очистить libref, потому что каталог макросов (SASMACR) остается открытым. Он остается открытым, так как он требует ресурсов для открытия и закрытия каталога, и SAS предполагает, что скомпилированные макросы идут на скорость в производственных заданиях и в качестве компромисса теряют некоторые динамические возможности. Все ресурсы должны быть закрыты, прежде чем вы сможете очистить libref. Поскольку SASMACR остается в использовании (и, как правило, закрытие сеанса не похоже на его закрытие), это не способ очистить libref.

Смежные вопросы