Ha llegado una búsqueda y ponemos el truco. Creo que ya lo puse pero no está mal de recordarlo.

  1. Creamos 20 datasets aleatorios con 10 observaciones cada uno:
%macro doit;

%do i=1 %to 20;

data zzdatos_&i.;

do i=1 to 10;

output;

end;

run;

%end;

%mend;

Un bucle fácil de macros ha generado 20 dataset que se llaman ZZDATOS_n. Recomiendo siempre emplear nombres «absurdos» para el trabajo con esta metodología.

  1. Empleamos un PROC SQL sobre la librería DICTIONARY, en concreto sobre la tabla tables.
proc sql noprint;

select memname into:lista_tablas separated by " "

from dictionary.tables

where index(memname,"ZZDATO")>0;

quit;

Recordemos que en SASHELP tenemos vistas de estas tablas, el SEPARATED BY es el que indica que hacemos una selección múltiple.

  1. Realizamos la unión:
data tablon;

set &lista_tablas.;

run;

proc delete data=&lista_tablas.;run;

Sólo tenemos que emplear la macrovariable _& lista_tablas. y podemos realizar cualquier operación con esta lista. Sé que soy un poco pesado con esta metodología pero me parece importante usarla porque puede ayudarnos a ahorrar código y automatizar procesos. Por supuesto si alguien tiene dudas sugerencias o un trabajo sin «over time» (ahora se llama así a echar más horas que un tonto) ya sabe rvaquerizo@analisisydecision.es