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 variable SAS


Sujet :

Macro

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Août 2007
    Messages
    248
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 248
    Points : 135
    Points
    135
    Par défaut macro variable SAS
    Bonjour,

    voilà 2 jours que je cherche à résoudre ce petit problème:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    %do i=1 to &nbvar;      /*&nbvar = 9 */
           &vars&i=var&i;
    %end;
     
    %put &vars9; /* m'affiche bien le contenu de &vars9*/
     
    %put &vars&nbvar ; /*ne fonctionne pas*/
    Quelqu'un a-t-il une solution? une idée? une petite idée?
    Un message de compassion au moins ?

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Août 2007
    Messages
    248
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 248
    Points : 135
    Points
    135
    Par défaut
    hum, il suffisait de rajouter un & à cety endroit:


  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Août 2007
    Messages
    248
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 248
    Points : 135
    Points
    135
    Par défaut
    En fait, ça ne marche plus dès que je m'interesse à:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    %put &vars%eval(&nbvar+1) ;
     
    (Ou %put &vars%sysevalf(&nbvar+1) ;
    Cela revient à demander:

    %put &vars10 qui fonctionne.

    En parcourant le forum, je m'aperçois que c'est peut être parce que ma variable n'est pas déclarée comme globale mais cela ne fonctionne toujours pas lorsque je le fais...

  4. #4
    Expert confirmé
    Avatar de olivier.decourt
    Homme Profil pro
    Formateur R/SAS/statistiques
    Inscrit en
    Avril 2008
    Messages
    2 064
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Activité : Formateur R/SAS/statistiques
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 064
    Points : 4 478
    Points
    4 478
    Par défaut
    Encore une question de && !
    Petit rappel des règles d'interprétation par le compilateur macro :
    1. une expression est lue de gauche à droite
    2. chaque motif reconnu est remplacé par sa valeur, et considéré comme traité jusqu'à la lecture suivante
    3. &nomMv --> valeur de la macro-variable nomMv
    4. &nomMv. --> valeur de la macro-variable nomMv
    5. && --> &
    6. texte sans & --> le même texte
    7. si, après l'ensemble des transformations, le résultat contient encore des &, alors on relit à partir de la gauche

    Dans ton cas, ça ferait :
    &&vars%eval(&nbvar+1)
    && --> & (règle 5)
    vars --> vars (règle 6)
    %EVAL(&nbVar+1) --> 9+1 --> 10 (règle 3 pour &nbVar puis application immédiate de %EVAL qui est prioritaire en tant que macro-fonction)

    Reste au final &vars10 et en vertu de la règle 7, on relit pour faire ce que tu veux.

    Avec un seul & au début, il va sauter sur &vars, et chercher une macro-variable qui s'appelle VARS. D'où des erreurs ou au moins des Warning s'il ne la trouve pas.

    Olivier

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Valeurs d'une macro-variable dans une table SAS
    Par patril dans le forum Macro
    Réponses: 2
    Dernier message: 03/08/2011, 13h23
  2. Réponses: 10
    Dernier message: 01/03/2010, 17h06
  3. [SAS 9.2] Call SymputX : macro-variable non créee
    Par Filippo dans le forum Macro
    Réponses: 2
    Dernier message: 14/01/2010, 11h40
  4. Réponses: 5
    Dernier message: 16/09/2008, 17h28
  5. Réponses: 3
    Dernier message: 03/09/2008, 15h47

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