EOP |
Fin de page |
|---|---|
| Cobol | |
Syntaxe
|
WRITE recordname [FROM identifier1] [(BEFORE|AFTER) ADVANCING (identifier2 [LINE]|integer [LINES]|PAGE) [[AT] EOP statement-list][NOT [AT] EOP statement-list] |
|
WRITE recordname [FROM identifier1] [; INVALID KEY imperativestatement] [[AT] EOP statement-list][NOT [AT] EOP statement-list] |
Paramètres
| Nom | Description |
|---|---|
| recordname | Ce paramètre permet d'indiquer le nom de l'enregistrement (ou ligne de sortie) à écrire sur un fichier de type séquentiel imprimé. Il s'agit généralement d'un fichier déclaratif de type FD avec des propriétés d'impression, et ce champ désigne ce qu'on souhaite imprimer. |
| identifier1 | Ce paramètre permet d'indiquer la source des données allant être copiées dans l'enregistrement avant son écriture. Cela permet de remplir dynamiquement l'enregistrement recordname à partir de la valeur de identifier1. |
| BEFORE ADVANCING | Ce paramètre permet d'indiquer qu'il faut avancer avant d'écrire la ligne. |
| AFTER ADVANCING | Ce paramètre permet d'indiquer qu'il faut avancer après l'écriture. Cela contrôle à quel moment la pagination ou les sauts de lignes sont déclenchés. |
| identifier2 [LINE]|integer [LINES]|PAGE | Ce paramètre permet d'indiquer comment l'avance doit être effectuée : identifier2 ou integer désignent le nombre de lignes à avancer. Le mot LINE(S) est optionnel. PAGE provoque un saut immédiat à la page suivante. Cela permet de structurer les impressions avec des sauts de ligne personnalisés ou des changements de page nets. |
| AT EOP statement-list | Ce paramètre permet d'indiquer qu'il faut déclencher les instructions lorsque la fin de page est atteinte à cause de l'écriture. Le bloc statement-list contient des instructions COBOL à exécuter dans ce cas. Cela permet, par exemple, d'imprimer un en-tête ou de réinitialiser des compteurs. |
| NOT AT EOP statement-list | Ce paramètre permet d'indiquer le cas où la fin de page n'est pas atteinte. Le bloc statement-list est exécuté seulement si le WRITE ne déclenche pas un saut de page. Cela donne un comportement alternatif à gérer selon les conditions de pagination. |
| INVALID KEY imperativestatement | Ce paramètre permet d'indiquer si le WRITE est effectué sur un fichier avec accès dynamique ou relatif, cette clause permet de gérer les erreurs si l'écriture échoue (par exemple, tentative d'écriture à une position déjà occupée). Elle n'est pas directement liée au EOP, mais fait partie de la syntaxe WRITE. |
Description
Cette instruction permet d'indiquer la fin logique de la page d'impression associé avec l'exécution de l'instruction WRITE.
Remarques
- La clause EOP gère la logique de fin de page dans les sorties imprimées : Elle est indispensable lorsqu'on écrit dans des fichiers destinés à l'impression, notamment ceux configurés avec des avances de page. Lorsqu'une écriture déclenche un saut automatique à la page suivante, AT EOP permet de capter ce moment et d'exécuter des instructions spécifiques comme imprimer un en-tête ou réinitialiser un compteur de lignes.
- L'usage combiné de WRITE et ADVANCING permet un contrôle très fin du formatage : Grâce aux options BEFORE ADVANCING ou AFTER ADVANCING, on peut choisir si le papier (ou son équivalent numérique) doit avancer avant ou après l'écriture. Cela s'avère essentiel pour structurer visuellement les sorties imprimées, par exemple pour garantir qu'un titre de section débute toujours en haut de page.
- La clause FROM identifier1 permet de séparer données et structure : Elle permet de remplir dynamiquement un enregistrement à écrire (recordname) avec des données issues d'un autre champ (identifier1). Cela est utile lorsqu'un programme produit une sortie répétitive basée sur différentes données, sans devoir manipuler directement la structure de sortie.
- L'indication ADVANCING PAGE provoque un saut de page direct : Contrairement à un simple saut de ligne, ADVANCING PAGE entraîne un passage à la page suivante. Cette instruction est souvent utilisée après une section complète d'un rapport, afin de s'assurer que la section suivante débute sur une nouvelle page propre.
- AT EOP permet de rendre la pagination intelligente et dynamique : En ajoutant un bloc de traitement dans AT EOP, le programmeur peut injecter des éléments au bon moment, comme un en-tête de nouvelle page, un rappel de titre de colonne, ou même des totaux intermédiaires. Cela enrichit le contenu sans complexifier la logique principale.
- La clause NOT AT EOP donne une alternative claire en cas d'écriture normale : Elle est utile pour exécuter une logique différente si l'écriture ne déclenche pas de saut de page. Cela permet d'éviter des doublons d'exécution entre les cas de fin de page et les écritures courantes, en apportant une séparation nette des comportements.
- La gestion d'erreur avec INVALID KEY complète la robustesse de WRITE : Bien que plus liée aux fichiers en accès direct, la clause INVALID KEY permet de capturer les tentatives d'écriture échouées (comme une collision de clé). Cela renforce la sécurité d'exécution du programme en assurant qu'aucune anomalie d'écriture ne passe inaperçue.
- L'instruction END-WRITE (ou END-DELETE, END-DISPLAY dans d'autres contextes) améliore la clarté : Même si ici c'est END-DELETE qui est plus formellement utilisé dans d'autres cas, l'approche de délimiter les blocs comme WRITE ... END-WRITE (dans les standards récents) clarifie les limites du traitement, surtout dans des contextes avec plusieurs clauses (EOP, INVALID KEY,...).
Dernière mise à jour : Jeudi, le 28 juillet 2011