TALLYING |
Décompte |
|---|---|
| Cobol | |
Syntaxe
|
INSPECT identifier1 TALLYING identifier2 FOR (ALL identifier|LEADING identifier3|CHARACTERS) [(BEFORE|AFTER) INITIAL identifier4] |
|
UNSTRING identifier [DELIMITED [BY][ALL] identifier OR [ALL] identifier] INTO identifier [DELIMITER [IN] identifier][COUNT [IN] identifier] [[WITH] POINTER identifier][TALLYING [IN] identifier] [[ON] OVERFLOW statementlist][NOT [ON] OVERFLOW statementlist] [END-UNSTRING] |
Paramètres
| Nom | Description |
|---|---|
| TALLYING | Ce paramètre permet de compter les occurrences ou les éléments analysés, comme des caractères ou des sous-chaînes spécifiques. |
| identifier1 (dans INSPECT) | Ce paramètre représente la chaîne source sur laquelle l'analyse et le décompte sont effectués. |
| identifier2 (dans INSPECT) | Ce paramètre reçoit le résultat du comptage effectué (le total des correspondances ou caractères trouvés). |
| FOR ALL identifier | Ce paramètre indique que l'on doit compter toutes les occurrences exactes de la valeur contenue dans identifier. |
| FOR LEADING identifier3 | Ce paramètre spécifie qu'il faut compter uniquement les occurrences successives de identifier3 au début de la chaîne source. |
| FOR CHARACTERS | Ce paramètre ordonne de compter tous les caractères présents dans la chaîne source. |
| BEFORE INITIAL identifier4 | Ce paramètre indique que le décompte se fait uniquement sur la partie de la chaîne située avant la première occurrence de identifier4. |
| AFTER INITIAL identifier4 | Ce paramètre précise que le décompte commence après la première apparition de identifier4 dans la chaîne source. |
| DELIMITED BY identifier | Ce paramètre délimite la chaîne à séparer lors d'un UNSTRING à partir de la valeur contenue dans identifier. |
| DELIMITED BY ALL identifier | Ce paramètre agit comme le précédent, mais toutes les occurrences du délimiteur sont prises en compte. |
| INTO identifier | Ce paramètre désigne les champs de destination dans lesquels les segments extraits de la chaîne seront placés. |
| DELIMITER IN identifier | Ce paramètre permet de stocker dans identifier la valeur du délimiteur rencontré lors de l'opération UNSTRING. |
| COUNT IN identifier | Ce paramètre permet de conserver dans identifier le nombre de segments extraits ou le nombre de caractères transférés. |
| WITH POINTER identifier | Ce paramètre utilise ou met à jour un pointeur (identifier) qui indique la position de lecture courante dans la chaîne source. |
| TALLYING IN identifier (dans UNSTRING) | Ce paramètre stocke dans identifier le nombre total de caractères transférés dans les champs de destination lors d'un UNSTRING. |
| ON OVERFLOW statementlist | Ce paramètre permet de spécifier les instructions à exécuter si un dépassement de capacité survient pendant l'opération. |
| NOT ON OVERFLOW statementlist | Ce paramètre permet de définir des instructions à exécuter uniquement si aucun dépassement ne se produit. |
| END-UNSTRING | Ce paramètre marque la fin explicite de l'instruction UNSTRING, surtout utile dans les blocs IF...ELSE complexes. |
Description
Cette instruction permet d'indiquer qu'une valeur égale à la valeur initiale plus le nombre de régions de réception des données a donné suite.
Remarques
- L'instruction INSPECT ... TALLYING est particulièrement utile pour analyser des chaînes de caractères en effectuant un comptage précis. Par exemple, on peut compter toutes les occurrences d'un caractère donné ou toutes les lettres contenues dans une chaîne. Ce mécanisme évite d'avoir à programmer manuellement une boucle de lecture caractère par caractère.
- Le mot clef TALLYING permet de stocker directement le résultat du décompte dans une variable cible, généralement un entier. Cette variable sert alors de compteur pouvant être utilisé pour effectuer d'autres traitements, comme vérifier la fréquence d'un caractère dans une chaîne, ou contrôler la validité d'une donnée selon certains critères.
- L'option FOR ALL identifier permet de chercher toutes les correspondances exactes d'un motif dans la chaîne source. Cela se distingue de LEADING, ne comptant que les occurrences situées au tout début de la chaîne. Ce choix de granularité permet une analyse ciblée, selon le contexte d'utilisation du programme.
- Les paramètres BEFORE INITIAL et AFTER INITIAL sont très puissants pour restreindre la zone d'analyse dans une chaîne. En les combinant avec TALLYING, on peut compter des éléments dans une portion bien définie d'une chaîne, ce qui améliore la précision et réduit les erreurs dans le traitement des données textuelles.
- Dans l'instruction UNSTRING, le mot-clé TALLYING IN permet également de compter les caractères transférés vers les champs de destination. Cette information est très utile lorsque l'on veut s'assurer que les données extraites ont bien été transférées en totalité, ou pour détecter d'éventuelles erreurs de format dans la chaîne d'origine.
- Le paramètre POINTER joue un rôle complémentaire avec TALLYING en maintenant une position de lecture dans la chaîne source. Cela permet de poursuivre un traitement d'analyse ou de découpage sans reprendre depuis le début, notamment dans les opérations complexes où plusieurs UNSTRING successifs sont nécessaires.
- La clause ON OVERFLOW est essentielle pour garantir la robustesse du programme, surtout lorsque les champs de destination sont insuffisants. En combinaison avec TALLYING, cela permet de réagir automatiquement à un dépassement, comme enregistrer une erreur ou activer un plan de secours sans interrompre le traitement.
- La syntaxe complète combinant INSPECT, UNSTRING, TALLYING, DELIMITED BY, et POINTER permet d'écrire des traitements puissants mais lisibles pour la manipulation de chaînes. Bien que dense, cette syntaxe reste plus concise que l'équivalent en boucles manuelles, ce qui reflète l'esprit déclaratif et centré sur les données de COBOL.
Dernière mise à jour : Jeudi, le 28 juillet 2011