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 :

Equivalent dans une boucle ?


Sujet :

Macro

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2015
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2015
    Messages : 54
    Points : 22
    Points
    22
    Par défaut Equivalent dans une boucle ?
    Hello,

    Question bête ... mais je cherche à automatiser un bout de programme assez simple sans en trouver une solution.
    Je cherche en bref à déclarer des macros variables et qu'elles aient la forme suivante : 1601, 1602, 1603, ..., 1612.

    Les deux premiers chiffres représentent l'année 2016 et les deux derniers le mois. Le 16 est déjà déclaré. Mais de quelle façon pourrais - je ajouter les deux autres chiffres avec une boucle ? Ce qui me pose soucis dans ce cas, c'est le "0" pour les 9 premier cas. J'ai peur d'obtenir 161, 162, etc ... au lieu de mes résultats en utilisant un %do i=0 to 12.

    Je cherche un équivalent à ce bout de code grossier :

    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
    %let annee = %substr(&year0.,3,2); 
    /* "year0" correspondant à 2016. */ 
     
    %let mois_1  = &annee.01;
    %let mois_2  = &annee.02;
    %let mois_3  = &annee.03;
    %let mois_4  = &annee.04;
    %let mois_5  = &annee.05;
    %let mois_6  = &annee.06;
    %let mois_7  = &annee.07;
    %let mois_8  = &annee.08;
    %let mois_9  = &annee.09;
    %let mois_10 = &annee.10;
    %let mois_11 = &annee.11;
    %let mois_12 = &annee.12;

    Mac_Leod.

  2. #2
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2015
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2015
    Messages : 54
    Points : 22
    Points
    22
    Par défaut
    J'ai finalement ma solution. Pour les intéressés :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    %do i = 1 %to 12;
       %if &i < 10 %then %do;
          %let i = 0&i;
       %end;
       %let mois&i. = &annee.&i.;
       %put &&mois&i..;
    %end;

  3. #3
    Membre éprouvé
    Avatar de m.brahim
    Homme Profil pro
    SAS / BIG DATA
    Inscrit en
    Juillet 2011
    Messages
    461
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : SAS / BIG DATA
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2011
    Messages : 461
    Points : 1 119
    Points
    1 119
    Billets dans le blog
    14
    Par défaut
    Bonjour,

    Une autre solution est également possible:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    %macro tt(year=);
    %let annee = %substr(&year.,3,2); 
    %do i=1 %to 12;
    %global mois_&i;
    %let mois_&i=&annee..%sysfunc(putn(&i.,z2.));
    %put &&mois_&i;
    %end;
    %mend;
    %tt(year=2016);
    Cordialement
    Certification des Talents de la programmation In Memory Statistics sur HADOOP:
    http://talents-imstat.groupe-avisia....avance?uid=162

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

Discussions similaires

  1. [langage] incrementation de variable dans une boucle
    Par mimilou dans le forum Langage
    Réponses: 15
    Dernier message: 16/04/2004, 13h23
  2. Problème avec TNMSMTP dans une boucle.
    Par Orgied dans le forum Web & réseau
    Réponses: 3
    Dernier message: 07/04/2004, 10h19
  3. swf dans une boucle asp
    Par Chucky69 dans le forum Flash
    Réponses: 11
    Dernier message: 10/02/2004, 17h07
  4. [Vb.net] Indexé un objet crée dans une boucle
    Par picpic dans le forum Windows Forms
    Réponses: 10
    Dernier message: 17/12/2003, 14h37
  5. Pause dans une boucle
    Par HT dans le forum Langage
    Réponses: 4
    Dernier message: 03/06/2003, 08h52

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