START |
Début |
|---|---|
| Cobol | |
Syntaxe
|
START filename [KEY IS EQUAL TO dataname] [;INVALID KEY imperativestatement] |
|
START filename [KEY IS = dataname] [;INVALID KEY imperativestatement] |
|
START filename [KEY IS GREATER THAN dataname] [;INVALID KEY imperativestatement] |
|
START filename [KEY IS > dataname] [;INVALID KEY imperativestatement] |
|
START filename [KEY IS NOT LESS THAN dataname] [;INVALID KEY imperativestatement] |
|
START filename [KEY IS NOT < dataname] [;INVALID KEY imperativestatement] |
Paramètres
| Nom | Description |
|---|---|
| filename | Ce paramètre permet d'indiquer le nom logique du fichier dans lequel on souhaite effectuer un positionnement. Il s'agit d'un fichier ouvert en mode INPUT ou I-O et dont l'organisation est indexée ou relative. C'est sur ce fichier que l'instruction START va tenter de positionner le curseur selon la clef fournie. |
| KEY IS EQUAL TO dataname ou KEY IS = dataname | Ce paramètre permet d'indiquer que le curseur sera positionné exactement sur l'enregistrement dont la clef est égale à la valeur contenue dans dataname. Si un tel enregistrement existe, il pourra ensuite être lu avec une instruction READ. |
| KEY IS GREATER THAN dataname ou KEY IS > dataname | Ce paramètre permet de positionner le curseur sur le premier enregistrement dont la clef est strictement supérieure à la valeur spécifiée dans dataname. C'est utile lorsqu'on veut lire une suite d'enregistrements dépassant un certain seuil. |
| KEY IS NOT LESS THAN dataname ou KEY IS NOT < dataname | Ce paramètre permet de chercher le premier enregistrement ayant une clé supérieure ou égale à la valeur de dataname. C'est une forme de recherche incluant la valeur exacte si elle existe, ou se positionne au prochain enregistrement disponible si elle n'existe pas. |
| dataname | Ce paramètre permet d'indiquer la clef de recherche utilisée pour positionner le curseur dans le fichier. Il doit correspondre à une clé déclarée dans la FILE SECTION (INDEXED BY...) et contenir une valeur valide à comparer. |
| INVALID KEY | Ce paramètre permet de gérer les erreurs de positionnement, notamment lorsque la clef indiquée ne correspond à aucun enregistrement du fichier. En cas d'échec, le bloc d'instructions fourni (imperativestatement) est exécuté pour gérer proprement la situation. |
| imperativestatement | Ce paramètre permet d'indiquer un ou plusieurs traitements COBOL à exécuter lorsque le positionnement échoue. Par exemple, on peut afficher un message, journal de bord enregistrant une erreur, relancer une demande utilisateur, ou rediriger le programme vers une logique alternative. |
Description
Cette instruction permet de fournir une base pour le positionnement logique dans un fichier, pour récupérés les sous-séquences séquentiel des enregistrements.
Remarques
- L'instruction START est essentielle pour la lecture séquentielle contrôlée d'un fichier indexé : Elle permet de positionner le pointeur de fichier à un endroit précis, en fonction d'une clef. Une fois le positionnement effectué, on peut enchaîner avec des instructions READ NEXT pour parcourir les enregistrements dans l'ordre logique des clefs.
- L'utilisation d'une clause KEY IS EQUAL TO suppose que l'enregistrement visé existe : Si aucune correspondance exacte n'est trouvée dans le fichier, le curseur n'est pas positionné, et l'exécution d'une clause READ suivante échouera si on ne gère pas l'erreur via INVALID KEY. C'est donc un cas où une bonne gestion d'erreur est cruciale.
- Les opérateurs GREATER THAN et NOT LESS THAN permettent une recherche conditionnelle souple : Ils permettent de se positionner sur l'enregistrement suivant ou égal à une valeur cible, sans exiger une correspondance exacte. C'est particulièrement utile dans des recherches par plages ou lorsqu'on traite des fichiers où toutes les clefs ne sont pas connues à l'avance.
- START ne lit pas d'enregistrement, il prépare uniquement le curseur : Beaucoup de débutants confondent START avec une opération de lecture, alors qu'il ne fait que positionner le pointeur logique dans le fichier. C'est la commande READ qui, ensuite, lit l'enregistrement.
- La clause INVALID KEY joue un rôle fondamental dans la robustesse du programme : Elle permet de capturer toute erreur de positionnement, comme une clef absente ou un fichier mal indexé. Cela évite que le programme plante ou produise des résultats erronés, et offre une logique alternative en cas d'échec.
- Les fichiers utilisés avec START doivent impérativement être organisés de manière indexée ou relative : L'instruction ne peut pas être utilisée avec des fichiers séquentiels ordinaires. Cela signifie que le fichier doit avoir été défini avec une clause ORGANIZATION IS INDEXED dans la FILE-CONTROL.
- La syntaxe KEY IS = dataname est une alternative courte à KEY IS EQUAL TO : COBOL autorise des formes abrégées dans sa syntaxe pour améliorer la lisibilité ou alléger l'écriture du code. Cependant, il est préférable de rester cohérent dans un programme, en utilisant soit les versions longues soit les formes abrégées, pour faciliter la maintenance.
- L'efficacité de l'instruction START dépend de la qualité des clés définies dans la structure de fichier : Une mauvaise indexation, des doublons mal gérés ou une absence de tri logique peuvent rendre l'utilisation de START inefficace, voire inopérante. Il est donc important de bien structurer la FILE SECTION et de valider les données avant leur utilisation.
Dernière mise à jour : Jeudi, le 28 juillet 2011