Aller au contenu

%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.