Publié le :
Macro CREATION_INTERNE

Macro de recherche d'index de mot dans une liste

Ce code est également disponible en : Deutsch English Español Français
Cette macro parcourt une chaîne de caractères (`full`) considérée comme une liste de mots séparés par un délimiteur (`dlm`, espace par défaut). Elle compare chaque mot avec la valeur cherchée (`sub`) et retourne son index (1 pour le premier mot, etc.). Elle offre des options pour la sensibilité à la casse (`case`) et pour retourner la dernière occurrence trouvée (`lastone`) au lieu de la première. Elle dépend d'une autre macro nommée `%AHGcount` pour déterminer le nombre de mots.
Analyse des données

Type : CREATION_INTERNE


Il s'agit d'une macro de traitement de chaînes de caractères qui ne consomme pas de tables de données, mais agit sur les paramètres fournis lors de l'appel.

1 Bloc de code
MACRO
Explication :
Définition de la macro `AHGindex`. Elle initialise les variables locales, gère la conversion en majuscules si la recherche est insensible à la casse, boucle sur les mots de la chaîne à l'aide de `%scan` et de la macro externe `%AHGcount`, met à jour l'index si une correspondance est trouvée, et retourne la valeur finale de l'index.
Copié !
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;
Ce matériel est fourni "tel quel" par We Are Cas. Il n'y a aucune garantie, expresse ou implicite, quant à la qualité marchande ou à l'adéquation à un usage particulier concernant le matériel ou le code contenu dans les présentes. We Are Cas n'est pas responsable des erreurs dans ce matériel tel qu'il existe maintenant ou existera, et We Are Cas ne fournit pas de support technique pour celui-ci.