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 programme avec call symput


Sujet :

Macro

  1. #1
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2013
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2013
    Messages : 55
    Points : 65
    Points
    65
    Par défaut Macro programme avec call symput
    Slt tt le monde.

    Voilà, je dois créer une macro qui imprime ttes les var numériques d'une table. Les paramètres de la macro seront la table et le type de var (num ou caractères).
    donc je commence par créer une table (tab1) par une proc content et je garde juste le nom et le type des variables. Ensuite je crée avec la call symput dans une étape data _null_ des macro-variables indicées qui contiennent le nom des var à imprimer. Je fais une autre call symput qui me permet de créer une macro var qui contient le nbre de var numérique que j'ai imprimé.

    Mon code est le suivant:
    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
    %macro imprim_varnum (tab=, type_var=);
     
    data _null_;
    set dic;
     
    %local i;
    %let i = 0;
     
    %do %while (type = &type_var.);
    CALL SYMPUT(COMPRESS("mvar"||_Nom_),NAME);
    %let i = %eval(&i + 1);
    call symput("nb_varimp",&i);
    %end;
     
    proc print data = ;
    var ;
    run;
     
    run;
    %mend;
    %imprim_varnum (tab =dic, type_var=1);
    Je ne sais pas comment écrire la proc print pour qu'elle n'imprime que les variables sélectionnées.

    Merci par avance,

  2. #2
    Membre éprouvé
    Homme Profil pro
    Statisticien/développeur BI
    Inscrit en
    Janvier 2012
    Messages
    326
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Statisticien/développeur BI
    Secteur : Transports

    Informations forums :
    Inscription : Janvier 2012
    Messages : 326
    Points : 1 142
    Points
    1 142
    Par défaut
    Hello,

    Houla, il y a du mélange de code macro et de code data ...

    Je te propose la solution suivante :

    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
     
    data test;
    input var1 $ var2 $ var3 var4;
    cards;
    1 2 3 4
    5 6 7 8
    9 10 11 12
    13 14 15 16
    ;
    run;
     
    %macro imprim(tab, type_var);
       proc print data=&tab;
       var _&type_var._;
    run;
     
    %mend;
    %imprim(test,character);
    %imprim(test,numeric);

  3. #3
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2013
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2013
    Messages : 55
    Points : 65
    Points
    65
    Par défaut macro
    En faite l'idée s'est de mettre le tout dans une seule macro... Je ne sais pas si tu vois ce que je veux faire ?

Discussions similaires

  1. Stockage pas dynamique avec call symput
    Par enicnath dans le forum SAS Base
    Réponses: 1
    Dernier message: 18/10/2012, 16h39
  2. Création de macro-programme avec SAS GUIDE
    Par BIEUR dans le forum Outils BI
    Réponses: 1
    Dernier message: 10/01/2011, 09h58
  3. Affectation de macro-variables avec Call SymputX
    Par Filippo dans le forum Macro
    Réponses: 2
    Dernier message: 19/04/2010, 15h15
  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