Le langage COBOL propose un nombre restreint d’instructions permettant le traitement et la manipulation de chaînes de caractères.
L’instruction INSPECT est l’une des plus utilisées d’entre elles et propose plusieurs fonctionnalités :
- INSPECT TALLYING permet le comptage d’occurrences,
- INSPECT REPLACING permet d’effectuer des remplacements,
- Une troisième fonction très pratique — INSPECT CONVERTING — mais peu connue des développeurs permet d’effectuer des remplacements caractère par caractère.
C’est cette troisième fonction que nous allons explorer.
Voici la syntaxe d’utilisation :
INSPECT chaine-examinée CONVERTING plage-source TO plage-cible
Ainsi, la chaîne de caractère chaine-examinée sera examinée caractère par caractère. Si un des caractères est contenu dans zone plage-source, le caractère correspondant dans la zone plage-cible servira de caractère de remplacement.
Logiquement, les zones plage-source et plage-cible devront faire la même longueur.
Je vous propose d’examiner ci-dessous les deux cas de figure les plus rencontrés en guise d’exemples d’application.
Faire passer des caractères de majuscule vers minuscule ou réciproquement
L’application la plus courante du INSPECT CONVERTING est de changer la casse d’une chaîne de caractères (c’est-à-dire de faire passer une chaîne de caractères en caractères minuscule ou majuscule).
Voici un exemple qui change la casse en minuscules :
DATA DIVISION.
WORKING-STORAGE SECTION.
01 CHAINE-A-TRAITER PIC X(30) VALUE 'BONJOUR, Madame MARIE-Eléonore'.
01 PLAGE-SOURCE PIC X(26) VALUE 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'.
01 PLAGE-CIBLE PIC X(26) VALUE 'abcdefghijklmnopqrstuvwxyz'.
PROCEDURE DIVISION.
INSPECT CHAINE-A-TRAITER CONVERTING PLAGE-SOURCE TO PLAGE-CIBLE
Après exécution, la chaîne de caractères CHAINE-A-TRAITER sera renseignée avec « bonjour, madame marie-eléonore ».
Supprimer des accents dans une chaîne de caractères
Dans certains cas, il peut être nécessaire de supprimer les caractères d’accentuation d’une chaîne de caractères. Ceci peut servir par exemple à fiabiliser un stockage de données.
Voici une manière de procéder :
DATA DIVISION.
WORKING-STORAGE SECTION.
01 CHAINE-A-TRAITER PIC X(30) VALUE 'Nouvel événement à Noël'.
01 PLAGE-SOURCE PIC X(26) VALUE 'éèêàâôïùû'.
01 PLAGE-CIBLE PIC X(26) VALUE 'eeeaaoiuu'.
PROCEDURE DIVISION.
INSPECT CHAINE-A-TRAITER CONVERTING PLAGE-SOURCE TO PLAGE-CIBLE
Après exécution, la chaîne de caractères CHAINE-A-TRAITER sera renseignée avec « Nouvel evenement a Noel ».