BookmarkSubscribeRSS Feed
Tip Semanal 022: Uso de put y de porcentaje_put para escribir en el log.sas
Berenice25
SAS Employee

El siguiente Tip permite ver la diferencia en el uso de 'put' y de '%put' para escribir información en el Log.
Además, presenta una característica especial en el uso de '%put' para escribir Notas, Warnings y Errores
Por último, al utilizar '%put' estamos pensando en el lenguaje de macros de SAS. Lo que nos sirve como excusa para poder hablar un poquito de las 2 etapas del procesamiento del Paso Data (Data Step).

 

/****************************************************************************/
/* Utilizaremos el mismo programa como base 3 veces, comentando sentencias  */
/* para ver los diferentes resultados.										*/
/****************************************************************************/


/****************************************************************************/ /* Hay que tener en cuenta que el programa genera una tabla de salida, pero */ /* esto no es lo importante. Lo importante es mirar el Log! */ /****************************************************************************/ /*-------------------*/ /* inicio del código */ /*-------------------*/ /********************************************************************/ /* Crea una tabla con 4 columnas */ /* La vamos a utilizar como tabla de entrada para nuestro programa. */ /********************************************************************/ data inventario; input Stock Venta_Cant Id 8-11 Item $ 13-26; datalines; 100 52 1001 martillo 345 49 1020 sierra 237 55 2003 destornillador 864 65 3015 pala 932 38 4215 rastrillo ; run; /****************************************************************************/ /* Ahora veremos la diferencia del uso de put y de %put */ /* Y de paso presentamos/recordamos cuáles son dos las etapas de */ /* procesamiento del Paso Data: */ /* Etapa 1.- Compilación: */ /* - analiza la sintaxis del código */ /* - crea la estructurala/s nueva/s tabla/s */ /* - etc. etc. */ /* Etapa 2.- Ejecución: (ahora sí vamos a los datos) */ /* - comienza con todas las variables en missing */ /* - trabaja en forma iterativa */ /****************************************************************************/ /****************************************************************************/ /* En qué etapa funcionan las varibles macro? En la */ /* 'Etapa de compilación' (al menos al principio; después viene la locura!) */ /****************************************************************************/ /****************************************************************************/ /* Recordar que: hay que mirar el Log! */ /* La tabla de salida no es importante en este caso. */ /****************************************************************************/ /****************************************************************************/ /* Las sentencias IF que vamos a utilizar se pueden superponer. No hay */ /* problema con esto. */ /****************************************************************************/ /* Situación 01 */ /* El programa solamente utiliza %put (put está comentado) */ /* La sentencia %put escribe en el Log. Y está escribiendo con colores! */ /* Muestra el funcionamiento durante la primera etapa del Paso Data: la 'Etapa de compilación' */ /* Notar que %put NO está trabajando con los datos de la tabla de entrada; no está tomando en cuenta los IF! */ /* '%put' funciona en la 'Etapa de compilación' */ data inventario_temp01; set inventario; if Stock < Venta_Cant then do; /* las 3 sentencias 'put' están comentadas */ *put 'No alcanza el Stock para la venta del producto: ' Item=; %put NOTE: (no es de SAS) "sigue al conejo blanco"; end; if Stock < 300 and Venta_Cant > 50 then do; /* las 3 sentencias 'put' están comentadas */ *put 'Reponer el producto: ' Item=; %put WARNING: (no es de SAS) "¿qué es la Matrix?"; end; if Stock >= 300 then do; /* las 3 sentencias 'put' están comentadas */ *put 'No es necesario reponer el producto: ' Item=; %put ERROR: (no es de SAS) "¿píldora roja o píldora azul?"; end; run; /* Situación 02 */ /* El programa solamente utiliza put (%put está comentado) */ /* La sentencia put también escribe en el Log, pero en otra etapa del Paso Data. */ /* Muestra el funcionamiento durante la segunda etapa del Paso Data: la 'Etapa de ejecución' */ /* Notar que ahora está trabajando con los datos de la tabla de entrada; está tomando en cuenta los IF! */ /* 'put' funciona en la 'Etapa de ejecución' */ data inventario_temp02; set inventario; if Stock < Venta_Cant then do; /* las 3 sentencias '%put' están comentadas */ put 'No alcanza el Stock para la venta del producto: ' Item=; *%put NOTE: (no es de SAS) "sigue al conejo blanco"; end; if Stock < 300 and Venta_Cant > 50 then do; /* las 3 sentencias '%put' están comentadas */ put 'Reponer el producto: ' Item=; *%put WARNING: (no es de SAS) "¿qué es la Matrix?"; end; if Stock >= 300 then do; /* las 3 sentencias '%put' están comentadas */ put 'No es necesario reponer el producto: ' Item=; *%put ERROR: (no es de SAS) "¿píldora roja o píldora azul?"; end; run; /* Situación 03 */ /* El programa utiliza put y %put */ /* Ver (en el Log, desde ya) en qué momento funcionan %put y put */ /* Muestra el funcionamiento durante la 2 etapas del Paso Data */ data inventario_temp03; set inventario; if Stock < Venta_Cant then do; /* put y %put están activas */ put 'No alcanza el Stock para la venta del producto: ' Item=; %put NOTE: (no es de SAS) "sigue al conejo blanco"; end; if Stock < 300 and Venta_Cant > 50 then do; /* put y %put están activas */ put 'Reponer el producto: ' Item=; %put WARNING: (no es de SAS) "¿qué es la Matrix?"; end; if Stock >= 300 then do; /* put y %put están activas */ put 'No es necesario reponer el producto: ' Item=; %put ERROR: (no es de SAS) "¿píldora roja o píldora azul?"; end; run; /*-------------------*/ /* fin del código */ /*-------------------*/


Preguntas exclusivas para la gente que llegó hasta acá: 
¿Por qué %put puede escribir en colores?
¿Existen otras opciones para escribir en colores?

 

1 Comment

sas-innovate-2024.png

Available on demand!

Missed SAS Innovate Las Vegas? Watch all the action for free! View the keynotes, general sessions and 22 breakouts on demand.

 

Register now!

Article Labels
Article Tags
Contributors