SAS expert
Objectifs pédagogiques
- Découvrir les principaux éléments du macro-langage SAS
- Comprendre et écrire un macro-programme
Programme détaillé
La formation est consacrée à l’apprentissage du macro-langage de SAS (présentation de la logique du macro-langage et des instructions de base), et à la mise en œuvre du macro-langage par les stagiaires, sous la forme d’exercices d’application.
Le macro-langage est un langage de programmation qui améliore les possibilités du langage de base, en permettant de simplifier l’écriture des applications répétitives, et l’utilisation de programmes paramétrés.
Les utilisations du macro-langage 15 min
- Paramétrage de programmes, exécution conditionnelle d’étapes SAS, automatisation de programmes…
Le principe de la compilation 15 min
- Le fonctionnement du macro-processeur
Les macros-variables et les macro-fonctions 4h30
- Les macro-variables système et utilisateur
- Les macro-instructions de base %LET et %PUT
- Les macro-fonctions de manipulation de caractères
- Les macro-fonctions d’évaluation numérique
- Les macro-fonctions de “quoting”
Les macros-programmes 6h
- Écriture d’une macro, les paramètres, l’environnement global ou local
- Etape DATA et macro-langage : CALL SYMPUTX() et SYMGET
- Les options d’aide pour le “debugging”
- Expressions logiques et boucles
Les techniques de stockage 1h
- Appel d’une macro, compilation, stockage
Public visé
Toute personne souhaitant développer une utilisation avancée de SAS : statisticiens, chargés d’études statistiques, data analysts…
Prérequis
Parmi nos formations au logiciel SAS, cette formation est le niveau 3. Elle requiert une bonne maîtrise et une utilisation régulière du logiciel SAS (contenu des formations niveau 1 - SAS initiation et niveau 2 - SAS intermédiaire).
Approche pédagogique
Calculés à partir de 39 avis recueillis depuis 10/06/2016, lors de 7 sessions de cette formation.
Macro-langage SAS : un langage qui écrit du code avant son exécution
La plupart des difficultés du macro-langage SAS viennent d’une seule idée, rarement formulée explicitement : il ne manipule pas des données, il manipule du texte. Le macro-processeur intervient avant la compilation, résout les références &variable et les appels %macro, et transmet au compilateur un programme SAS ordinaire. Une fois ce principe compris, la plupart des erreurs déroutantes s’expliquent.
Avant, après
Trois années de ventes à résumer, et le même bloc copié trois fois :
proc means data=ventes_2023; var montant; run;
proc means data=ventes_2024; var montant; run;
proc means data=ventes_2025; var montant; run;
Avec une macro paramétrée, le code n’est écrit qu’une fois, et l’ajout d’une année ne demande qu’un argument :
%macro resume(debut, fin);
%do annee = &debut %to &fin;
proc means data=ventes_&annee;
var montant;
run;
%end;
%mend resume;
%resume(2023, 2025)
La boucle %DO ne s’exécute pas sur les données : elle génère trois étapes PROC MEANS, que SAS exécute ensuite comme si on les avait tapées.
Trois pièges qui découlent du même principe
- Une macro-variable contient du texte. Après
%let total = 1 + 1;, la valeur de&totalest la chaîne « 1 + 1 », pas 2. Le calcul demande%EVAL, qui ne connaît que les entiers :%eval(7/2)vaut 3. Pour les décimales, il faut%SYSEVALF. - Les apostrophes bloquent la résolution. Dans
title "Ventes &annee";, la référence est remplacée par sa valeur ; entre apostrophes simples,'Ventes &annee'reste tel quel. - Le moment de la résolution compte. Une macro-variable créée par
CALL SYMPUTXpendant une étape DATA n’existe qu’à l’exécution. Or les références&de cette même étape ont été résolues avant, à la compilation : il faut attendre l’étape suivante, ou lire la valeur avec la fonctionSYMGET.
Voir le code généré
Puisque le macro-langage fabrique du code, déboguer consiste à regarder ce qu’il a fabriqué. Les options MPRINT (instructions générées), SYMBOLGEN (valeur de chaque référence résolue) et MLOGIC (déroulement des conditions et des boucles) l’affichent dans le journal :
options mprint symbolgen mlogic;
Pour accélérer des programmes qui manipulent de grosses tables, la formation Optimisation du code et des temps d’exécution avec SAS traite de l’indexation et des tables de hachage.