Attention : Este código requiere privilegios de administrador.
El script define una macro principal `message_js` que escribe un archivo HTML iterando sobre listas de macro-variables. Utiliza macros de utilidad (prefijo AHG) para gestionar estas listas. El script consulta la vista `sashelp.vlibnam` para listar las bibliotecas activas (excluyendo SASHELP, SASUSER, MAPS) y transformarlas en enlaces HTML. Una segunda macro `dosomething` verifica la existencia de archivos específicos (a través de una ruta definida en `__snapshot`) y genera la página HTML final que luego se abre mediante un comando del sistema.
Análisis de datos
Type : MIXTE
Utiliza datos codificados (datalines/cards4 a través de la macro AHG2arr) y metadatos de sesión SAS (sashelp.vlibnam).
1 Bloque de código
DATA STEP
Explicación : Definición de la macro `message_js` que crea un archivo de texto (HTML) a través de un Data Step `_NULL_`. Itera sobre los prefijos de las variables proporcionadas para escribir el contenido. Luego ejecuta un comando del sistema `x` para abrir el archivo generado (comando específico de Windows 'start', a adaptar para Linux).
¡Copiado!
%macro message_js(pre,file=) ;
data _null_ ;
file "&file";
put "&html1";
put "&html2";
put "&html3";
%local i J one;
%do j=1 %to %AHGcount(&pre);
%let one=%scan(&pre,&j,%str( ));
%if not %symexist(&one._n) %then
%do;
%if %bquote(%sysfunc(rank(%substr(%bquote(&&&one),1,1))))=34
or %bquote(%sysfunc(rank(%substr(%bquote(&&&one),1,1))))=39 %then put %unquote(&&&one);
%else put "%unquote(&&&one)";
%end;
%else
%do i=1 %to &&&one._n;
%put ############### &&&one&i;
%if %bquote(%sysfunc(rank(%substr(%bquote(&&&one&i),1,1))))=34
or %bquote(%sysfunc(rank(%substr(%bquote(&&&one&i),1,1))))=39 %then put %unquote(&&&one&i);
%else put "%unquote(&&&one&i)";
;
put;
%end;
%end;
put "&html4";
put "&html5";
run ;
x "start &file";
%mend message_js ;
option mprint;
or %bquote(%sysfunc(rank(%substr(%bquote(&&&one&i),1,1))))=39 %THEN put %unquote(&&&one&i);
22
%ELSE put "%unquote(&&&one&i)";
23
;
24
put;
25
%END;
26
%END;
27
put "&html4";
28
put "&html5";
29
RUN ;
30
31
x "start &file";
32
%mend message_js ;
33
option mprint;
2 Bloque de código
MACRO CALL Data
Explicación : Inicialización de variables macro y creación de datos HTML estáticos mediante llamadas a la macro de utilidad `%AHG2arr` y bloques `cards4`.
Explicación : Recuperación de las rutas de las bibliotecas SAS activas (excluyendo bibliotecas del sistema) de `sashelp.vlibnam` para construir etiquetas de anclaje HTML.
¡Copiado!
%AHGdel(url,like=1);
proc sql;
create table html as
select '''<a href="'||trim(path)||'">'||compress(libname)||'</a>''' as url
from sashelp.vlibnam
WHERE not libname in ( 'SASHELP','SASUSER','MAPS');
;
quit;
1
%AHGdel(url,like=1);
2
3
PROC SQL;
4
create TABLE html as
5
select '''<a href="'||trim(path)||'">'||compress(LIBNAME)||'</a>''' as url
6
from sashelp.vlibnam
7
WHERE not LIBNAME in ( 'SASHELP','SASUSER','MAPS');
8
;
9
QUIT;
4 Bloque de código
DATA STEP
Explicación : Transferencia de la lista de URLs generadas desde la tabla SAS a macro-variables (`url1`, `url2`, etc.) para su uso posterior.
¡Copiado!
data _null_;
set html;
call symput('url'||%AHGputN(_n_,BEST.),TRIM(url));
call symput('url_N',_N_);
run;
%AHGpmlike(url);
Explicación : Definición y ejecución de la macro `dosomething`. Verifica la presencia de archivos específicos en un directorio `__snapshot` (si está definido), construye enlaces dinámicos si los archivos existen y finalmente llama a `message_js` para generar el informe HTML.
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.