Stocker et réutiliser un macro-programme
Il est simple d'utiliser un macro-programme. Encore faut-il que le compilateur
SAS reconnaisse cette macro ! Plusieurs cas de figure se présentent :
Vous écrivez une petite macro à usage unique ou presque
En ce cas le plus simple est de compiler la macro à chaque fois que vous
souhaitez l'utiliser. Cette manipulation crée une "macro compilée" qui est
placée dans un catalogue de nom "sasmacr" situé dans la WORK
(donc perdu à la fin de la session SAS). A chaque appel de la macro,
le compilateur va la chercher dans le catalogue en question.
Vous écrivez une macro à usage privé mais récurrent
En ce cas il peut être fastidieux de compiler la macro à chaque session SAS.
Il vaut mieux l'enregistrer dans un .sas et indiquer au logiciel
l'emplacement de ce fichier grâce à une instruction de session
option sasautos=.
Plus précisément :
- J'enregistre ma macro macro1512 dans un fichier qui porte le nom macro1512.sas !
- Je soumets (à chaque fois que je veux utiliser macro1512, mais une seule fois par session)
l'instruction suivante :
option sasautos = (sasautos, "c:\sas\mes_macros") ;
En supposant que mon fichier macro1512.sas se trouve dans le dossier c:\sas\mes_macros\.
Attention : Si vous modifiez le code de la macro, veillez à la recompiler,
car c'est toujours la version présente dans le sasmacr qui prime !
Vous écrivez une macro destinée à être utilisée par d'autres
En ce cas il n'est pas toujours souhaitable de fournir le code source.
La solution consiste à créer un catalogue de macros compilées,
puis à transmettre (ou utiliser soi-même) ce catalogue.
- Pour stocker une macro dans un catalogue :
Je soumets l'instruction de session suivante :
option sasmstore = lib
où lib est le nom de la librairie dans laquelle je veux placer mon catalogue
sasmacr de macros compilées.
J'ajoute une option /stored à la définition de mes macros et je compile
les macros avec cette option.
- Pour utiliser un catalogue de macros compilées :
Je soumets l'instruction de session suivante :
option sasmstore = lib
où lib est le nom de la librairie dans laquelle se trouve le catalogue sasmacr
des macros compilées.
J'appelle la macro tout simplement, avec les bons arguments...