Syntaxe
|
BLOCK CONTAINS [integer1 TO] integer2 (RECORDS|CHARACTERS)
|
Paramètres
| Nom |
Description |
| integer1 |
Ce paramètre permet d'indiquer la taille minimale du bloc, exprimée en nombre d'enregistrements ou de caractères selon le mot clef suivant. |
| integer2 |
Ce paramètre permet d'indiquer la taille maximale du bloc, exprimée en nombre d'enregistrements ou de caractères selon le mot clef suivant. |
| RECORDS |
Ce paramètre permet d'indiquer que la taille est donnée en nombre d'enregistrements logiques. Chaque bloc regroupe donc un certain nombre de lignes de données COBOL. |
| CHARACTERS |
Ce paramètre permet d'indiquer que la taille est donnée en nombre de caractères (ou octets). Cela permet un contrôle plus fin du volume d'un bloc, utile si les enregistrements sont de taille variable ou complexe. |
Description
Cette instruction permet de spécifier la taille d'un enregistrement physique.
Remarques
- La clause BLOCK CONTAINS permet de contrôler la manière dont les données sont organisées physiquement dans un fichier. En définissant le nombre
d'enregistrements ou de caractères contenus dans un bloc, on influence directement les performances des opérations d'entrée/sortie. Une gestion optimisée des blocs peut
significativement réduire le nombre d'accès disque.
- L'utilisation de RECORDS après les valeurs entières signifie que la taille du bloc est déterminée par un nombre fixe ou variable d'enregistrements. Cette approche
est généralement plus intuitive car elle correspond à la logique de traitement des fichiers en COBOL, où les enregistrements sont les unités de données principales.
- Lorsqu'on choisit CHARACTERS au lieu de RECORDS, la taille du bloc est spécifiée en nombre d'octets. Cela est particulièrement utile pour les fichiers contenant
des enregistrements de taille variable, ou lorsqu'un contrôle plus précis de la taille physique réelle des blocs est requis, comme sur des supports à accès séquentiel.
- L'option [integer1 TO] integer2 permet de définir un intervalle de taille de bloc. Cela laisse une certaine souplesse au système d'exploitation ou au
compilateur COBOL pour optimiser l'organisation physique des blocs. Cela peut aussi permettre d'adapter le programme à différentes plateformes ou configurations sans
modifier le code.
- Définir un intervalle de taille de bloc (5 TO 10 RECORDS) au lieu d'une valeur fixe (10 RECORDS) peut aider le système à ajuster dynamiquement les blocs à la taille
des tampons ou à d'autres paramètres matériels. Cela est particulièrement pertinent dans des contextes où la compatibilité avec différents périphériques est essentielle.
- Une mauvaise configuration de la clause BLOCK CONTAINS peut entraîner une baisse de performance significative, notamment si les blocs sont trop petits (multipliant
les accès disque) ou trop grands (saturant la mémoire tampon). Il est donc recommandé de tester différentes tailles selon les contextes d'exécution réels.
- Dans un fichier séquentiel, chaque opération de lecture ou d'écriture se fait bloc par bloc. Ainsi, un BLOCK CONTAINS 10 RECORDS signifie que dix enregistrements
sont lus ou écrits en une seule fois, ce qui peut accélérer grandement le traitement si le fichier est volumineux et que les lectures/écritures sont fréquentes.
- Cette clause BLOCK est souvent négligée lors de l'apprentissage de COBOL, mais elle devient cruciale dans les systèmes en production manipulant de grandes
volumétries de données. Bien paramétrer les blocs permet d'optimiser les temps d'exécution sans changer la logique métier du programme.
Dernière mise à jour : Jeudi, le 28 juillet 2011