Aller au contenu

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

  • DEV Unité écran
  • RCDFMT Format d'enregistrement
  • OPNID ID ouverture fichier
  • WAIT Attendre

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)
Compatible multitâche : Sous conditions

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.

Paramètres

Mot-clé Description Valeurs possibles Remarques
DEV Unité écran Nom, *FILE Facultatif, positionnel 1
RCDFMT Format d'enregistrement Nom, *FILE Facultatif, positionnel 2
OPNID ID ouverture fichier Nom simple, *NONE Facultatif
WAIT Attendre *YES, *NO Facultatif

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.