Routines

Les routines CALL sont des procédures qui permettent l' interaction entre différentes étapes SAS ou entre différents environnements : lien entre étapes DATA et macro-variables, lien entre commandes DOS et programme SAS, résolution d'une macro-variable, etc.

La routine SYMPUT

Elle permet d'affecter à une macro-variable la valeur d'une variable créée par une étape DATA.
Si la macro-variable n'existe pas, la routine la crée.
La routine est particulièrement utile pour récupérer dans une macro-variable les statistiques calculées par des procédures statistiques.

Exemple :

Dans l'exemple ci-dessous la routine SYMPUT sert à récupérer la moyenne calculée par la PROC MEANS :

%macro moyenne (table, var) ;
  proc means data=&table mean ;
    var &var ;
    output out=temporaire mean=moy ;
  run ;
  data _null_ ;
    set temporaire ;
    call symput ( "moyenne", moy ) ;
  run ;
  %put La moyenne de &var est &moyenne ;
%mend ;

L'étape DATA ici ne sert qu'à copier la valeur de moy dans la macro-variable moyenne. Elle ne crée aucune table, d'où l'emploi du mot-clé _null_ (voir le paragraphe correspondant dans la partie "étape data").
Attention à la syntaxe de la routine ! Le premier argument doit être une chaîne de caractère contenant le nom de la macro-variable.

Une méthode équivalente pour réaliser cela est d'avoir recours à une proc sql :

%macro moyenne_v2 (table, var) ;
  proc sql ;
    select distinct mean(&var) into :moyenne from &table ;
  quit ;
  %put La moyenne de &var est &moyenne ;
%mend ;

On remarque que le programme est plus court, un point de plus en faveur de la proc sql (voir le paragraphe correspondant dans la partie "étape proc").
Ne pas oublier de préfixer le nom de la macro-variable par un " : ".
Note : Ici, l'appel de la routine n'est pas indispensable, puisque la proc sql va déjà imprimer le résultat dans l'output. Mais on peut sans peine imaginer un cas où la macro-variable moyenne servirait à autre chose qu'un simple %put...

La routine EXECUTE

Si l'on a défini une chaîne de caractères contenant une commande SAS, l'appel de la routine EXECUTE sur cette chaîne de caractères permet d'exécuter cette commande.

La routine SYSTEM

Elle permet d'exécuter une commande DOS à partir d'un macro-programme SAS, par exemple la création de fichiers, le déplacement dans l'arborescence des dossiers ou l'appel d'un programme exécutable.

Pour plus de détails, on se réfèrera à l'aide de SAS.