top of page

MACRO-PROGRAMMES

Les macro-programmes servent à automatiser les programmes. C'est un quelque sorte l'équivalent des fonctions dans les autres langages informatiques. 

Exemple d'utilisation de macro-programmes :

Un Data Manager doit réaliser une analyse statistique de la banque A. Sachant, que la même analyse va lui être demandée pour les banques B, C et D. Il souhaite automatiser son programme et va donc utiliser un macro-programme.

La création d'un macro-programme commence toujours par l'instruction %MACRO et se termine toujours par l'instruction %MEND.

La syntaxe est la suivante :

%MACRO NomProgramme(Parametre1, Parametre2, ParametreN);

Code

%MEND NomProgramme;

Exemple :

%MACRO progA(maVar1); /* Création du macro-programme nommé progA qui a comme paramètre la macro-variable nommée maVar1. */

%LET maVar2=&maVar1.Stid;

%PUT &maVar1;

%PUT &maVar2;

%MEND progA; /* Ne pas oubliez le nom du macro-programme après l'instruction %MEND. */

Pour utiliser un macro-programme il faut précéder le nom du macro-programme par le caractère %.

%progA(Hello); /* On remplace le paramètre par la valeur qu'il doit prendre. */

/* Ce macro-programme affiche le contenu de la macro-variable maVar1, soit Hello, puis affiche le contenu de la macro-variable maVar2 soit HelloStid. */

Autre exemple : 

%MACRO analyse(table,stat,var);

PROC MEAN DATA=&table &stat;

VAR &var;

RUN;

%MEND analyse;

%analyse(Table1,MEAN,taille);

À savoir : un macro-programme n'est pas obligé d'avoir de paramètre.

Un macro-programme peut avoir 4 types de paramètres :

- Paramètres positionnels : lors de l'utilisation de macro-programmes définis à l'aide de paramètres   positionnels (macro-programme présentés au dessus), la position des paramètres doit être dans le   même ordre que celui définit lors de leur création.

- Paramètres mots clés : ils permettent la définition de valeurs par défaut pour un ou des paramètres d'un    macro-programme.

%MACRO progB(maVar1=,maVar2=,maVar3=Stid); /* Le macro-programme a 3 paramètres (maVar1, maVar2 et maVar3). La macro-variable nommée maVar3 a par défaut la valeur Stid. */

%PUT &maVar1

%PUT &maVar2;

%PUT &maVar3;

%MEND progB;

%progB(maVar1=Hello,maVar2=Lisieux); /* Utilisation du macro-programme avec les mots Hello et Lisieux. Affiche Hello Lisieux Stid. */

Lors de l'utilisation du macro-programme, libre à vous de changer ou non la valeur du paramètre défini par défaut.

- Paramètres mixtes : ils combinent les paramètres positionnels et mots clés. Les paramètres positionnels doivent être déclarés avant les paramètres mots clés.

%MACRO progC(maVar1,maVar2,maVar3=Stid); /* maVar1 et maVar2 sont des paramètre positionnels et maVar3 est un paramètre mot clé. */

%PUT &maVar1;

%PUT &maVar2;

%PUT &maVar3;

%MEND progC;

%progC(Hello,Lisieux); /* Utilisation du macro-programme avec les mots Hello et Lisieux. Affiche Hello Lisieux Stid. */

- Paramètres non fixés à l'avance : quand on ne connait pas à l'avance les paramètres que l'on souhaite utilisés. On l'utilise donc l'option PARMBUFF. Ces types de paramètres sont assez compliqués, c'est pourquoi il ne sont pas beaucoup utilisés.

%MACRO autoBanque/PARMBUFF; /* L'option PARMBUFF indique que les paramètres vont être stockés dans la macro-variable syspbuff (syspbuff est un mot clé SAS, il ne faut pas changer son nom). */

%LET base=&SCAN(&syspbuff,1); /* Le paramètre nommé base prendra la valeur du 1er élément de la macro-variable syspbuff. */

%LET compte=&SCAN(&syspbuff,2); /* Le paramètre nommé compte prendra la valeur du 2ème élément de la macro-variable syspbuff. */

PROC PRINT DATA=&base; /* Affiche la table dont le nom est enregistré dans la macro-variable base. */

RUN;

%PUT &compte;

%MEND autoBanque;

 

 

%autoBanque(banqueB, compteB); /* Utilisation du macro-programme avec les mots banqueB et compteB. Ce sont les deux éléments contenus dans la macro-variable syspbuff. */

Pour déboguer un macro-programme, on doit utilisez les options de débogage intitulées MPRINT, MLOGIC, SYMBOLGEN.

OPTIONS MPRINT MLOGIC SYMBOLGEN; /* Instructions à insérer à la première ligne du programme SAS. */

MPRINT : donne le code SAS détaillé, instruction par instruction.

MLOGIC : affiche dans le journal tous les détails des opérations faites par le macro-programme (valeurs des paramètres, instructions …).

SYMBOLGEN : affiche un message à chaque application d’une macro-variable.

Si l'on souhaite que SAS enregistre automatiquement nos macro-programmes dans une bibliothèque, il faut utiliser les instructions OPTIONS MSTORED SASMSTORE.

OPTIONS MSTORED SASMSTORE=MaBiblio; /* MSTORED et SASMSTORE permettent d'utiliser et de stocker les macro-programmes, que l'on va créer, dans la bibliothèque nommée MaBiblio. */

Enfin, lors de l'écriture du macro-programme, il faudra ajouter l'option STORE pour que le macro-programme soit enregistré dans notre bibliothèque.

%MACRO progA(maVar1)/STORE;

bottom of page