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

Discussion: macro programme SAS

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Débutant
    Inscrit en
    juillet 2018
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Débutant
    Secteur : Transports

    Informations forums :
    Inscription : juillet 2018
    Messages : 5
    Points : 6
    Points
    6

    Par défaut macro programme SAS

    Bonjour,
    je suis confronté à un soucis sur un code SAS. Il est assez complexe à expliquer mais j'espère fortement que vous allez me comprendre.
    proc freq noprint data=base_fin ;
    table mois /out=freq ;
    run;
    data _null_;
    set freq(where=(mois ne ""));
    call symput("N",_N_) ;
    call symput("mac"||left(put(_N_,2.)),mois) ;
    run;

    grâce à ce programme j'ai pu récupérer les éléments de la table Freq dans la macro variable &mac qui sont des dates du format Annéesmois : 201707,201708 etc...
    dans une proc report je souhaite parcourir ces éléments (ces dates qui sont déjà en colonne dans ma table) j'utilise le code suivant :
    %do i=&mac1 %to &mac1+&N-1; Mois_&i %end ;

    pour dire en gros que le i parcourant mac1 à mac1+11 (un truc sur 12 mois quoi).*


    résultat que je souhaite avoir c'est :

    201807 201708 201709 201710 201711 201712 201801 201802 ---------

    mais sauf que ce que j'obtiens c'est

    201807 201708 201709 201710 201711 201712 201713 201714 ---------


    c'est comme si ma macrovariable
    &mac7 = 201713

    pourtant quand je vérifie j'ai bien &mac7=201801.


    je ne sais pas comment régler ce détails..



    PS : difficile à expliquer comme ça mais j'espère que vous me comprenez et pourrez m'aider.
    Merci d'avance pour vos réponses.

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

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

    Informations forums :
    Inscription : juillet 2011
    Messages : 388
    Points : 983
    Points
    983
    Billets dans le blog
    12

    Par défaut

    Bonjour,

    Pas sûr d'avoir compris le sujet:

    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
     
    data test;
    input mois yymmn6.;
    format mois yymmn6.;
    cards;
    201707 
    201708 
    201709 
    201710 
    201711 
    201712 
    201801 
    201802 
    201803
    201804
    ;
    run;
     
    data _null_;
    set test;
    call symputx('nbr', _n_);
    call symputx("mac"||left(put(_N_,2.)),put(mois,yymmn6.)) ;
    run;
     
    %macro affichage();
    %do i=1 %to &nbr;;
    %put mois= &&mac&i;
    %end;
    %mend affichage;
    %affichage;
    Cordialement
    Certification des Talents de la programmation In Memory Statistics sur HADOOP:
    http://talents-imstat.groupe-avisia....avance?uid=162

Discussions similaires

  1. problème macro-programme SAS
    Par joan_27 dans le forum Macro
    Réponses: 6
    Dernier message: 06/11/2015, 15h38
  2. Réponses: 10
    Dernier message: 01/03/2010, 17h06
  3. [Macro] Générer un programme SAS
    Par id301077 dans le forum Macro
    Réponses: 5
    Dernier message: 12/01/2009, 13h22
  4. [Macro] optimisation de programmes SAS
    Par bar_79 dans le forum Macro
    Réponses: 4
    Dernier message: 25/11/2008, 15h51
  5. [Macro] Lancement d'un programme SAS en batch
    Par fafabzh6 dans le forum Macro
    Réponses: 0
    Dernier message: 30/07/2008, 14h39

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