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);