Publicado el :
Macro CREATION_INTERNE

Lista de conjuntos de datos de una librería

Este código también está disponible en: Deutsch English Français
La macro `dslist` tiene como objetivo proporcionar una lista de los conjuntos de datos contenidos en una librería SAS© dada. Acepta un parámetro `libref` para especificar la librería a analizar, con una gestión de los valores predeterminados ('user' o 'work' si no se proporciona). Un parámetro opcional `prefix` permite incluir el nombre de la librería delante de cada nombre de conjunto de datos en la lista resultante. La implementación utiliza `PROC SQL` para consultar la tabla del sistema `dictionary.tables`, filtrando las entradas para los miembros de tipo 'DATA' que pertenecen al `libref` objetivo. La lista compilada de nombres de conjuntos de datos se asigna luego a la variable macro global `_dslist_`.
Análisis de datos

Type : CREATION_INTERNE


Los datos se obtienen consultando la tabla del sistema `dictionary.tables` de SAS, que proporciona metadatos sobre todas las tablas registradas en el entorno SAS. Se trata de una fuente de información interna del sistema SAS y no de datos externos o creados por el usuario directamente en este script.

1 Bloque de código
Macro SAS
Explicación :
Este bloque marca el inicio de la ejecución de la macro y su definición. Anuncia la llamada a la macro e inicializa la variable macro global `_dslist_` a vacío. Contiene la lógica para asignar un valor predeterminado al parámetro `libref` si no se proporciona (utilizando la opción del sistema 'user' o 'work') y asegura que el `libref` esté en mayúsculas.
¡Copiado!
1%put MACRO CALLED: dslist v1.0;
2 
3%macro dslist(libref,prefix);
4 %global _dslist_;
5 %let _dslist_=;
6 %IF not %LENGTH(&libref) %THEN %let libref=%sysfunc(getoption(user));
7 %IF not %LENGTH(&libref) %THEN %let libref=work;
8 %let libref=%upcase(&libref);
2 Bloque de código
PROC SQL
Explicación :
Este segmento utiliza `PROC SQL` en modo silencioso (`noprint`) para consultar la tabla de metadatos `dictionary.tables`. Selecciona todos los nombres de miembros (`memname`) distintos que son de tipo 'DATA' y que pertenecen a la librería especificada por `&libref`. Los nombres recuperados se almacenan en la variable macro `_dslist_`, con un separador condicional: un espacio o `&libref..` si el parámetro `prefix` está activado.
¡Copiado!
1 PROC SQL noprint;
2 select distinct memname into :_dslist_ separated BY
3 %IF %LENGTH(&prefix) %THEN %DO;
4 " &libref.."
5 %END;
6 %ELSE %DO;
7 ' '
8 %END;
9 from dictionary.tables
10 where memtype='DATA'
11 and LIBNAME="&libref";
12 QUIT;
3 Bloque de código
Macro SAS
¡Copiado!
1%IF %LENGTH(&prefix) %THEN %let _dslist_=&libref..&_dslist_;
2 
3RUN;
4%mend dslist;
5 
Este material se proporciona "tal cual" por We Are Cas. No hay garantías, expresas o implícitas, en cuanto a la comerciabilidad o idoneidad para un propósito particular con respecto a los materiales o el código contenidos en este documento. We Are Cas no es responsable de los errores en este material tal como existe ahora o existirá, ni We Are Cas proporciona soporte técnico para el mismo.
Información de copyright : This is public domain software. No guarantee as to suitability or accuracy is given or implied. User uses this code entirely at their own risk.