FAQ SASConsultez toutes les FAQ

Nombre d'auteurs : 13, nombre de questions : 308, dernière mise à jour : 5 avril 2016  Ajouter une question

 

Cette F.A.Q., qui traite de tout type de questions portant sur l'outil SAS, a été réalisée à partir des contributions des membres des forums sas de developpez.com en vue de répondre à des questions fréquemment posées par les utilisateurs et grâce à SAS France qui a bien voulu nous donner accès à ses sources.

Si vous désirez contribuer à l'amélioration de cette F.A.Q., vous pouvez participer au billet de participation à l'enrichissement de la faq SAS , ou contacter le responsable SAS , ou contacter un des responsables de l'équipe Business Intelligence .

Nous espérons que cette F.A.Q. saura répondre à un maximum de vos questions. Nous vous souhaitons une bonne lecture.

L'équipe SAS de developpez.com remercie les contributeurs actuels : ash_rmy , bahraoui , datametric , fafabzh6 , Fleur-Anne.Blain , green_fr , oncle_pete , raf64flo , rastoix , s_a_m et steelspirit .

L'équipe SAS de developpez.com remercie aussi claudeLeloup et jacques_jean pour leurs relectures attentives de la F.A.Q. dans le but de chasser les fautes d'orthographes.


SommaireLangage Macro Macroprogrammes (4)
précédent sommaire suivant
 

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

Code sas : Sélectionner tout
1
2
3
4
5
6
%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 :

Code sas : Sélectionner tout
%test(maTable);
  • cliquer sur F8 pour exécuter (utiliser) votre macroprogramme.

Mis à jour le 1er mars 2008 fafabzh6

Pour sauvegarder un macroprogramme vous devez utiliser les options MSTORED et STORE. Pour sauvegarder votre macroprogramme dans un espace de travail défini par une bibliothèque SAS vous devez ajouter l'option SASMSTORE.

Le code ci-dessous illustre cette notion :

Code sas : Sélectionner tout
1
2
3
4
5
LIBNAME monEsp "c:/"; 
OPTION MSTORED SASMSTORE=monEsp; 
%MACRO test / STORE; 
%PUT Hello; 
%MEND;

Mis à jour le 1er mars 2008 fafabzh6

Voici comment sécuriser votre code enregistré dans un macroprogramme. Ceci fonctionne en 9.1 et 9.2.

Les résultats des étapes désignées par "la lecture du contenu " sont visibles dans la LOG.

Compilation du code :

Code sas : Sélectionner tout
1
2
3
4
5
6
7
8
options mstored sasmstore=sasuser; 
  %macro nonsecure/store; /* La macro est visible */ 
    DATA _null_; 
      x=1; 
      put "Cette macro est générée SANS protection"; 
    run; 
  %mend nonsecure; 
  %nonsecure
Lecture du contenu :

Code sas : Sélectionner tout
1
2
3
4
5
6
 filename maccat catalog 'sasuser.sasmacr.nonsecure.macro'; 
  DATA _null_; 
    INFILE maccat; 
    input; 
    list; 
  run;
Compilation du code :

Code sas : Sélectionner tout
1
2
3
4
5
6
7
%macro secure/store secure; /* Cette macro est chiffrée */ 
    data _null_; 
      x=1; 
      put "Cette macro est générée AVEC protection."; 
    run; 
  %mend secure; 
  %secure
Lecture du contenu :

Code sas : Sélectionner tout
1
2
3
4
5
6
filename maccat catalog 'sasuser.sasmacr.secure.macro'; 
  DATA _null_; 
    INFILE maccat; 
    input; 
    list; 
  run;

Mis à jour le 15 novembre 2011 datametric

Lorsque vous programmez un macroprogramme, il se peut que vous souhaitiez récupérer le traitement de ce macroprogramme dans une macrovariable spécifique. Il faut préciser ceci dans le macroprogramme en rajoutant simplement ce que l'on veut récupérer ainsi :

Code sas : Sélectionner tout
1
2
3
4
5
6
7
%macro concat(var1,var2); 
*Traitement des macrovariables placées en paramètres, par exemple une concaténation ; 
%let tmp1 =%sysfunc(compress(&var1,%str(%"))); 
%let tmp2 =%sysfunc(compress(&var2,%str(%"))); 
%put "&tmp1,&tmp2"; *Affiche le résultat de la concaténation des macrovariables temporaires tmp1 et tmp2; 
"&tmp1,&tmp2"; *Précise les éléments à renvoyer par le macroprogramme; 
%mend;
Il est possible d'attribuer le résultat directement à une autre macrovariable avec la commande suivante :

Code sas : Sélectionner tout
%let maVarResultat = %concat(&var1,&var2);
On peut ensuite réutiliser la variable :

Code sas : Sélectionner tout
1
2
3
4
%let var1 = "Hello"; 
%let var2 = "World"; 
%let maVarResultat = %concat(&var1,&var2); 
%put Le résultat renvoyé par la macro '%concat' est : &maVarResultat;
Affiche : "Hello,World"

Mis à jour le 27 mai 2008 raf64flo

Proposer une nouvelle réponse sur la FAQ

Ce n'est pas l'endroit pour poser des questions, allez plutôt sur le forum de la rubrique pour ça


Réponse à la question

Liens sous la question
précédent sommaire suivant
 

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 © 2020 Developpez Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et 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.