RCVF
Recevoir fichier écran ou BD
En bref
La commande RCVF (Recevoir un fichier) permet à un programme CL ou à une procédure CL de recevoir des données provenant d'un fichier écran ou d'un fichier base de données.
Syntaxe minimale
RCVF
Paramètres
Astuce : dans une session 5250, tapez RCVF puis F4 pour
l'invite de saisie, et F1 sur un paramètre pour son aide.
Aide IBM i de la commande
Texte du F1, IBM i 7.5 en français
(bibliothèque QSYS)
Où s'exécute :
- Programme batch (*BPGM)
- Programme interactif (*IPGM)
La commande RCVF (Recevoir un fichier) permet à un programme CL ou à une procédure CL de recevoir des données provenant d'un fichier écran ou d'un fichier base de données. Les données lues dans un enregistrement de ce fichier sont affectées à une ou plusieurs variables CL. Celles-ci ont été automatiquement déclarées dans le programme, lors de la compilation du source CL, si une commande DCLF (Déclarer un fichier) fait partie intégrante de ce source. Il existe une seule variable CL pour chaque zone de format d'enregistrement recevant des données. Les données entrées à l'écran par un utilisateur ou contenues dans l'enregistrement d'entrée sont copiées dans les variables CL du programme à l'aide de la commande RCVF, puis traitées par ce dernier.
Un seul des formats d'enregistrement définis par la commande DCLF peut être indiqué pour chacune des commandes RCVF. Si le fichier n'a pas été ouvert par une commande RCVF, SNDRCVF ou SNDF précédente, il l'est par cette commande. S'il a été déjà fermé par une condition de fin de fichier (EOF) d'une commande RCVF précédente, une erreur se produit. Le fichier spécifié par cette commande peut être remplacé si la commande de substitution est entrée avant l'ouverture du fichier. Si, au moment de la compilation du programme, le fichier indiqué par la commande DCLF était un fichier écran, il ne peut être remplacé que par un autre fichier écran ; s'il était un fichier base de données, par un autre fichier base de données ayant un format d'enregistrement unique. Cependant, vérifiez que les zones du format d'enregistrement de substitution correspondent bien aux variables CL déclarées dans le programme.
Restrictions :
- Cette commande est valide uniquement dans un programme CL ou une procédure CL ILE.
- Cette commande admet les unités d'exécutions multiples sous certaines conditions. La commande RCVF n'admet pas les unités d'exécution multiples lorsqu'elle est appliquée à un fichier écran. Elle ne doit pas être utilisée dans un travail composé de plusieurs de ces unités pour la réception de données provenant d'un fichier écran.
Unité écran (DEV)
Indique le nom de l'unité-écran à partir de laquelle les données doivent être reçues. Si un nom de variable CL est indiqué dans ce paramètre, une seule commande RCVF suffit dans le programme pour que les données provenant de plusieurs unités soient reçues. (La variable indiquant le nom d'unité peut être modifiée en cas de plusieurs exécutions successives de la même commande.) Vous ne pouvez indiquer ce paramètre que dans le cas d'un fichier-écran.
- *FILE
- Les données utilisateur à recevoir doivent provenir de l'unité associée au fichier unité (celui-ci a été déclaré dans le paramètre FILE de la commande DCLF). Si plusieurs noms d'unité figurent dans le fichier d'unité, vous ne pouvez pas indiquer *FILE.
- nom
- Indiquez le nom de l'unité ou celui de la variable CL contenant le nom de l'unité d'où proviennent les données utilisateur à recevoir.
Format d'enregistrement (RCDFMT)
Indique le nom du format d'enregistrement à utiliser pour recevoir les données provenant du fichier. Ce format contient toutes les zones de l'enregistrement. Si le fichier est un fichier base de données, le format d'enregistrement indiqué permet d'établir une correspondance (mappage) entre les données de l'enregistrement et les variables CL. Si le fichier contient plusieurs formats d'enregistrement, ce paramètre doit figurer avec le nom de l'un d'entre eux. S'il s'agit d'un fichier base de données, le format d'enregistrement indiqué est utilisé pour le mappage de ses données avec les variables CL. Lors de l'exécution, le nom réel du format d'enregistrement utilisé dans le fichier peut être différent. La commande RCVF ne prend pas en compte le mot clé DDS INVITE.
- *FILE
- Le fichier unité contient un seul format d'enregistrement : le format dans lequel les données doivent être reçues. Vous ne pouvez pas indiquer *FILE si plusieurs formats d'enregistrement sont spécifiés dans le fichier unité.
- nom
- Indiquez le nom du format d'enregistrement dans lequel les données provenant de l'unité-écran doivent être reçues. Vous ne pouvez pas utiliser ici une variable CL pour indiquer le nom du format d'enregistrement.
ID ouverture fichier (OPNID)
Indique l'ID d'ouverture de fichier déclaré dans une commande DCLF (Déclarer un fichier) précédente dans le même programme CL ou la même procédure CL ILE. Vous ne pouvez pas indiquer une variable CL comme valeur de ce paramètre.
- *NONE
- Aucun ID d'ouverture de fichier n'est fourni. Cette commande utilise le fichier associé à la commande DCLF ayant *NONE indiqué au paramètre OPNID. Un seul fichier peut être déclaré dans un programme CL ou une procédure CL ILE ayant *NONE comme ID d'ouverture de fichier.
- nom-simple
- Indiquez le nom correspondant à la valeur du paramètre OPNID indiqué dans une commande DCLF précédente dans le même programme CL ou la même procédure CL ILE.
Attendre (WAIT)
Indique si le programme CL ou la procédure CL ILE doit attendre les données à recevoir en provenance de l'unité utilisateur, ou bien si elle doit poursuivre en exécutant les commandes qui font suite à la commande RCVF. Si la valeur WAIT(*NO) est précisée, le programme doit émettre ultérieurement une commande WAIT pour achever l'opération d'entrée. Vous ne pouvez indiquer ce paramètre que dans le cas d'un fichier-écran.
- *YES
- Le programme attend que l'entrée des données sur l'unité soit terminée avant d'exécuter la commande suivante.
- *NO
- Le programme n'attend pas l'entrée des données et passe à l'exécution des commandes suivantes jusqu'à ce qu'il rencontre une commande WAIT.
Exemples
Exemple 1 : Réception de données d'un fichier base de données
DCLF FILE(MENU1) : RCVF OPNID(*NONE)
Le programme CL ou la procédure CL ILE reçoit des données d'un fichier base de données nommé MENU1. La commande RCVF est associée à la commande DCLF n'ayant aucun ID d'ouverture de fichier indiqué.
Exemple 2 : Réception de données d'une unité-écran
DCLF FILE(SCREENX) RCDFMT(R1 R2) : RCVF DEV(DISPLAY2) RCDFMT(R1)
Le programme CL ou la procédure CL ILE reçoit des données de l'utilisateur sur le clavier-écran nommé DISPLAY2. La réception des données se fait au format d'enregistrement R1 dans le fichier d'unité nommé SCREENX. La procédure attend les données utilisateur avant de poursuivre le traitement.
Exemple 3 : Traitement de l'exception Fin de fichier
DCLF FILE(INPUT) OPNID(INFILE1) : RCVF OPNID(INFILE1) MONMSG CPF0864 EXEC(GOTO EOF)
Le programme CL ou la procédure CL ILE reçoit un enregistrement de manière séquentielle provenant d'un fichier base de données nommé INPUT. La procédure intercepte l'exception de fin de fichier CPF0864 et passe au label EOF lors de la réception de ce message.
Exemple 4 : Utilisation de RCVF avec la commande WAIT
DCLF FILE(MSCREEN) RCDFMT(MIN1 MIN2 MIN3) : RCVF DEV(&DNAME) RCDFMT(MIN2) WAIT(*NO) WAIT DEV(&DNAME)
Le programme CL ou la procédure CL ILE reçoit des données utilisateur de plusieurs unités, une par une, au moyen d'un fichier d'unité nommé MSCREEN. Ces données proviennent d'une unité nommée dans la variable &DNAME à l'aide du format d'enregistrement MIN2, mais la procédure n'attend pas l'arrivée des données. La même commande RCVF est utilisée pour recevoir des données de plusieurs unités ; la variable CL &DNAME étant employée, seul le nom d'unité figurant dans le paramètre DEV doit être modifié à chaque exécution de la commande. Une commande WAIT pour chaque unité doit être émise ultérieurement dans la procédure car la commande WAIT reçoit effectivement les données. Les commandes RCVF et WAIT peuvent être traitées pour chaque unité (une par une) pour envoyer des données à la procédure. Si la réponse d'un utilisateur est retardée, les commandes peuvent être traitées autant de fois que nécessaire jusqu'à ce que l'utilisateur réponde avec les données ou jusqu'à ce qu'une commande ENDRCV annule la demande.
Messages d'erreur
Messages *ESCAPE
- CPF0859
- Dépassement de la mémoire tampon E/S dû à une substitution de fichier.
- CPF0860
- Le fichier &1 de &2 n'est pas un fichier base de données.
- CPF0861
- Le fichier &1 de &2 n'est pas un fichier écran.
- CPF0863
- Valeur de la donnée binaire trop élevée pour la variable CL décimale.
- CPF0864
- Fin du fichier &1 de &2.
- CPF0865
- Le fichier &1 possède plusieurs formats d'enregistrement.
- CPF0883
- *FILE incorrect pour le paramètre DEV, dans le fichier &1.
- CPF0886
- L'enregistrement contient une zone de données incorrecte.
- CPF4101
- Fichier &2 de &3 non trouvé ou fichier spoule en entrée manquant.
- CPF502A
- Erreur d'enregistrement de longueur variable sur membre &4.
- CPF502B
- Une erreur s'est produite dans le programme déclencheur.
- CPF502D
- Violation de contrainte référentielle sur le membre &4.
- CPF502E
- Les contraintes référentielles n'ont pas pu être validées pour le membre &4.
- CPF502F
- Violation de la contrainte de vérification sur le membre &4
- CPF5029
- Erreur de mappage de données sur le membre &4.
- CPF503A
- Violation de contrainte référentielle sur le membre &4.
- CPF503B
- L'enregistrement n'a pas pu être inséré ou mis à jour dans le membre &4.
- CPF5068
- Unité-programme &4 non trouvée dans fichier &2 de &3.
- CPF5070
- Aucune unité-programme acquise au fichier &2 de &3.
© Copyright IBM Corp. Texte d'aide reproduit à des fins de formation.