очистка библиотеки, которая используется для сохраненного скомпилированного макроса 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.
Кто-нибудь может посоветовать?
Решение
В SAS 9.3 или более поздней версии теперь вы можете очистить libref, используя Заявление% SYSMSTORECLEAR . Р>
Другие советы
Краткий ответ - я не думаю, что вы можете в одном сеансе SAS . Р>
Вы не можете очистить libref, потому что каталог макросов (SASMACR) остается открытым. Он остается открытым, поскольку для открытия и закрытия каталога требуются ресурсы, а SAS предполагает, что скомпилированные макросы ускоряют выполнение рабочих заданий и в качестве компромисса теряют некоторые динамические способности. Все ресурсы должны быть закрыты, прежде чем вы сможете очистить libref. Поскольку SASMACR остается в использовании (а закрытие сеанса, похоже, не является способом его закрытия), очистить libref невозможно.