Précédent   Forum des professionnels en informatique > Logiciels > Solutions d'entreprise > Business Intelligence > SAS > Macro
Macro Forum d'entraide sur le langage Macro de SAS
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 07/07/2008, 15h21   #1
Membre confirmé
 
Inscription : avril 2008
Messages : 233
Détails du profil
Informations personnelles :
Âge : 36

Informations forums :
Inscription : avril 2008
Messages : 233
Points : 216
Points : 216
Par défaut [Macro] Partage des macros

Bonjour,
Je créé mes macros avec l'option de sauvegarde de la version compilée dans une bibliothèque :
Code :
1
2
3
4
5
libname macros "mon chemin";
options mstored sasmstore=macros;
%macro createTriangleSin /store source;
/*blabla de mon macro*/
%mend createTriangleSin;
Apparemment au moment de compilation de mon macro SAS vérouille la bibliothèque "macros". Au point que je ne peux y accéder qu'à partir la session dans laquelle j'ai compilé les macros.
Si je ferme cette session, c'est OK, le macro est créé, la bibliothèque est libre, tout le monde peut utiliser mes macros.

Question : comment libérer le vérouillage de la bibliothèque sans fermer SAS ? Click droit, "Annuler l'affectation" ne marche pas, il dit
Code :
Impossible de supprimer ou de réaffecter la biblio. MACROS car elle est encore en cours d'utilisation.
green_fr est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/07/2008, 15h51   #2
Membre Expert
 
Inscription : mars 2005
Messages : 1 028
Détails du profil
Informations forums :
Inscription : mars 2005
Messages : 1 028
Points : 1 278
Points : 1 278
Envoyer un message via Yahoo à bahraoui
Essaye de libérer le libname après la compilation
Code :
1
2
 
libname toto clear;
__________________
Consultez les FAQs et les anciens postes avant de poser vos questions. Merci
bahraoui est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/07/2008, 16h15   #3
Expert Confirmé
 
Avatar de olivier.decourt
 
Homme Olivier Decourt
Formateur en informatique
Inscription : avril 2008
Messages : 1 482
Détails du profil
Informations personnelles :
Nom : Homme Olivier Decourt
Âge : 34
Localisation : France

Informations professionnelles :
Activité : Formateur en informatique
Secteur : Conseil

Informations forums :
Inscription : avril 2008
Messages : 1 482
Points : 2 866
Points : 2 866
C'est un peu vicieux comme fonctionnement. Pour libérer les droits sur le catalogue de macros, il faut que la session SAS qui compile les macro-programmes ait été occupée à compiler ailleurs.
C'est à dire qu'en pratique, après le programme que tu décris, tu ne peux pas directement faire un LIBNAME CLEAR. Il faut aller compiler une macro ailleurs. Même une macro bidon. C'est ce que suggère SAS (http://support.sas.com/kb/9/807.html) et du coup, ça donne du code un peu étrange, comme ça...
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 
libname macros "c:\temp"; /* bibliothèque normale pour stockage */
options mstored sasmstore=macros;
%macro createTriangleSin /store source;
/* du code de la macro */
%mend createTriangleSin;
/* maintenant que c'est stocké, on fait une bibliothèque vers le répertoire de la Work */
LIBNAME tmp "%SYSFUNC(GETOPTION(work))" ACCESS=temp ;
/* on branche le compilateur macro vers la bibliothèque TMP */
OPTION MSTORED sasmstore=tmp ;
/* et on le "distrait" en lui faisant compiler une macro bidon dans TMP */
%MACRO rien / STORE ;
%MEND rien ;
/* ça y est, il a lâché la bibliothèque du début, on peut la libérer */
LIBNAME macros CLEAR ;
/* si on veut la réaffecter, le faire en lecture seule */
LIBNAME macros "c:\temp" ACCESS=READONLY ;
Olivier
olivier.decourt est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/07/2008, 16h36   #4
Membre confirmé
 
Inscription : avril 2008
Messages : 233
Détails du profil
Informations personnelles :
Âge : 36

Informations forums :
Inscription : avril 2008
Messages : 233
Points : 216
Points : 216
Arrhhhh.... J'aime SAS....
C'est bien ça, merci Olivier !
green_fr est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/07/2008, 19h20   #5
Membre chevronné
 
Avatar de steelspirit
 
Inscription : janvier 2008
Messages : 420
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : janvier 2008
Messages : 420
Points : 739
Points : 739
Envoyer un message via MSN à steelspirit
oui c'est un problème récurrent de gestion concurrente

Moi je te conseil d'oublier les mstored, sasmstore et compagnie... il vaut mieux utiliser des %include dans l'autoexec pour compiler tes macros en live à l'ouverture de la session.
__________________
Avant de poser votre question, n'oubliez pas :
FAQ, SAS DOC et de ce forum
steelspirit est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/07/2008, 22h01   #6
Membre Expert
 
Inscription : mars 2005
Messages : 1 028
Détails du profil
Informations forums :
Inscription : mars 2005
Messages : 1 028
Points : 1 278
Points : 1 278
Envoyer un message via Yahoo à bahraoui
C'est ce que je fais moi aussi.
Attention à ne pas perdre les sources.(mstored...)
__________________
Consultez les FAQs et les anciens postes avant de poser vos questions. Merci
bahraoui est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 04h01.


 
 
 
 
Partenaires

Hébergement Web