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!
%macro cliplog(marker1,marker2,pos=last,file=c:\test.txt) ;
* note: split search text in half so we dont go and find it in our macro call ;
* note: save mprint option since we want mprint turned off for the macro run, otherwise
we get our search text written to the log and we will find it ;
%let o=%sysfunc(getoption(mprint)) ;
options nomprint ;
/* log;
find '&marker1&marker2' &pos;
rfind;
mark;
bottom;
mark;
store;
unmark;
notepad;
clear;
paste;
file '&file';
end
*/
dm "log;find '&marker1&marker2' &pos;mark;bottom;mark;store;unmark;notepad;clear;paste;file '&file';end" ;
* view the file in windows notepad ;
x "notepad &file" ;
options &o ;
%mend cliplog ;
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!
***BEGIN***; /* this marks where to start the copying from the log */
/* now run all the SAS code you would like to capture */
%cliplog(***BEGIN,***) ; /* finally we call the macro which captures the log from the point we previously marked */
1
***BEGIN***;
2
/* this marks where to start the copying from the log */
3
/* now
4
run 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.
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.