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 :

%eval d'un champ alphanumérique


Sujet :

Macro

  1. #1
    Membre du Club
    Femme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Novembre 2011
    Messages
    86
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Novembre 2011
    Messages : 86
    Points : 48
    Points
    48
    Par défaut %eval d'un champ alphanumérique
    Bonjour,

    J'ai un champ alphanumérique nommé "Formule" ds une table qui a la structure suivante:

    Formule
    ---------------------------
    1000 +2000 |
    etape1.Ind0+etape0.Ind2 |
    3000+5000 |
    etape1.Ind2/etape1.Ind3 |

    Je veux evaluer les champ dont la valeur vaut 1000+2000 et 3000+5000
    sauf que c'est po possible avec %eval puisqu'il s'agit d'un champ alphanumérique, y'a t-il autres manières pour le faire ?

  2. #2
    Modérateur

    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Février 2011
    Messages
    1 624
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2011
    Messages : 1 624
    Points : 3 402
    Points
    3 402
    Par défaut
    t'as la fonction FIND
    N'oubliez pas de consulter les FAQ SAS et les cours et tutoriels SAS
    N'oubliez pas de mettre votre message à si la solution donnée résout votre problème

  3. #3
    Membre du Club
    Femme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Novembre 2011
    Messages
    86
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Novembre 2011
    Messages : 86
    Points : 48
    Points
    48
    Par défaut
    je pense que find equivalent à index pour faire la recherche d'un mot ou caractère et non po pour évaluer une opération arithmétique, non?

  4. #4
    Modérateur

    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Février 2011
    Messages
    1 624
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2011
    Messages : 1 624
    Points : 3 402
    Points
    3 402
    Par défaut
    oui c'est à peu prés sa , c'est quoi que t'appel évaluer ou bien que veux tu faire au juste ?
    N'oubliez pas de consulter les FAQ SAS et les cours et tutoriels SAS
    N'oubliez pas de mettre votre message à si la solution donnée résout votre problème

  5. #5
    Membre du Club
    Femme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Novembre 2011
    Messages
    86
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Novembre 2011
    Messages : 86
    Points : 48
    Points
    48
    Par défaut
    je veux évaluer opération 1000+2000 sachant qu'elle est sauvegardée dans une variable alphanumérique

  6. #6
    Membre actif
    Femme Profil pro
    Analyste en Intelligence d'Affaires (BI)
    Inscrit en
    Avril 2008
    Messages
    245
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Canada

    Informations professionnelles :
    Activité : Analyste en Intelligence d'Affaires (BI)
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2008
    Messages : 245
    Points : 290
    Points
    290
    Par défaut
    Moi je pense que si ton évaluer correspond à faire la somme de 1000+2000, donc 3000 (par exemple). Une solution pourrait etre une somme conditionnelle couplée avec Find.
    Si avec le Find tu trouves 'etape' , tu fais rien sinon tu fais %eval.

  7. #7
    Membre du Club
    Femme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Novembre 2011
    Messages
    86
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Novembre 2011
    Messages : 86
    Points : 48
    Points
    48
    Par défaut
    le problème que %eval n'accepte po des variables de type alphanumerique
    par exempl le code suivant ne foncionne po

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    data _null;
    %let c="100+200";
    z=%eval(&c.);
    run;
    or si je fé:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    data _null;
    %let c=100+200;
    z=%eval(&c.);
    run;
    ca marche, ma question y'a t-il po uen façon pour évaluer
    "1000+2000" sans faire la conversion du type

  8. #8
    Modérateur

    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Février 2011
    Messages
    1 624
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2011
    Messages : 1 624
    Points : 3 402
    Points
    3 402
    Par défaut
    Je crois que tu te compliques beaucoups la vie!!.
    pour extrtaire les numérique , il faut utiliser les expressions régulières ,
    moi j'ai bricolé un truc vite fait. tu peux utiliser les call symput pour stoquer les résultats dans des macros variables sinon passer pas des %sysfunc et %eval, tu peux aussi ajouter des IF pour ne traiter que les cas que tu veux :

    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
     
     
    data test;
    infile cards ;
    input formule $60.;
    cards;
    1000 +2000 |
    etape1.Ind0+etape0.Ind2 |
    3000+5000 |
    etape1.Ind2/etape1.Ind3 |
    ;
    run;
     
     
    data calcule;
    set test;
    a = input(scan (compress ( formule, 'abcdefghijkImnopqrstuvwxyz |/ . '),1,'+'),best.)+  input(scan (compress ( formule, 'abcdefghijkImnopqrstuvwxyz |/ . '),-1,'+'),best.);
    run;
    N'oubliez pas de consulter les FAQ SAS et les cours et tutoriels SAS
    N'oubliez pas de mettre votre message à si la solution donnée résout votre problème

  9. #9
    Membre émérite

    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Mars 2005
    Messages
    1 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 364
    Points : 2 329
    Points
    2 329
    Par défaut
    ça peut dépanner

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    %let formule="1000 +2000";
    %let f=%eval(%sysfunc(compress( &formule,'"')));
    %put &f;
    Consultez les FAQs et les anciens postes avant de poser vos questions. Merci

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

Discussions similaires

  1. Validation champ alphanumérique et alphabétique
    Par sibboo dans le forum Langage
    Réponses: 5
    Dernier message: 21/04/2009, 19h14
  2. [AC-2002] Max d'1 champ Alphanumérique
    Par Mounamidou dans le forum Requêtes et SQL.
    Réponses: 6
    Dernier message: 09/04/2009, 15h12
  3. Réponses: 7
    Dernier message: 16/03/2009, 09h23
  4. select max sur champ alphanumérique ?
    Par clawhammer dans le forum SQL
    Réponses: 3
    Dernier message: 16/10/2006, 15h00
  5. Réponses: 6
    Dernier message: 28/12/2004, 16h09

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