proc import dans macro, passage de variable
Bonjour,
Je me bats depuis plusieurs jours avec ce programme et je n'arrive toujours pas à le faire fonctionner correctement. Je voudrais lire plusieurs fichiers contenus dans un répertoire. Dans un premier temps, data all liste les fichiers du répertoire et met dans la table le nom des fichiers (champ name) et le nom complet du chemin+nom fichier (champ chemin). Je boucle sur cette table dans data _null_ et je fais passer la variable chemin dans la macro. Dans la macro importer, put &path; affiche bien la valeur de la variable (donc le chemin complet du fichier). Mais proc import... ne donne pas de résultat. Dans le log, il affiche: ERROR: Physical file does not exist, U:\chemin. C'est comme si il prenait la chaîne "chemin" et non la valeur de la variable. J'ai tout essayé: avec ou sans &, un double &, un "&path", etc. Rien ne passe.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| %let directo = 'C:\Documents and Settings\etc\';
filename direct pipe 'dir "C:\Documents and Settings\etc\" /b';
%let directy = 'C:\Documents and Settings\etc\fichier.csv';
%macro importer(path=);
put &path;
proc import datafile= "&path" out= output dbms=csv replace;
delimiter=";";
getnames=yes;
run;
%mend importer;
data all;
infile direct truncover;
input name $26.;
chemin=trim(&directo || name);
run;
data _null_;
set all;
%importer (path=chemin)
run;
run; |
J'ai testé la macro indépendamment de la table en mettant directement le nom complet du chemin via la variable directy, ça fonctionne.
Quelqu'un peut-il me dire comment je dois procéder svp ?