domingo, 26 de abril de 2015

Ampliando la funcionalidad de las macros de SAS: %sysfunc

Cuando trabajamos con SAS/BASE es bastante común el uso de macro lenguaje.



El lenguaje macro nos permite dotar al código SAS de pasos data de distintas capacidades, entre ellas:

- Parametrizar y automatizar procesos . Replicarlos en base a parámetros
- Encapsular y reutilizar procesos
- Lanzar procesos de forma iterativa
- Crear macros de uso común
- Crear ramas de ejecución en base a sentencias condicionales



Una forma de ampliar las funcionalidades del lenguaje macro es el empleo de la función macro %SYSFUNC que nos permite emplear funciones propias de los pasos data de SAS en el entorno macro.

A continuación algunos ejemplos de uso de la función %sysfunc.

%let fecha1 = %sysfunc(date(),ddmmyy8.);  /* Obtenemos la fecha del sistema */

%put fecha1 = &fecha1;

%let fecha2 = %sysfunc(intnx(day,%sysfunc(date()),1),ddmmyy8.); /* Desplazamos la fecha del sistema en 1 día */

%put fecha2 = &fecha2;

%let var1 = PRUEBA;

%let var2 = %sysfunc(translate(&var1.,N, P));  /* Reemplazar caracter P por n */

%put var2 = &var2.;

%let var3 = %sysfunc(substr(&var1.,1,3));  /* Obtener una subcadena de 3 posiciones */

%put var3 = &var3.;

%let ingresos = 1000;

%let ingresos = %sysfunc(putn(&ingresos, euro10.2));  /* Convertir numérico a formato moneda euro */

%put ingresos =  &ingresos;

%let var2 = %sysfunc(trim(%sysfunc(left(&var1))));  /* Eliminar blancos y alinear a la izquierda */

%let existe_tab = %sysfunc(exist(tabsas.consumo_4));  /* Comprobar existencia de tabla SAS */

%let nomfich = /home/juanvg1972/ficheros/EJ3_test1.txt;

%let existe_fich =  %sysfunc(fileexist(&nomfich)); /* Comprobar existencia de fichero */

%put existe_fich = &existe_fich;

Formación SAS