%TRIMR
Retirer les blancs de fin
Renvoie la chaîne sans ses blancs de fin, ou sans les caractères de votre choix à la fin.
Syntaxe
%TRIMR(chaîne)
%TRIMR(chaîne : caractères)
chaîne- La zone ou l'expression caractère à nettoyer.
caractères- Facultatif : les caractères à retirer à la fin, à la place du blanc.
- Résultat
- Une chaîne variable. Le début de la chaîne n'est jamais modifié : ses blancs restent.
À quoi ça sert
C'est la fonction du quotidien pour afficher une zone fixe : le nom de 20 caractères doit être suivi directement de la ville, sans 11 blancs entre les deux. Elle garde l'indentation du début, ce que %TRIM supprimerait (un texte mis en forme, un libellé décalé).
Exemple 1 : Fin seulement, et avec des zéros
**free
// %TRIMR : retirer les blancs (ou des caracteres choisis) a la FIN d'une chaine.
ctl-opt dftactgrp(*no) actgrp(*new);
dcl-s nom char(20) inz('Dupont SA');
dcl-s ligne varchar(30) inz(' Montpellier ');
dcl-s prix varchar(10) inz('12.500');
snd-msg 'TRIMR ligne : [' + %trimr(ligne) + ']';
snd-msg 'TRIMR nom : [' + %trimr(nom) + '] suivi de la ville';
snd-msg 'Longueur nom : ' + %char(%len(nom)) + ' -> ' + %char(%len(%trimr(nom)));
// Attention : %TRIMR avec 0 retire TOUS les zeros de fin, significatifs ou non.
snd-msg 'Prix 12.500 : [' + %trimr(prix : '0') + ']';
snd-msg 'Prix 12.000 : [' + %trimr('12.000' : '0') + ']';
snd-msg 'Prix 1200 : [' + %trimr('1200' : '0') + ']';
*inlr = *on;
Résultat réel, compilé et exécuté sur IBM i 7.5 :
TRIMR ligne : [ Montpellier]
TRIMR nom : [Dupont SA] suivi de la ville
Longueur nom : 20 -> 9
Prix 12.500 : [12.5]
Prix 12.000 : [12.]
Prix 1200 : [12]
Les trois blancs de tête de Montpellier restent. Le nom de 20 caractères est ramené à 9 : on peut coller le texte suivant.
Les trois dernières lignes montrent le piège : avec '0', 12.500 devient 12.5 (correct), mais 12.000 devient 12. et 1200 devient 12.
Le piège
Avec une liste de caractères, on retire aussi les caractères significatifs. Pour « supprimer les zéros inutiles », %TRIMR('1200' : '0') renvoie 12, soit un autre nombre, et %TRIMR('12.000' : '0') laisse un point orphelin (12.). Ce filtre ne vaut que pour des zéros décimaux, après le séparateur.
Les blancs de début restent en place : pour les deux côtés, %TRIM.