IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

FAQ SASConsultez toutes les FAQ

Nombre d'auteurs : 14, nombre de questions : 232, dernière mise à jour : 20 décembre 2012 

 
OuvrirSommaireMacro LangageMacro Langage Généralités

En ajoutant l'option access=readonly au niveau de la définition de la bibliothèque où est stocké le catalogue SASMACR.

Créé le 10 octobre 2008  par SAS

Classiquement la réponse à cette question devrait à peu près être équivalente à une boucle DO soit :

 
Sélectionnez

%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 :

 
Sélectionnez

%macro test;
%let i=1;
%do %until ( &i >= 5);
    %put &i;
    %let i =%sysevalf(&i+0.1);
%end;
%mend;
%test;
Créé le 10 octobre 2008  par fafabzh6

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 :

 
Sélectionnez

%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 :

 
Sélectionnez

%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".

 
Sélectionnez

%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;"

 
Sélectionnez

/*Elles commencent par*/
%MACRO maMacro; 
/*et finissent par*/
%MEND;
Mis à jour le 10 octobre 2011  par fafabzh6

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.

 
Sélectionnez

%LET maVar=base;
PROC PRINT data=&maVar;
RUN;
 
Sélectionnez

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.

Créé le 1er mars 2008  par fafabzh6

Un macroprogramme sert à automatiser une suite de tâches récursives.

 
Sélectionnez

%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 :
 
Sélectionnez

%test(maTable);
  • cliquer sur F8 pour exécuter (utiliser) votre macroprogramme.
Créé le 1er mars 2008  par fafabzh6
  

Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2011 Developpez Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site ni de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.