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 :

Faire un calcul dans un paramètre macro


Sujet :

Macro

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2011
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2011
    Messages : 97
    Points : 64
    Points
    64
    Par défaut Faire un calcul dans un paramètre macro
    Bonjour,

    J'essaie de faire un calcul sur un paramètre macro lors de l'appel d'une macro "générale" utilisée dans mon entreprise (et que je ne peux pas modifier...).

    Voici mon exemple avec cette macro qui est appelée dans une étape data :
    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 TEST();
     
    /* Calcul du nombre de cas */
     
    proc sql noprint;
    	select max(var_cas) into :nb_cas
    	from table;
    quit;
     
    /* Application de la macro %MACRO_ENTREPRISE le nombre de fois nécessaire */
     
    %do i=1 %to &nb_cas.;
     
    	%MACRO_ENTREPRISE(TABLE=T1,REFLIGNE=&i);
     
    %end;
     
    %MEND TEST;
     
    %TEST ();
    Cet exemple-ci marche mais ma macro-variable REFLIGNE ne doit pas être égale à i mais à i+1 ; or, si je rentre &i.+1 il ne fait pas le calcul il prend le texte qu'il utilise dans la %MACRO_ENTREPRISE.

    Je pense que c'est très simple mais je n'ai pas du tout l'habitude de faire des boucles avec des appels de macro

    Merci pour votre aide :-)

  2. #2
    Membre expérimenté
    Homme Profil pro
    Développeur en SAS/ Statisticien
    Inscrit en
    Janvier 2013
    Messages
    483
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur en SAS/ Statisticien
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2013
    Messages : 483
    Points : 1 552
    Points
    1 552
    Par défaut
    Bonjour,
    Essaies de créer la macro variable &j à l'aide de l'instruction %LET et l'instruction %EVAL qui est primordiale pour cette adition de la manière suivante :
    %let j=%eval(&i+1) ;
    On peut utiliser directement %eval(&i+1) comme paramètre dans la macro %MACRO_ENTREPRISE(TABLE=T1,REFLIGNE=%eval(&i+1).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    %do i=1 %to &nb_cas.;
     %let j=%eval(&i+1) ;
    
    	%MACRO_ENTREPRISE(TABLE=T1,REFLIGNE=&j);
     
    %end;
    Bon Courage
    Ward

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2011
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2011
    Messages : 97
    Points : 64
    Points
    64
    Par défaut
    C'est parfait, un grand merci :-)

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

Discussions similaires

  1. Faire un calcul dans un champ du formulaire
    Par goldray dans le forum Général JavaScript
    Réponses: 15
    Dernier message: 16/05/2011, 15h08
  2. Faire un calcul dans la clause SELECT ?
    Par MuLog dans le forum Langage SQL
    Réponses: 4
    Dernier message: 14/06/2010, 11h54
  3. Faire des calculs dans les états
    Par bobosh dans le forum IHM
    Réponses: 1
    Dernier message: 09/09/2008, 13h36
  4. faire des calculs dans un projet Windows
    Par rbell dans le forum Windows
    Réponses: 2
    Dernier message: 06/09/2007, 19h28
  5. Réponses: 2
    Dernier message: 27/06/2007, 10h42

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