Précédent   Forum du club des développeurs et IT Pro > Logiciels > Solutions d'entreprise > Business Intelligence > SAS > Macro
Macro Forum d'entraide sur le langage Macro de SAS
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 28/12/2012, 14h48   #1
milad92
Invité de passage
 
Homme
Statisticien
Inscription : août 2011
Messages : 26
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Statisticien
Secteur : Distribution

Informations forums :
Inscription : août 2011
Messages : 26
Points : 4
Points : 4
Par défaut Macro variable dans le nom du fichier sortie

Bonjour à tous,
Je suis bloqué par un petit problème (qui je pense est simple à résoudre pour vous).
Je n'arrive pas à récupérer le numéro "&i" pour chaque fichier de sortie.
Je voudrais créer 50 fichiers txt se nommant :
resultat.num1.sh.txt
resultat.num2.sh.txt etc...
Mais ma macro variable n'est pas reconnue comme une macro variable car je suis dans une partie du code entre guillemets...
Merci par avance pour votre aide

Code :
1
2
3
4
5
6
7
8
9
10
11
12
 
%macro create_sorties(IN=,first=,last=);
%do i=&first %TO &last;
DATA _null_;
  SET &IN (WHERE=(numero=&i));
  file "/Mon_repertoire/output/resultat.num&&i.sh.txt";
  put
        @1  etc....
  run;
%end;
%mend;
%create_sorties(IN=mabase,first=1,last=50);
milad92 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/12/2012, 15h17   #2
milad92
Invité de passage
 
Homme
Statisticien
Inscription : août 2011
Messages : 26
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Statisticien
Secteur : Distribution

Informations forums :
Inscription : août 2011
Messages : 26
Points : 4
Points : 4
Trouvééééééé !!

Résolu avec %unquote(%eval(&i))
milad92 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/12/2012, 15h23   #3
datametric
Rédacteur
 
Homme Stéphane Colas
Consultant et formateur SAS et Cognos
Inscription : avril 2009
Messages : 2 299
Détails du profil
Informations personnelles :
Nom : Homme Stéphane Colas
Âge : 40
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Consultant et formateur SAS et Cognos
Secteur : Conseil

Informations forums :
Inscription : avril 2009
Messages : 2 299
Points : 5 530
Points : 5 530
Non c'est parce que tu mets des guillemets que ca marche :

Code :
1
2
3
4
5
6
7
8
9
%macro create_sorties(IN=,first=,last=);
%do i=&first %TO &last;

  
  %put file "/Mon_repertoire/output/resultat.num&&i..sh.txt";
   
%end;
%mend;
%create_sorties(IN=mabase,first=1,last=5);
Citation:
1 %macro create_sorties(IN=,first=,last=);
2 %do i=&first %TO &last;
3
4
5 %put file "/Mon_repertoire/output/resultat.num&&i..sh.txt";
6
7 %end;
8 %mend;
9 %create_sorties(IN=mabase,first=1,last=5);
file "/Mon_repertoire/output/resultat.num1.sh.txt"
file "/Mon_repertoire/output/resultat.num2.sh.txt"
file "/Mon_repertoire/output/resultat.num3.sh.txt"
file "/Mon_repertoire/output/resultat.num4.sh.txt"
file "/Mon_repertoire/output/resultat.num5.sh.txt"
__________________
N'oubliez pas de cliquer sur lorsque votre problème est réglé !

Moteur de recherche dans les papiers SAS
datametric est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 28/12/2012, 15h29   #4
milad92
Invité de passage
 
Homme
Statisticien
Inscription : août 2011
Messages : 26
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Statisticien
Secteur : Distribution

Informations forums :
Inscription : août 2011
Messages : 26
Points : 4
Points : 4
J'ai fait ça exactement :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
%macro create_sorties(IN=,first=,last=);
%do i=&first %TO &last;
DATA _null_;
  SET &IN (WHERE=(numero=&i));
  file "/Mon_repertoire/output/resultat.num%unquote(%eval(&i)).sh.txt";
  put
        @1  
   etc....
  run;
%end;
%mend;
%create_sorties(IN=mabase,first=1,last=50);
ça a l'air de fonctionner correctement
milad92 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/12/2012, 18h28   #5
datametric
Rédacteur
 
Homme Stéphane Colas
Consultant et formateur SAS et Cognos
Inscription : avril 2009
Messages : 2 299
Détails du profil
Informations personnelles :
Nom : Homme Stéphane Colas
Âge : 40
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Consultant et formateur SAS et Cognos
Secteur : Conseil

Informations forums :
Inscription : avril 2009
Messages : 2 299
Points : 5 530
Points : 5 530
sans l'unquote ca fonctionne chez moi mais il faut les ..
__________________
N'oubliez pas de cliquer sur lorsque votre problème est réglé !

Moteur de recherche dans les papiers SAS
datametric est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/12/2012, 21h18   #6
milad92
Invité de passage
 
Homme
Statisticien
Inscription : août 2011
Messages : 26
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Statisticien
Secteur : Distribution

Informations forums :
Inscription : août 2011
Messages : 26
Points : 4
Points : 4
Ok ! merci pour ton retour ;-)
milad92 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/12/2012, 12h45   #7
datametric
Rédacteur
 
Homme Stéphane Colas
Consultant et formateur SAS et Cognos
Inscription : avril 2009
Messages : 2 299
Détails du profil
Informations personnelles :
Nom : Homme Stéphane Colas
Âge : 40
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Consultant et formateur SAS et Cognos
Secteur : Conseil

Informations forums :
Inscription : avril 2009
Messages : 2 299
Points : 5 530
Points : 5 530
A ton service.
__________________
N'oubliez pas de cliquer sur lorsque votre problème est réglé !

Moteur de recherche dans les papiers SAS
datametric est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Cette discussion est résolue.
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 04h07.


 
 
 
 
Partenaires

Hébergement Web