INTO |
En |
|---|---|
| Cobol | |
Syntaxe
|
DIVIDE identifier1 INTO identifier2 [ROUNDED] [; ON SIZE ERROR imperativestatement] |
|
DIVIDE identifier1 INTO identifier2 [ROUNDED] GIVING identifier3 [ROUNDED] [; ON SIZE ERROR imperativestatement] |
|
READ filename RECORD [INTO identifier] [; AT END imperativestatement] |
|
READ filename [NEXT] RECORD [WITH NO LOCK] [INTO identifier] [; AT END imperativestatement] |
|
READ filename RECORD [WITH NO LOCK] [INTO identifier] [; KEY IS dataname] [; INVALID KEY imperativestatement] |
|
STRING identifier1 DELIMITED [BY] (identifier2|SIZE) INTO identifier3 [[WITH] POINTER identifier4] [[ON] OVERFLOW statementlist] [NOT [ON] OVERFLOW statementlist] [END-STRING] |
|
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 |
|---|---|
| identifier1 | Ce paramètre représente la source de données qui sera utilisée dans une opération (ex. : dans une division ou une concaténation de chaîne). |
| identifier2 | Ce paramètre indique la variable dans laquelle identifier1 sera utilisé ou intégré (par exemple, dans une opération DIVIDE ... INTO). |
| identifier3 | Ce paramètre désigne la cible de la donnée produite ou transformée. Ce champ recevra le résultat de l'opération (exemple : après un GIVING ou STRING). |
| filename | Ce paramètre désigne le fichier depuis lequel une lecture est effectuée ; les données lues peuvent ensuite être transférées dans un champ via INTO. |
| RECORD | Ce paramètre précise que l'opération s'applique à un enregistrement complet lu depuis un fichier. |
| POINTER identifier4 | Ce paramètre (dans STRING ou UNSTRING) permet de suivre la position dans la chaîne source, pour savoir où commencer ou continuer l'insertion. |
| DELIMITER IN identifier | Ce paramètre dans UNSTRING permet de stocker dans une variable la valeur du délimiteur trouvé lors de l'extraction de sous-chaînes. |
| COUNT IN identifier | Ce paramètre dans UNSTRING permet de stocker dans une variable le nombre de caractères extraits dans chaque champ défini après le mot-clef INTO. |
| statementlist | Ce paramètre représente une liste d'instructions COBOL à exécuter lorsqu'une condition particulière est remplie (comme ON OVERFLOW). |
| imperativestatement | Ce paramètre correspond à une ou plusieurs instructions impératives qui doivent être exécutées immédiatement lorsque la clause s'applique. |
| dataname | Ce paramètre indique le nom d'un champ ou d'une variable de données définie dans le programme, généralement utilisée pour stocker ou manipuler des valeurs. |
Description
Cette instruction permet d'indiquer où les données de champs doivent être déplacées.
Remarques
- La clause INTO permet d'assigner directement un résultat ou une donnée lue à une variable précise : Elle est très utile dans les opérations arithmétiques comme DIVIDE, ou les traitements de chaînes avec STRING et UNSTRING. Cela améliore la clarté du code en définissant explicitement la destination des données manipulées.
- Dans les instructions READ, la clause INTO sert à transférer le contenu d'un enregistrement lu dans une variable : Cela évite au programmeur de devoir manipuler le tampon du fichier brut. La variable définie dans INTO devient alors la structure de travail pour l'enregistrement lu.
- La clause INTO est souvent couplée à d'autres paramètres comme POINTER ou COUNT dans les instructions STRING et UNSTRING : Cela permet de mieux contrôler la manipulation des chaînes, en entreposant les segments extraits directement dans les champs spécifiés, avec une précision sur la position ou la taille.
- Dans le cas des opérations arithmétiques, INTO remplit un rôle différent selon la forme utilisée : Par exemple, dans DIVIDE A INTO B, c'est B qui reçoit le résultat de la division, ce qui peut prêter à confusion pour les programmeurs venant d'autres langages. La syntaxe peut donc sembler inversée.
- L'instruction INTO favorise une meilleure gestion de la mémoire en spécifiant une cible précise pour les résultats : Cela permet d'éviter l'usage de variables temporaires inutiles et de maintenir le code plus lisible et plus performant.
- Dans les instructions conditionnelles, INTO peut être suivi d'un traitement d'erreur comme ON SIZE ERROR ou ON OVERFLOW : Cela permet de capturer des erreurs éventuelles lors de l'affectation (par exemple si les données dépassent la capacité du champ de destination).
- L'usage combiné d'INTO avec plusieurs autres clauses renforce la puissance de COBOL dans les traitements structurés de données : Dans les structures complexes, notamment les lectures de fichiers indexés ou les chaînes délimitées, INTO sert de pivot central pour gérer les transferts de données avec précision.
- Bien que INTO soit très courant, il nécessite une attention particulière lors de l'écriture du code : Une erreur dans le nom de la variable cible, ou un champ mal dimensionné, peut provoquer des résultats erronés ou des dépassements mémoire subtils, difficiles à détecter sans tests approfondis.
Dernière mise à jour : Jeudi, le 28 juillet 2011