REWRITE |
Réécriture |
|---|---|
| Cobol | |
Syntaxe
| REWRITE recordname [FROM identifier] |
|
REWRITE recordname [FROM identifier] [; INVALID KEY imperativestatement] |
Paramètres
| Nom | Description |
|---|---|
| recordname | Ce paramètre permet d'indiquer le nom de l'enregistrement logique que vous souhaitez réécrire. Il doit correspondre à la structure déclarée dans la FILE SECTION du fichier concerné. Avant d'exécuter l'instruction REWRITE, cet enregistrement doit avoir été lu (via READ) et modifié si nécessaire. Il est ensuite écrasé à sa position actuelle dans le fichier. |
| identifier | Ce paramètre permet de copier les données d'une variable (identifier) dans recordname juste avant la réécriture. Cela simplifie la mise à jour d'un enregistrement en évitant le remplissage manuel de chaque champ du recordname. Il est utile pour transférer rapidement une nouvelle version d'un enregistrement. |
| INVALID KEY | Ce paramètre permet de gérer les erreurs pouvant survenir lors de la tentative de réécriture. Cela peut se produire, par exemple, si l'enregistrement n'a pas été correctement positionné ou si une erreur d'accès au fichier intervient. |
| imperativestatement | Ce paramètre permet d'indiquer un bloc d'instructions est exécuté automatiquement si une erreur est rencontrée et que la clause INVALID KEY est activée. Il peut inclure l'affichage d'un message d'erreur, l'enregistrement dans un fichier journal, une tentative de correction, ou le traitement d'une erreur de logique. |
Description
Cette instruction permet de remplacer un enregistrement existant dans un fichier d'entreposage de masse.
Remarques
- L'instruction REWRITE est utilisée pour modifier un enregistrement existant dans un fichier séquentiel indexé ou relatif, à condition qu'il ait été lu juste avant avec une instruction READ. Elle repose sur le positionnement logique du fichier : le dernier enregistrement lu est celui qui sera réécrit. Cela évite de devoir repositionner manuellement le curseur du fichier.
- Le paramètre recordname fait référence au nom de l'enregistrement dans le fichier, tel qu'il est défini dans la section FILE SECTION. Il s'agit du bloc de données que l'on souhaite remplacer. Ce nom doit correspondre à la structure logique attendue par le fichier, sinon des erreurs de compilation ou d'exécution peuvent survenir.
- L'option FROM identifier permet de spécifier une source de données différente pour le remplacement, plutôt que d'utiliser directement le contenu de recordname. Cela offre plus de souplesse en permettant de préparer les nouvelles valeurs dans un autre champ ou une zone mémoire avant la mise à jour.
- La clause INVALID KEY est importante pour gérer les cas d'erreur liés à la tentative de réécriture, notamment lorsqu'aucun enregistrement valide n'a été lu ou si une contrainte d'intégrité bloque la modification. Elle permet d'éviter des plantages en interceptant les erreurs et en lançant des traitements alternatifs.
- Une bonne pratique consiste à vérifier qu'un READ a bien été effectué juste avant le REWRITE, sinon l'opération risque d'échouer ou de modifier un enregistrement incorrect. En effet, le REWRITE remplace le dernier enregistrement lu, et non un enregistrement spécifié par une clef.
- Le REWRITE ne fonctionne que sur les fichiers ouverts en mode I-O (Input-Output). Si le fichier est ouvert en lecture seule ou en ajout (OUTPUT ou EXTEND), cette instruction provoquera une erreur. Le mode d'ouverture doit donc être cohérent avec l'intention de modification.
- Cette instruction est très utile pour corriger, mettre à jour ou enrichir des données déjà stockées, sans avoir à supprimer et réécrire tout le fichier. Elle s'inscrit dans une logique de gestion transactionnelle des données, souvent utilisée dans les systèmes bancaires ou de gestion de stocks.
- La lisibilité du code peut être renforcée en encapsulant READ et REWRITE dans des blocs bien identifiés, avec des commentaires expliquant les traitements attendus. Cela aide à éviter les erreurs de logique et à assurer la maintenance du code dans des projets complexes.
Dernière mise à jour : Jeudi, le 28 juillet 2011