BookmarkSubscribeRSS Feed
Tip Semanal 024: Crear variables macro automáticas
Berenice25
SAS Employee

En el Tip 23 habíamos presentado las variables macro que generan los usuarios. 
En este nuevo Tip lo que haremos es mostrar la otra clase de variables macro: las variables macro automáticas. 

Tan solo a modo de recordatorio, les mencionamos que En el Lenguaje de Macros podemos distinguir: 
1) Variables macro 
2) Funciones macro 
3) Programas macro (o directamente 'macros') (en realidad las 'macros' son un concepto más amplio que 'programa', pero ya lo veremos en otro Tip) 

 Y dentro de las variables macro tenemos 2 clases: 

1.1) Variables macro generadas por el usuario ---> ya las vimos en el Tip 23 
1.2) Variables macro automáticas ---> son las que vamos a ver en este Tip 24 

 

/*-------------------*/
/* inicio del código */
/*-------------------*/

/****************************************************************************/
/* Atención! 																*/
/* Como vamos a trabajar con variables macro, es fundamental recordar que	*/
/* esta clase de variables guardan texto.									*/
/****************************************************************************/

/****************************************************************************/
/* Atención otra vez! 														*/
/* No piensen en crear variables macro que comiencen con 'sys'; porque esta	*/
/* forma de iniciar una macro está reservada por SAS.						*/
/****************************************************************************/


/*----------------------*/
/* Ejemplos: 			*/
/*----------------------*/

/*--------------------------------------*/
/* Ejemplo 01:	 						*/
/* Variable macro automática: SYSDATE9	*/
/*--------------------------------------*/

/************************************************************************************/
/* Devuelve la fecha en que se la sesión inició 									*/
/* El formato del valor de la variable macro es DATE9. Muestra 2 dígitos para el 	*/
/* día + 3 caracteres para el mes (en inglés) + 4 dígitos para el año. En total son	*/ 
/* 9 caracteres, por eso el '9' al final de la variable macro. 						*/
/************************************************************************************/

/************************************************************************************/
/* Atención! Esta fecha no se actualiza cuando permanecemos en muestra sesión de 	*/
/* SAS. Guarda la fecha del inicio de la sesión.								 	*/
/************************************************************************************/

%put &SYSDATE9;



/*--------------------------------------*/
/* Ejemplo 02:	 						*/
/* Variable macro automática: SYSDAY 	*/
/*--------------------------------------*/

/********************************************************************************/
/* Devuelve el día de la semana en que comienza la sesión.	En inglés, claro.	*/
/********************************************************************************/

%put &SYSDAY;



/*--------------------------------------*/
/* Ejemplo 03:	 						*/
/* Variable macro automática: SYSDSN 	*/
/*--------------------------------------*/

/************************************************************************/
/* Contiene la librería y el nombre de la última tabla creada.			*/
/************************************************************************/
Data sasuser.aire;
	set sashelp.air;
run;

%put &SYSDSN;



/*------------------------------------------*/
/* Ejemplo 04:	 							*/
/* Variable macro automática: SYSENCODING 	*/
/*------------------------------------------*/

/************************************************************************/
/* Entrega el sistema de codificación de la sesión de SAS. 				*/
/* Esto puede ser fundamental cuando cuando utilizamos programas		*/
/* de otros servidores o de diferentes sistemas operativos. 			*/
/* Esos programas que fallan y no sabemos porqué --> porque pueden		*/
/* tener diferente sistema de codificación!	 							*/
/************************************************************************/

/************************************************************************/
/*  Algunos ejemplos de sistemas de codificación:						*/
/*  --> UTF-8 (8-bit Unicode Transformation Format)						*/
/*  --> latin1 (ISO 8859-1) 											*/
/*  --> wlatin1 (Windows cp1252) 										*/
/*  --> latin2 (ISO/IEC 8859-2)											*/
/************************************************************************/


%put Es sistema de codificación de esta sesión es: &SYSENCODING;



/*------------------------------------------*/
/* Ejemplo 05:	 							*/
/* Variable macro automática: SYSLAST	 	*/
/*------------------------------------------*/

/************************************************************************/
/* Esta variable macro guarda el nombre de la última tabla	creada.		*/
/* El formato será 'librería.tabla' (que es diferente a lo que guarda	*/
/* la variable macro SYSDSN del ejemplo 03).							*/
/************************************************************************/

