limpar uma biblioteca que está sendo usado para armazenados macro SAS compilado

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

  •  06-07-2019
  •  | 
  •  

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?

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top