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 LangageMacroprogrammes

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 :

 
Sélectionnez

LIBNAME monEsp "c:/";
OPTION MSTORED SASMSTORE=monEsp;
%MACRO test / STORE;
%PUT Hello;
%MEND;
Mis à jour le 10 octobre 2011  par 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 :

 
Sélectionnez

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 :

 
Sélectionnez

 filename maccat catalog 'sasuser.sasmacr.nonsecure.macro';
  DATA _null_;
    INFILE maccat;
    input;
    list;
  run;

Compilation du code :

 
Sélectionnez

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

 
Sélectionnez

filename maccat catalog 'sasuser.sasmacr.secure.macro';
  DATA _null_;
    INFILE maccat;
    input;
    list;
  run;
Créé le 15 novembre 2011  par 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 :

 
Sélectionnez

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

 
Sélectionnez

%let maVarResultat = %concat(&var1,&var2);

On peut ensuite réutiliser la variable :

 
Sélectionnez

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

Créé le 27 mai 2008  par raf64flo
  

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.