Publicado el :
Macro CREACION_INTERNA

Macro de búsqueda de índice de palabra en una lista

Este código también está disponible en: Deutsch English Français Español
Esta macro recorre una cadena de caracteres (`full`) considerada como una lista de palabras separadas por un delimitador (`dlm`, espacio por defecto). Compara cada palabra con el valor buscado (`sub`) y devuelve su índice (1 para la primera palabra, etc.). Ofrece opciones para la sensibilidad a mayúsculas y minúsculas (`case`) y para devolver la última ocurrencia encontrada (`lastone`) en lugar de la primera. Depende de otra macro llamada `%AHGcount` para determinar el número de palabras.
Análisis de datos

Type : CREACION_INTERNA


Se trata de una macro de procesamiento de cadenas de caracteres que no consume tablas de datos, sino que actúa sobre los parámetros proporcionados durante la llamada.

1 Bloque de código
MACRO
Explicación :
Definición de la macro `AHGindex`. Inicializa las variables locales, gestiona la conversión a mayúsculas si la búsqueda no distingue entre mayúsculas y minúsculas, itera sobre las palabras de la cadena usando `%scan` y la macro externa `%AHGcount`, actualiza el índice si se encuentra una coincidencia y devuelve el valor final del índice.
¡Copiado!
1%macro AHGindex(full,sub,dlm=%str( ),case=0,lastone=0);
2 %local index i;
3 %IF not &case %THEN
4 %DO;
5 %let full=%upcase(&full);
6 %let sub=%upcase(&sub);
7 %END;
8 %let index=0;
9 %DO i=1 %to %AHGcount(&full,dlm=&dlm);
10 %IF %scan(&full,&i,&dlm)=&sub %THEN
11 %DO;
12 %let index=&i;
13 %IF not &lastone %THEN %goto indexExit;
14 %END;
15 %END;
16 %indexExit:
17 &index
18%mend;
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.