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

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macro Discussion :

Macro-fonction avec nombre de paramètres non fixé


Sujet :

Macro

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Statisticien
    Inscrit en
    Août 2012
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Statisticien
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Août 2012
    Messages : 6
    Points : 7
    Points
    7
    Par défaut Macro-fonction avec nombre de paramètres non fixé
    Bonjour,

    voici mon problème :

    j'ai dans une macro variable disons "nbElements" le nombre de mes paramètres. Ainsi, à partir de ce nombre j'aimerais créer la macro suivante dans le cas où nbElements égal 3 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    %macro test(param1 =, param2 =, param3 =);
     
    %do i =1 %to &nbElements.;
    	%put &&param&i;
    %end;
     
    %mend;
    J'avais pensé à un truc du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    %macro test(%do i =1 %to nbElements; param&i =, %end;);
     
    %do i =1 %to &nbElements.;
    	%put &&param&i;
    %end;
     
    %mend;
    J'ai essayé de mettre cette macro à l'intérieur d'une autre mais pour le nom des paramètres SAS n'accepte pas les &, %...

    Je pense que ça doit être un problème classique donc si quelqu'un aurait une réponse...
    Merci d'avance.

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    747
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 747
    Points : 978
    Points
    978
    Par défaut
    classique car présent dans la doc avec un exemple en prime !!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
     Example 3: Using the %MACRO Statement with the PARMBUFF Option
     
    The macro PRINTZ uses the PARMBUFF option to enable you to input a different number of arguments each time you invoke it:
     
    %macro printz/parmbuff;
       %let num=1;
       %let dsname=%scan(&syspbuff,&num);
       %do %while(&dsname ne);
          proc print data=&dsname;
          run;
          %let num=%eval(&num+1);
          %let dsname=%scan(&syspbuff,&num);
       %end;
    %mend printz;
     
    This invocation of PRINTZ contains four parameter values, PURPLE , RED , BLUE , and TEAL although the macro definition does not contain any individual parameters:
     
    %printz(purple,red,blue,teal)
     
    As a result, SAS receives these statements:
     
    PROC PRINT DATA=PURPLE;
    RUN;
    PROC PRINT DATA=RED;
    RUN;
    PROC PRINT DATA=BLUE;
    RUN;
    PROC PRINT DATA=TEAL; 
    RUN;

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Statisticien
    Inscrit en
    Août 2012
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Statisticien
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Août 2012
    Messages : 6
    Points : 7
    Points
    7
    Par défaut
    Merci pour cette réponse ! Je vais regarder ça.

Discussions similaires

  1. Réponses: 4
    Dernier message: 22/01/2013, 12h01
  2. Réponses: 5
    Dernier message: 11/08/2011, 15h12
  3. [XSL] Calculer le nombre de paramètres non null
    Par tafkap dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 19/06/2007, 18h48
  4. Réponses: 9
    Dernier message: 15/05/2007, 13h41
  5. Réponses: 9
    Dernier message: 30/03/2006, 17h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo