Aller au contenu

CPYFRMQRYF

Copier depuis fichier requête

En bref

La commande CPYFRMQRYF (Copier depuis fichier requête) permet de copier tout ou partie d'un fichier, ouvert à l'aide de la commande OPNQRYF (Ouvrir un fichier de requête), dans un fichier imprimante physique à description interne, un fichier DDM ou bande.

CPYFRMQRYF se lit CPY (Copier) + FRMQRYF. Sur IBM i, le nom d'une commande associe presque toujours un verbe et un objet.

Syntaxe minimale

CPYFRMQRYF FROMOPNID(…) TOFILE(…)

Paramètres

  • FROMOPNID ID ouverture fichier d'origine obligatoire
  • TOFILE Fichier de destination obligatoire
  • TOMBR Membre ou label de destination
  • MBROPT Remplacement ou ajout enregs
  • CRTFILE Créer le fichier
  • OUTFMT Format d'impression
  • NBRRCDS Nombre d'enreg à copier
  • FMTOPT Mappage de zone des formats
  • ERRLVL Nombre d'erreurs admises

Astuce : dans une session 5250, tapez CPYFRMQRYF 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 : Tous les environnements (*ALL)
Compatible multitâche : Sous conditions

La commande CPYFRMQRYF (Copier depuis fichier requête) permet de copier tout ou partie d'un fichier, ouvert à l'aide de la commande OPNQRYF (Ouvrir un fichier de requête), dans un fichier imprimante physique à description interne, un fichier DDM ou bande. Vous pouvez aussi indiquer *PRINT en regard du paramètre Fichier de destination (TOFILE) afin d'imprimer les enregistrements sélectionnés à l'aide du fichier imprimante QSYSPRT (fourni par IBM).

Remarque :Pour plus d'informations sur les fichiers DDM, reportez-vous au manuel Rubriques Programmation d'une base de données répartie de l'IBM i Information Center (http://www.ibm.com/systems/i/infocenter/).

A l'aide de cette commande, vous pouvez :

  • Ajouter des enregistrements dans un membre de fichier physique existant ou remplacer le contenu d'un membre de fichier physique de destination à l'aide du paramètre MBROPT.
  • Copier des enregistrements du fichier de requête de format différent du fichier de destination et convertir des enregistrements copiés dans un fichier physique source. Lorsque les formats sont différents, l'opération de copie peut :
    • mapper les zones portant le même nom dans le fichier de requête et le fichier de destination,
    • ignorer les zones du fichier de requête qui n'existent pas dans le fichier de destination,
    • copier les enregistrements directement, quelles que soient les différences entre le fichier de requête et le fichier de destination.
  • Sélectionner un format d'impression si TOFILE(*PRINT) est indiqué. Vous pouvez indiquer la liste des enregistrements au format alphanumérique ou alphanumérique et hexadécimal (paramètre OUTFMT).
  • Créer le fichier de destination (paramètre CRTFILE) s'il n'existe pas avant la copie et lui attribuer le même format que le fichier de requête. Seuls le nom, le type, la longueur et le nombre de positions décimales de chaque zone du format de requête sont utilisés.
  • Copier tous les enregistrements, à l'aide de NBRRCDS(*END) ou un nombre déterminé d'entre eux, en précisant une valeur au paramètre NBRRCDS.

Les manuels Catégorie des fichiers et systèmes de fichiers de l'IBM i Information Center, à l'adresse http://www.ibm.com/systems/i/infocenter/ et Rubrique Base de données de l'IBM i Information Center, à l'adresse http://www.ibm.com/systems/i/infocenter/ fournissent plus de détails sur CPYFRMQRYF.

Restrictions :

  • Le fichier de requête ouvert utilisé par la commande CPYFRMQRYF ne doit pas faire appel à des fichiers DDM (indiqués au paramètre FILE de la commande OPNQRYF).
  • Un membre ne peut être copié sur lui-même. Le membre précisé aux paramètres TOFILE et TOMBR de la commande CPYFRMQRYF doit donc être différent de tout membre indiqué au paramètre FILE de la commande OPNQRYF. De plus, son nom qualifié ne peut être le même que celui de tout membre de fichier physique utilisé par les fichiers logiques précisés au paramètre FILE de la commande OPNQRYF.
  • Lorsque le paramètre CRTFILE(*YES) est précisé et que le paramètre FROMOPNID indique un fichier de requête auquel est associé un déclencheur, ce dernier n'est pas associé au fichier créé (paramètre TOFILE). La commande ADDPFTRG doit alors être utilisée pour ajouter un déclencheur au fichier.
  • Dans le cas de travaux à unités d'exécution multiples, cette commande n'admet pas ces dernières si la commande OPNQRYF n'est pas exécutée de façon à les admettre. C'est également le cas lors d'une copie dans plusieurs membres de fichier base de données, fichiers unité (sauf les fichiers imprimante SPOOL(*YES)), fichiers répartis et fichiers DDM de type *SNA. Cette commande échoue pour les fichiers répartis utilisant des bases de données relationnelles de type *SNA et des fichiers DDM de type *SNA. Elle admet les unités d'exécution multiples UNIQUEMENT en cas de copie dans des membres d'un seul fichier base de données (local ou DDM de type *IP) et dans des fichiers imprimante SPOOL(*YES), pourvu que la commande OPNQRYF soit exécutée de façon à admettre les unités d'exécution multiples.

Paramètres

