Précédent   Forum des professionnels en informatique > 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 Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 21/12/2007, 16h51   #1
Futur Membre du Club
 
Inscription : septembre 2007
Messages : 66
Détails du profil
Informations forums :
Inscription : septembre 2007
Messages : 66
Points : 16
Points : 16
Par défaut Boucle et import

Bonjour,

J'ai besoin de charger 1000 fichiers (numérotés SimpleSAS1.csv,
SimpleSAS2.csv,...) pour ensuite les traiter. Pour cela, j'utilise une boucle :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
%macro repetition;
%LOCAL i; /* Variable compteur */
%do i=1 %TO 1000;
 
/* 1. * Etape d'importation */
PROC IMPORT OUT=WORK.SimpleSAS&i
    DATAFILE='C:\Documents and Settings\Administrator\My Documents\Recherche\Trajectoires\artificialData\SAS\SimpleSAS&i.csv'
 
DBMS=DLM REPLACE;
    DELIMITER='3B'x;
    GETNAMES=YES;
    DATAROW=2;
RUN;
 
%end; /*fin de la boucle */
%mend ; /*Fin macro */
 
%repetition;
et ca ne marche pas. Le message est le suivant :


Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
ERREUR: Le fichier physique n'existe pas, C:\Documents and Settings\Administrator\My
Documents\Recherche\Trajectoires\artificialData\SAS\SimpleSAS&i.csv.
NOTE: Import Cancelled.
NOTE: Le Système SAS a interrompu le traitement de cette étape en raison d'erreurs.
NOTE: La procédure IMPORT a utilisé (Durée totale du processus) :
     temps réel                   0.04 secondes
     temps processeur   0.03 secondes
 
ERREUR: Le fichier physique n'existe pas, C:\Documents and Settings\Administrator\My
Documents\Recherche\Trajectoires\artificialData\SAS\SimpleSAS&i.csv.
NOTE: Import Cancelled.
NOTE: Le Système SAS a interrompu le traitement de cette étape en raison d'erreurs.
NOTE: La procédure IMPORT a utilisé (Durée totale du processus) :
     temps réel                   0.03 secondes
     temps processeur   0.03 secondes
Avez-vous une idée de ce qui ne marche pas ?

Christophe

PS : Joyeux noel...
Christophe Genolini est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/12/2007, 11h12   #2
Responsable SAS
 
Inscription : septembre 2006
Messages : 1 973
Détails du profil
Informations forums :
Inscription : septembre 2006
Messages : 1 973
Points : 4 807
Points : 4 807
Bonjour,
Je n'ai pas SAS chez moi pour tester mais je pense que tu peux essayer ça
Code :
1
2
%LET tit1=%str(C:\Documents AND Settings\Administrator\My Documents\Recherche\Trajectoires\artificialData\SAS\SimpleSAS)
%LET titre=%str('&tit1&i');
CE qui te donnera :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
 
%macro repetition;
%LOCAL i; /* Variable compteur */
%do i=1 %TO 1000;
%LET tit1=%str(C:\Documents AND Settings\Administrator\My Documents\Recherche\Trajectoires\artificialData\SAS\SimpleSAS)
%LET titre=%str('&tit1&i');
/* 1. * Etape d'importation */
PROC IMPORT OUT=WORK.SimpleSAS&i
    DATAFILE=&titre
 
DBMS=DLM REPLACE;
    DELIMITER='3B'x;
    GETNAMES=YES;
    DATAROW=2;
RUN;
 
%end; /*fin de la boucle */
%mend ; /*Fin macro */
 
%repetition;
Dit moi si ça marche!!
fafabzh6 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/12/2007, 14h48   #3
Futur Membre du Club
 
Inscription : septembre 2007
Messages : 66
Détails du profil
Informations forums :
Inscription : septembre 2007
Messages : 66
Points : 16
Points : 16
Je ne sais pas, je n'ai plus SAS avant le 7 janvier...

Par contre, j'ai finallement trouvé : il faut changer les ' en " :
Code :
1
2
PROC IMPORT OUT=WORK.SimpleSAS&i
    DATAFILE='C:\Documents and Settings\Administrator\My Documents\Recherche\Trajectoires\artificialData\SAS\SimpleSAS&i.csv'
ne marche pas, mais
Code :
1
2
PROC IMPORT OUT=WORK.SimpleSAS&i
    DATAFILE="C:\Documents and Settings\Administrator\My Documents\Recherche\Trajectoires\artificialData\SAS\SimpleSAS&i.csv"
marche.

Anyway, merci pour ton aide.
Christophe Genolini est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 11h32.


 
 
 
 
Partenaires

Hébergement Web