Data sasuser.clase;
	set sashelp.class;
run;

%put La tabla creada es: &SYSLAST;



/*--------------------------------------------------*/
/* Ejemplo 06:	 									*/
/* Variables macro automáticas: SYSSCP y SYSSCPL 	*/
/*--------------------------------------------------*/

/****************************************************************************/
/* Estas 2 variables macro informan el sistema operativo y la versión.		*/
/****************************************************************************/

%put El sistema operativos es: &SYSSCP;
%put y la versión es: &SYSSCPL;



/*--------------------------------------*/
/* Ejemplo 07:	 						*/
/* Variable macro automática: SYSTIME 	*/
/*--------------------------------------*/

/****************************************************************************/
/* Devuelve la hora de comienzo de la sesión. 								*/
/* El valor de la hora se muestra con el formato TIME5. (o sea 2 dígitos 	*/
/* para la hora y 2 dígitos para los minutos, separando hora y minutos 		*/
/* con el símbolo ':'). 													*/
/****************************************************************************/

/****************************************************************************/
/* Importante: No es la hora actual! No se confundan.						*/
/****************************************************************************/

%put Su sesión comenzó a las: &SYSTIME;



/*------------------------------------------*/
/* Ejemplo 08:	 							*/
/* Variable macro automática: SYSTIMEZONE 	*/
/*------------------------------------------*/

/****************************************************************************/
/* Esta variable macro contiene la zona de tiempo local.					*/
/* Se utiliza cuando se trabaja con usuarios y servidores en distintos 		*/
/* países, o en un país con diferentes zona de tiempo.						*/
/****************************************************************************/

%put &SYSTIMEZONE;



/*------------------------------------------*/
/* Ejemplo 09:	 							*/
/* Variable macro automática:  SYSUSERID	*/
/*------------------------------------------*/

/************************************/
/* Muestra el ID del usuario.		*/
/************************************/

%put &SYSUSERID;



/*--------------------------------------------------------------*/
/* Ejemplo 10:	 												*/
/* Variables macro automáticas:  SYSVER, SYSVLONG y SYSVLONG4	*/
/*--------------------------------------------------------------*/

/********************************************************************************/
/* Estas 3 variables macro dan información sobre la versión de SAS que se 		*/
/* está utilizando.																*/
/* Como es de suponer, tanto SYSVLONG como SYSVLONG4 son las que entregan		*/
/* más detalles.																*/
/* La única diferencia entre SYSVLONG y SYSVLONG4 se encuentra en el formato 	*/
/* de los años.																	*/
/********************************************************************************/

%put &SYSVER;
%put &SYSVLONG;
%put &SYSVLONG4;
 


/*------------------------------------------*/
/* Ejemplo 11:	 							*/
/* Variable macro automática: SYSNOBS	 	*/
/*------------------------------------------*/

/************************************************************************/
/* Guarda el número de observaciones de la última tabla creada. 		*/
/* Pueden probar con el paso Data y con el proc SQL que están a 		*/
/* continuación para ver el resultado. 									*/
/************************************************************************/

/* Con el paso Data */
Data sasuser.clase;
	set sashelp.class;
	where Age < 12;
run;
%put Tabla de salida: &SYSLAST; /* ver ejemplo 05 */
%put Cantidad de filas de la tabla de salida: &SYSNOBS;


/* Con proc SQL */
proc sql;
create table prueba01 as
select *
from sashelp.classfit 
where sex="F";
quit;

%put Tabla de salida: &SYSLAST; /* ver ejemplo 05 */
%put Cantidad de filas de la tabla de salida: &SYSNOBS;



/*---------------------*/
/* Fin de los ejemplos */
/*---------------------*/



/****************************************************************************/
/* Podemos ver todas las variables automáticas usando:						*/
/* %put _automatic_ 														*/
/****************************************************************************/

%Put _automatic_;  



/****************************************************************************/
/* También podemos ver todas las variables macro (automáticas + creadas	por	*/
/* el usuario) usando:														*/
/* %put _all_ 																*/
/****************************************************************************/

%Put _all_;  





/*----------------*/
/* fin del código */
/*----------------*/






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
Contributors