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 :

Call symput en macro


Sujet :

Macro

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2010
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 23
    Points : 20
    Points
    20
    Par défaut Call symput en macro
    Bonjour,

    voici mon problème :
    pour plusieurs cibles d'une table, je veux mettre en macro-variable les valeurs 1 et 2 associés à cette cible :

    %macro calcul(cible,var1,var2);
    data _null_;
    set table;
    if id_cible=&cible then %do;
    call symputx(&var1,var_valeur1);
    call symputx(&var2,var_valeur2);
    %end;
    run;
    %mend pour_var_comp;

    %calcul('cible1',val1_1,val2_1);
    %calcul('cible2',var1_2,var2_2);
    ...
    Quand je fait un %put &val1_1 &var1_2; il m'affiche &var1 &var2 or je veux en mémoire les valeurs des var_valeur1 et var_valeur2.
    Que faire? Merci !

  2. #2
    Membre actif
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    161
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 161
    Points : 224
    Points
    224
    Par défaut
    bonjour,

    est ce vraiment le code que tu as écrit.

    Il y a à la fois du % pour le langage macro & sans % dans la condition if.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if id_cible=&cible then %do;
    call symputx(&var1,var_valeur1);
    call symputx(&var2,var_valeur2);
    %end;

    Essaie donc qqch comme çà.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    data _null_;
       set table (where=(id_cible=&cible));
       call symput(&var1,var_valeur1);
       call symput(&var2,var_valeur2);
    run;
    .

  3. #3
    Membre régulier
    Inscrit en
    Novembre 2008
    Messages
    86
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 86
    Points : 83
    Points
    83
    Par défaut
    je ne crois pas que tu peux utiliser
    dans une macro !!!!!!


    Essaye cela ça pourra te donner une idée comment tu pourras faire.
    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
     
     
    DATA table;
    INPUT id_cible $ ;
    CARDS;
    cible1
    cible2
    ;
    run;
     
     
    DATA _null_;
       SET table ;
       if id_cible='cible1' then   call symputx('var1',trim(left(_N_)));
       else if id_cible='cible2' then   call symputx('var2',trim(left(_N_)));
    run;
     
     
    %put &var1 ;
    %put &var2 ;

Discussions similaires

  1. call symput et macro-variable
    Par fafabzh6 dans le forum Macro
    Réponses: 2
    Dernier message: 11/12/2009, 10h15
  2. call symput dans une macro
    Par Manoutz dans le forum Macro
    Réponses: 8
    Dernier message: 29/06/2009, 08h46
  3. [Macro] la macro call symput
    Par r_dani dans le forum Macro
    Réponses: 2
    Dernier message: 17/10/2008, 15h03
  4. Réponses: 4
    Dernier message: 10/07/2008, 15h51
  5. macro avec call symput
    Par kabstat dans le forum Macro
    Réponses: 14
    Dernier message: 04/07/2008, 23h08

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