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 :

bizarrerie macro sas [%var ne ]


Sujet :

Macro

  1. #1
    Membre du Club
    Inscrit en
    Mars 2012
    Messages
    46
    Détails du profil
    Informations forums :
    Inscription : Mars 2012
    Messages : 46
    Points : 49
    Points
    49
    Par défaut bizarrerie macro sas [%var ne ]
    Bonjour,

    je rencontre actuellement une "bizarrerie" dans une macro.
    Voici un 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
    %macro test (filtre=);
     
    	%if &filtre ne %then %do;
    		%put marche bien : &filtre;
    	%end;
    	%else %do;
    		%put marche pas;
    	%end;
     
    %mend test;
     
    %test(filtre=test=1);
    %test(filtre=test=1 and test2=1);
    %test(filtre=(test=1 and test2=1));
    quand la macro variable filtre vaut 'test=1 and test2=1' plus rien ne fonctionne alors que 'test=1' ça fonctionne bien et avec les parenthèses c'est ok aussi... mais pourquoi??

    Merci beaucoup

    Niaboc

  2. #2
    Membre actif
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    347
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 347
    Points : 235
    Points
    235
    Par défaut
    Bonjour,

    J'ai l'impression que c'est le "and" qui pose problème, mais je ne sais pas pourquoi.

    Car par exemple, ça marche comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    %test(filtre=test=1 test2=1);
    Deux idées de solution pour contourner ton problème avec la macro fonction %str() :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    %test(filtre=%str(test=1 and test2=1));
    Ou ajouter cette macro-fonction dans le macro-programme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    %macro test (filtre=);
     
    	%if %str(&filtre) ne %then %do;
    		%put marche bien : &filtre;
    	%end;
    	%else %do;
    		%put marche pas;
    	%end;
     
    %mend test;
     
    %test(filtre=test=1 and test2=1);
    Généralement quand j'ai des chaines de caractères à gérer j'utilise %str() ou autre.

    alers

  3. #3
    Membre actif
    Inscrit en
    Juillet 2010
    Messages
    199
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 199
    Points : 214
    Points
    214
    Par défaut
    Bonjour,

    J'en ajoute une petite. Pour tester une valeur null sur une macro variable j'utilise
    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
    %macro test (filtre=);
     
    	%if %LENGTH(&filtre.)>0 %then %do;
    		%put marche bien : &filtre;
    	%end;
    	%else %do;
    		%put marche pas;
    	%end;
     
    %mend test;
     
    %test(filtre=test=1);
    %test(filtre=test=1 and test2=1);
    %test(filtre=(test=1 and test2=1));
    %test(filtre=);

  4. #4
    Membre du Club
    Inscrit en
    Mars 2012
    Messages
    46
    Détails du profil
    Informations forums :
    Inscription : Mars 2012
    Messages : 46
    Points : 49
    Points
    49
    Par défaut
    Bonjour,

    j'avais également changé mon code après avec le %length également. Et je suis d'accord que c'est le and qui pose problème et je ne sais pas non plus pourquoi il essaye de l'interpréter ici...

    Merci!

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

Discussions similaires

  1. [Macro] procedures ou Macros sas SVM
    Par cyberboy00 dans le forum Macro
    Réponses: 9
    Dernier message: 11/07/2008, 09h35
  2. [Macro] Erreur macro sas
    Par bibette dans le forum Macro
    Réponses: 2
    Dernier message: 07/07/2008, 22h04
  3. Boucle dans macro SAS avec BY
    Par fafabzh6 dans le forum Macro
    Réponses: 5
    Dernier message: 17/06/2008, 12h08
  4. macro sas problème
    Par floflorette56 dans le forum Macro
    Réponses: 2
    Dernier message: 21/04/2008, 13h11
  5. exécution de Macro SAS
    Par CélineM dans le forum Macro
    Réponses: 2
    Dernier message: 02/04/2008, 15h06

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