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

StackOverflow https://stackoverflow.com/questions/1629999

  •  06-07-2019
  •  | 
  •  

Вопрос

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

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 невозможно.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top