Syntaxe
|
OCCURS integer1 TIMES [INDEXED BY indexname1 [,indexname2] ...]
|
|
OCCURS integer1 TO integer2 TIMES DEPENDING ON dataname1 [INDEXED BY indexname1 [,indexname2] ...]
|
Paramètres
| Nom |
Description |
| integer1 |
Ce paramètre permet d'indiquer le nombre minimal de fois qu'un item de données doit être répété. Il définit le nombre fixe de répétitions lorsqu'il est utilisé seul. |
| integer2 |
Ce paramètre permet de spécifier le nombre maximal de répétitions possibles dans une clause OCCURS ... TO .... Il est utilisé pour gérer un nombre variable d'occurrences. |
| dataname1 |
Ce paramètre permet d'indiquer un nom de donnée (généralement une variable numérique) qui contrôle dynamiquement le nombre réel de répétitions lors de l'exécution. Il est utilisé avec DEPENDING ON. |
| indexname1 |
Ce paramètre permet de définir un nom d'index associé au tableau, utilisé pour accéder aux éléments via des opérations d'indexation (plutôt que par sous-script). |
| indexname2 [...] |
Ce paramètre permet d'ajouter un ou plusieurs noms d'index supplémentaires, en cas de structures multidimensionnelles. Chaque index permet de gérer une dimension du tableau. |
Description
Cette instruction permet d'éliminer les entrées de séparation pour les répétitions d'items de données et les informations requises pour les applications de sous-script et d'indices.
Remarques
- Utilisation de OCCURS pour définir des tableaux : L'instruction OCCURS est principalement utilisée pour définir des tableaux dans COBOL, ce qui
permet de gérer un nombre variable ou fixe d'éléments. Cela simplifie la gestion de données répétitives, comme des listes ou des matrices, tout en évitant l'utilisation
de multiples variables individuelles pour chaque élément.
- Fixité ou flexibilité avec integer1 et integer2 : Lorsque OCCURS est utilisé avec integer1 TIMES, le nombre de répétitions est fixe. Par exemple,
OCCURS 10 TIMES indique qu'un tableau contiendra exactement 10 éléments. Cependant, l'usage de integer1 TO integer2 permet de définir un intervalle
dynamique, où le nombre d'éléments peut varier entre integer1 et integer2, offrant ainsi plus de flexibilité.
- Dynamisme avec DEPENDING ON : L'utilisation de DEPENDING ON permet d'ajuster dynamiquement le nombre d'occurrences en fonction d'une donnée à
l'exécution. Par exemple, si une variable dataname1 change de valeur pendant l'exécution, le nombre d'éléments dans le tableau peut augmenter ou diminuer selon
cette valeur, rendant le tableau plus adaptable aux besoins du programme.
- Optimisation avec les index : Les paramètres INDEXED BY permettent d'associer des indices aux tableaux définis avec OCCURS. L'utilisation d'index
améliore les performances d'accès aux éléments du tableau, en permettant de référencer directement un élément via son index, plutôt que de compter les occurrences.
- Structures multidimensionnelles : En utilisant plusieurs paramètres INDEXED BY, COBOL permet de créer des tableaux multidimensionnels. Par exemple,
avec INDEXED BY indexname1, indexname2, un tableau peut avoir deux dimensions, ce qui est particulièrement utile pour représenter des matrices ou des tableaux à plusieurs
dimensions dans les programmes.
- Limites de la taille des tableaux : La taille d'un tableau défini avec OCCURS est limitée par la capacité du système et par la façon dont la mémoire est
allouée dans l'environnement COBOL. Les tableaux peuvent devenir inefficaces en termes de mémoire si un grand nombre d'occurrences est alloué sans contrôle dynamique.
- Effet sur la performance avec des tableaux très grands : Bien que OCCURS soit pratique, l'utilisation excessive de tableaux très grands peut affecter la
performance du programme, notamment si l'accès à ces tableaux se fait de manière répétée dans des boucles complexes. Optimiser l'utilisation de la mémoire et des
indices est donc crucial dans de tels cas.
- Compatibilité avec les sous-programmes et les fonctions : L'instruction OCCURS est souvent utilisée dans des sous-programmes où un ensemble de données
similaires doit être traité. Il est possible de passer un tableau défini avec OCCURS comme paramètre à un sous-programme, offrant ainsi un moyen efficace de manipuler
des données sans avoir à gérer manuellement plusieurs variables.
Dernière mise à jour : Jeudi, le 28 juillet 2011