limpar uma biblioteca que está sendo usado para armazenados macro SAS compilado
Pergunta
Eu tenho um programa que cria uma macro compilado armazenado em uma biblioteca usando a sintaxe:
options mstored sasmstore=MyLib;
%macro MyMac() /store source des='My Macro';
%let x=1;
%mend;
No entanto, eu não consigo re-atribuir minha biblioteca (MyLib) depois - eu recebo a seguinte mensagem (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.
Alguém pode aconselhar?
Solução
Em SAS 9.3 ou superior, agora você pode limpar o libref usando o % Declaração SYSMSTORECLEAR .
Outras dicas
A resposta curta - eu não acho que você pode na mesma sessão SAS .
Você não pode limpar o libref porque o catálogo macro (SASMACR) permanece em aberto. Fica aberto desde que leva recursos para abrir e fechar o catálogo e SAS assume que macros compilados estão indo para a velocidade em trabalhos de produção e como um trade-off, perder algumas capacidades dinâmicas. Todos os recursos têm de ser fechada antes que você possa limpar o libref. Desde SASMACR permanece em uso (e curto de fechar a sessão não parece ser uma maneira de fechá-lo), o é nenhuma maneira de limpar o libref.