Convertir une chaîne de caractères de majuscule à minuscule ou supprimer des accents

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 :

1
2
3
4
5
6
DATA DIVISION.
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 :

1
2
3
4
5
6
DATA DIVISION.
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 ».

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *