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 :

Passer une table en parametre et acceder aux valeurs de la table


Sujet :

Macro

  1. #1
    Candidat au Club
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Mai 2015
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2015
    Messages : 5
    Points : 4
    Points
    4
    Par défaut Passer une table en parametre et acceder aux valeurs de la table
    Bonjour,

    Je voudrai savoir si c'est possible de passer une table de donnée en paramètre d'une macro .
    par exemple une table de ce genre :

    Libellé val1 val2 val3 val4 val5
    Agi a10 a13 a16 a18
    bez a20 a22 a24 a26 a27
    gmi a30 a33 a35 a36 a39
    toh a42 a44 a45 a46 a47

    Ensuite je veux parcourir cette table et afficher les valeurs de chaque libellé.

    Je suis débutante en sas et je ne sais pas comment s'y prendre.

    Merci d'avance pour vos réponse.

  2. #2
    Membre éprouvé
    Avatar de Haache
    Homme Profil pro
    Doctorant & Ingénieur Statiaticien Economiste
    Inscrit en
    Mars 2014
    Messages
    349
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : Canada

    Informations professionnelles :
    Activité : Doctorant & Ingénieur Statiaticien Economiste

    Informations forums :
    Inscription : Mars 2014
    Messages : 349
    Points : 1 009
    Points
    1 009
    Billets dans le blog
    8
    Par défaut
    Bonjour. Je propose ce code

    1- Je crée d'abord une table à l'aide de votre exemple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    data test;input Libelle$ val1$ val2$ val3$ val4$ val5$;
    cards; 
    Agi a10 a13 a16 a18 
    bez a20 a22 a24 a26 a27
    gmi a30 a33 a35 a36 a39
    toh a42 a44 a45 a46 a47
    ;
    run;
    2- Ce code ci-dessous permet de créer des variables macros Lib1 Lib2 Lib3 .... telle qu'a chaque variable macro on assigne la valeur prise par la variable Libelle. C'est à dire que Lib1=Agi, Lib2=Bez, Lib3=gmi etc
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    data _null_;set test;
    call symput (compress("Lib"||_n_),Libelle);
    run;
    Pour tester, exécuter le code suivant. Il affiche la valeur prise par la macro variable concernée dans le journal de votre SAS

    Maintenant ça dépend de ce que vous voulez en faire. Vous pouvez poser d'autres questions si vous avez des inquiétudes
    • Faites un tour sur mon siteweb professionnel www.aristideelysee.16mb.com Des codes dans la section "media et code" pouvant vous aider que vous pouvez aussi partager sur les réseaux sociaux.
    • Visiter mon blog en cliquant ici! Des techniques, astuces et macros pour l'analyse quantitative.

  3. #3
    Candidat au Club
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Mai 2015
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2015
    Messages : 5
    Points : 4
    Points
    4
    Par défaut
    Bonjour HAACHE,

    Merci beaucoup pour ta réponse précise. Elle répond exactement à ma question.
    J'ai réussi à faire ce que je voulais .
    Maintenant, je veux pour chaque libellé récupéré les valeurs correspondantes.
    Exemple pour le libellé 2 , avoir les valeurs a20 a22 a24 a26 a27
    Ensuite passé au libellé suivant et obtenir ses valeurs....
    En effet les valeurs des libelle sont des tables.
    Je veux parcourir chaque libellé et trier les tables qu'il contient.



    Encore une foie merci beaucoup.

  4. #4
    Membre éprouvé
    Avatar de Haache
    Homme Profil pro
    Doctorant & Ingénieur Statiaticien Economiste
    Inscrit en
    Mars 2014
    Messages
    349
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : Canada

    Informations professionnelles :
    Activité : Doctorant & Ingénieur Statiaticien Economiste

    Informations forums :
    Inscription : Mars 2014
    Messages : 349
    Points : 1 009
    Points
    1 009
    Billets dans le blog
    8
    Par défaut
    Ok je vois.
    On complique un peu mais c'est toujours facile

    1- On réexécute le premier code de mon message précédent pour créer la table test

    2- On crée alors des macros variables pour chacune des variables
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    data _null_;set test;
    call symput ("Nbr",_n_); /*Récupérer le nombre d'oservation*/
    /*Créer des variables macro pour chaque variable*/
    call symput (compress("Lib"||_n_),Libelle);
    call symput (compress("V1"||_n_),val1);
    call symput (compress("V2"||_n_),val2);
    call symput (compress("V3"||_n_),val3);
    call symput (compress("V4"||_n_),val4);
    call symput (compress("V5"||_n_),val5);
    run;
    Ce code permet donc de créer autant de macro variables que de variables dans la table.
    On va créer une macro pour concaténer les macros variable d'une même ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    %macro compil;%do i=1 %to &Nbr;
    %global Val&i;
    %let Val&i=&&Lib&i &&V1&i &&V2&i &&V3&i &&V4&i &&V5&i;
    %end;
    %mend;
     
     
    %compil; /Je compile la macro ici. Avant je l'avais juste créer*/
    On peut essayer d'afficher les macros variables avec la commande put pour voir le contenu. Essayons d'afficher Val2 par exemple
    • Faites un tour sur mon siteweb professionnel www.aristideelysee.16mb.com Des codes dans la section "media et code" pouvant vous aider que vous pouvez aussi partager sur les réseaux sociaux.
    • Visiter mon blog en cliquant ici! Des techniques, astuces et macros pour l'analyse quantitative.

  5. #5
    Candidat au Club
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Mai 2015
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2015
    Messages : 5
    Points : 4
    Points
    4
    Par défaut
    Merci beaucoup Haache pour ta réponse rapide, claire et précise.

    Nickel j'ai réussi à faire mon programme grâce à toi.

    Je suis entrain de faire d'autres programmes. Je vais essayer d'aller jusqu'au bout toute seule.
    Je reviens vers toi si je rencontre des difficultés.

    Encore une fois de plus merci énormément.

  6. #6
    Candidat au Club
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Mai 2015
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2015
    Messages : 5
    Points : 4
    Points
    4
    Par défaut
    Bonjour Haache ,


    Je suis entrain de réaliser un programme qui permet d'afficher mes données en fonction du trimestre.
    On a 4 trimestres:
    Pour le trimestre1, je dois afficher les données des 3 premières mois (jan fev et mars), pour le trimestre 2, récupérer les résultats précédents (jan fev et mars ) plus mes 3 nouveaux mois (av mai et juin)...et pour le trimestre 4, les données de toute l’année.

    Je suis bloqué sur mon programme, le problème est que je ne sais pas comment récupérer mes résultats précédents.

    Merci d'avance pour ton aide précieux.

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

Discussions similaires

  1. Passer une ligne en parametre dans une procedure
    Par schnourf dans le forum Oracle
    Réponses: 5
    Dernier message: 08/06/2006, 15h29
  2. Passer une classe en parametre
    Par kitiara999 dans le forum Langage
    Réponses: 2
    Dernier message: 24/03/2006, 14h06
  3. Réponses: 12
    Dernier message: 25/01/2006, 07h29
  4. [C#]Passer une date en paramètre dans Crystal Report
    Par choupinette dans le forum ASP.NET
    Réponses: 5
    Dernier message: 09/08/2005, 09h59
  5. Passer une séquence en parametre
    Par djousss dans le forum CORBA
    Réponses: 2
    Dernier message: 02/12/2003, 22h39

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