END-DELETE |
Fin d'effacement |
|---|---|
| Cobol | |
Syntaxe
|
DELETE filename RECORD [;INVALID KEY imperativestatement] END-DELETE |
Paramètres
| Nom | Description |
|---|---|
| filename | Ce paramètre permet d'indiquer le nom logique du fichier à partir duquel l'enregistrement courant doit être supprimé. Ce fichier doit être déclaré dans la FILE SECTION avec une clause SELECT et une description FD. Il est nécessaire que ce fichier soit ouvert en mode I/O (entrée/sortie) pour que l'opération de suppression soit autorisée. |
| RECORD | Ce paramètre permet d'indiquer que l'enregistrement actuellement positionné dans le fichier (à l'aide d'un READ avec KEY) est celui qui sera supprimé. Il ne s'agit pas de supprimer un enregistrement arbitraire, mais bien celui qui a été précédemment localisé via une lecture indexée ou relative. |
| INVALID KEY imperativestatement | Ce paramètre permet de gérer les erreurs lors de la suppression. Si l'enregistrement ne peut pas être supprimé - par exemple, s'il n'a pas été préalablement lu avec un READ indexé, ou s'il n'existe pas - alors le bloc d'instructions contenu dans imperativestatement est exécuté. Cela permet d'éviter des comportements indéfinis ou de traiter proprement les cas d'échec. |
Description
Cette instruction permet d'indiquer la fin d'une instruction DELETE.
Remarques
- L'instruction END-DELETE marque la fin explicite d'un bloc DELETE, ce qui renforce la structure du code : Son utilisation est particulièrement utile dans les environnements modernes de programmation COBOL, qui privilégient des blocs clairement délimités. Cela permet de mieux comprendre la portée de l'opération de suppression, notamment dans des programmes comportant plusieurs niveaux de logique imbriquée.
- DELETE filename RECORD permet de supprimer l'enregistrement actuellement positionné dans un fichier : Il est impératif que l'enregistrement à supprimer ait été préalablement lu à l'aide d'un READ avec clef pour être positionné. Cette logique garantit que la suppression cible bien un enregistrement valide et évite les suppressions involontaires ou aléatoires.
- La clause INVALID KEY joue un rôle crucial dans la gestion d'erreur lors de la suppression : Si le fichier est mal positionné ou si l'enregistrement n'existe pas, cette clause permet d'exécuter des instructions de secours. Cela peut inclure des messages d'erreur, des traitements correctifs ou des sauts conditionnels pour maintenir la robustesse du programme.
- L'usage de END-DELETE est conforme aux normes structurées comme COBOL 2002 ou Enterprise COBOL : Ces versions de COBOL encouragent une écriture plus lisible, structurée et modulaire du code. La présence explicite de mots de fin comme END-DELETE évite les ambiguïtés et les erreurs de logique dans des blocs longs ou complexes.
- L'instruction DELETE ne fonctionne que si le fichier est ouvert en mode I-O (Input-Output) : Cela signifie que le fichier doit être prêt à la fois à lire et à écrire. Si le fichier est en lecture seule ou fermé, l'instruction échouera, d'où l'importance de bien gérer les états d'ouverture avant toute suppression.
- L'absence d'un END-DELETE dans des blocs imbriqués peut provoquer des erreurs de compilation : Dans des programmes utilisant IF, PERFORM ou d'autres structures conditionnelles, oublier de terminer le bloc DELETE peut générer des comportements inattendus ou des erreurs de syntaxe. Il est donc essentiel d'utiliser cette balise de fin dès que la structure le requiert.
- La suppression d'un enregistrement modifie directement le contenu du fichier de données : Cette action est irréversible dans le cadre de l'exécution normale, car COBOL ne propose pas de corbeille ou d'annulation. Il est donc recommandé de bien tester les conditions de positionnement et de prévoir des sauvegardes ou journaux si nécessaire.
- END-DELETE améliore la documentation implicite du programme : Lorsqu'un lecteur ou un mainteneur parcourt le code, la présence de END-DELETE indique clairement où se termine le traitement de suppression. Cela participe à une meilleure compréhension du flux d'instructions et facilite la maintenance ou l'évolution du programme.
Dernière mise à jour : Jeudi, le 28 juillet 2011