Aller au contenu

Commande CL IBM i (AS/400)

OPNQRYF

Ouvrir un fichier de requête

En bref

La commande OPNQRYF (Ouvrir un fichier de requête) permet d'ouvrir un fichier recevant les enregistrements résultant d'une demande d'interrogation de base de données.

OPNQRYF se lit OPN (Ouvrir) + QRYF. Sur IBM i, le nom d'une commande associe presque toujours un verbe et un objet.

Syntaxe minimale

OPNQRYF FILE(…)

Paramètres

  • FILE Spécifications de fichier obligatoire
  • OPTION Options d'ouverture
  • FORMAT Spécifications de format
  • QRYSLT Expression de sélection
  • KEYFLD Spécifications de zone clé
  • UNIQUEKEY Zones pour une seule clé
  • JFLD Spécification zone de jointure
  • JDFTVAL Jointure avec valeurs/défaut
  • JORDER Ordre de jointure des fichiers
  • GRPFLD Noms zones de groupage
  • GRPSLT Expression sélection groupage
  • MAPFLD Spécifications zone mappée
  • IGNDECERR Ignorer erreurs données décim
  • OPNID ID ouverture fichier
  • SEQONLY Limite à séquentiel uniquement
  • COMMIT Contrôle de validation actif
  • OPNSCOPE Portée d'ouverture
  • DUPKEYCHK Vérifier clés en double
  • ALWCPYDTA Copie des données admise
  • OPTIMIZE Optimisation performance
  • OPTALLAP Optimiser tous chemins d'accès
  • SRTSEQ Séquence de tri
  • LANGID Identificateur de langue
  • CCSID CCSID sortie finale
  • TYPE Type d'ouverture

Astuce : dans une session 5250, tapez OPNQRYF 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 OPNQRYF (Ouvrir un fichier de requête) permet d'ouvrir un fichier recevant les enregistrements résultant d'une demande d'interrogation de base de données. Une fois ouvert, le fichier ressemble à un fichier base de données ouvert à l'aide de la commande OPNDBF (Ouvrir un fichier base de données). Les enregistrements qui figurent dans ce fichier sont accessibles aux programmes en langage évolué partageant le chemin d'ouverture (ODP). Le chemin peut être fermé et les ressources de requête libérées à l'aide de la commande CLOF (Fermer un fichier). Pour obtenir de l'aide supplémentaire, reportez-vous au manuel Rubrique Base de données de l'IBM i Information Center, à l'adresse http://www.ibm.com/systems/i/infocenter/.

Cette commande permet de combiner les fonctions de base de données suivantes :

  • Joindre les enregistrements de plusieurs fichiers, membres et formats d'enregistrement. La jointure peut s'effectuer par égalité ou inégalité.
  • Calculer de nouvelles valeurs de zones à l'aide d'opérations numériques et alphanumériques sur des valeurs de zones et des constantes.
  • Grouper des enregistrements selon des valeurs communes appartenant à une ou plusieurs zones et calculer des fonctions globales, telles que la valeur minimum ou moyenne de zone, pour chaque groupe.
  • Choisir un sous-ensemble des enregistrements disponibles, avec sélection avant et après groupage des enregistrements.
  • Classer les enregistrements de résultats selon la valeur d'une ou plusieurs zones clés.

Restrictions :

  1. L'utilisateur peut modifier par substitution le nom du fichier, de la bibliothèque et du membre figurant au paramètre FILE. Les substitutions ne sont pas prises en compte pour le fichier et la bibliothèque indiqués au paramètre FORMAT, excepté lorsque la valeur FORMAT(*FILE) est précisée. Les valeurs de paramètre indiquées dans une commande de substitution ne sont pas prises en compte par la commande OPNQRYF, à l'exception des valeurs de TOFILE, MBR, LVLCHK, WAITRCD, SEQONLY ou INHWRT et SHARE.
  2. La commande OPNQRYF ne partage pas de chemin d'ouverture (ODP) existant dans le travail ou le groupe d'activation. Si un chemin d'ouverture SHARE(*YES) existant dans le travail ou le groupe d'activation se réfère aux mêmes noms de fichier, de bibliothèque et de membre que ceux du chemin d'ouverture du fichier de requête à ouvrir, celui-ci ne s'ouvre pas et un message d'arrêt programme est envoyé.
  3. Chaque opération de partage d'ouverture consécutive doit utiliser les mêmes options (par exemple SEQONLY) que celles qui sont en vigueur lors de l'exécution de la commande OPNQRYF.
  4. Certaines fonctions du système, telles que les commandes DSPPFM (Afficher un membre de fichier physique) et CPYF (Copier un fichier), ne partagent pas de chemin d'ouverture existant. La commande OPNQRYF ne peut pas être utilisée avec ces fonctions.
  5. Le fichier ouvert à l'aide de la commande OPNQRYF ne peut pas être utilisé dans des programmes en BASIC, ce langage ne partageant pas de chemin d'ouverture existant.
  6. Cette commande autorise les unités d'exécution multiples sous certaines conditions. Dans le cas de travaux à unités d'exécution multiples, cette commande n'admet pas les unités d'exécution multiples pour les fichiers répartis. Elle échoue pour les fichiers répartis utilisant une base de données relationnelle de type *SNA, ainsi que pour les fichiers DDM de type *SNA. Cette commande n'est pas sûre également pour les unités d'exécution et échoue pour les fichiers DDM (Distributed Data Management - Gestion de fichiers éloignés) de type *SNA.
  7. Les utilisateurs de cette commande doivent disposer des droits suivants :
    • Droit d'exécution (*EXECUTE) sur toute bibliothèque nécessaire pour localiser les fichiers indiqués aux paramètres FILE et FORMAT
    • Droit d'opération sur l'objet (*OBJOPR) pour tout fichier physique ou logique indiqué au paramètre FILE, ainsi qu'un ou plusieurs des droits sur les données suivants pour les membres de fichier physique ou de fichier physique sous-jacent d'un membre de fichier logique :
      • Droit de lecture (*READ), si le fichier est ouvert en entrée (à l'aide de l'option *INP)
      • Droit d'ajout (*ADD), si le fichier est ouvert en sortie (à l'aide de l'option *OUT)
      • Droit de mise à jour (*UPD), si le fichier est ouvert en mise à jour (à l'aide de l'option *UPD)
      • Droit de suppression (*DLT), si le fichier est ouvert pour des suppressions (à l'aide de l'option *DLT)
      • Droit de lecture (*READ), d'ajout (*ADD), de mise à jour (*UPD) et de suppression (*DLT), si le fichier est ouvert pour toutes les opérations d'E-S (à l'aide de l'option *ALL)
    • Droit d'opération sur l'objet (*OBJOPR) pour tout fichier indiqué au paramètre FORMAT
    • Droit d'utilisation (*USE) pour toute table de conversion indiquée au paramètre MAPFLD (à l'aide de l'option *USE)

Paramètres

