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 :

Recuperer une valeur d'une table dans une macro variable


Sujet :

Macro

  1. #1
    Membre du Club
    Inscrit en
    Octobre 2005
    Messages
    47
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Octobre 2005
    Messages : 47
    Points : 46
    Points
    46
    Par défaut Recuperer une valeur d'une table dans une macro variable
    Bonjour,

    Voila j'essai en vain depuis le début de l'après-midi de récupérer une valeur dans une table SAS pour la stocker dans une macro variable.

    Je débute en SAS et j'ai encore les réflexes avec des langages plus classiques. Du coup, comme le fonctionnement de SAS est différent, j'ai du mal.

    Par exemple : j'ai une table contenant les infos suivantes :
    1 1000
    2 1500
    3 990
    ...
    10 1600

    Ce que je voulais créer, c'est un macro programme prenant en entrer un nombre de 1 à 10 et qui me renverrait la valeur correspondante pour que je puisse la sauvegarder dans une macro variable.

    Est-ce possible en SAS? Je suis un peu perturbé

  2. #2
    Membre actif
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    249
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 249
    Points : 290
    Points
    290
    Par défaut
    Bonjour,

    Plutôt que de relire sans cesse la table pour retrouver une seule valeur à la fois comme suggéré par le post, je proposerais de mettre, une fois pour toutes, l'ensemble des valeurs en macro-variables préfixées par "mv_cle" et suffixées par la clé elle-même...
    Il suffit alors pour retrouver la valeur de la clé 6 par exemple, de citer &mv_cle6 (ce qui doit rendre 8901 dans cet exemple...)
    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
    DATA work.test 
    	(label="Création du jeu de test")
    ;
    	input cle valeur ;
    	cards ;
    1 1000
    2 1500
    3 990
    4 123
    5 4567
    6 8901
    7 2
    8 34
    9 567
    10 1600
    	;
    RUN ;
    data _null_ ;
         set work.test ;
    	 /* Mettre chaque valeur dans une macro-variable mv_cle1 à mv_cle10 */
         call symput ("mv_cle"||compress(cle),compress(valeur)) ;
    RUN ;
    /* Pour contrôler les macro-variables crées dans le journal...*/
    %put _user_ ;
    /* Pour contrôler la valeur de la cle 6 dans le journal ...*/
    %put La clé 6 a pour valeur &mv_cle6 ;
    Bon courage !

  3. #3
    Membre du Club
    Inscrit en
    Octobre 2005
    Messages
    47
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Octobre 2005
    Messages : 47
    Points : 46
    Points
    46
    Par défaut
    Bonjour,


    Merci pour cet exemple qui m'a beaucoup aidé.

    En plus; je viens de comprendre l'intérêt des call symput (enfin je pense )

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

Discussions similaires

  1. [Débutant] recuperer 2 valeurs qui se trouve dans une table
    Par chuspyto dans le forum VB.NET
    Réponses: 2
    Dernier message: 06/05/2013, 20h22
  2. Réponses: 3
    Dernier message: 02/04/2008, 13h30
  3. Comment afficher une valeur de la table dans un Edit ?
    Par jojo86 dans le forum Bases de données
    Réponses: 15
    Dernier message: 15/01/2008, 08h58
  4. Réponses: 4
    Dernier message: 04/12/2007, 13h41
  5. [MySQL] Organiser les valeurs de 2 tables dans une liste de sélection
    Par domdas dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 12/08/2006, 08h51

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