Publicado el :
Utilidad CREATION_INTERNE

Macro SAS _DATA: Extracción del nombre de la tabla

Este código también está disponible en: Français Deutsch English
La macro `_DATA` toma un único argumento, `arg1`, que representa una referencia de tabla SAS© (por ejemplo, 'librería.tabla' o 'tabla_simple'). Analiza esta cadena para determinar si contiene un punto ('.') que indica la presencia de un prefijo de librería. Si se detecta un punto, utiliza la función `%scan` para extraer la segunda parte de la cadena (el nombre de la tabla) después del punto. Si no se encuentra ningún punto, considera la totalidad de la cadena como el nombre de la tabla. En ambos casos, se aplica la función `%lowcase` para convertir el nombre de la tabla resultante a minúsculas. Las posibles opciones de tabla (por ejemplo, `(obs=1)`) se ignoran implícitamente por esta lógica de extracción.
Análisis de datos

Type : CREATION_INTERNE


La macro `_DATA` es una función de utilidad que manipula cadenas de caracteres pasadas como argumento. No lee ni escribe directamente en tablas SAS existentes. Sus entradas son cadenas que representan referencias de tablas SAS y su salida es una cadena de caracteres correspondiente al nombre de la tabla extraída.

1 Bloque de código
Définition de macro `_DATA`
Explicación :
Este bloque define la macro `_DATA`. Utiliza una instrucción condicional `%if` con `%index` para verificar la presencia de un punto ('.') en el argumento `&arg1`. Si hay un punto, la función macro `%scan` extrae el segundo elemento de la cadena (el nombre de la tabla), utilizando el punto y el carácter de paréntesis de apertura `%str(()` como delimitadores para manejar las opciones de tabla. De lo contrario, `%scan` extrae el primer elemento utilizando solo el carácter de paréntesis de apertura como delimitador. La función `%lowcase` se aplica al resultado para asegurar que el nombre de la tabla se devuelva en minúsculas. El carácter `%str(%)` se utiliza para escapar el paréntesis de apertura dentro de `%scan`.
¡Copiado!
1%macro _data(arg1);
2 
3%IF %index(&arg1, .) %THEN %lowcase(%scan(&arg1, 2, .%str(%())));
4%ELSE %lowcase(%scan(&arg1, 1, %str(%())));
5 
6%mend _data;
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-2007 Rodney Sparapani. Este código es software libre, redistribuible y modificable bajo los términos de la Licencia Pública General GNU, versión 2 o posterior.