REDEFINES |
Redéfinir |
| Cobol |
Syntaxe
|
numberlevel REDEFINES dataname2
|
Paramètres
| Nom |
Description |
| numberlevel |
Ce paramètre permet d'indiquer le niveau hiérarchique du champ, généralement un niveau 01 ou 05, utilisé pour positionner la redéfinition dans la structure des données. Il doit être identique à celui du champ redéfini. |
| dataname2 |
Ce paramètre permet de spécifier le nom du champ déjà déclaré que l'on souhaite redéfinir. Il correspond à la structure originale, que l'on va réinterpréter via une nouvelle définition de champ. |
Description
Cette instruction permet de calculer la même région d'entreposage décrite par différentes descriptions d'entrées de données.
Remarques
- Flexibilité de représentation des données : L'instruction REDEFINES permet de représenter une même zone mémoire sous plusieurs formats ou structures. Cela
est très utile lorsqu'une variable peut contenir différentes significations ou structures selon le contexte d'exécution. Le programmeur peut ainsi éviter de dupliquer les
données tout en les interprétant différemment.
- Partage de la même zone mémoire : L'usage de REDEFINES implique que les champs définis partagent exactement le même espace mémoire. Toute modification
apportée à l'un des champs redéfinis impactera automatiquement les autres, ce qui impose une grande rigueur pour éviter des effets de bord indésirables.
- Utilité dans les fichiers multifonctions : Dans les fichiers où une même position mémoire peut contenir des types d'enregistrements différents (exemple :
entête, détail, total), REDEFINES permet de décrire chaque type de manière distincte sans réserver de mémoire supplémentaire. Chaque type peut alors être traité avec sa
propre structure.
- Nécessité d'un même niveau hiérarchique : Il est impératif que le champ redéfini et sa redéfinition aient exactement le même niveau hiérarchique (comme 01,
05,...). Une incohérence à ce niveau provoquera des erreurs de compilation, car cela remettrait en cause l'alignement mémoire.
- Absence de validation automatique : COBOL n'impose pas de validation automatique entre la taille du champ redéfini et celui qui redéfinit. Il est donc
de la responsabilité du développeur de s'assurer que les tailles et les types sont compatibles pour éviter des corruptions de données ou des interprétations erronées.
- Adapté aux structures conditionnelles : Lorsque la structure des données dépend d'un code de type ou d'un identifiant (comme dans un enregistrement
polymorphe), REDEFINES permet de définir plusieurs vues possibles sur une même donnée, activées en fonction de ce code. C'est une alternative puissante aux structures
conditionnelles classiques.
- Ne déclenche pas d'allocation mémoire supplémentaire : Contrairement à une nouvelle définition indépendante, un champ redéfini avec REDEFINES ne consomme
pas de mémoire supplémentaire. Cette propriété est bénéfique dans les systèmes contraints ou dans les structures très denses, comme les tampons de communication.
- Répartition logique mais partagée : Bien que REDEFINES puisse donner l'illusion de champs totalement séparés, tous accèdent à la même zone physique. Il
est donc déconseillé de les utiliser simultanément dans le code actif, sauf si cela est strictement maîtrisé. Cela garantit une cohérence des traitements et évite
les résultats incohérents.
Dernière mise à jour : Jeudi, le 28 juillet 2011