effacement d'une bibliothèque utilisée pour la macro SAS compilée stockée
Question
J'ai un programme qui crée une macro compilée stockée dans une bibliothèque en utilisant la syntaxe suivante:
options mstored sasmstore=MyLib;
%macro MyMac() /store source des='My Macro';
%let x=1;
%mend;
Cependant, je n'arrive pas à réassigner ma bibliothèque (MyLib) par la suite. Le message suivant (sas 9.1.3) s'affiche:
ERROR: Unable to clear or re-assign the library MYLIB because it is still in use.
ERROR: Error in the LIBNAME statement.
Quelqu'un peut-il conseiller?
La solution
Dans SAS 9.3 ou version ultérieure, vous pouvez maintenant effacer le libref à l’aide de Instruction% SYSMSTORECLEAR .
Autres conseils
Réponse courte - Je ne pense pas que vous puissiez participer à la même session SAS .
Vous ne pouvez pas effacer le fichier libref car le catalogue de macros (SASMACR) reste ouvert. Il reste ouvert, car il faut des ressources pour ouvrir et fermer le catalogue et SAS suppose que les macros compilées atteignent la vitesse dans les travaux de production et, en contrepartie, perdent certaines capacités dynamiques. Toutes les ressources doivent être fermées avant de pouvoir effacer le libref. Étant donné que SASMACR reste en cours d'utilisation (et qu'il est presque impossible de fermer la session, cela ne semble pas être un moyen de la fermer), il n'y a aucun moyen d'effacer le libref.