Apprenez les bases du COBOL et développez vos compétences en programmation legacy avec une approche moderne.
Objectif : produire des textes propres à partir de champs à longueur fixe en combinant
FUNCTION TRIM ,
STRING et UNSTRING .
FUNCTION TRIM devient rapidement indispensable.
Trois outils sont particulièrement utiles quand vous manipulez des champs texte à longueur fixe :
FUNCTION TRIM
STRING
UNSTRING
Ce programme lit deux champs, les nettoie, puis assemble une phrase lisible.
Le délimiteur DELIMITED BY SIZE
signifie : “prends toute la longueur du morceau”.
>>SOURCE FORMAT FREE
IDENTIFICATION DIVISION.
PROGRAM-ID. DEMO-STRING.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 WS-PRENOM PIC X(20) VALUE SPACES.
01 WS-VILLE PIC X(20) VALUE SPACES.
01 WS-PHRASE PIC X(80) VALUE SPACES.
PROCEDURE DIVISION.
DISPLAY "Prenom : " WITH NO ADVANCING
ACCEPT WS-PRENOM
DISPLAY "Ville : " WITH NO ADVANCING
ACCEPT WS-VILLE
STRING
FUNCTION TRIM(WS-PRENOM) DELIMITED BY SIZE
" habite a " DELIMITED BY SIZE
FUNCTION TRIM(WS-VILLE) DELIMITED BY SIZE
INTO WS-PHRASE
END-STRING
DISPLAY WS-PHRASE
STOP RUN.
cobc -x -free demo-string.cbl
[Prenom] habite a [Ville].
Les bugs sur les chaînes sont souvent des bugs de taille ou de délimiteurs.
WS-PHRASE : troncature.
Si le résultat contient des blancs “bizarres”, affichez les morceaux séparément avec des marqueurs,
puis vérifiez que vous utilisez bien FUNCTION TRIM au bon endroit.
Dans les traitements métier, beaucoup de règles consistent à assembler et nettoyer des champs fixes. Vous produisez ainsi des libellés, des messages, des lignes d’export ou des affichages utilisateur.
Bonjour au début de la phrase.
STRING
"Bonjour " DELIMITED BY SIZE
FUNCTION TRIM(WS-PRENOM) DELIMITED BY SIZE
" habite a " DELIMITED BY SIZE
FUNCTION TRIM(WS-VILLE) DELIMITED BY SIZE
INTO WS-PHRASE
END-STRING
STRING
"Bonjour " DELIMITED BY SIZE
FUNCTION TRIM(WS-PRENOM) DELIMITED BY SIZE
", habite a " DELIMITED BY SIZE
FUNCTION TRIM(WS-VILLE) DELIMITED BY SIZE
"." DELIMITED BY SIZE
INTO WS-PHRASE
END-STRING