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 :

Boucle avec un Call Symput


Sujet :

Macro

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Octobre 2012
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Octobre 2012
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Boucle avec un Call Symput
    Bonjour à tous!!

    Ceci est mon premier message sur le forum et certainement le premier d'une longue liste

    Je débute en macro langage

    Voici mon problème :

    J'ai une table avec des régions j'ai réussi à faire le code pour une région et
    j’essaie de généraliser ce code suivant à toutes les régions sans succès!!

    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
     
    data _null_;
    	set donnees.regions;
    	call symput ("regions",compress(regions)) ;
    	call symput("nb_regions",_N_) ;
    	call symput("rep"!!LEFT(_N_),regions);
    	call symput ("mv_cle"!!LEFT(_N_),volume_anomalies) ;
    run;
     
     
    /* Dans cette macro on obtient les anomalies pour la région,les controles et le volume d'anomalies souhaités */
    %macro ano_region;
     
    %do i=1 %to &nb_regions;
    %do j=1 %TO &NBTABLE;
    proc sql outobs = &mv_cle ;
    create table donnees.&regions%eval(&j) as select * from donnees.Anomalie&j
    where RES_REG_LIB = "&&rep&i";
    quit;
    %end;
    %end;
    %end;
    %mend ;
    %ano_region
    Quelqu'un pourrait il m'aider ?

    Merci d'avance!!

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    747
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 747
    Points : 978
    Points
    978
    Par défaut
    pour un premier message c'est assez clair.

    Tu indique ce que tu cherches a faire et tu postes ce a quoi tu es deja arrivé.

    good

    mais indique ton problème : erreur ou autre.

  3. #3
    Membre actif
    Inscrit en
    Juillet 2010
    Messages
    199
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 199
    Points : 214
    Points
    214
    Par défaut
    Bonjour,

    Tu pourrais boucler sur les régions. Tu récupères ta liste de région avec une SQL.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    PROC SQL NOPRINT ;
          SELECT STRIP(regions)
          INTO : listregions SEPARATED BY 'ù'
          FROM donnees.regions ;
    QUIT ;
    /* Affichage de la valeur des macrovariables */
    %PUT &listregions. ;
    Puis tu boucles sur ces différentes régions avec un %do %while :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    /* on boucle sur les régions */
    	%let i=1;
    	%DO %while(%scan(&listregions,&i.,ù) ne );
    		%let rep&i.=%scan(&listregions,&i.,ù) ;
     
    		proc sql outobs = &mv_cle ;
    		CREATE TABLE donnees.&regions%eval(&j) AS 
                                          SELECT * FROM donnees.Anomalie&j
    			WHERE RES_REG_LIB = "&&rep&i";
    		quit;
    		%let i=%eval(&i+1);
    	%END;
    J'espère que ça va t'aider un peu.

Discussions similaires

  1. Macro programme avec call symput
    Par joan_27 dans le forum Macro
    Réponses: 2
    Dernier message: 22/10/2013, 23h27
  2. Stockage pas dynamique avec call symput
    Par enicnath dans le forum SAS Base
    Réponses: 1
    Dernier message: 18/10/2012, 17h39
  3. macro avec call symput
    Par kabstat dans le forum Macro
    Réponses: 14
    Dernier message: 05/07/2008, 00h08
  4. Boucle avec variable à incrémenter
    Par snoop dans le forum Linux
    Réponses: 2
    Dernier message: 19/03/2004, 12h07
  5. boucle avec condition d'arret changeante
    Par NicoH dans le forum Langage
    Réponses: 3
    Dernier message: 10/06/2003, 12h48

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