END-READ |
Fin de lecture |
|---|---|
| Cobol | |
Syntaxe
|
READ filename RECORD [INTO identifier] [; AT END imperativestatement] END-READ |
|
READ filename [NEXT] RECORD [WITH NO LOCK] [INTO identifier] [; AT END imperativestatement] END-READ |
|
READ filename RECORD [WITH NO LOCK] [INTO identifier] [; KEY IS dataname] [; INVALID KEY imperativestatement] END-READ |
Paramètres
| Nom | Description |
|---|---|
| filename | Ce paramètre permet d'indiquer le nom du fichier à lire. Il doit correspondre à un fichier défini dans la section FILE-CONTROL. |
| RECORD | Ce paramètre précise que l'on souhaite lire un enregistrement du fichier. Il indique que l'unité de lecture est une ligne ou un bloc logique. |
| INTO identifier | Ce paramètre permet d'entreposer l'enregistrement lu dans une variable du programme COBOL. Ce champ reçoit les données du fichier. |
| NEXT | Ce paramètre signifie que la lecture doit porter sur le prochain enregistrement dans un fichier séquentiel. |
| WITH NO LOCK | Ce paramètre permet de lire un enregistrement sans verrouiller la ressource, utile dans un contexte multi-accès ou multi-utilisateur. |
| AT END imperativestatement | Ce paramètre permet d'indiquer une instruction à exécuter lorsque la fin du fichier est atteinte, pour gérer proprement la fin de lecture. |
| KEY IS dataname | Ce paramètre indique la clé utilisée pour accéder à un enregistrement dans un fichier indexé ou relatif. |
| INVALID KEY imperativestatement | Ce paramètre permet de définir le traitement à effectuer si la clef spécifiée ne permet pas d'accéder à un enregistrement valide. |
Description
Cette instruction permet d'indiquer la fin d'une instruction READ.
Remarques
- Délimitation explicite de bloc : L'instruction END-READ marque de façon explicite la fin d'une instruction READ lorsqu'elle est utilisée dans un bloc structuré. Cela améliore la lisibilité du code, en particulier lorsque le bloc READ contient des instructions imbriquées telles que IF ou PERFORM, évitant toute confusion sur la portée de la lecture.
- Indispensable avec les options complexes : Lorsqu'on utilise des options comme AT END, KEY IS, ou INVALID KEY, la présence de END-READ permet de structurer le code de manière plus claire. Elle est particulièrement utile dans les programmes longs ou complexes où la logique conditionnelle peut s'étendre sur plusieurs lignes.
- Alternative à l'utilisation de points-virgules : Dans COBOL moderne, END-READ remplace souvent le simple point (.) marquant autrefois la fin de l'instruction. Cela évite les erreurs liées à une ponctuation mal placée, et favorise un style de codage plus robuste et maintenable.
- Sécurité dans les lectures conditionnelles : Lorsque READ est utilisé avec une clause AT END, END-READ garantit que toute la logique conditionnelle liée à la lecture est bien incluse dans le bloc. Cela réduit le risque d'exécuter des instructions hors contexte en cas d'erreur de lecture ou de fin de fichier.
- Favorise la structuration modulaire : Comme pour les autres instructions terminées par un END-*, END-READ participe à une programmation modulaire et lisible. On sait immédiatement où commence et où se termine l'action de lecture, ce qui facilite la maintenance du code, surtout dans les projets collaboratifs.
- Utilisable dans différents types d'accès : Que le fichier soit lu en mode séquentiel ou indexé, END-READ est utile dans tous les cas. Il accompagne les variantes avec ou sans NEXT, avec ou sans WITH NO LOCK, assurant la clarté de la logique indépendamment du type d'accès au fichier.
- Outil de prévention contre les oublis de traitement d'erreur : En délimitant clairement le bloc READ, le programmeur est davantage incité à inclure des traitements AT END ou INVALID KEY, renforçant la gestion des erreurs et améliorant la robustesse du programme face aux données manquantes ou corrompues.
- Compatibilité avec les standards modernes : L'utilisation de END-READ reflète les bonnes pratiques COBOL modernes (post ANSI 85), encourageant une syntaxe plus explicite et structurée. C'est un élément clé pour écrire du code conforme aux normes actuelles et plus facile à porter vers d'autres environnements COBOL.
Dernière mise à jour : Jeudi, le 28 juillet 2011