очистка библиотеки, которая используется для сохраненного скомпилированного макроса SAS - PullRequest
3 голосов
/ 27 октября 2009

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

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.

Кто-нибудь может посоветовать?

Ответы [ 2 ]

5 голосов
/ 27 марта 2018

В SAS 9.3 или выше вы можете очистить libref, используя % SYSMSTORECLEAR Statement .

4 голосов
/ 27 октября 2009

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

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

...