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 :

Utiliser le contenu d'une macro variable


Sujet :

Macro

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    526
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 526
    Points : 224
    Points
    224
    Par défaut Utiliser le contenu d'une macro variable
    Salut,

    Je dispose d'une matrice de taille 4*2 qui s'appelle couple.

    J'ai construit 4 vecteur G1-G4 initialisé chacun à 1 éléments.

    J'ai defini une macro variable ind:
    %let ind=couple[1,3] qui va donc contenir une valeur particulière de la matrice;

    Je voudrais savoir pourquoi la commande:

    print G&ind. ne marche pas?

    Merci.

  2. #2
    Membre émérite

    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Mars 2005
    Messages
    1 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 364
    Points : 2 329
    Points
    2 329
    Par défaut
    Est ce que tu utilises ton code dans une macro?

    %let ind=couple[1,3] => affectation d'une chaine de caractère à la macro variable.

    pour afficher une macro variable, il faut utiliser un %put.

  3. #3
    Membre actif

    Profil pro
    Inscrit en
    Avril 2008
    Messages
    233
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 233
    Points : 254
    Points
    254
    Par défaut
    Voici un exemple simplifié d'utilisation de référence indirect des variables macros :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    %let G1=toto;
    %let i = 1;
    %put &&G&i..;
    Est-ce que c'est ça ton problème ?

  4. #4
    Membre actif
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    526
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 526
    Points : 224
    Points
    224
    Par défaut
    Ok pour le %put et oui je travaille dans une macro.

    Cependant, c'est l'utilisation de la commande G&ind. qui pose problème.
    Je vois que je n'arrive à récuperer que G.couple[1,3] alors que je voudrais récupérer le contenu de couple[1,3] cad par exemple G1 si couple[1,3]=1;

    Merci.

  5. #5
    Membre émérite

    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Mars 2005
    Messages
    1 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 364
    Points : 2 329
    Points
    2 329
    Par défaut
    Tu ne peux pas utiliser les indices i,j pour accéder à des valeurs dans une étape data ou dans des macros (à l'exception de l'iml qui permet cela).

    couple c'est un tableau?
    si oui
    Une manière d'accéder à la valeur que tu cherches
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    data _null_; set couple;
    if _n_=3 then call symput('ind',nom de la colonne1);
    run;
    %put &ind;

  6. #6
    Membre émérite

    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Mars 2005
    Messages
    1 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 364
    Points : 2 329
    Points
    2 329
    Par défaut
    %let ind=couple[1,3]
    Cette syntaxe ne te permet d'extraire la valeur de la cellule du tableau.
    C'est tout simplement une affectation de la chaine couple[1,3] à la macro variable ind.

  7. #7
    Membre actif
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    526
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 526
    Points : 224
    Points
    224
    Par défaut
    Oui couple c'est une matrice c'est pour cela que j'utilise les indices mais quand je fait %put G&.ind1. ou &G&ind1. ou &G&ind1.. je n'arrive pas à récuperer la valeur de la matrice et je voudrais savoir comment faire.

  8. #8
    Membre émérite

    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Mars 2005
    Messages
    1 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 364
    Points : 2 329
    Points
    2 329
    Par défaut
    De cette manière tu crées les macros variables que tu souhaites.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    DATA _null_; SET couple;
    call symput('ind'||left(trim(_n_),nom de la colonne1);
    run;
    %put &&ind&i;

  9. #9
    Membre actif
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    526
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 526
    Points : 224
    Points
    224
    Par défaut
    Le problème c'est que je suis dans une proc iml et je ne peux pas introduire d'étape data.

    Il faudrait que je puisse récupérer la valeur de la matrice et qu'il ne la considère plus comme une chaine de charactères.

Discussions similaires

  1. Réponses: 40
    Dernier message: 04/11/2016, 17h28
  2. Réponses: 4
    Dernier message: 13/02/2014, 15h54
  3. Utiliser la valeur numérique d'une macro-variable?
    Par Laurent Q. dans le forum Macro
    Réponses: 4
    Dernier message: 14/12/2011, 17h17
  4. Utilisation du contenu d'une variable
    Par titan66 dans le forum ActionScript 3
    Réponses: 4
    Dernier message: 11/04/2011, 08h31
  5. Réponses: 4
    Dernier message: 01/04/2010, 15h20

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