Publié le :
Macro CREATION_INTERNE

Macro utilitaire _PAD pour le remplissage de texte

Ce code est également disponible en : Deutsch English Español
La macro _PAD prend un argument positionnel (ARG1) qui définit le caractère ou la chaîne de caractères à utiliser pour le remplissage. Un paramètre nommé optionnel, LS, permet de spécifier la longueur totale désirée pour la chaîne de sortie. Si ARG1 est vide, la macro utilise '20' comme chaîne de remplissage par défaut et un caractère 'X' comme indicateur spécial, ce qui modifie la façon dont la longueur de remplissage est calculée (elle est divisée par deux). La macro construit la chaîne de sortie en répétant le motif de remplissage jusqu'à atteindre ou dépasser la longueur LS, puis retourne la chaîne résultante, potentiellement suivie d'un caractère spécial. Le résultat est retourné entre guillemets doubles.
Analyse des données

Type : CREATION_INTERNE


La macro ne traite pas de données externes. Elle génère une chaîne de caractères en interne en fonction des paramètres d'entrée, principalement pour des besoins d'affichage ou de formatage de texte.

1 Bloc de code
MACRO _PAD
Explication :
Ce bloc de code définit la macro _PAD. Elle commence par déclarer des variables macro locales (i, x, return). La macro évalue la longueur du paramètre 'pad'. Si 'pad' est fourni, elle tente d'extraire une seconde partie (pour 'x') et utilise la première partie comme 'pad'. Si 'pad' est vide, elle utilise '20' comme valeur par défaut pour 'pad' et 'X' pour 'x'. Ensuite, elle recalcule la longueur de 'pad' dans 'i'. Si 'x' est 'X', la longueur 'i' est divisée par deux. Une boucle `%do` concatène la chaîne 'pad' à la variable 'return' de manière répétée, en s'incrémentant par la longueur 'i', jusqu'à ce que la longueur 'ls' soit atteinte ou dépassée. Finalement, elle retourne la chaîne construite 'return', entourée de guillemets doubles, potentiellement suivie du caractère 'x'.
Copié !
1%macro _pad(arg1, pad=&arg1, ls=%_ls);
2 
3%IF %eval(&ls)>0 %THEN %DO;
4 %local i x return;
5 
6 %let i=%LENGTH(&pad);
7
8 %IF &i %THEN %DO;
9 %let x=%upcase(%scan(&pad, 2, ''""));
10 %let pad=%scan(&pad, 1, ''"");
11 %END;
12 %ELSE %DO;
13 %let pad=20;
14 %let x=X;
15 %END;
16 
17 %let i=%LENGTH(&pad);
18
19 %IF &x=X %THEN %let i=%eval(&i/2);
20
21 %DO i=1 %to &ls %BY &i;
22 %let return=&return.&pad;
23 %END;
24
25 "&return"&x
26%END;
27 
28%mend _pad;
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 : Copyright (c) 2001-2004 Rodney Sparapani. Distribué sous les termes de la GNU General Public License version 2 ou ultérieure.