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 variable dans une declation %macro


Sujet :

Macro

  1. #1
    Membre à l'essai
    Macro variable dans une declation %macro
    Bonjour

    je souhaite créer une macro dont les parametres serait issus d'une macro variable

    quelques choses comme ceci pour résumé, mais hélas écrit comme cela ne fionctionne pas, une idée ?

    merci

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    %let param=%nrbquote(param1=ASAT,param2=ALAT);
     
    %macro testlab(&param,itemsup=);
    %put &param1 &param2;
    %mend;
     
    %testlab

  2. #2
    Membre éprouvé
    Bonjour,

    Je te propose cette solution:

    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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
     
     
    option symbolgen mprint; 
    data test;
    input var1 $;
    cards;
    a
    a
    b
    b
    b
    c
    c
    ;
    run;
     
     
    %let param=%bquote(param1=a,param2=b);
     
     
     
    %macro Liste();
     
       %let i = 1;
     
        %let param_&i = %scan(%scan(&param,&i,%str(%(,%))),2,%str(%(=%))); 
     
             %do %while (%str(&&param_&i) ne %str());
     
     
             %let i = %eval(&i+1);
     
            %let param_&i =%scan(%scan(&param,&i,%str(%(,%))),2,%str(%(=%)));
     
         %end;
     
     
    %put &PARAM_1;
     
    %put &PARAM_2;
     
    /*Exemple d'application*/
     
    	 data test1;
    	 set test(where=(var1="&param_1"));
    	 run;
     
    	 data test2;
    	 set test(where=(var1="&param_2"));
    	 run;
     
    %mend Liste;
     
    %Liste;


    Cordialement
    Certification des Talents de la programmation In Memory Statistics sur HADOOP:
    http://talents-imstat.groupe-avisia.fr/certifications/session-decembre-2015-niveau-avance?uid=162

###raw>template_hook.ano_emploi###