En ocasiones necesitamos listar los archivos de un directorio. En SAS se puede hacer así. Creamos una tabla en WORK archivos con los nombres de los archivos y subcarpetas de un directorio:
/*PONE ARCHIVOS DE UN DIRECTORIO EN TABLA SAS*/
%macro archivos(directorio);
data archivos;
rc=filename('dir',"&directorio.");
dirid=dopen('dir');
numarchivos=dnum(dirid);
do i=1 to numarchivos;
nombrearchivos=dread(dirid,i);
output;
end;
rc=close(dirid);
drop rc i;
run;
%mend archivos; /*EJEMPLO SI QUEREMOS QUE NOS LISTE LAS TABLAS
SAS DEL WORK*/
proc sql noprint;
select path into:ub_work
from sashelp.vlibnam
where libname = "WORK";
quit;
%archivos(&ub_work.); data archivos;
set archivos;
where index(lowcase(nombrearchivos),"sas7bdat")>1;
run;
Puede sernos de gran utilidad cuando deseemos importar un gran número de ficheros de texto o si necesitamos manejarnos con archivos y shell, empleamos las funciones de “archivo” de SAS (en breve pondré un artículo sobre las funciones SAS). El programa se puede sofisticar empleando extensiones, eliminando carpetas,… Espero vuestros comentarios y mejoras sobre el uso de esta macro.