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 :

Récupérer nom d'une variable dans une macro


Sujet :

Macro

  1. #1
    Membre éclairé Avatar de Filippo
    Homme Profil pro
    Statisticien
    Inscrit en
    Mai 2004
    Messages
    864
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Statisticien

    Informations forums :
    Inscription : Mai 2004
    Messages : 864
    Points : 881
    Points
    881
    Par défaut Récupérer nom d'une variable dans une macro
    Bonjour,
    Je souhaiterais modifier le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    %Macro IsNumeric(MyTable, MyVar);
    	data _null_;
    		set &MyTable;
    		IF NOT %Datatyp(&MyVar)=NUMERIC
    			THEN PUT 'ATTENTION : ' &MyVar ' n''est pas numérique pour l''observation '
    			_N_;
    	run;
    %mend;
     
    %IsNumeric(l.Corps, Code);
    Pour récupérer dans la log

    ATTENTION : Code n'est pas numérique pour l'observation 3.
    au lieu de
    ATTENTION : 10 n'est pas numérique pour l'observation 3.
    Merci

  2. #2
    Membre éclairé
    Homme Profil pro
    responsable adjoint service stat
    Inscrit en
    Mars 2009
    Messages
    448
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Activité : responsable adjoint service stat
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2009
    Messages : 448
    Points : 823
    Points
    823
    Par défaut
    Tentative de réponse en langage SAS :

    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
    %let myvar = VARNAME ; 
    option nonotes nomprint nomlogic nosource nosymbolgen ;
    data _null_;
        &MYVAR = 10 ;   
         PUT / "1- Code origine" ;
         PUT 'ATTENTION : ' &MyVar ' n''est pas numérique pour l''observation ' ;
     
         PUT / "2- &myvar réintégré dans la quote, pour être utilisée comme texte à afficher" ;
         PUT 'ATTENTION : &MyVar n''est pas numérique pour l''observation ';
     
         PUT / "3- simple quote remplacée par double quote, pour que la macro variable soit résolue" ;
         PUT "ATTENTION : &MyVar n'est pas numérique pour l'observation ";
     
         PUT / "4- Variantes : modification de couleur en utilisant les mots clefs WARNING et ERROR" ;     
         PUT "WARNING: &MyVar n'est pas numérique pour l'observation ";
         PUT "WARNING- Attention : &MyVar n'est pas numérique pour l'observation ";
         PUT "ERROR: &MyVar n'est pas numérique pour l'observation ";
         PUT "ERROR- Attention : &MyVar n'est pas numérique pour l'observation ";
         PUT / "   (Le code de 4- est à modifier selon le langage de SAS (WARNING->ATTENTION, ERROR->ERREUR)";   
    run ;

  3. #3
    Membre éclairé Avatar de Filippo
    Homme Profil pro
    Statisticien
    Inscrit en
    Mai 2004
    Messages
    864
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Statisticien

    Informations forums :
    Inscription : Mai 2004
    Messages : 864
    Points : 881
    Points
    881
    Par défaut
    Merci beaucoup Rémi,
    j'ai adopté l'option 4, ça marche aussi en mettant ATTENTION au lieu de WARNING :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    %Macro IsNumeric(MyTable, MyVar);
    	data _null_;
    		set &MyTable(obs=10);
    		IF %Datatyp(&MyVar)=NUMERIC
    			THEN PUT "ATTENTION : &MyVar n'est pas numérique pour l'observation " _N_;
    	run;
    %mend;
     
    %IsNumeric(l.Corps, Code);

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

Discussions similaires

  1. Recuperer le nom d'une variable dans une variable String
    Par aliwassem dans le forum Langage
    Réponses: 11
    Dernier message: 23/10/2009, 12h38
  2. récupérer une variable d'une fonction dans une classe
    Par free_dom dans le forum Général Python
    Réponses: 20
    Dernier message: 08/07/2009, 12h35
  3. portée d'une variable dans une fonction dans une méthode
    Par laurentg2003 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 29/06/2009, 19h05
  4. Réponses: 3
    Dernier message: 26/09/2008, 10h41
  5. Récupérer le nom d'une colonne d'une table dans une variable
    Par mimi51340 dans le forum Général Java
    Réponses: 4
    Dernier message: 13/03/2008, 14h23

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