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 :

Affecter une valeur à une macro-variable dans un macro-programme


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 : 51
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Statisticien

    Informations forums :
    Inscription : Mai 2004
    Messages : 864
    Points : 881
    Points
    881
    Par défaut Affecter une valeur à une macro-variable dans un macro-programme
    Bonjour,
    Avec le macro-programme suivant, j'aimerais retirer tous les caractères de MyVarIn placés après le point (inclus) et affecter ce résultat à MyVarOut.
    Ou bien affecter à MyVarOut la valeur de MyVarIn si MyVarIn ne contient pas de point.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    %Macro RetireExtension(MyVarIn,MyVarOut) / store;
    	/* on supprime le point et tout ce qui est derrière */
    	%if %index("&MyVarIn",.)>0 %Then %let MyVarOut=%substr(&MyVarIn,1,%index("&MyVarIn",.)-2);
    	%if %index("&MyVarIn",.)<=0 %Then %let MyVarOut=&MyVarIn;
    %Mend;
    En plaçant un %put dans cette macro je vois dans la log les bonnes valeurs affectées aux deux macro-variables.

    En revanche dans l'exécution suivante, je ne récupère pas la valeur dans &fichierATraiterSE.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    %global fichierATraiter;
    %let fichierATraiter=I0207333CH042;
    %Global fichierATraiterSE;
    %RetireExtension(&fichierATraiter,&fichierATraiterSE);
    Je n'arrive pas à comprendre pourquoi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    %put &fichierATraiterSE;
    en dehors de %RetireExtension ne renvoie pas I0207333CH042.

    Si quelqu'un a une idée je suis preneur.
    Merci.

    P.S.

    En fait ce que je voudrais arriver à faire c'est :

    Si &fichierATraiter contient un point alors exécuter :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    %let fichierATraiterSE=%substr(&fichierATraiter,1,%index("&fichierATraiter",.)-2);
    Si &fichierATraiter ne contient pas de point alors exécuter :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    %let fichierATraiterSE=&fichierATraiter;
    Mais on ne peut pas utiliser de %if %then en dehors de macro-programmes ...

  2. #2
    Rédacteur

    Homme Profil pro
    SAS ALLIANCE SILVER. Consultant et formateur SAS et Cognos.
    Inscrit en
    Avril 2009
    Messages
    2 497
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : SAS ALLIANCE SILVER. Consultant et formateur SAS et Cognos.
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2009
    Messages : 2 497
    Points : 6 064
    Points
    6 064
    Par défaut
    Ton fichierATraiterSE n'est valorisé.

    C'est pas très propre mais voilà quelque chose...

    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
    %global fichierATraiter;
    %Global fichierATraiterSE;
     
     
    %Macro RetireExtension(MyVarIn,MyVarOut);
    	%IF %INDEX(&MyVarIn,.)>0 %Then %let MyVarOut=%scan(&MyVarIn,1,.);
    	%else %let MyVarOut=&MyVarIn;
    %put ==== &MyVarOut;
    %let fichierATraiterSE=&MyVarOut ;
    %Mend;
     
    %let fichierATraiter=helloworld;
     
    %RetireExtension(&fichierATraiter,&fichierATraiterSE);
     
    %put >>>>>>>> &fichierATraiterSE;

  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 : 51
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Statisticien

    Informations forums :
    Inscription : Mai 2004
    Messages : 864
    Points : 881
    Points
    881
    Par défaut
    Ca marche nickel,
    merci beaucoup Datametric

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

Discussions similaires

  1. Valeur macro variable dans une liste
    Par Noyellie dans le forum Macro
    Réponses: 10
    Dernier message: 18/09/2012, 18h41
  2. Valeurs d'une macro-variable dans une table SAS
    Par patril dans le forum Macro
    Réponses: 2
    Dernier message: 03/08/2011, 14h23
  3. Réponses: 3
    Dernier message: 14/05/2009, 18h53
  4. Réponses: 1
    Dernier message: 26/03/2007, 02h12
  5. Réponses: 5
    Dernier message: 14/06/2006, 17h35

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