Construire un macro-programme

Les arguments d'un macro-programme

Les macros peuvent prendre un ou plusieurs arguments, précisés entre parenthèses derrière le nom de la macro, et séparés par des virgules. On peut leur faire prendre une valeur par défaut, en écrivant :
Mon_argument = ma_valeur_par_défaut.

Exemple :

%macro madeuxiememacro (table, stats = mean std) ;
  data &table. ;
    set &table. ;
    txemploi = nbemplois / nbhabitants ;
  run ;
  proc means data=&table. &stats. ;
    var txemploi ;
  proc boxplot data=&table. ;
    format nbhabitants taille. ;
    plot txemploi*nbhabitants ;
  run ;
%mend ;

Dans cet exemple, madeuxiememacro prend deux arguments :

Règle générale :

Lors de l'appel de la macro :

De plus, les arguments sans valeur par défaut :

Exemple :
%madeuxiememacro (malib.matable) ;
ou :
%madeuxiememacro (malib.matable, stats = sum mean std) ;

Cette particularité permet d'introduire des paramètres qui servent rarement, sans que l'utilisateur ait à les renseigner à chaque appel de la macro.

Les instructions conditionnelles et itératives

Le corps d'une macro est constitué d'une succession de programmes SAS classiques, à savoir des étapes DATA et des étapes PROC.
Il est possible de faire des boucles comme celles présentées dans le paragraphe "Boucles DO et conditions IF" de la partie I. Les syntaxes sont modifiées comme suit :

%DO...%END
%DO...%TO...%END
%DO...%WHILE...%END

%IF...%THEN...%ELSE

L'instruction %PUT

Elle permet d'afficher un message dans la LOG.

Exemple :
%let toto = 2 ;
%put la valeur de toto est : &toto. ;
la LOG affichera le message suivant : la valeur de toto est 2