Publicado el :
Macro NINGUNA

Macro SAS para la captura y visualización de una sección del log

Este código también está disponible en: Deutsch English Français
Attention : Este código requiere privilegios de administrador.
La macro `%cliplog` está diseñada para extraer una porción del log de SAS©. Toma `marker1` y `marker2` como componentes del marcador de inicio, `pos` (por defecto 'last') para la dirección de búsqueda, y `file` (por defecto 'c:\test.txt') para la ruta del archivo de salida. Desactiva temporalmente la opción `mprint` de SAS© para evitar que sus propios comandos se impriman en el log. A través de la interfaz Display Manager (comando `dm`), la macro localiza el marcador combinado (`&marker1&marker2`) en el log (búsqueda hacia atrás si `pos=last`), marca esta posición, se mueve al final del log y coloca una segunda marca. El texto entre estas dos marcas (desde el marcador encontrado hasta el final del log) se copia al portapapeles de SAS© y luego se pega en el archivo especificado. Finalmente, el comando `x` se utiliza para abrir el archivo de texto resultante con la aplicación Notepad. La opción `mprint` se restaura al final de la ejecución de la macro.
Análisis de datos

Type : NINGUNA


El script no lee ni crea conjuntos de datos SAS convencionales. Interactúa directamente con el log de SAS para extraer texto y escribirlo en un archivo externo en formato de texto.

1 Bloque de código
MACRO DEFINITION
Explicación :
Este bloque define la macro `%cliplog`. Está diseñada para capturar una sección del log de SAS utilizando los comandos de Display Manager (`dm`). La macro desactiva temporalmente la opción `mprint` para evitar la inclusión de sus propias instrucciones en el log capturado. Localiza una cadena (`marker1` concatenado con `marker2`), marca esta posición y luego marca el final del log. El contenido entre estos dos puntos se copia al portapapeles de SAS y luego se escribe en el archivo especificado por el parámetro `file`. Finalmente, el comando `x "notepad &file"` se utiliza para abrir el archivo generado en Notepad, y la opción `mprint` se restaura.
¡Copiado!
1%macro cliplog(marker1,marker2,pos=last,file=c:\test.txt) ;
2 * note: split search text in half so we dont go and find it in our macro call ;
3 * note: save mprint option since we want mprint turned off for the macro RUN, otherwise
4 we get our search text written to the log and we will find it ;
5 %let o=%sysfunc(getoption(mprint)) ;
6 options nomprint ;
7/* log;
8 find '&marker1&marker2' &pos;
9 rfind;
10 mark;
11 bottom;
12 mark;
13 store;
14 unmark;
15 notepad;
16 clear;
17 paste;
18 file '&file';
19 end
20*/
21 dm "log;find '&marker1&marker2' &pos;mark;bottom;mark;store;unmark;notepad;clear;paste;file '&file';end" ;
22 * view the file in windows notepad ;
23 x "notepad &file" ;
24 options &o ;
25%mend cliplog ;
2 Bloque de código
EXEMPLE D'UTILISATION
Explicación :
Este bloque ilustra el uso de la macro `%cliplog`. La línea `***BEGIN***;` es una instrucción SAS que escribe un marcador en el log. El comentario `/* now run all the SAS code you would like to capture */` indica dónde insertar el código del que se desea capturar el log. La llamada `%cliplog(***BEGIN,***);` ejecuta la macro para capturar el log. La macro buscará la primera ocurrencia de `***BEGIN***` (buscando hacia atrás si `pos=last`), marcará esta posición, luego el final del log, y copiará el texto entre estos dos puntos.
¡Copiado!
1***BEGIN***;
2/* this marks where to start the copying from the log */
3/* now
4run all the SAS code you would like to capture */
5%cliplog(***BEGIN,***) ;
6/* finally we call the macro which captures the log from the point we previously marked */
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.