Los datos provienen de una consulta del sistema (PROC METADATA) y se transforman a través de archivos temporales y el motor XML.
1 Bloque de código
PROC METADATA
Explicación : Envía una consulta XML formateada (`GetMetadataObjects`) al servidor de metadatos para recuperar los objetos del tipo especificado por la macro-variable `&type`.
¡Copiado!
filename response temp;
/* get list of libraries */
proc metadata in=
"<GetMetadataObjects><Reposid>$METAREPOSITORY</Reposid>
<Type>&type</Type><Objects/><NS>SAS</NS>
<Flags>0</Flags><Options/></GetMetadataObjects>"
out=response;
run;
Explicación : Paso de depuración que escribe la respuesta XML bruta recibida del servidor de metadatos en el registro de SAS.
¡Copiado!
data _null_;
infile response lrecl=1048576;
input;
put _infile_;
run;
1
DATA _null_;
2
INFILE response lrecl=1048576;
3
INPUT;
4
put _infile_;
5
RUN;
3 Bloque de código
DATA STEP
Explicación : Genera dinámicamente un archivo SXLEMAP (Mapa XML) para instruir al motor XML de SAS sobre cómo leer la respuesta jerárquica y aplanarla en las columnas 'id' y 'name'.
¡Copiado!
filename sxlemap temp;
data _null_;
file sxlemap;
put '<SXLEMAP version="1.2" name="SASObjects"><TABLE name="SASObjects">';
put "<TABLE-PATH syntax='XPath'>/GetMetadataObjects/Objects/&type";
put "</TABLE-PATH>";
/* ... (création du mapping XML) ... */
put '</COLUMN></TABLE></SXLEMAP>';
run;
1
filename sxlemap temp;
2
DATA _null_;
3
file sxlemap;
4
put '<SXLEMAP version="1.2" name="SASObjects"><TABLE name="SASObjects">';
5
put "<TABLE-PATH syntax='XPath'>/GetMetadataObjects/Objects/&type";
6
put "</TABLE-PATH>";
7
/* ... (création du mapping XML) ... */
8
put '</COLUMN></TABLE></SXLEMAP>';
9
RUN;
4 Bloque de código
PROC SORT Data
Explicación : Utiliza el motor `LIBNAME XML` con el mapa generado para leer el archivo temporal como una tabla de SAS, ordena los datos por nombre y los guarda en la tabla de salida especificada por `&outds`.
¡Copiado!
libname _XML_ xml xmlfileref=response xmlmap=sxlemap;
proc sort data= _XML_.SASObjects out=&outds;
by name;
run;
1
LIBNAME _XML_ xml xmlfileref=response xmlmap=sxlemap;
2
3
PROC SORTDATA= _XML_.SASObjects out=&outds;
4
BY name;
5
RUN;
5 Bloque de código
Limpieza
Explicación : Elimina las referencias a los archivos temporales y a la biblioteca XML para dejar el entorno limpio.
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.
SAS y todos los demás nombres de productos o servicios de SAS Institute Inc. son marcas registradas o marcas comerciales de SAS Institute Inc. en los EE. UU. y otros países. ® indica registro en los EE. UU. WeAreCAS es un sitio comunitario independiente y no está afiliado a SAS Institute Inc.
Este sitio utiliza cookies técnicas y analíticas para mejorar su experiencia.
Saber más.