cancellare una libreria che viene utilizzata per la macro SAS compilata memorizzata
Domanda
Ho un programma che crea una macro compilata memorizzata in una libreria usando la sintassi:
options mstored sasmstore=MyLib;
%macro MyMac() /store source des='My Macro';
%let x=1;
%mend;
Tuttavia non riesco a riassegnare la mia libreria (MyLib) in seguito - Ricevo il seguente messaggio (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.
Qualcuno può avvisare?
Soluzione
In SAS 9.3 o versioni successive, è ora possibile cancellare libref utilizzando % SYSMSTORECLEAR Statement .
Altri suggerimenti
Risposta breve - Non credo che tu possa nella stessa sessione SAS .
Non puoi cancellare libref perché il catalogo macro (SASMACR) rimane aperto. Rimane aperto poiché richiede risorse per aprire e chiudere il catalogo e SAS presume che le macro compilate stiano andando veloce nei lavori di produzione e, come compromesso, perda alcune abilità dinamiche. Tutte le risorse devono essere chiuse prima di poter cancellare libref. Poiché SASMACR rimane in uso (e a meno di chiudere la sessione non sembra essere un modo per chiuderla), non c'è modo di cancellare il libref.