Ici, ZONE-TEXTE et ZONE-NUMERIQUE utilisent exactement la même zone mémoire. Si vous affectez une valeur à l’un, elle impacte l’autre immédiatement.
REDEFINES : réutilisation de la mémoire pour des structures multiples
La clause REDEFINES permet à une même zone mémoire de représenter plusieurs formats de données différents. C’est une fonctionnalité puissante du COBOL , particulièrement utile lorsqu’on doit :
REDEFINES
01 ZONE-TEXTE PIC X(10).
01 ZONE-NUMERIQUE REDEFINES ZONE-TEXTE PIC 9(10).
Ici, ZONE-TEXTE et ZONE-NUMERIQUE utilisent exactement la même zone mémoire. Si vous affectez une valeur à l’un, elle impacte l’autre immédiatement.
01 ENREGISTREMENT.
05 TYPE-ENREGISTREMENT PIC X(1).
05 DONNEES-TEXTES PIC X(29).
05 DONNEES-NUMERIQUES REDEFINES DONNEES-TEXTES.
10 CODE-CLIENT PIC X(5).
10 MONTANT PIC 9(6)V99.
Si le champ TYPE-ENREGISTREMENT vaut "T", on interprétera DONNEES-TEXTES . Si c’est "N", on traitera la même zone comme DONNEES-NUMERIQUES avec ses sous-champs.
REDEFINES REDEFINES uniquement quand c’est justifié pour éviter de rendre le code difficile à lire
Vous pouvez utiliser REDEFINES pour découper un champ fixe :
01 DATE-TEXTE PIC X(8) VALUE "20250423".
01 DETAIL-DATE REDEFINES DATE-TEXTE.
05 ANNEE PIC X(4).
05 MOIS PIC X(2).
05 JOUR PIC X(2).
Grâce à REDEFINES , vous pouvez accéder à DATE-TEXTE comme une chaîne complète, ou en extraire ses composantes.
La clause REDEFINES est un outil puissant du COBOL , qui vous permet de :