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

hackathon24-white-horiz.png

2025 SAS Hackathon: There is still time!

Good news: We've extended SAS Hackathon registration until Sept. 12, so you still have time to be part of our biggest event yet – our five-year anniversary!

Register Now

Article Labels
Article Tags
Contributors