%TRIML
Retirer les blancs de début
Renvoie la chaîne sans ses blancs de début, ou sans les caractères de votre choix en tête.
Syntaxe
%TRIML(chaîne)
%TRIML(chaîne : caractères)
chaîne- La zone ou l'expression caractère à nettoyer.
caractères- Facultatif : les caractères à retirer au début, à la place du blanc.
- Résultat
- Une chaîne variable. La fin de la chaîne n'est jamais modifiée : ses blancs restent.
À quoi ça sert
Pour du texte saisi avec des espaces devant (un numéro cadré à droite, un libellé décalé), on veut supprimer la tête sans toucher à la fin. Avec la liste de caractères, %TRIML(numero : '0') supprime les zéros de tête d'un numéro tout en gardant ceux de la fin, ce qui serait faux avec %TRIM.
Exemple 1 : Début seulement
**free
// %TRIML : retirer les blancs (ou des caracteres choisis) au DEBUT d'une chaine.
ctl-opt dftactgrp(*no) actgrp(*new);
dcl-s ligne varchar(30) inz(' Montpellier ');
dcl-s numero varchar(10) inz('0000417');
snd-msg 'TRIML : [' + %triml(ligne) + ']';
snd-msg 'TRIM : [' + %trim(ligne) + ']';
snd-msg 'Longueur : ' + %char(%len(ligne)) + ' -> ' + %char(%len(%triml(ligne)));
// Zeros de tete retires : la fin n'est pas touchee.
snd-msg 'Sans zeros : [' + %triml(numero : '0') + ']';
snd-msg 'Zeros de fin : [' + %triml('12000' : '0') + ']';
// Plusieurs caracteres possibles dans le 2e parametre.
snd-msg 'Tirets et _ : [' + %triml('--_-ABC-' : '-_') + ']';
*inlr = *on;
Résultat réel, compilé et exécuté sur IBM i 7.5 :
TRIML : [Montpellier ]
TRIM : [Montpellier]
Longueur : 17 -> 14
Sans zeros : [417]
Zeros de fin : [12000]
Tirets et _ : [ABC-]
%TRIML laisse les blancs de fin (visibles avant le crochet fermant) alors que %TRIM les retire. La longueur passe de 17 à 14, puisqu'on enlève les trois blancs de tête.
Avec '0', 0000417 devient 417, mais 12000 reste 12000 : les zéros de fin ne bougent pas. La liste peut contenir plusieurs caractères : --_-ABC- donne ABC-.
Le piège
Les blancs de fin restent. On utilise %TRIML pour ne toucher qu'au début, mais dans un message ou une concaténation, les blancs de fin d'une zone fixe apparaissent toujours. Si vous voulez les deux côtés propres, prenez %TRIM.
Et ranger le résultat dans une zone fixe redonne un remplissage de blancs à droite, sans changer la longueur de la zone.