Publié le :
Macro CREATION_INTERNE

Macro %mixcase pour la mise en forme de texte en casse mixte

Ce code est également disponible en : Deutsch English Español
La macro `%mixcase` prend une variable de chaîne de caractères en entrée et la transforme pour qu'elle respecte une casse mixte. Elle convertit d'abord toute la chaîne en minuscules, puis capitalise la première lettre du premier mot. Ensuite, elle parcourt la chaîne et capitalise la première lettre de chaque mot suivant un délimiteur spécifié (par défaut : espace, ampersand, astérisque, tiret, virgule, barre oblique, point-virgule). Des règles spéciales de substitution sont appliquées pour forcer certains mots ou abréviations (comme 'II', 'III') en majuscules et d'autres (comme 'or', 'for', '-et-', '-du-', '-de-') en minuscules, y compris après des tirets. Un paramètre `target` permet de spécifier une nouvelle variable pour stocker le résultat. La macro est conçue pour être utilisée au sein d'un DATA STEP afin de standardiser la présentation textuelle.
Analyse des données

Type : CREATION_INTERNE


La macro `%mixcase` est une utilitaire de transformation de chaîne de caractères et ne gère pas directement la lecture ou la création de jeux de données. Elle opère sur une variable de chaîne de caractères existante, passée en argument, dans le contexte d'un DATA STEP. Par conséquent, la source des données traitées dépendra de la manière dont le DATA STEP appelant la macro est alimenté (par exemple, création de données internes, lecture de SASHELP, ou importation de fichiers externes).

1 Bloc de code
Macro %mixcase
Explication :
Ce bloc définit la macro `%mixcase`. Elle prend en paramètres la variable de chaîne `var` à traiter, une chaîne `dlim` spécifiant les délimiteurs de mots (par défaut ' &-*+,/;'), une variable `target` optionnelle pour le résultat, et un paramètre `upper` (qui est défini mais non utilisé dynamiquement dans le corps de la macro pour les capitalisations spéciales). La macro commence par convertir l'intégralité de la variable `var` en minuscules. Elle capitalise ensuite la première lettre du premier mot. Pour les mots suivants, elle capitalise la première lettre si elle est précédée par un délimiteur spécifié. Des règles de substitution sont ensuite appliquées pour des cas spécifiques, forçant certaines sous-chaînes en majuscules (ex: ' III', ' II') ou en minuscules (ex: ' or ', ' for ', '-et-', '-du-', '-de-') pour affiner la casse mixte du texte, garantissant une uniformité dans la présentation.
Copié !
1%macro mixcase ( var , dlim=' &-*+,/;' , target=, upper=II III ) ;
2 drop __i ;
3 %IF %quote(&target) ^= %THEN
4 %DO ;
5 &target = &var ;
6 %let var = &target ;
7 %END ;
8 &var = lowcase ( &var ) ;
9 substr (&var,1,1) = upcase(substr(&var,1,1)) ;
10 DO __i = 1 to LENGTH ( &var ) - 1 ;
11 IF index ( &dlim , substr(&var,__i,1) ) THEN
12 substr(&var,__i+1,1) = upcase(substr(&var,__i+1,1)) ; END ;
13 *-- SPECIAL CASES: ALL UPPER CASE ;
14 IF INDEX(&var,' Iii')>0 THEN
15 SUBSTR(&var,INDEX(&var,' Iii'),4)=' III';
16 IF INDEX(&var,' Ii')>0 THEN
17 SUBSTR(&var,INDEX(&var,' Ii'),3)=' II';
18 
19 *-- ALL LOWER CASE;
20 IF INDEX(&var,' Or ')>0 THEN
21 SUBSTR(&var,INDEX(&var,' Or '),4)=' or ';
22 IF INDEX(&var,' For ')>0 THEN
23 SUBSTR(&var,INDEX(&var,' For '),5)=' for ';
24 IF INDEX(&var,'-Et-')>0 THEN
25 SUBSTR(&var,INDEX(&var,'-Et-'),4)='-et-';
26 IF INDEX(&var,'-Du-')>0 THEN
27 SUBSTR(&var,INDEX(&var,'-Du-'),4)='-du-';
28 IF INDEX(&var,'-De-')>0 THEN
29 SUBSTR(&var,INDEX(&var,'-De-'),4)='-de-';
30%mend mixcase ;
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.
Informations de Copyright : %mixcas written by Ian Whitlock.