Mot-clé Description Valeurs possibles Remarques
FROMOPNID ID ouverture fichier d'origine Nom Obligatoire, positionnel 1
TOFILE Fichier de destination Valeurs uniques: *PRINT
Autres valeurs: Nom d'objet qualifié
Obligatoire, positionnel 2
Qualificatif 1: Fichier de destination Nom
Qualificatif 2: Biblio Nom, *LIBL, *CURLIB
TOMBR Membre ou label de destination Nom, *FIRST Facultatif
MBROPT Remplacement ou ajout enregs *NONE, *ADD, *REPLACE Facultatif
CRTFILE Créer le fichier *NO, *YES Facultatif
OUTFMT Format d'impression *CHAR, *HEX Facultatif
NBRRCDS Nombre d'enreg à copier Entier non signé, *END Facultatif
FMTOPT Mappage de zone des formats Valeurs uniques: *NONE, *NOCHK, *CVTSRC
Autres valeurs (jusqu'à 2 répétitions): *MAP, *DROP
Facultatif
ERRLVL Nombre d'erreurs admises Entier non signé, 0, *NOMAX Facultatif

ID ouverture fichier d'origine (FROMOPNID)

Indique le nom utilisé par la commande OPNQRYF pour identifier l'ID d'ouverture du fichier de requête. Cet ID doit permettre l'entrée, la mise à jour, ainsi que toutes les opérations induites des valeurs des paramètres OPNID et OPTION de la commande OPNQRYF.

Ce paramètre est obligatoire.

Fichier de destination (TOFILE)

Indique le nom du fichier qui reçoit les enregistrements copiés.

Remarque :Un fichier unité peut être un fichier bande ou un fichier imprimante décrit dans les programmes.

Ce paramètre est obligatoire.

Valeurs uniques

*PRINT
Les données sont copiées dans un fichier imprimante du système (QSYSPRT) et formatées selon la valeur indiquée à l'invite Format d'impression (paramètre OUTFMT).

Le fichier imprimante fourni par IBM, QSYSPRT, ne peut pas être remplacé par un autre fichier et doit avoir les attributs RPLUNPRT(*YES) et CTLCHAR(*NONE).

Qualificatif 1 : Fichier de destination

nom
Indiquez le nom du fichier physique ou du fichier unité dans lequel les enregistrements doivent être copiés. Si CRTFILE(*YES) est spécifié et que le fichier précisé est introuvable, vous devez qualifier le nom de fichier par un nom de bibliothèque. Une fois le fichier de destination physique créé, il est ajouté dans la bibliothèque indiquée.

Qualificatif 2 : Biblio

*LIBL
La recherche porte sur toutes les bibliothèques de la liste des bibliothèques de l'unité d'exécution en cours jusqu'à ce que la première occurrence soit trouvée.
*CURLIB
Le fichier physique ou unité est recherché dans la bibliothèque en cours du travail. Si cette dernière n'est pas précisée, QGPL est prise par défaut.
nom
Indiquez le nom de la bibliothèque contenant le fichier physique ou unité.

Membre ou label de destination (TOMBR)

Indique le nom du membre de fichier qui reçoit les enregistrements copiés.

Si le fichier de destination est un fichier imprimante, vous devez indiquer *FIRST pour ce paramètre.

*FIRST
Le premier membre du fichier indiqué est utilisé.
nom
Indiquez le nom du membre du fichier physique, ou bien l'identificateur de label du fichier bande devant recevoir les enregistrements. Si aucun membre portant ce nom n'existe dans le fichier physique de destination, l'opération de copie tente de l'y ajouter.

Remplacement ou ajout enregs (MBROPT)

Indique si les nouveaux enregistrements remplacent ou sont ajoutés aux enregistrements existants.

Remarque :Si la copie s'effectue dans un fichier physique existant, ce paramètre doit inclure *ADD ou *REPLACE. Si le fichier de destination n'existe pas et que CRTFILE(*YES) est spécifié, l'opération de copie utilise par défaut MBROPT(*ADD) pour tous les enregistrements copiés dans le fichier une fois celui-ci créé, quelle que soit la valeur précisée pour ce paramètre. Les enregistrements copiés sont toujours physiquement ajoutés à la fin d'un membre de fichier base de données dans le même ordre de leur extraction d'un fichier de requête.

*NONE
Ce paramètre n'est pas utilisé dans le cas présent. Lorsque le fichier de destination est un fichier physique existant, *NONE n'est pas admis. Vous devez indiquer *ADD ou *REPLACE pour préciser si les enregistrements doivent être ajoutés ou remplacés dans chaque membre de fichier de destination utilisé.
*ADD
Les enregistrements copiés sont ajoutés aux enregistrements existants dans chaque membre du fichier de destination utilisé.
*REPLACE
Le système met à blanc le membre existant et ajoute les nouveaux enregistrements.

Créer le fichier (CRTFILE)

Indique si un fichier physique est créé pour recevoir les données lorsque le fichier de destination n'existe pas. Si le fichier de destination existe déjà lorsque cette commande est lancée, ce paramètre n'est pas pris en compte.

*NO
Le fichier de destination doit déjà exister lors de l'émission de la commande. Par conséquent, aucun fichier physique de destination n'est créé.
*YES
Si le fichier de destination n'existe pas, un fichier physique portant le nom indiqué dans l'invite Fichier de destination (paramètre TOFILE) est créé. Si le format du fichier de requête ouvert contient un type de données défini par l'utilisateur, une liaison de données ou un type de zone LOB, le fichier physique créé sera une table SQL. Dans tous les autres cas, le fichier de destination créé sera un fichier physique base de données qui n'est pas une table SQL. En plus des contrôles de validité habituels, les conditions spéciales suivantes doivent être remplies lors d'une opération de copie avec création de fichier de destination :
  • Un nom de bibliothèque doit être indiqué dans le paramètre TOFILE. La valeur par défaut (*LIBL) n'est pas admise.
  • Il ne peut pas y avoir substitution du nom de fichier ou de bibliothèque. Les valeurs indiquées dans cette commande pour le fichier de destination doivent être utilisées.
  • L'utilisateur doit être autorisé à ajouter le fichier à la bibliothèque TOFILE ; en outre, il doit disposer du droit d'opération sur la commande CRTPF (Créer un fichier physique).

Format d'impression (OUTFMT)

Indique si les enregistrements doivent être imprimés au format alphanumérique seul ou bien à la fois aux formats alphanumérique et hexadécimal. Ce paramètre est utilisé uniquement lorsque *PRINT est précisé à l'invite Fichier de destination (paramètre TOFILE).

*CHAR
Les enregistrements sont imprimés en format alphanumérique.
*HEX
Les enregistrements sont imprimés en format alphanumérique et en format hexadécimal.

Nombre d'enreg à copier (NBRRCDS)

Indique le nombre d'enregistrements copiés dans le fichier de destination.

*END
Les enregistrements sont copiés jusqu'à détection d'une condition de fin de fichier.
1-4294967288
Indiquez le nombre d'enregistrements à copier. La copie prend fin si une condition EOF (fin de fichier) est rencontrée avant que le nombre d'enregistrements indiqué soit atteint.

Mappage de zone des formats (FMTOPT)

Dans le cas d'une copie depuis un fichier de requête ouvert vers un fichier physique, ce paramètre indique les éventuelles modifications à apporter au niveau des zones des formats d'enregistrement. Si le fichier de destination est un fichier physique source, *CVTSRC est obligatoire. Les identificateurs de jeux de caractères codés (CCSID) des zones caractère du fichier de requête ouvert sont définis par le CCSID du travail à partir duquel la commande OPNQRYF (Ouvrir un fichier de requête) a été lancée. Tous les CCSID prennent la valeur du CCSID utilisé pour la commande OPNQRYF, sauf si ce dernier est 65535, auquel cas les CCSID ne sont pas modifiés. Si les formats d'enregistrement des fichiers d'origine et de destination sont identiques et si le fichier de destination est un fichier physique, toutes les valeurs du paramètre FMTOPT, à l'exception de *CVTSRC, sont admises.

Remarque :Modifiez le CCSID du travail à la valeur 65535 avant d'exécuter la commande OPNQRYF si vous souhaitez utiliser la commande CPYFRMQRYF (Copier depuis fichier requête).

Valeurs uniques

*NONE
Aucun mappage, ni omission de zone n'est effectué lors de la copie. Cette valeur est admise uniquement lorsque les fichiers d'origine et de destination sont dotés du même format d'enregistrement, ou lorsque le fichier de destination n'est pas un fichier base de données. Il y a identité de formats seulement lorsque toutes les zones sont communes aux deux formats et lorsque leurs positions de début et attributs sont les mêmes dans les deux enregistrements. Ces attributs comprennent des CCSID (qu'il s'agisse d'une zone acceptant des valeurs indéfinies ou ne les acceptant pas), ainsi que le format et le séparateur date/heure (s'il s'agit d'une zone date ou d'une zone heure). Si *NONE est admis et que les deux fichiers sont des fichiers base de données, les valeurs indéfinies sont copiées.
*NOCHK
Si les formats d'enregistrement des deux fichiers sont différents, la copie se poursuit néanmoins. Les données des enregistrements sont copiées directement (de gauche à droite) d'un fichier à l'autre.
*CVTSRC
Cette valeur s'utilise pour effectuer une copie vers un fichier source. Elle n'est admise que lorsque le fichier de destination est un fichier source. Dans ce cas, les zones comportant le numéro de séquence et la date sont ajoutées aux données des enregistrements du fichier de requête ouvert, lesquelles sont copiées dans la partie source de chaque enregistrement du fichier de destination. Les valeurs indéfinies ne sont pas prises en compte et aucune conversion des données date/heure n'est effectuée.

Autres valeurs (jusqu'à 2 répétitions)

*MAP
Les zones de même nom dans les formats d'enregistrement des deux fichiers sont copiées. Les zones du fichier de destination qui n'ont pas de zone correspondante dans le fichier d'origine prennent la valeur par défaut définie par le mot clé DFT figurant dans les DDS (Spécifications de descriptions de données) du fichier de destination (zéro pour les zones numériques, des blancs pour les zones caractère, la date et l'heure en cours pour les zones réservées à cet effet ou la valeur indéfinie pour les zones acceptant ce type de valeur). *MAP et *DROP ne sont pas incompatibles. Les zones mappées peuvent avoir des positions de début différentes dans les formats d'enregistrement des fichiers d'origine et de destination. *MAP permet d'effectuer la conversion des données date/heure ainsi que la copie des valeurs indéfinies.
*DROP
Cette valeur doit être indiquée pour le mappage au niveau des zones dès lors que des noms de zones dans le format d'enregistrement du fichier d'origine n'ont pas de correspondance dans le format du fichier de destination. *DROP et *MAP ne sont pas incompatibles. Lorsque *DROP est indiqué, tous les noms de zones communs aux deux formats d'enregistrement doivent avoir des attributs et des positions relatives identiques. Si tel n'est pas le cas, *MAP doit également être indiqué.

Nombre d'erreurs admises (ERRLVL)

Ce paramètre indique le nombre maximal d'erreurs de lecture ou d'écriture remédiables admises lors de la copie. Le compte d'erreurs remédiables est remis à zéro à chaque opération CPYFRMQRYF. Si le nombre d'erreurs remédiables est supérieur à celui indiqué au paramètre ERRLVL, l'opération de copie prend fin et un message est émis.

0
Si une erreur remédiable se produit, la copie s'interrompt.
*NOMAX
Aucun nombre maximal d'erreurs n'est indiqué. Toutes les erreurs remédiables sont tolérées. L'opération de copie se poursuit quel que soit le nombre d'erreurs détectées.
entier
Indiquez le nombre maximal d'erreurs remédiables admises pour l'opération de copie. Si le nombre d'erreurs dépasse cette valeur, l'opération de copie prend fin.

Exemples

Exemple 1 : création d'un fichier avec un sous-ensemble d'enregistrements

OPNQRYF   FILE(CUSTOMER/ADDRESS)  QRYSLT('STATE *EQ "TEXAS"')
  :
CPYFRMQRYF   FROMOPNID(ADDRESS)  TOFILE(TEXAS/ADDRESS)
             CRTFILE(*YES)

Ces commandes permettent de créer un fichier à partir du fichier CUSTOMER/ADDRESS qui contient des enregistrements dont la zone ETAT affiche la valeur Texas.

Exemple 2 : impression d'enregistrements en fonction d'une sélection

OPNQRYF   FILE(FILEA)  QRYSLT('CITY *EQ "CHICAGO"')
  :
CPYFRMQRYF   FROMOPNID(FILEA)  TOFILE(*PRINT)

Ces commandes permettent d'imprimer tous les enregistrements de FILEA dont la zone VILLE affiche la valeur Chicago.

Exemple 3 : copie d'un sous-ensemble d'enregistrements sur une disquette

OPNQRYF   FILE(FILEB)  QRYSLT('FIELDB *EQ "10"')  OPNID(MYID)
  :
CPYFRMQRYF   FROMOPNID(MYID)  TOFILE(DISK1)

Ces commandes permettent de copier vers un fichier disquette tous les enregistrements de FILEB dont la valeur de FIELDB est 10.

Exemple 4 : création d'une copie de la sortie d'une jointure dynamique

Supposons qu'un utilisateur souhaite créer un fichier physique avec le format et les données de FILEA et FILEB et que les fichiers contiennent les zones suivantes :

FILEA        FILEB      JOINAB
-----        -----      ------
Clt          Clt        Clt
Nom          Qté        Nom
Adr                     Qté

OPNQRYF   FILE(FILEA FILEB)  FORMAT(JOINAB)
          JFLD((FILEA/CUST FILEB/CUST))
          MAPFLD((CUST 'FILEA/CUST'))  OPNID(QRYFILE)
  :
CPYFRMQRYF   FROMOPNID(QRYFILE)  TOFILE(MYLIB/FILEC)
             CRTFILE(*YES)

Ces commandes permettent de joindre FILEA et FILEB et d'enregistrer une copie des résultats dans un nouveau fichier physique MYLIB/FILEC. Le format du fichier sera semblable à celui de JOINAB. Le fichier contiendra les données résultant de la jointure de FILEA et FILEB avec la zone Clt. Le fichier FILEC de la bibliothèque MYLIB peut être traité comme tout autre fichier physique à l'aide de commandes CL telles que DSPPFM (Afficher un membre de fichier physique) et d'utilitaires tels que Query/400.

Messages d'erreur

Messages *ESCAPE

CPF2816
Fichier &1 de &2 non copié à la suite d'une erreur.
CPF2817
Commande de copie interrompue à la suite d'une erreur.
CPF2858
Attributs de fichier incorrects pour sortie imprimée.
CPF2859
Partage d'un chemin d'ouverture non admis.
CPF2864
Non autorisé au fichier &1 de &2.
CPF2875
Le membre ou label ouvert n'est pas celui prévu.
CPF2883
Erreur lors de la création du fichier &1 dans &2.
CPF2888
Le membre &3 n'a pas été ajouté au fichier à la suite d'une erreur.
CPF2909
Erreur à la mise à blanc du membre &3 de &1 dans &2.
CPF2949
Erreur à la fermeture du membre &3 de &1 dans &2.
CPF2952
Erreur lors de l'ouverture du fichier &1 de &2.
CPF2971
Erreur de lecture du membre &3 du fichier &1.
CPF2972
Erreur d'écriture dans le membre &3 du fichier &1.
CPF2975
Erreur de lecture d'un fichier avec clé.
CPF2976
Nombre d'erreurs supérieur à la valeur de ERRLVL.
CPF3140
Initialisation ou copie du membre &2 annulée.
CPF3143
Incréments non admis pour le membre &2.
CPF3148
Espace mémoire insuffisant pour l'ajout d'enregistrements au membre &2.
CPF3150
La copie de base de données a échoué pour le membre &2.
CPF9212
Impossible de charger ou décharger le fichier DDM &2 de &3.

© Copyright IBM Corp. Texte d'aide reproduit à des fins de formation.