FAQ SASConsultez toutes les FAQ
Nombre d'auteurs : 14, nombre de questions : 232, dernière mise à jour : 20 décembre 2012
- Comment procéder pour que plusieurs utilisateurs puissent accéder de façon simultanée à un catalogue de macroprocédures compilées ?
- Comment créer une boucle avec un incrément décimal ?
- Quelle est la différence entre les notions de macro, macrovariable, macroprogramme et macrofonction ?
- À quoi sert une macrovariable ?
- À quoi sert un macroprogramme ?
En ajoutant l'option access=readonly au niveau de la définition de la bibliothèque où est stocké le catalogue SASMACR.
Classiquement la réponse à cette question devrait à peu près être équivalente à une boucle DO soit :
%DO
i=
1 %TO 10 %BY 0.
1
%END
;
Cependant les boucles %DO n'acceptent, contrairement aux boucles DO, que des incréments entiers. Pour résoudre ce problème, on peut utiliser le code suivant :
%macro
test;
%let
i=
1;
%do
%until
( &i >
=
5);
%put
&i;
%let
i =
%sysevalf(&i+
0.
1);
%end
;
%mend
;
%test;
1) Une macrovariable est variable informatique créée par le logiciel SAS. Les macrovariables ne possèdent qu'un seul type, le type caractère.
Certaines macrovariables sont créées automatiquement par le logiciel SAS et d'autres peuvent être créées par l'utilisateur.
Exemple :
%LET
maVar=
World;
La macrovariable "maVar" contient la chaîne de caractères "Hello".
Pour faire référence à une macrovariable vous devez la faire précéder du caractère "&".
2) Une macrofonction est une fonction pouvant être utilisée dans l'environnement macro du logiciel SAS. Une macrofonction commence toujours par le caractère '%'.
Exemple :
%PUT
Hello;
La macrofonction %PUT indique au logiciel SAS qu'il doit "imprimer" ce qui suit la fonction dans la fenêtre "Journal", soit "Hello".
%PUT
Hello &maVar;
La macrofonction %PUT affiche dans la fenêtre "Journal" "Hello World".
3) Un macroprogramme (ou macro) est un programme créé par un utilisateur. Ce programme ne peut être utilisé que dans l'environnement macro du logiciel SAS.
Un macroprogramme commence toujours par le mot "%MACRO" et finit toujours par le mot "%MEND;"
/*
Elles
commencent
par
*/
%MACRO
maMacro;
/*
et
finissent
par
*/
%MEND
;
Une macrovariable sert à stocker une information pour pouvoir la réutiliser.
Une macrovariable peut être initialisée par un %LET ou par un CALL SYMPUT dans une table.
%LET
maVar=
base;
PROC
PRINT data
=
&maVar;
RUN
;
DATA
res;
SET
base;
CALL
SYMPUT('
MaVar
'
_
N_
,var
);
RUN
;
Dans le dernier exemple, on va créer autant de macrovariables que de valeurs de la variable 'var'.
Si 'var' prend 10 valeurs MaVar1 prendra la première valeur de var, MaVar2 prendra la 2ème valeur de var, ..., MaVarn prendra la nième valeur de var.
Il est important de signaler que les macrovariables sont des valeurs stockées en mémoire et non pas dans des tables.
Un macroprogramme sert à automatiser une suite de tâches récursives.
%MACRO
test(var
);
proc
PRINT DATA
=
&var
;
run
;
proc
means data
=
&var
;
run
;
%MEND
test;
Pour utiliser votre macroprogramme vous devez :
- sélectionner le code de votre macroprogramme ;
- cliquer sur F8 pour compiler votre macroprogramme ;
- taper le code ci-dessous :
%test(maTable);
- cliquer sur F8 pour exécuter (utiliser) votre macroprogramme.