Publicado el :
Macro CREACION_INTERNA

Macro de extracción de opciones de dataset

Este código también está disponible en: Français Deutsch English
La macro `_option` tiene la función de analizar una cadena de caracteres pasada como argumento, que se supone que representa un nombre de dataset SAS© que podría incluir opciones entre paréntesis (ej: `mi_lib.mi_tabla(keep=var1)`). Su objetivo es extraer y devolver solo la subcadena que contiene estas opciones, sin incluir el nombre del dataset. Si no se detecta ningún paréntesis en la cadena, la macro no devolverá ningún valor, actuando específicamente como un extractor dirigido.
Análisis de datos

Type : CREACION_INTERNA


La macro no interactúa con tablas SAS ni lee datos de fuentes externas o SASHELP. Opera exclusivamente sobre una cadena de caracteres proporcionada como argumento, realizando manipulaciones textuales internas para producir una subcadena. Los 'datos' procesados son, por lo tanto, el propio argumento textual de la macro.

1 Bloque de código
Directivas de registro
Explicación :
Este bloque contiene directivas `%put` que se utilizan para mostrar mensajes informativos en el log de SAS. La primera línea confirma la llamada a la macro `_OPTION` con una fecha de ejecución. La segunda línea muestra la información de copyright del autor. La tercera línea (`%put;`) inserta una línea vacía en el log para mejorar la legibilidad.
¡Copiado!
1%put NOTE: You have called the macro _OPTION, 2004-03-29.;
2%put NOTE: Copyright (c) 2001-2004 Rodney Sparapani;
3%put;
4 
2 Bloque de código
MACRO `_option`
Explicación :
Este bloque define la macro `_option` que acepta un argumento `arg1` (la cadena de caracteres a analizar). Se declara una variable macro local `i` para almacenar la posición del primer paréntesis de apertura `(`. La función `%index` se utiliza para encontrar esta posición. Si se encuentra un paréntesis (`%if &i %then`), la función `%substr` extrae la subcadena que comienza justo después de este paréntesis de apertura hasta el final de la cadena. Es esta subcadena, que se supone que contiene las opciones del dataset, la que es devuelta por la macro.
¡Copiado!
1%macro _option(arg1);
2 
3%local i;
4 
5%let i=%index(&arg1, %str(%());
6 
7%IF &i %THEN %substr(&arg1, &i+1, %LENGTH(%substr(&arg1, &i+1)));
8 
9%mend _option;
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.
Información de copyright : Copyright (c) 2001-2004 Rodney Sparapani. Distribuido bajo los términos de la Licencia Pública General de GNU, versión 2 o posterior, sin ninguna garantía explícita o implícita.