Sólo sería necesario extraer el nombre del archivo y colocarlo en cada iteración. Agregaría dos líneas:
%LET len=%LENGTH(&nombre); /* Longitud de la cadena */ %LET name=%SUBSTR(&nombre,1,&len-4); /* Obtención del nombre */
Quedando el código de la siguiente manera:
%MACRO importarTXT(Directorio);
FILENAME REFDIR "&Directorio";
%LET DIRID=%sysfunc(DOPEN(REFDIR)); %LET NFILES=%sysfunc(DNUM(&DIRID));
%DO I=1 %TO &Nfiles; %LET nombre=%sysfunc(DREAD(&DIRID,&i));
%LET len=%LENGTH(&nombre); /* Longitud de la cadena */ %LET name=%SUBSTR(&nombre,1,&len-4); /* Obtención del nombre */
PROC IMPORT OUT= WORK.&&name DATAFILE= "&Directorio\&nombre" DBMS=TAB REPLACE; DELIMITER='7C'x; GETNAMES=yes; RUN; %end;
%LET DIRCLOSE=%sysfunc(DCLOSE(&DIRID));
%MEND importarTXT;
%importarTXT(Directorio=C:\temp);
... View more