Mot-clé Description Valeurs possibles Remarques
FILE Spécifications de fichier Values (jusqu'à 32 répétitions): Liste d'éléments Obligatoire, positionnel 1
Élément 1: Fichier Nom d'objet qualifié
Qualificatif 1: Fichier Nom
Qualificatif 2: Biblio Nom, *LIBL, *CURLIB
Élément 2: Membre Nom, *FIRST, *LAST, *ALL
Élément 3: Format d'enregistrement Nom, *ONLY
OPTION Options d'ouverture Valeurs uniques: *ALL
Autres valeurs (jusqu'à 4 répétitions): *INP, *OUT, *UPD, *DLT
Facultatif, positionnel 2
FORMAT Spécifications de format Valeurs uniques: *FILE
Autres valeurs: Liste d'éléments
Facultatif
Élément 1: Fichier Nom d'objet qualifié
Qualificatif 1: Fichier Nom
Qualificatif 2: Biblio Nom, *LIBL, *CURLIB
Élément 2: Format d'enregistrement Nom, *ONLY
QRYSLT Expression de sélection Valeur caractère, *ALL Facultatif
KEYFLD Spécifications de zone clé Valeurs uniques: *NONE, *FILE
Autres valeurs (jusqu'à 50 répétitions): Liste d'éléments
Facultatif
Élément 1: Nom zone clé Nom d'objet qualifié
Qualificatif 1: Nom zone clé Nom
Qualificatif 2: Fichier ou élément Nom, *MAPFLD, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32
Élément 2: Ordre zone clé *ASCEND, *DESCEND
Élément 3: Ordre en valeur absolue *ABSVAL
UNIQUEKEY Zones pour une seule clé 1-120, *NONE, *ALL Facultatif
JFLD Spécification zone de jointure Valeurs uniques: *NONE
Autres valeurs (jusqu'à 50 répétitions): Liste d'éléments
Facultatif
Élément 1: Zone de départ Nom d'objet qualifié
Qualificatif 1: Zone de départ Nom
Qualificatif 2: Fichier ou élément Nom, *MAPFLD, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32
Élément 2: Zone d'arrivée Nom d'objet qualifié
Qualificatif 1: Zone d'arrivée Nom
Qualificatif 2: Fichier ou élément Nom, *MAPFLD, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32
Élément 3: Opérateur de jointure *EQ, *NE, *LT, *GT, *LE, *GE
JDFTVAL Jointure avec valeurs/défaut *NO, *YES, *ONLYDFT Facultatif
JORDER Ordre de jointure des fichiers *ANY, *FILE Facultatif
GRPFLD Noms zones de groupage Valeurs uniques: *NONE
Autres valeurs (jusqu'à 50 répétitions): Nom d'objet qualifié
Facultatif
Qualificatif 1: Noms zones de groupage Nom
Qualificatif 2: Fichier ou élément Nom, *MAPFLD, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32
GRPSLT Expression sélection groupage Valeur caractère, *ALL Facultatif
MAPFLD Spécifications zone mappée Valeurs uniques: *NONE
Autres valeurs (jusqu'à 50 répétitions): Liste d'éléments
Facultatif
Élément 1: Nom de zone mappée Nom
Élément 2: Expression de définition zone Valeur caractère
Élément 3: Type zone mappée *CALC, *BIN2, *BIN4, *FLT4, *FLT8, *DEC, *ZONED, *CHAR, *VCHAR, *HEX, *VHEX, *DATE, *TIME, *TIMESTP, *ONLY, *VONLY, *OPEN, *VOPEN, *EITHER, *VEITHER, *GRAPHIC, *VGRAPHIC
Élément 4: Longueur 0-32766
Élément 5: Nombre de positions décimales 0-63
Élément 6: CCSID zone mappée 1-65535, *CALC, *HEX
IGNDECERR Ignorer erreurs données décim *NO, *YES Facultatif
OPNID ID ouverture fichier Nom, *FILE Facultatif
SEQONLY Limite à séquentiel uniquement Valeurs uniques: *NO
Autres valeurs: Liste d'éléments
Facultatif
Élément 1: Séquentiel uniquement *YES
Élément 2: Nombre d'enregistrements 1-32767
COMMIT Contrôle de validation actif *NO, *YES Facultatif
OPNSCOPE Portée d'ouverture *ACTGRPDFN, *ACTGRP, *JOB Facultatif
DUPKEYCHK Vérifier clés en double *NO, *YES Facultatif
ALWCPYDTA Copie des données admise *YES, *OPTIMIZE, *NO Facultatif
OPTIMIZE Optimisation performance Valeurs uniques: *ALLIO, *MINWAIT
Autres valeurs: Liste d'éléments
Facultatif
Élément 1: Optimisation performance *FIRSTIO
Élément 2: Nombre d'enregistrements 1-2147483647
OPTALLAP Optimiser tous chemins d'accès *NO, *YES Facultatif
SRTSEQ Séquence de tri Valeurs uniques: *HEX, *JOB, *LANGIDSHR, *LANGIDUNQ
Autres valeurs: Nom d'objet qualifié
Facultatif
Qualificatif 1: Séquence de tri Nom
Qualificatif 2: Biblio Nom, *LIBL, *CURLIB
LANGID Identificateur de langue Nom, *JOB Facultatif
CCSID CCSID sortie finale 1-65535, *JOB, *HEX Facultatif
TYPE Type d'ouverture *NORMAL, *PERM Facultatif

Spécifications de fichier (FILE)

Indique un ou plusieurs fichiers, membres et formats d'enregistrements traités par la commande d'ouverture de fichier de requête. Tous les fichiers indiqués doivent être des fichiers bases de données physiques ou logiques, ou bien des fichiers DDM. Il est possible qu'un index SQL de clés dérivées ne soit pas indiqué. Si des fichiers DDM sont utilisés, la totalité des fichiers auxquels ils se réfèrent doivent figurer sur le même système cible.

Si vous indiquez plusieurs fichiers, membres et formats d'enregistrements, la requête réalise la jointure des valeurs de zones pour créer un seul jeu d'enregistrements. Tout fichier indiqué dans la liste peut être un fichier logique joint ou un membre de fichier logique de vue. Pour plus d'informations sur les fichiers logiques de vue, reportez-vous au manuel Rubriques de référence SQL DB2 for i dans l'IBM i Information Center, à l'adresse http://www.ibm.com/systems/i/infocenter/.

Vous pouvez indiquer 32 valeurs pour ce paramètre.

Ce paramètre est obligatoire.

Elément 1 : Fichier

Qualificatif 1 : Fichier

nom
Indiquez le nom du fichier à traiter.

Qualificatif 2 : Biblio

*LIBL
Le fichier base de données est recherché dans la liste des bibliothèques.
*CURLIB
Le fichier base de données 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
Entrez le nom de la bibliothèque dans laquelle se trouve le fichier base de données.

Elément 2 : Membre

*FIRST
Le membre ayant la date de création la plus ancienne doit être utilisé.
*LAST
Le dernier membre créé doit être utilisé.
*ALL
Tous les membres d'un fichier de partition doivent être utilisés.
nom
Indiquez le nom du membre de fichier base de données à utiliser.

Elément 3 : Format d'enregistrement

*ONLY
Le format d'enregistrement du fichier doit être utilisé. Si le fichier possède plusieurs formats d'enregistrement, vous devez indiquer un nom de format d'enregistrement.
nom
Indiquez le nom du format d'enregistrement à utiliser. Ce format d'enregistrement doit figurer dans le fichier base de données indiqué dans le premier élément de ce paramètre.

Options d'ouverture (OPTION)

Indique l'option d'ouverture utilisée pour le fichier de requête. Les options choisies lors de la première ouverture effective d'un fichier ne seront pas modifiées lors des prochaines ouvertures partagées. Vous pouvez indiquer soit *ALL, soit une liste pouvant compter jusqu'à quatre valeurs dans l'ordre de votre choix, représentant une combinaison des valeurs *INP, *OUT, *UPD et *DLT.

Valeurs uniques

*ALL
Ouvre le fichier pour effectuer toutes les opérations possibles (*INP, *OUT, *UPD, *DLT).

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

*INP
Ouvre le fichier en lecture. *INP est la seule valeur acceptée si vous voulez un traitement par jointure ou par groupage, si vous indiquez un traitement UNIQUEKEY, si toutes les zones du format d'enregistrement du fichier de requête indiquées pour le paramètre Spécifications de format (FORMAT) sont destinées à être utilisées exclusivement comme zones d'entrée ou si un fichier temporaire est nécessaire pour exécuter l'interrogation.
*OUT
Ouvre le fichier en écriture. Dans certains langages évolués, l'écriture de certains fichiers (tels que les fichiers définis comme étant à "accès direct" dans le langage de programmation évolué) se fait au moyen d'une combinaison d'opérations de lecture et de mise à jour. Entrez *UPD et *INP, ou bien *ALL seul pour utiliser un fichier de requête avec un programme de ce type.
*UPD
Ouvre le fichier en mise à jour. Si une opération de lecture précède une mise à jour, vous devez entrer *INP lorsque *UPD est indiqué.
*DLT
Ouvre le fichier pour effectuer des opérations de suppression. Si une opération de suppression est précédée d'une opération de lecture, vous devez entrer *INP lorsque *DLT est indiqué.

Spécifications de format (FORMAT)

Indique le format d'enregistrement utilisé pour les enregistrements accessibles par la commande OPNQRYF. Les noms de zones simples du format d'enregistrement d'un fichier de requête doivent représenter des zones qui sont définies pour le paramètre Spécifications zone mappée (MAPFLD) ou qui n'apparaissent qu'une fois sur l'ensemble des fichiers, des membres et des formats d'enregistrement indiqués pour le paramètre Spécifications de fichier (FILE). La valeur de toute zone ayant le même nom que la zone indiquée dans le paramètre MAPFLD est déterminée par la définition-zone-mappée de ce paramètre. La valeur de toute zone non définie dans le paramètre MAPFLD est déterminée par un mappage de la zone portant le même nom dans l'un des fichiers, membres et formats sous-jacents d'enregistrement indiqués au paramètre FILE. Seuls le nom, le type, la longueur, les positions décimales, le mode majuscules ou minuscules et les attributs d'utilisation de chaque zone indiquée dans le format d'enregistrement identifié par le paramètre Spécifications de format (FORMAT) sont utilisés pour la commande OPNQRYF. Aucun autre attribut n'est pris en compte. Les attributs ne doivent pas obligatoirement être identiques. S'ils diffèrent, les zones sont mappées de la même façon que lorsque la commande CHGVAR (Modifier une variable) est utilisée.

Valeurs uniques

*FILE
Le format d'enregistrement de la première ou seule donnée entrée pour le paramètre Spécifications de fichier (FILE) est utilisé. La valeur *FILE n'est pas admise si plusieurs fichiers, membres et formats d'enregistrement ont été indiqués dans le paramètre FILE (ce qui implique une jointure).

Elément 1 : Fichier

Qualificatif 1 : Fichier

nom
Indiquez le nom d'un fichier base de données physique ou logique, ou bien un fichier DDM dans lequel figure le format d'enregistrement à utiliser.

Qualificatif 2 : Biblio

*LIBL
Le fichier base de données est recherché dans la liste des bibliothèques.
*CURLIB
Le fichier base de données 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
Entrez le nom de la bibliothèque dans laquelle se trouve le fichier base de données.

Elément 2 : Format d'enregistrement

*ONLY
Le format d'enregistrement du fichier est utilisé. Si vous n'indiquez pas de nom de format, *ONLY est pris par défaut. Si le fichier possède plusieurs formats d'enregistrement, vous devez indiquer un nom de format d'enregistrement.
nom
Indiquez le nom du format d'enregistrement à utiliser. Ce format d'enregistrement doit figurer dans le fichier base de données indiqué dans le premier élément de ce paramètre.

Expression de sélection (QRYSLT)

Indique les valeurs de sélection utilisées (avant groupage) pour déterminer quels enregistrements sont accessibles par la commande OPNQRYF.

*ALL
La totalité des enregistrements figurant dans les fichiers physiques ou logiques, dans les membres et dans les formats d'enregistrement indiqués pour le paramètre Spécifications de fichier (FILE) (après jointure, si cela est nécessaire) sont sélectionnés.
'sélection-requête'
Indiquez (entre apostrophes) une expression définissant les valeurs utilisées pour déterminer les enregistrements sélectionnés. Vous pouvez entrer n'importe quelle expression logique formée à partir de relations (telles que *EQ et *NE) de valeurs de zones et de constantes ou de fonctions de valeurs de zones et de constantes. Un nom de zone au moins doit être indiqué dans chaque relation. Toutefois, vous ne pouvez pas indiquer une zone dépendant d'une fonction globale (soit directement par sa définition, soit indirectement par référence à une zone mappée).

Chaque nom de zone peut être qualifié par un nom ou un numéro de fichier précisant dans quel élément de la liste des fichiers, membres et formats d'enregistrement du paramètre FILE figure la zone. La valeur *MAPFLD permet de qualifier le nom de la zone si celle-ci a été définie pour le paramètre Spécifications zone mappée (MAPFLD).

Pour plus d'informations sur la compatibilité des types de données, voir Rubrique Base de données de l'IBM i Information Center, à l'adresse http://www.ibm.com/systems/i/infocenter/.

Spécifications de zone clé (KEYFLD)

Indique le nom d'une ou de plusieurs zones clés utilisées pour classer les enregistrements sélectionnés, ou indique que la séquence du chemin d'accès du premier ou de l'unique fichier, membre et format d'enregistrement indiqués pour le paramètre FILE (Spécifications de fichier) est utilisée pour classer les enregistrements sélectionnés. Si vous entrez des noms de zones clés, mentionnez également si la partie de la clé associée à chaque zone clé est croissante ou décroissante, et si les enregistrements sont classés selon la valeur absolue d'une zone clé numérique.

Valeurs uniques

*NONE
Aucune zone clé n'est utilisée pour classer les enregistrements sélectionnés ; tous les types de classement sont donc possibles. Le système peut présenter des enregistrements dans un ordre différent lorsqu'une même requête est lancée deux fois, en fonction de facteurs tels que le nombre d'enregistrements figurant dans les membres de fichier analysés. La valeur *NONE permet d'améliorer les performances de traitement.
*FILE
Les enregistrements sont classés dans le même ordre que le premier fichier, membre et format d'enregistrement indiqués pour le paramètre Spécifications de fichier (FILE). Vous pouvez indiquer *FILE même si le premier fichier de la liste ne possède qu'un chemin d'accès en séquence d'arrivée, auquel cas le classement des enregistrements sélectionnés correspond à la séquence d'arrivée du premier fichier, membre et format d'enregistrement indiqués dans le paramètre FILE.

Si KEYFLD(*FILE) est indiqué et qu'une séquence de tri différente de *HEX a été affectée au paramètre SRTSEQ, il se peut que vous receviez vos enregistrements dans un ordre différent de l'ordre réel des fichiers. Pour un fichier avec clé, la séquence de tri s'applique aux zones clés du fichier. Si le fichier dispose d'une table de séquence de tri ou d'une table de séquence de classement personnalisée, le classement est ignoré. Les utilisateurs peuvent ainsi indiquer à quelles zones la séquence de tri doit être appliquée sans avoir à faire la liste de tous les noms de zones. Si aucune séquence de tri n'est précisée pour la requête, cette dernière est classée comme dans les éditions antérieures à V2R3M0.

Elément 1 : Nom zone clé

Indiquez un ou plusieurs noms de zones (50 maximum) permettant de définir un chemin d'accès avec clé pour classer les enregistrements. Chaque nom de zone peut être qualifié par un nom ou un numéro de fichier précisant dans quel élément de la liste des fichiers, membres et formats d'enregistrement indiquée pour le paramètre Spécifications de fichier (FILE) figure la zone. La valeur spéciale *MAPFLD permet aussi de qualifier le nom de zone si celle-ci est définie par le paramètre Spécifications zone mappée (MAPFLD).

La longueur totale de toutes les zones clés ne peut excéder 32 766 octets.

Remarque :Pour chaque zone clé de longueur variable utilisée, il faut enlever deux octets aux limites indiquées ci-dessus. Ainsi, pour trois zones clés de longueur variable, la longueur maximale ne peut dépasser 32 760 octets (32 766 - (3 x 2)).

Qualificatif 1 : Nom zone clé

nom
Indiquez le nom de la zone à utiliser comme zone clé.

Qualificatif 2 : Fichier ou élément

*MAPFLD
La zone est définie dans le paramètre MAPFLD.
1 à 32
Indiquez la position de la valeur de la liste des éléments pour le paramètre FILE à utiliser. Cette valeur définit le fichier de base de données, le membre et le format d'enregistrement à utiliser.
nom
Indiquez le nom d'un fichier de base de données défini pour le paramètre FILE.

Elément 2 : Ordre zone clé

*ASCEND
La partie de la clé définie par la zone clé indiquée est classée selon l'ordre croissant des valeurs de clé.
*DESCEND
La partie de la clé définie par la zone clé indiquée est classée par ordre décroissant des valeurs de clé.

Elément 3 : Ordre en valeur absolue

*ABSVAL
La partie de la clé définie par la zone clé indiquée est classée selon la valeur absolue de la zone clé. La valeur *ABSVAL est indiquée avec *ASCEND ou *DESCEND, mais n'est pas prise en compte si la zone n'est pas numérique. En l'absence de la valeur *ABSVAL, les enregistrements sont classés selon la valeur signée d'une zone clé numérique.

Zones pour une seule clé (UNIQUEKEY)

Indique si la requête est limitée aux enregistrements ayant des valeurs de clé uniques et précise combien de zones clés doivent être uniques. Si *ALL ou un nombre a été indiqué pour ce paramètre, les valeurs indéfinies seront considérées comme équivalentes.

*NONE
Les zones clés indiquées pour le paramètre Spécifications de zone clé (KEYFLD) n'ont pas besoin d'être uniques. La totalité des enregistrements est accessible via la commande OPNQRYF, sans tenir compte de la valeur de la clé.
*ALL
Toutes les zones clés indiquées dans le paramètre KEYFLD doivent être uniques. S'il existe plusieurs enregistrements ayant les mêmes valeurs pour toutes les zones clés, seul le premier est accessible par la commande OPNQRYF.
1 à 120
Indiquez le nombre de zones clés, de 1 à 120, qui doivent être uniques. Cette valeur ne doit pas excéder le nombre de zones clés déterminées par le paramètre KEYFLD. S'il existe plusieurs enregistrements ayant la même valeur pour le nombre de zones clés concaténées, seul le premier est accessible par la commande OPNQRYF.

Spécification zone de jointure (JFLD)

Indique si la requête consiste à joindre des enregistrements appartenant à des membres de fichiers multiples et précise comment joindre des valeurs de zones appartenant à des fichiers, des membres et des formats d'enregistrement pour le paramètre Spécifications de fichier (FILE) lors de la constitution des enregistrements.

Le premier fichier, membre ou format d'enregistrement indiqué pour le paramètre FILE est appelé fichier primaire, et toutes les autres valeurs de la liste des éléments indiquées pour ce paramètre sont appelées fichiers secondaires. Ce paramètre indique une liste comportant des paires de noms de zones, la première zone de chaque paire fournissant une valeur qui permet de sélectionner les enregistrements d'un fichier secondaire ayant la même valeur dans le second nom de zone de la paire.

Les zones de départ et d'arrivée peuvent être des zones mappées (paramètre Spécifications zone mappée (MAPFLD)), mais vous ne devez pas utiliser une zone dépendant directement dans sa définition d'une fonction globale, ou indirectement en se référant à une zone mappée.

Les attributs des zones de départ et d'arrivée ne doivent pas obligatoirement être identiques. Pour plus d'informations sur la compatibilité des types de données, voir Rubrique Base de données de l'IBM i Information Center, à l'adresse http://www.ibm.com/systems/i/infocenter/.

Si plusieurs fichiers sont définis pour le paramètre FILE, que *NO est indiqué pour le paramètre Jointure avec valeurs/défaut (JDFTVAL) et *ANY pour le paramètre Ordre de jointure des fichiers (JORDER), le système extrait les informations des paramètres Spécification zone de jointure (JFLD) et Expression de sélection (QRYSLT) et en déduit les spécifications finales des jointures. Si vous définissez dans le paramètre FILE un fichier qui n'est pas référencé dans le paramètre QRYSLT ou JFLD, tous les enregistrements de ce fichier sont joints logiquement à ceux créés à partir des autres fichiers indiqués dans le paramètre FILE.

Si vous avez indiqué *YES ou *ONLYDFT dans le paramètre JDFTVAL, ou si vous avez indiqué *FILE dans le paramètre JORDER, les jointures de zones doivent être définies dans le paramètre JFLD.

Vous pouvez indiquer jusqu'à 50 paires de zones jointes.

Valeurs uniques

*NONE
Aucune opération de jointure n'est indiquée. Si plusieurs fichiers sont indiqués dans le paramètre FILE, que *NO est défini dans le paramètre JDFTVAL et ANY dans le paramètre JORDER, le système trouve automatiquement les jointures de zones dans le paramètre QRYSLT.

Elément 1 : Zone de départ

Indiquez un nom de zone fournissant la valeur utilisée pour sélectionner les enregistrements dans un fichier, membre et format d'enregistrement de fichier secondaire. Le nom de zone peut être qualifié par un nom ou un numéro de fichier précisant dans quel élément de la liste des fichiers, membres et formats d'enregistrement du paramètre FILE figure la zone. La valeur spéciale *MAPFLD permet également de qualifier le nom de la zone si celle-ci est définie dans le paramètre MAPFLD.

Une zone de départ est une zone simple ou mappée, définie dans le paramètre MAPFLD. Si, toutefois, vous avez indiqué *YES ou *ONLYDFT dans le paramètre JDFTVAL, elle dépend uniquement des zones figurant dans le fichier primaire ou les fichiers secondaires indiqués dans le paramètre FILE devant le fichier secondaire associé à la zone d'arrivée de la paire.

Qualificatif 1 : Zone de départ

nom
Indiquez le nom de la zone de départ.

Qualificatif 2 : Fichier ou élément

*MAPFLD
La zone est définie dans le paramètre MAPFLD.
1 à 32
Indiquez la position de la valeur de la liste des éléments pour le paramètre FILE à utiliser. Cette valeur définit le fichier de base de données, le membre et le format d'enregistrement à utiliser.
nom
Indiquez le nom d'un fichier de base de données défini pour le paramètre FILE.

Elément 2 : Zone d'arrivée

Indiquez un nom de zone permettant de sélectionner des enregistrements figurant dans un fichier, un membre et un format d'enregistrement lors de la création d'enregistrements de requête. Le nom de zone est qualifié par un nom ou un numéro de fichier précisant dans quel élément de la liste des fichiers, membres et formats d'enregistrement du paramètre FILE figure la zone. La valeur spéciale *MAPFLD permet également de qualifier le nom de la zone si celle-ci est définie dans le paramètre MAPFLD.

Une zone d'arrivée est une zone simple ou mappée, définie dans le paramètre MAPFLD. Si vous avez indiqué *YES ou *ONLYDFT dans le paramètre JDFTVAL, elle dépend uniquement des zones figurant toutes dans un seul fichier secondaire. Si le fichier secondaire est un fichier logique joint, seules les zones figurant dans le membre primaire du fichier physique pour le fichier logique joint sont utilisées comme éléments constitutifs de la zone d'arrivée. La longueur totale des zones d'arrivée pour chaque fichier secondaire (après modification, si les attributs des zones de départ et d'arrivée ne sont pas identiques) ne peut pas excéder 2000 octets, sauf si *NO est indiqué pour le paramètre JDFVAL.

Qualificatif 1 : Zone d'arrivée

nom
Indiquez le nom de la zone d'arrivée.

Qualificatif 2 : Fichier ou élément

*MAPFLD
La zone est définie dans le paramètre MAPFLD.
1 à 32
Indiquez la position de la valeur de la liste des éléments pour le paramètre FILE à utiliser. Cette valeur définit le fichier de base de données, le membre et le format d'enregistrement à utiliser.
nom
Indiquez le nom d'un fichier de base de données défini pour le paramètre FILE.

Elément 3 : Opérateur de jointure

Indiquez le type de jointure à réaliser pour les zones départ et arrivée précisées. Si vous avez indiqué *NO pour le paramètre JDFTVAL et*ANY pour le paramètre JORDER, ou bien si plusieurs paires de zones jointes sont indiquées, vous pouvez indiquer un opérateur de jointure différent pour chaque paire. Si vous avez indiqué *YES ou *ONLYDFT pour le paramètre JDFTVAL, ou *FILE pour le paramètre JORDER, vous ne pouvez indiquer qu'un seul opérateur de jointure pour les paires jointes.

*EQ
Egal
*GT
Supérieur
*LT
Inférieur
*NE
Différent
*GE
Supérieur ou égal
*LE
Inférieur ou égal

Jointure avec valeurs/défaut (JDFTVAL)

Indique si le fichier de requête doit contenir des enregistrements joints utilisant les valeurs par défaut pour toutes les zones d'un fichier secondaire ne contenant pas d'enregistrement dont les valeurs de zone correspondent aux critères de jointure indiqués pour le paramètre Spécification zone de jointure (JFLD).

Le traitement de jointure vise à réunir des valeurs de zones provenant des fichiers primaires et secondaires. Pour ce faire, il associe les valeurs de zone de départ aux enregistrements figurant dans un fichier secondaire pour constituer les valeurs appropriées dans la zone d'arrivée. S'il n'existe aucun enregistrement dans un fichier secondaire permettant de produire les valeurs d'arrivée requises pour les paires de jointure associées au fichier secondaire, ce paramètre indique s'il est nécessaire de créer des enregistrements de requête utilisant les valeurs par défaut pour toutes les zones provenant du fichier secondaire.

Si le paramètre Spécifications de fichier (FILE) comporte des fichiers logiques joints, tous les fichiers joints doivent être compatibles avec cette valeur de paramètre. Si les DDS utilisées pour créer un fichier logique joint de requête ne contiennent pas le mot clé JDFTVAL, ce paramètre ne pourra être utilisé pour les fichiers logiques joints indiqués pour le paramètre FILE et JDFTVAL(*NO) est obligatoire. Si un fichier logique joint comportant le mot clé JDFTVAL figure dans le paramètre FILE, les fichiers logiques joints pour ce fichier de requête devront être créés avec le mot clé JDFTVAL et vous devrez indiquer la valeur *YES. Si l'un des fichiers du paramètre FILE est un fichier logique de vue, la valeur *NO doit être indiquée dans ce paramètre.

Si l'attribut JDFTVAL n'est pas compatible avec les attributs des fichiers logiques joints traités, vous pouvez remplacer les fichiers logiques joints ou de vue indiqués pour le paramètre FILE par leurs fichiers physiques sous-jacents. Vous pouvez ajouter les paires adéquates de zones de départ et d'arrivée au paramètre JFLD afin de joindre les enregistrements des membres de fichier physique selon vos besoins.

Si vous avez indiqué plusieurs fichiers pour le paramètre FILE, et également la valeur *YES ou *ONLYDFT, le système considère les zones jointes indiquées dans le paramètre JFLD comme les spécifications finales de jointures.

*NO
Aucune valeur par défaut n'est utilisée pour créer des enregistrements de requête joints.
*YES
Crée la totalité des enregistrements pour la jointure, y compris ceux créés avec ou sans valeurs par défaut. Vous ne pouvez pas indiquer de fichier logique de vue dans le paramètre FILE.
*ONLYDFT
Ne crée que les enregistrements produits à l'aide de valeurs par défaut lors de l'opération de jointure. Cette option permet de n'inclure dans le fichier de requête que les enregistrements sans concordance dans les fichiers secondaires. Si vous indiquez la valeur *ONLYDFT, vous ne pouvez pas spécifier de fichiers logiques joints ou de vue dans le paramètre FILE.

Ordre de jointure des fichiers (JORDER)

Indique, dans le cas d'une requête de jointure, si l'ordre de jointure doit correspondre à l'ordre indiqué pour le paramètre Spécifications de fichier (FILE). En cas de non-concordance, les enregistrements sont générés dans un ordre différent. Ce paramètre n'est pas pris en compte si vous avez indiqué la valeur *YES ou *ONLYDFT pour le paramètre Jointure avec valeurs/défaut (paramètre JDFTVAL). L'ordre indiqué pour le paramètre FILE est toujours respecté car le fait de modifier l'ordre de jointure peut redéfinir quels enregistrements sont renvoyés lorsque le traitement de la valeur de jointure par défaut est requis.

Si vous avez indiqué plusieurs fichiers dans le paramètre FILE avec la valeur *FILE, le système considère les zones jointes indiquées pour le paramètre Spécification zone de jointure (JFLD) comme les spécifications finales de jointures.

*ANY
Tout ordre de jointure est possible pour le système lors de la création d'enregistrements de requête. Il est possible qu'une requête renvoie dans un ordre différent les enregistrements obtenus si la même requête est lancée deux fois de suite (en fonction de facteurs tels que le nombre d'enregistrements figurant dans les fichiers concernés). La valeur *ANY permet au système d'améliorer plus facilement les performances du traitement des enregistrements par la commande OPNQRYF, et ce plus que toute autre valeur du paramètre Ordre de jointure des fichiers (JORDER).
*FILE
L'ordre des éléments de fichiers, de membres et de formats d'enregistrement indiqué dans le paramètre FILE est respecté par le système lors de la jointure.

Noms zones de groupage (GRPFLD)

Indique les noms de zones utilisés pour grouper les résultats de requête. Un enregistrement de requête est créé pour chaque groupe d'enregistrements (après jointure, si nécessaire) choisi pour le paramètre Expression de sélection (QRYSLT). Le groupe est défini par la collecte des enregistrements présentant la même série de valeurs pour les zones indiquées dans le format d'enregistrement identifié par le paramètre Spécifications de format (FORMAT). Toutes les valeurs indéfinies présentes dans un groupe sont considérées comme équivalentes. Si aucun nom de zone n'est indiqué et si le traitement par groupe est nécessaire, le fichier est considéré comme formant un seul et même groupe. Chaque enregistrement de requête créé devient accessible par la commande OPNQRYF ou n'est pas pris en compte, selon les valeurs de sélection indiquées pour le paramètre Expression sélection groupage (GRPSLT). Pour définir un ordre, vous devez également entrer une valeur au paramètre Spécifications de zone clé (KEYFLD).

Valeurs uniques

*NONE
Les groupes ne sont pas formés en fonction des zones. Si la fonction de groupage est rendue nécessaire par les valeurs de sélection indiquées pour le paramètre GRPSLT ou bien si une fonction globale est utilisée pour une zone indiquée pour le paramètre Spécifications zone mappée (MAPFLD), la totalité des enregistrements sélectionnés par les valeurs indiquées pour le paramètre QRYSLT est considérée comme formant un seul et même groupe.

Autres valeurs

Indiquez un ou plusieurs noms de zones (50 maximum) permettant de grouper les résultats de requête. Chaque nom de zone peut être qualifié par un nom ou un numéro de fichier précisant dans quel élément de la liste des fichiers, membres et formats d'enregistrement du paramètre FILE figure la zone. La valeur spéciale *MAPFLD permet également de qualifier le nom de la zone si celle-ci est définie dans le paramètre MAPFLD.

Une zone de groupage définie dans le paramètre MAPFLD ne peut pas se référer, dans sa définition, à une fonction globale (soit directement, soit indirectement) en utilisant une autre zone indiquée pour le paramètre MAPFLD. La longueur totale des zones de groupage ne doit pas dépasser 2000 octets.

Qualificatif 1 : Noms zones de groupage

nom
Indiquez le nom d'une zone à utiliser pour grouper les résultats de requête.

Qualificatif 2 : Fichier ou élément

*MAPFLD
La zone est définie dans le paramètre MAPFLD.
1 à 32
Indiquez la position de la valeur de la liste des éléments pour le paramètre FILE à utiliser. Cette valeur définit le fichier de base de données, le membre et le format d'enregistrement à utiliser.
nom
Indiquez le nom d'un fichier de base de données défini pour le paramètre FILE.

Expression sélection groupage (GRPSLT)

Indique les valeurs de sélection permettant de déterminer après groupage les enregistrements accessibles par la commande OPNQRYF.

*ALL
La totalité des enregistrements définis par la fonction de groupage décrite par le paramètre Noms zones de groupage (GRPFLD) est sélectionnée.
'sélection-après groupage'
Indiquez (entre apostrophes) une expression définissant les valeurs utilisées pour déterminer les enregistrements à sélectionner. Vous pouvez entrer n'importe quelle expression logique formée à partir de relations (telles que *EQ et *NE) entre valeurs de zones et de constantes, ou bien de fonctions de valeurs de zones et de constantes. Toute relation ne se réfère qu'à des zones de groupage (indiquées pour le paramètre GRPFLD), à des littéraux, à des fonctions globales (telles que %AVG et %STDDEV) et à des zones mappées (indiquées pour les paramètres Spécifications zone mappée (paramètre MAPFLD)) composées de zones de groupage, de fonctions globales et de littéraux. Une zone au moins doit être indiquée par relation.

Chaque nom de zone peut être qualifié par un nom ou un numéro de fichier précisant dans quel élément de la liste des fichiers, membres et formats d'enregistrement indiquée pour le paramètre Spécifications de fichier (FILE) figure la zone. La valeur spéciale *MAPFLD permet également de qualifier le nom de la zone si celle-ci est définie dans le paramètre MAPFLD.

Pour plus d'informations sur la compatibilité des types de données, voir Rubrique Base de données de l'IBM i Information Center, à l'adresse http://www.ibm.com/systems/i/infocenter/.

Spécifications zone mappée (MAPFLD)

Indique la définition de zones de requête qui sont mappées ou dérivées d'autres zones. La valeur MAPFLD n'est généralement pas nécessaire si les noms de zones indiqués pour d'autres paramètres sont des noms de zone simples n'apparaissant que dans un seul des éléments de fichiers, de membres et de formats d'enregistrement indiqués pour le paramètre Spécifications de fichier (paramètre FILE).

Vous pouvez indiquer jusqu'à 50 définitions de zones mappées.

Valeurs uniques

*NONE
Aucune zone mappée n'est nécessaire. La totalité des noms de zones indiqués pour d'autres paramètres existe dans un format d'enregistrement précisé pour le paramètre FILE.

Elément 1 : Nom de zone mappée

nom
Indiquez le nom de zone simple utilisé pour tout autre paramètre devant se référer à cette zone mappée. Un nom qualifié n'est pas admis pour la première partie de l'élément liste des paramètres. Chaque nom-zone-mappée indiqué doit être unique.

Elément 2 : Expression de définition zone

valeur-alphanumérique
Entrez (entre apostrophes) une expression pouvant compter jusqu'à 256 caractères permettant de définir la zone mappée du point de vue d'autres zones existant dans un des éléments de fichier, de membre ou de format d'enregistrement indiqués pour le paramètre FILE, ou de celles définies par une autre définition de zone mappée apparaissant avant dans la liste. Les opérations numériques ou de chaînes de caractères sont admises selon le type de données des zones utilisées dans la définition.

Chaque nom de zone peut être qualifié par un nom ou un numéro de fichier précisant dans quel élément de la liste des fichiers, membres et formats d'enregistrement du paramètre FILE figure la zone. La valeur spéciale *MAPFLD permet aussi de qualifier le nom de zone si celle-ci est définie pour le paramètre Spécifications zone mappée (MAPFLD).

Elément 3 : Type zone mappée

Indiquez le type de cette zone mappée, ou bien indiquez *CALC afin de permettre au système de déterminer des attributs appropriés (y compris le type de zone) pour la zone mappée. *CALC est la valeur par défaut si vous n'indiquez aucune valeur pour type-zone.

Lorsque vous indiquez la valeur *CALC, les attributs peuvent être définis de deux façons. Soit les attributs correspondent à la définition de zone figurant dans le format d'enregistrement indiqué pour le paramètre Spécifications de format (FORMAT), soit (si la zone ne figure pas dans ce format d'enregistrement) les attributs sont déterminés en fonction de l'expression indiquée pour cette zone par la valeur définition-zone-mappée. Si la zone mappée est utilisée dans le format d'enregistrement identifié dans le paramètre FORMAT, vous devez indiquer la valeur *CALC ou des attributs (type-zone, longueur-zone et décimales-zone) identiques à ceux de la zone figurant dans le format d'enregistrement indiqué pour le paramètre FORMAT.

Le type de zone doit être compatible avec le résultat final de l'expression indiquée pour la définition de zone mappée.

Les mappages non pris en charge pour les types de chaîne binaire et numérique sont les suivants :

  • Considérations DBCS : non applicables.
  • Considérations DBCS : non applicables.
  • Considérations DBCS : non applicables.
  • Considérations DBCS : non applicables.
  • Considérations DBCS : non applicables.
  • De chaîne binaire à toute chaîne non binaire
  • De numérique à chaîne binaire

Remarque :Le type de chaîne binaire fait référence aux types de données BLOB et BINCHAR.

Pour plus d'informations sur les mappages, voir Rubrique Base de données de l'IBM i Information Center, à l'adresse http://www.ibm.com/systems/i/infocenter/.

*CALC
Les attributs de type de zone appropriés sont calculés.
*BIN2
Zone binaire à deux octets.
*BIN4
Zone binaire à quatre octets.
*FLT4
Zone en virgule flottante à quatre octets.
*FLT8
Zone en virgule flottante à huit octets.
*DEC
Zone décimale condensée.
*ZONED
Zone décimale non condensée.
*CHAR
Zone de caractères.
*VCHAR
Zone de caractères à longueur variable.
*HEX
Zone hexadécimale.
*VHEX
Zone hexadécimale à longueur variable.
*DATE
Zone de date.
*TIME
Zone d'heure.
*TIMESTP
Zone d'horodatage.
*ONLY
Considérations DBCS : non applicables.
*VONLY
Considérations DBCS : non applicables.
*OPEN
Considérations DBCS : non applicables.
*VOPEN
Considérations DBCS : non applicables.
*EITHER
Considérations DBCS : non applicables.
*VEITHER
Considérations DBCS : non applicables.
*GRAPHIC
Considérations DBCS : non applicables.
*VGRAPHIC
Considérations DBCS : non applicables.

Elément 4 : Longueur

0-32766
Indiquez la longueur de zone, en nombre de chiffres pour une zone numérique et en nombre d'octets pour une zone alphanumérique. La tableau 1 fournit la liste des longueurs admises pour chaque type de zone. Vous ne devez pas indiquer de valeur si *CALC est utilisé pour l'élément 3 (Type zone mappée).
Figure : Tableau 1. Structure des zones de requête

+------------------+----------------+------------------+
! Type de zone     ! Longueur de    ! Longueur et      !
!                  ! zone externe   ! décimales par    !
!                  !                ! défaut           !
+------------------+----------------+------------------+
! *BIN2            ! 1-5            !  5   0           !
! *BIN4            ! 1-10           ! 10   0           !
! *FLT4            ! 1-9            !  7   6           !
! *FLT8            ! 1-17           ! 15  14           !
! *DEC             ! 1-63           ! 15   5           !
! *ZONED           ! 1-63           ! 15   5           !
! *CHAR            ! 1-32766        ! 32               !
! *VCHAR           ! 0-32740        ! 32               !
! *HEX             ! 1-32766        ! 32               !
! *VHEX            ! 0-32740        ! 32               !
! *DATE            ! 5-10           ! 8                !
! *TIME            ! 4-8            ! 7                !
! *TIMESTP         ! 14; 16-26      ! 26               !
! *ONLY            ! 4-32766        ! 32               !
! *VONLY           ! 0-32740        ! 32               !
! *OPEN            ! 4-32766        ! 32               !
! *VOPEN           ! 0-32740        ! 32               !
! *EITHER          ! 4-32766        ! 32               !
! *VEITHER         ! 0-32740        ! 32               !
! *GRAPHIC         ! 1-16383        ! 32               !
! *VGRAPHIC        ! 0-16370        ! 32               !
+------------------+----------------+------------------+

Elément 5 : Nombre de positions décimales

0-63
Indiquez le nombre de positions décimales d'une zone numérique, exprimé en nombre de chiffres après la virgule. Celui-ci ne doit pas être supérieur au nombre de chiffres indiqués pour la longueur-zone. Si vous n'indiquez aucune valeur, zéro est pris par défaut. N'indiquez aucune valeur pour une zone binaire ou alphanumérique, ou lorsque vous avez indiqué *CALC pour l'élément 3 (Type zone mappée).

Elément 6 : CCSID zone mappée

*CALC
La valeur de CCSID (ID codé de jeu de caractères) est déterminée par les CCSID des zones ou les littéraux constituant la définition de la zone mappée (MAPFLD).
*HEX
Une valeur pré-définie sera utilisée pour éviter toute conversion des données de la zone.
1-65535
Indiquez le CCSID à utiliser. Pour afficher la liste complète des identificateurs à l'invite de la commande, placez le curseur sur la zone de ce paramètre et appuyez sur F4 (Invite).

Les littéraux de la définition MAPFLD sont marqués avec le CCSID par défaut du travail. Cependant, si MAPFLD n'est constitué que d'un seul littéral, et que l'utilisateur indique une valeur de CCSID, ce littéral sera marqué avec ce CCSID. Vous pouvez ainsi marquer un littéral avec un CCSID différent de celui du travail.

Remarque :En général, aucun CCSID n'est associé aux zones de type *HEX ou *VHEX. Pour cette raison, la valeur de CCSID par défaut du système sur lequel sont utilisées les données de ces zones ne sera pas prise en compte et ces données seront traitées de manière identique. Mais si vous indiquez une valeur de CCSID pour l'une de ces zones, ce CCSID se substitue à l'attribut hexadécimal de la zone (celle-ci sera donc considérée comme *CHAR/*VCHAR). Ainsi, les données de cette zone pourront être traitées différemment sur un système doté d'un autre CCSID par défaut.

Ignorer erreurs données décim (IGNDECERR)

Indique si le système ignore les erreurs de données décimales lors du traitement de la requête.

*NO
Le système n'ignore pas les erreurs de données décimales.
*YES
Le système ignore les erreurs de données décimales. Lorsqu'il en rencontre, il convertit automatiquement les signes ou chiffres incorrects en valeurs correctes.

ID ouverture fichier (OPNID)

Indique l'identificateur utilisé pour désigner le fichier requête dans les commandes CLOF (Fermer un fichier) ou POSDBF (Positionner un fichier base de données) lors de sa fermeture. L'identificateur doit être différent de tous les identificateurs associés aux fichiers déjà ouverts à l'aide des commandes OPNDBF (Ouvrir un fichier base de données) ou OPNQRYF et non encore fermés.

*FILE
Le nom du premier ou seul fichier indiqué pour le paramètre Spécifications de fichier (FILE) est utilisé pour l'identificateur d'ouverture.
nom
Indiquez le nom que vous désirez associer au fichier de requête ouvert.

Limite à séquentiel uniquement (SEQONLY)

Indique si un traitement exclusivement séquentiel est utilisé pour le fichier et précise le nombre d'enregistrements regroupés lors de l'exécution d'opérations de lecture et d'écriture sur le fichier de requête. L'ODP d'ouverture du fichier de requête utilise une valeur SEQONLY différente de celle indiquée pour ce paramètre et dépendant des autres valeurs de paramètre indiquées pour cette commande. Le système envoie un message si la valeur SEQONLY est modifiée.

Valeurs uniques

*NO
Le fichier n'utilise pas de traitement exclusivement séquentiel.

Elément 1 : Séquentiel uniquement

*YES
Le fichier de requête ouvert utilise un traitement exclusivement séquentiel.

Elément 2 : Nombre d'enregistrements

1-32767
Indiquez le nombre d'enregistrements regroupés lors de l'exécution d'opérations de lecture ou d'écriture sur le fichier de requête ouvert. Si vous n'indiquez pas de valeur, le système calcule lui-même le nombre d'enregistrements compris dans un groupe.

Contrôle de validation actif (COMMIT)

Indique si ce fichier est placé sous contrôle de validation.

Avant d'ouvrir un fichier base de données sous contrôle de validation, l'utilisateur doit s'assurer que tous les fichiers de la transaction de validation sont journalisés. Si seules les images après sont journalisées, le système procède à la journalisation des images avant et après pendant l'intervalle de temps au cours duquel les modifications sont apportées aux fichiers ouverts avec cette définition de validation.

*NO
Le fichier de requête ouvert n'est pas placé sous contrôle de validation.
*YES
Le fichier de requête ouvert est placé sous contrôle de validation.

Portée d'ouverture (OPNSCOPE)

Indique le champ d'application (la portée) de l'opération d'ouverture.

Remarque :Ce paramètre est incompatible avec le paramètre TYPE.

*ACTGRPDFN
Le champ d'application de l'opération d'ouverture est déterminé par le groupe d'activation du programme qui a appelé le programme de traitement de la commande OPNQRYF. S'il s'agit du groupe d'activation par défaut, la portée correspond au niveau d'appel du programme appelant. S'il ne s'agit pas du groupe d'activation par défaut, la portée correspond au groupe d'activation du programme appelant. Dans un travail à unités d'exécution multiples, seules les opérations d'ouverture au sein de la même unité d'exécution et du même groupe d'activation peuvent partager cet ODP.
*ACTGRP
Le champ d'application du chemin d'ouverture (ODP) correspond au groupe d'activation. Seules les opérations d'ouverture partagées à partir du même groupe d'activation peuvent partager cet ODP. Ce dernier n'est pas récupéré jusqu'à ce que le groupe d'activation soit désactivé ou fermé par la commande CLOF (Fermer un fichier).
*JOB
Le champ d'application de l'opération d'ouverture correspond au travail dans lequel cette dernière est exécutée. Dans un travail à unités d'exécution multiples, seules les opérations d'ouverture au sein de la même unité d'exécution peuvent partager cet ODP.

Vérifier clés en double (DUPKEYCHK)

Indique si la vérification de clé en double doit être effectuée par des opérations de lecture et d'écriture sur le fichier ouvert par cette commande.

*NO
La vérification des clés en double n'est pas prévue sur les opérations de lecture/écriture.
*YES
La vérification des clés en double est prévue sur les opérations de lecture/écriture.

Copie des données admise (ALWCPYDTA)

Indique si le système peut copier des données figurant dans des fichiers, membres et formats d'enregistrement indiqués pour le paramètre Spécifications de fichier (FILE). Dans l'affirmative, le système peut ouvrir le fichier de requête sur la copie. La copie de données est rarement utilisée par le système car elle ne reflète pas les modifications opérées sur la base de données, une fois les informations copiées. Toutefois, certaines requêtes nécessitent la copie des données afin de permettre l'exécution des fonctions de requête (par exemple, lorsque vous indiquez des zones clés figurant dans plusieurs fichiers sous-jacents en vue d'une jointure).

*YES
Le système peut utiliser une copie des données figurant dans des fichiers, membres et formats d'enregistrement indiqués pour le paramètre Spécifications de fichier (FILE). L'utilisation d'une copie des données n'est nécessaire que pour exécuter les fonctions de requête demandées.
*OPTIMIZE
Le système utilise une routine de tri pour ordonner les données en sortie des fichiers, des membres de fichier et des formats d'enregistrement indiqués au paramètre FILE. Une routine de tri est utilisée uniquement si le paramètre KEYFLD est indiqué et si l'utilisation de cette routine permet d'améliorer les performances de la requête sans être en conflit avec les autres options OPNQRYF.

Une opération de tri améliorera les performances d'une requête renvoyant la plupart ou l'ensemble des enregistrements du ou des fichier(s) indiqué(s) au paramètre FILE.

L'utilisation d'une opération de tri peut allonger la durée d'exécution de la commande OPNQRYF. En effet, le tri est effectué et tous les enregistrements à renvoyer via la requête sont traités alors que la commande OPNQRYF est en cours. Toutefois, les enregistrements étant déjà traités, leur lecture (à l'aide d'un programme ou de la commande CPYFRMQRYF) est très rapide. C'est pourquoi au total, la durée de traitement de la requête est réduite.

L'indication du paramètre KEYFLD pour la commande OPNQRYF ne garantit pas l'utilisation d'un index par la requête si la valeur ALWCPYDTA(*OPTIMIZE) est mentionnée. Si une routine de tri est utilisée, le fichier est ouvert sans accès indexé. Si le programme lisant les enregistrements traités par la commande OPNQRYF exige l'accès indexé (traitement sélectif plutôt que séquentiel), la valeur ALWCPYDTA(*YES) ou ALWCPYDTA(*NO) doit être indiquée.

Lorsqu'une opération de tri est utilisée, la position dans le fichier de requête n'est pas modifiée lorsqu'une instruction ROLLBACK est émise. Lorsqu'une requête comportant des paramètres est ouverte, les instructions ROLLBACK qui suivent ne restaurent pas la position dans le fichier interrogé à la position de départ de l'unité de reprise.

Remarque :N'indiquez pas la valeur ALWCPYDTA(*OPTIMIZE) si vous demandez le repositionnement dans le fichier de requête par une instruction ROLLBACK, ou encore son ouverture avec accès indexé.

Pour qu'une opération de tri soit admise dans la commande OPNQRYF, les éléments suivants sont nécessaires :

  • La valeur ALWCPYDTA(*OPTIMIZE) doit être indiquée.
  • Le paramètre OPTION, s'il est indiqué, doit avoir la valeur *INP.
  • Une valeur différente de *FILE ou *NONE doit être mentionnée au paramètre KEYFLD.
  • Le paramètre UNIQUEKEY, s'il est indiqué, doit avoir la valeur *NONE.
  • Le paramètre SEQONLY, s'il est indiqué, doit avoir la valeur *YES.
  • Le paramètre DUPKEYCHK, s'il est indiqué, doit avoir la valeur *NO.
  • La longueur totale en mémoire tampon de l'ensemble des zones du fichier indiqué au paramètre FORMAT (ou au paramètre FILE, en l'absence du paramètre FORMAT) ne doit pas dépasser 32700 octets.

L'optimiseur de requête détermine l'utilisation d'une opération de tri. Cette décision se fonde sur le nombre d'enregistrements que la requête est censée renvoyer ainsi que sur les options indiquées pour l'instruction OPNQRYF. Le choix d'une opération de tri par l'optimiseur est influencé par les éléments suivants :

  • Le paramètre OPTIMIZE doit être indiqué avec la valeur *ALLIO ou *MINWAIT. Si la valeur *FIRSTIO est indiquée, le nombre d'enregistrements précisé doit être égal au nombre d'enregistrements que la requête est censée renvoyer, ou du moins proche de ce nombre.
  • Le nombre d'enregistrements d'un fichier indiqué pour le paramètre FILE doit être au minimum égal à 200.
  • Le résultat de la requête doit contenir un minimum de 200 enregistrements.
*NO
Le système n'utilise pas une copie des données figurant dans des fichiers, membres et formats d'enregistrement indiqués pour le paramètre Spécifications de fichier (FILE). Si l'utilisation d'une copie des données est nécessaire à l'exécution des fonctions de requête demandées, le fichier de requête n'est pas ouvert et le système envoie un message d'erreur.

Optimisation performance (OPTIMIZE)

Indique quelle cible d'optimisation est utilisée par le système pour déterminer la manière d'effectuer la sélection et la jointure nécessaires aux autres spécifications relatives à cette commande.

Si, lorsque aucun chemin d'accès existant ne peut être partagé, un nouveau chemin d'accès doit être créé pour les paramètres Spécifications de zone clé (KEYFLD) ou Noms zones de groupage (GRPFLD), celui-ci est entièrement constitué sans tenir compte de la valeur indiquée pour ce paramètre. L'optimisation concerne en premier lieu la durée de traitement de la sélection.

Valeurs uniques

*ALLIO
Le système tente de raccourcir la durée totale de traitement de la requête, sachant que la totalité des enregistrements de requête sont lus dans le fichier.
*MINWAIT
Le système tente de réduire les délais d'attente lorsqu'il lit les enregistrements du fichier.

Elément 1 : Optimisation des performances

*FIRSTIO
Le système tente de raccourcir la durée de la procédure d'ouverture du fichier de requête et d'extraction des enregistrements contenus dans la première zone tampon.

Elément 2 : Nombre d'enregistrements

1-2147483647
Indiquez le nombre d'enregistrements censés être extraits. L'optimiseur de requête utilise ces informations pour déterminer la mise en oeuvre adéquate pour la requête.

Optimiser tous chemins d'accès (OPTALLAP)

Indique si l'optimiseur de requête doit évaluer tous les chemins d'accès aux fichiers interrogés, afin de déterminer la méthode d'exécution de la requête.

*NO
L'optimiseur de requête fonctionne normalement. Pour déterminer la méthode de démarrage de la requête, l'optimiseur évalue tous les chemins d'accès tant que le délai interne n'est pas dépassé. Si les chemins d'accès aux fichiers interrogés sont nombreux, l'optimiseur peut interrompre sa recherche alors que tous les chemins n'ont pas été évalués.
*YES
L'optimiseur ne tient pas compte du délai interne et évalue tous les chemins d'accès aux fichiers interrogés. Si les chemins d'accès sont nombreux, l'optimisation de la requête peut être longue.

Séquence de tri (SRTSEQ)

Précise la séquence de tri à utiliser pour les sélections de tri et de groupage indiquées pour les paramètres QRYSLT ou GRPSLT, les jointures pour le paramètre JFLD, le classement pour le paramètre KEYFLD, le groupage pour le paramètre GRPFLD, les fonctions intégrées %MIN et %MAX ou encore les valeurs de clé unique précisées pour le paramètre UNIQUEKEY.

Valeurs uniques

*JOB
La valeur SRTSEQ du travail est extraite.
*HEX
Aucune table de séquence de tri n'est utilisée. Les valeurs hexadécimales des caractères servent à définir la séquence de tri.
*LANGIDSHR
Une table de tri à poids partagés est utilisée.
*LANGIDUNQ
Une table de tri à poids uniques est utilisée.

Qualificatif 1 : Séquence de tri

nom
Indiquez le nom de la table de séquence de tri à utiliser avec cette requête.

Qualificatif 2 : Biblio

*LIBL
La recherche porte sur toutes les bibliothèques figurant dans la partie utilisateur et la partie système de la liste des bibliothèques du travail.
*CURLIB
Le système effectue la recherche dans la bibliothèque en cours du travail. Si celle-ci n'est pas précisée, QGPL est prise par défaut.
nom
Indiquez le nom de la bibliothèque sur laquelle doit porter la recherche.

Identificateur de langue (LANGID)

Indique l'identificateur de langue à utiliser lorsque SRTSEQ(*LANGIDUNQ) ou SRTSEQ(*LANGIDSHR) est précisé.

*JOB
La valeur LANGID du travail est extraite.
ID-langue
Indiquez l'identificateur de langue qui sera utilisé par le travail.

CCSID sortie finale (CCSID)

Indique l'identificateur codé de jeu de caractères (CCSID) dans lequel seront renvoyées les données provenant de zones alphanumériques. Les données figurant dans les zones UTF-8, UCS-2 ou UTF-16 ne sont pas converties.

*JOB
Les données sont renvoyées dans le CCSID du travail ayant émis la commande OPNQRYF.
*HEX
Aucune conversion de CCSID n'est effectuée avant le renvoi des données.
1-65535
Indiquez une valeur de CCSID. Celui-ci sera utilisé pour la conversion des données avant leur renvoi.

Type d'ouverture (TYPE)

Indique à quel moment la commande RCLRSC (Récupérer les ressources) ferme le fichier.

Remarque :Ce paramètre est pris en compte uniquement si la valeur par défaut est indiquée au paramètre OPNSCOPE et si la demande est générée par le groupe d'activation par défaut.

*NORMAL
La commande RCLRSC (Récupérer les ressources) ferme le fichier si l'appel du programme qui a lancé la commande se termine sans fermeture du fichier.
*PERM
Le fichier reste ouvert tant que la commande CLOF (Fermer un fichier) n'est pas utilisée ou jusqu'à la fin de la phase d'activation ou du groupe d'activation par défaut. Le fichier de requête reste ouvert même si la commande RCLRSC (Récupérer les ressources) est lancée.

Exemples

Exemple 1: Sélection d'enregistrements spécifiques

Remarque: Pour obtenir des exemples supplémentaires de sélection d'enregistrements au moyen de la commande OPNQRYF, reportez-vous à la rubrique Database Programming de l'Information Center.

OPNQRYF   FILE(ordfile)  OPTION(*ALL)
          QRYSLT('orddate=%range("840101" "841231") &
                  ordamt>100')
          KEYFLD((ordamt *descend))

Cette commande utilise le paramètre QRYSLT pour sélectionner les seuls enregistrements du premier membre de fichier ORDFILE dont la date de commande est 1984 et le montant de la commande est supérieur à 100. Comme le paramètre FORMAT est omis, le fichier de requête ouvert a le même format d'enregistrement que le fichier ORDFILE. Le fichier de requête ouvert permet toutes les opérations sur les fichiers (entrée, sortie, mise à jour et suppression). Le paramètre KEYFLD permet de forcer le classement des enregistrements par valeur décroissante du montant de commande.

Exemple 2: Utilisation de la fonction intégrée %XLATE

OPNQRYF   FILE(telefile)
          QRYSLT('%xlate(usrname qsystrntbl) *ct
                  "GEORGE"')

Cette commande utilise la fonction intégrée %XLATE pour convertir la zone USRNAME en majuscules et demander à l'opérateur *CT de ne sélectionner que les enregistrements contenant la valeur GEORGE dans la zone USRNAME. QSYSTRNTBL est une table de conversion système fournie par IBM pour convertir les caractères alphabétiques (a à z) minuscules en majuscules (A à Z). La conversion est réalisée de sorte que la valeur de recherche est reconnue, même si ses caractères comportent des majuscules et des minuscules. Les enregistrements disponibles via le fichier de requête ouvert ont le même format d'enregistrement que ceux du fichier TELEFILE.

Exemple 3: Utilisation de la fonction intégrée %XLATE

OPNQRYF   FILE(telefile)  QRYSLT('usrname *ct ''GEORGE''')
          MAPFLD((usrname
                  '%xlate(telefile/usrname qsystrntbl)'))

Dans l'exemple précédent, la valeur de la zone USRNAME, renvoyée au programme en langage évolué qui lit les enregistrements du fichier de requête ouvert, n'est pas convertie en majuscules.

Cet exemple montre une façon de rendre la version en majuscules de la zone USRNAME disponible pour le programme en langage évolué. Pour ce faire, une zone mappée est définie (paramètre MAPFLD) pour la valeur convertie de la zone USRNAME. La zone porte le même nom que celui du format d'enregistrement du fichier de requête ouvert utilisé. La version convertie de cette zone est utilisée pour la sélection (paramètre QRYSLT) et dans le format d'enregistrement du fichier de requête ouvert.

Exemple 4: Utilisation de la fonction intégrée %SST

OPNQRYF   FILE((histlib/ordfile hist1))
          OPTION(*inp *upd *dlt)
          FORMAT(ordinfo orddtls)  QRYSLT('month=7')
          MAPFLD((year '%sst(orddate 1 2)' *zoned 2)
                 (month '%sst(orddate 3 2)' *zoned 2)
                 (day '%sst(orddate 5 2)' *zoned 2))

Cette commande utilise la fonction intégrée %SST pour créer un sous-ensemble des parties année, mois et jours de la zone caractères ORDDATE du fichier ORDFILE. Si le fichier ORDINFO a un format d'enregistrement, ORDDTLS, contenant au moins les enregistrements de zone YEAR, MONTH et DAY, ces zones sont utilisées en entrée uniquement dans le format d'enregistrement du fichier de requête ouvert car elles sont définies en utilisant la fonction intégrée %SST et sont mappées pour mélanger les types caractère et numérique (format décimal condensé). Le fichier est ouvert pour les opérations d'entrée, de mise à jour et de suppression, mais aucun des enregistrements YEAR, MONTH et DAY de la zone n'est mis à jour en utilisant le chemin d'ouverture (ODP) du fichier de requête ouvert. Le fichier de requête ouvert utilise uniquement les enregistrements du membre HIST1 du fichier ORDFILE de la bibliothèque HISTLIB et les enregistrements extraits par le fichier ont le même format d'enregistrement que le format ORDDTLS du fichier ORDINFO. Seuls les enregistrements relatifs au mois de juillet sont traités par le fichier de requête ouvert (paramètre QRYSLT).

Exemple 5: Renvoi du premier enregistrement de chaque ensemble

OPNQRYF   FILE((routelf *first locusr))
          QRYSLT('%sst(toloc 1 4) *eq "ROCH"')
          KEYFLD(fromusr fromloc tousr toloc)  UNIQUEKEY(*all)

Cette commande utilise les paramètres KEYFLD et UNIQUEKEY pour renvoyer uniquement le premier enregistrement de chaque ensemble d'enregistrements au format d'enregistrement LOCUSR dans le premier membre du fichier ROUTELF dont les valeurs des champs FROMUSR, FROMLOC, TOUSR et TOLOC sont identiques. Le résultat de la requête est encore restreint en sélectionnant les seuls enregistrements dont les quatre premiers caractères de la zone TOLOC sont ROCH. Les enregistrements accessibles via le fichier de requête ouvert contiennent toutes les zones du format d'enregistrement LOCUSR du fichier ROUTELF. Si le fichier ROUTELF contient des informations sur les messages routés par une application, cet exemple identifie toutes les paires uniques d'émetteur et de destinataire dans lesquelles le nom de l'emplacement de réception commence par ROCH.

Exemple 6: Jointure d'un fichier avec lui-même

OPNQRYF   FILE(partpf partpf)  FORMAT(partjoin)
          JFLD((1/pnbr 2/pnbr *GE))
          MAPFLD((pnm1 '1/pname')
                 (pnm2 '2/pname')
                 (pnbr '1/pnbr'))

Cet exemple illustre la façon dont un fichier est joint à lui-même, et la façon dont le paramètre MAPFLD permet de rebaptiser des zones des fichiers sous-jacents. Une jointure est exécutée en utilisant la zone PNBR en tant que zone de départ et zone d'arrivée de jointure.

On suppose que le format de fichier PARTJOIN contient les zones PNBR, PNM1 et PNM2. Le nom de zone PNBR est correcte dans le format d'enregistrement en sortie de la requête, car cette zone est définie par le paramètre MAPFLD. Si le format d'enregistrement du fichier PARTJOIN contient une zone nommée PNAME, une erreur se produit car la zone existe dans les deux fichiers spécifiés au paramètre FILE, mais ce n'est pas une zone définie au paramètre MAPFLD. Les définitions de zones mappées sont les noms de zones, et les attributs des zones PNM1 et PNM2 correspondent donc aux attributs de la zone PNAME, et les attributs de la zone PNBR des enregistrements du fichier de requête ouvert correspondent à la zone PNBR du fichier PARTPF. De plus, quand un fichier est joint à lui-même, il est souvent impératif de préciser un nom ou un numéro de fichier pour toute zone définie dans le fichier primaire.

Exemple 7: Changement du nom de zones dans des fichiers sous-jacents

La même requête peut aussi être indiquée comme suit:

OPNQRYF   FILE(partpf partpf)  FORMAT(partjoin)
          QRYSLT('1/pnbr *GE 2/pnbr')
          MAPFLD((pnm1 '1/pname')
                 (pnm2 '2/pname')
                 (pnbr '1/pnbr'))

Comme plusieurs fichiers sont indiqués au paramètre FILE, et que la valeur par défaut est précisée pour les paramètres JDFTVAL et JORDER, le système utilise les spécifications de jointure découlant des valeurs indiquées au paramètre QRYSLT.

Exemple 8: Sélection d'enregistrements maître sans enregistrement détaillé

OPNQRYF   FILE(cusmas ordfil)  FORMAT(cusmas)
          JFLD((cusnbr ordfil/cusnbr))  JDFTVAL(*onlydft)
          MAPFLD((cusnbr 'cusmas/cusnbr'))

Cette commande utilise une requête de jointure pour sélectionner les seuls enregistrements maître auxquels aucun enregistrement détaillé n'est associé. Le fichier maître (CUSMAS) est joint (jointure par égalité) au fichier détaillé (ORDFIL) par la zone du numéro de client apparaissant dans les deux formats d'enregistrement. Le nom de la zone du numéro de client est identique dans les deux formats d'enregistrement (CUSNBR). CUSNBR étant le nom d'une zone définie dans le paramètre MAPFLD, chaque fois que le nom de zone simple CUSNBR est utilisé, la version de zone mappée de la zone USNBR du fichier CUSMAS est utilisée (y compris le format d'enregistrement du fichier de requête ouvert, qui correspond au format d'enregistrement du fichier maître client). Le paramètre JDFTVAL indique que seuls les enregistrements produits en utilisant les valeurs par défaut sont disponibles via le fichier de requête ouvert. Chaque enregistrement maître auquel des enregistrements détaillés sont associés (avec une valeur identique de la zone du numéro de client) est exclu, et tout enregistrement maître auquel aucun enregistrement détaillé n'est associé crée un enregistrement de résultat.

Exemple 9: Identification des enregistrements détaillés sans enregistrement maître associé

OPNQRYF   FILE(ordfil cusmas)  FORMAT(ordfil)
          JFLD((cusnbr cusmas/cusnbr))  JDFTVAL(*onlydft)
          MAPFLD((cusnbr 'ordfil/cusnbr'))

Cette modification de l'exemple précédent (qui utilise les mêmes fichiers) montre comment identifier tous les enregistrements détaillés qui ne sont pas associés à un enregistrement maître (dans ce cas, toutes les commandes comportant un numéro de client non enregistré) :

Exemple 10: Calcul des statistiques de base

OPNQRYF   FILE(scores)  FORMAT(clsstats)  GRPFLD(clsid)
          GRPSLT('clsavg<70 & clsmax-clsmin>30')
          MAPFLD((clscnt '%count')
                 (clsavg '%avg(usrscore)')
                 (clsmin '%min(usrscore)')
                 (clsmax '%max(usrscore)'))

Cette commande utilise la fonction de groupage pour calculer les statistiques de base sur chaque groupe d'enregistrements du fichier SCORES dont la zone CLSID contient une valeur identique. Si on suppose que le fichier CLSSTATS a un format d'enregistrement contenant la zone CLSID et toutes les zones indiquées au paramètre MAPFLD, chaque enregistrement disponible via le fichier de requête ouvert contient la valeur de la zone de groupage (CLSID) et le nombre d'enregistrements compris dans le groupe, ainsi que les valeurs moyenne, minimale et maximale de la zone USRSCORE dans le groupe. La sélection est réalisée après groupage, si bien que des enregistrements sont créés pour des groupes uniquement lorsque la valeur moyenne du paramètre USRSCORE du groupe est inférieure à 70 et que la différence entre les scores minimum est maximum est supérieure à 30.

Exemple 11: Sélection d'enregistrements comportant une valeur spécifique

OPNQRYF   FILE(ITMMAST)
          QRYSLT('itmcode=%range(32 50) & itmtype="P"')
          ALWCPYDTA(*NO)  OPTIMIZE(*FIRSTIO)
          SEQONLY(*YES 10)  TYPE(*PERM)

Cette commande sélectionne, dans le premier membre du fichier ITMMAST, uniquement les enregistrements dont la valeur de la zone ITMCODE est comprise entre 32 et 50 et dont la valeur de la zone ITMTYPE est égale à la lettre P. Le paramètre ALWCPYDTA indique que le fichier de requête ouvert ne doit jamais utiliser de copie des enregistrements du fichier ITMMAST. Les valeurs des paramètres OPTIMIZE et SEQONLY font que le système tente d'améliorer le traitement du fichier de requête ouvert, afin de réduire la durée d'extraction dans la première zone tampon des dix enregistrements. Cette combinaison de valeurs de paramètres constitue un choix adéquat si le fichier est utilisé avec un programme d'interrogation interactif en langage évolué qui partage le chemin d'ouverture (ODP) du fichier de requête et affiche dix enregistrements par écran. Le chemin d'ouverture (ODP) du fichier de requête est de type permanent (paramètre TYPE), ce qui signifie qu'il reste ouvert jusqu'à la fermeture du fichier à l'aide de la commande CLOF (Fermer un fichier) ou jusqu'à la fin de l'étape de routage.

Exemple 12: Marquage d'un littéral avec un CCSID spécifique

OPNQRYF   FILE(itmmast)  QRYSLT('itmtype=pfield')
          MAPFLD((pfield 'P' *CHAR 1 *N 930))

Cette commande sélectionne, depuis le premier membre du fichier ITMMAST, uniquement les enregistrements dont la valeur de la zone ITMTYPE est la lettre P du jeu de caractères 930. La zone mappée est créée et le littéral P peut donc être marqué avec un CCSID spécifique.

Si un littéral n'est pas marqué avec un CCSID spécifique, on lui affecte le CCSID du travail qui exécute la requête. Pour cette raison, si une commande OPNQRYF est indiquée dans un programme CL partagé par des systèmes utilisant différents CCSID (dans différents pays par exemple), une requête utilisant un littéral dans les spécifications de sélection peut renvoyer des résultats différents sur les différents systèmes, même si les données des fichiers sont identiques. Cela est dû au fait que la représentation interne du littéral peut différer lorsque le programme CL est exécuté dans un travail associé à un CCSID différent. Cette représentation peut alors ne pas correspondre aux mêmes enregistrements du fichier. Remarque : la représentation interne des données du fichier n'est pas modifiée en fonction du CCSID du travail en cours.

Le fait de marquer le littéral avec un CCSID spécifique évite ce problème. Un littéral marqué avec un CCSID spécifique conserve une représentation interne identique sur tous les systèmes. Le CCSID utilisé pour marquer le littéral doit être identique au CCSID affecté à la zone à laquelle le littéral est comparé.

Exemple 13: Utilisation d'une requête sans jointure

OPNQRYF   FILE((EMPLOYEE))  KEYFLD((NAME))
          ALWCPYDTA(*OPTIMIZE)

Cette commande renvoie tous les enregistrements du fichier EMPLOYEE.

Exemple 14: Utilisation d'une requête avec jointure

OPNQRYF   FILE((EMPLOYEE) (MANAGEMENT))  FORMAT(EMPLOYEE)
          KEYFLD((NAME))  JFLD((1/EMPID 2/MEMPID))
          ALWCPYDTA(*OPTIMIZE)

Cette commande renvoie tous les enregistrements répondant aux critères de jointure.

Exemple 15: Requête avec comparaison des données caractères et numériques

OPNQRYF   FILE((STAFF))  QRYSLT('SALARY > "18357.50"')

Cette commande renvoie tous les enregistrements du fichier STAFF pour lesquels le salaire est supérieur à 18357,50, même si la zone SALARY est de type numérique et que la valeur de littéral du paramètre QRYSLT est de type caractère.

Messages d'erreur

Messages *ESCAPE

CPF2115
Objet &1 de &2 type *&3 endommagé.
CPF2169
Les informations de séquence de tri du travail ne sont pas disponibles.
CPF2619
Table &1 non trouvée.
CPF3BCC
L'identificateur de langue &1 n'est pas valide. Language identifier &1 not valid.
CPF3BC6
La séquence de tri &1 n'est pas valide. Sort sequence &1 not valid.
CPF3BC7
Le CCSID &1 est en dehors de la plage valide. CCSID &1 outside of valid range.
CPF3BC8
La conversion du CCSID &1 vers le CCSID &2 n'est pas prise en charge. Conversion from CCSID &1 to CCSID &2 is not supported.
CPF3BC9
La conversion du CCSID &1 vers le CCSID &2 n'est pas définie. Conversion from CCSID &1 to CCSID &2 is not defined.
CPF3BDD
La séquence de tri &1 n'est pas valide pour les données UCS2. Sort sequence &1 not valid for UCS2 data.
CPF3FC0
Identificateur de langue incorrect.
CPF4174
OPNID(&4) existe déjà pour le fichier &1.
CPF8133
Table &4 de &9 endommagée.
CPF9801
Objet &2 non trouvé dans la bibliothèque &3.
CPF9802
Non autorisé à l'objet &2 de &3.
CPF9803
Impossible d'allouer l'objet &2 de la bibliothèque &3.
CPF9807
Une ou plusieurs bibliothèques de la liste ont été supprimées.
CPF9808
Allocation impossible pour une ou plusieurs bibliothèques de la liste.
CPF9810
Bibliothèque &1 non trouvée.
CPF9812
Fichier &1 non trouvé dans la bibliothèque &2.
CPF9813
Format d'enregistrement &3 non trouvé dans le fichier &1.
CPF9815
Membre &5 du fichier &2 dans &3 non trouvé.
CPF9820
Non autorisé à utiliser la bibliothèque &1.
CPF9822
Non autorisé au fichier &1 de &2.
CPF9826
Allocation du fichier &2 impossible.
CPF9830
Allocation de la bibliothèque &1 impossible.
CPF9899
Erreur lors du traitement de la commande.

Messages *STATUS

CPI4011
Requête en cours. &2 enregistrements extraits, &1 traités.
CPI4301
Requête en cours.
CPI4302
Requête en cours. Création du chemin d'accès pour &2 de &1.
CPI4303
Requête en cours. Création copie du fichier &1 de &2.
CPI4304
Requête en cours. &1 enreg sélectionné(s). Sélection achevée.
CPI4305
Requête en cours. Tri de la copie du fichier *N de *N.
CPI4306
Requête en cours. Création du chemin d'accès sur &1 de &2.
CPI4307
Requête en cours. Construction d'une table de hachage du &2 dans &1.

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