「Query ファイルのオープン (OPNQRYF)」コマンドを使用することにより、データベース照会要求を満た すデータベース・レコードのセットに対してファイルをオープンできます。
OPNQRYF コマンドは、データベース・ファイルに対して多くのデータ処理機能を実行できます。本質的
には、処理プログラムとデータベース・レコードとの間のフィルターとして働きます。データベース・ファ イルは、物理ファイルまたは論理ファイルのどちらでもかまいません。「物理ファイルの作成 (CRTPF)」
コマンドまたは「論理ファイルの作成 (CRTLF)」コマンドとは異なり、 OPNQRYF コマンドは、データを 処理するための一時ファイルだけを作成します。永続ファイルは作成されません。
OPNQRYF コマンドには、データ記述仕様 (DDS) にある機能や、CRTPF および CRTLF コマンドの機能 と類似した機能があります。DDS は、ファイルを作成するためのソース・ステートメントと、個別のステ ップを必要とします。OPNQRYF コマンドを用いれば、DDS を使用せずに動的に定義を行うことができま す。OPNQRYF コマンドは DDS の機能のすべてはサポートしていませんが、DDS の機能を上回る優れた 機能をサポートしています。さらに、OPNQRYF コマンドで実行される機能の一部は、IBM Query for i を 使用して実行することもできます。しかし、プログラミング・ツールとしては OPNQRYF コマンドの方が 有用です。
OPNQRYF コマンド・パラメーターにはまた、SQL の SELECT ステートメントと類似した多数の機能も あります。たとえば、 FILE パラメーターは SQL の FROM ステートメントに類似し、 QRYSLT パラメ ーターは SQL の WHERE ステートメントに類似し、 GRPFLD パラメーターは SQL の GROUP BY ス テートメントに類似し、 GRPSLT パラメーターは SQL の HAVING ステートメントに類似しています。
以下のリストは、OPNQRYF コマンドで提供されている主要機能を示しています。
v 動的レコード選択
v 動的キー順アクセス・パス
v 異なる物理ファイルにあるキー・フィールド
v 動的結合
v 2 次結合ファイル内での脱落レコード v 固有キー処理
v マップ・フィールド定義 v グループ処理
v 最終合計のみの処理 v パフォーマンスの最適化
v Query のオープン識別コード (ID) v 分類順序の処理
OPNQRYF コマンドを理解するためには、ファイル内のレコード様式の使用と、異なるレコード様式を持
つファイルの使用という 2 つの処理アプローチを把握しておく必要があります。OPNQRYF コマンドの代 表的な使用法は、高水準言語プログラムによる順次の読み取りが可能になるようにデータの選択、編成、お よび形式設定を行うことです。
関連概念:
SQL プログラミング 制御言語
関連資料:
Query ファイル・オープン (OPNQRYF) コマンド Query の作成:
「Query ファイルのオープン (OPNQRYF)」コマンドを使用して、データベース・レコードに対する Query を作成できます。あるいは、System i ナビゲーターで SQL スクリプトを実行して、Query を作成するこ ともできます。
関連概念:
Run SQL Scripts インターフェースを使用したデータベースの QUERY 関連資料:
Query ファイル・オープン (OPNQRYF) コマンド
既存のレコード様式を使用したオープン Query ファイルの作成:
「Query ファイルのオープン (OPNQRYF)」コマンドによってレコードの選択が行なわれるので、プログラ ムでは選択値を満たすレコードだけが処理されます。 この方法を使用して、レコードのセットを選択した り、保管されていた順序とは異なった順序でレコードを返したり、あるいはその両方を行うことができま す。
Code フィールドが D であるレコードだけをプログラムで処理したいとします。プログラムは、 Code フ ィールドが D であるレコードしかないかのように作成します。 つまり、プログラムでは選択操作をまっ たくコーディングしません。その後で、OPNQRYF コマンドを実行し、Code フィールドが D であるレコ
ードだけがプログラムに戻されるように指定します。以下のチャートに示すのは、OPNQRYF コマンドを 使用して、レコードの選択および順序付けを行う例です。
1 外部記述データを使用する通常のプログラムと同様に、データベース・ファイルを処理する高水準 言語プログラムを作成します。レコード様式は 1 つだけ使用できますが、そのレコード様式はフ ァイルに存在するものでなければなりません。
2 処理するファイルとメンバー、および SHARE(*YES) を指定した上で「データベース・ファイルに よる一時変更 (OVRDBF)」コマンドを実行します。(メンバーが永久的に SHARE(*YES) に変更さ れており、使用したいメンバーが最初のメンバーまたは唯一のメンバーである場合には、このステ ップは必要ありません。)
OPNQRYF コマンドで指定したファイル名を一時変更したい場合を除いて、 OVRDBF コマンドは
OPNQRYF コマンドの後に実行できます。この説明と実例では、OVRDBF コマンドを最初に示し
ています。
OPNQRYF コマンドと一緒に OVRDBF コマンドを使用する場合には、制約事項があります。たと
えば、MBR(*ALL) を指定すると、エラー・メッセージが出されて、ファイルはオープンされませ ん。
3 データベース・ファイル、メンバー、様式名、選択オプション、順序付けオプション、およびオー プン・ファイルの影響の有効範囲を指定して、OPNQRYF コマンドを実行してください。
4 ステップ 1 で作成した高水準言語プログラムを呼び出します。高水準言語を使用するほかに、
「Query ファイルからのコピー (CPYFRMQRYF)」コマンドを使用しても、OPNQRYF コマンドに よって作成されたファイルを処理することができます。その他の制御言語 (CL) コマンド (たとえ ば、「ファイルのコピー (CPYF) コマンドおよび「物理ファイル・メンバーの表示 (DSPPFM)」コ マンド) およびユーティリティー (たとえば、Query) は、OPNQRYF コマンドで作成されたファイ ルを処理しません。
5 ファイルをオープンしたままにしておきたい場合を除いて、ステップ 3 でオープンしたファイル をクローズします。ファイルをクローズするには、「ファイルのクローズ (CLOF)」コマンドを使 用できます。
6 「一時変更の削除 (DLTOVR)」コマンドを使用して、ステップ 2 で指定した一時変更を削除しま す。一時変更の削除が常に必要とは限りませんが、一貫性を持たせるために、すべての例にこのコ マンドを示しています。
関連概念:
208ページの『ジョブ内でのファイルの共用』
「Query ファイルのオープン (OPNQRYF)」コマンドによって作成されたオープン・データ・パスを使用す るには、プログラムが Query ファイルを共用する必要があります。
異なるレコード様式を使用した、オープン Query ファイルの作成:
「Query ファイルのオープン (OPNQRYF)」コマンドのより高度な機能 (別々のファイルからのレコードの 動的結合など) を使用するためには、異なるレコード様式を含む新しいファイルを定義する必要がありま す。
この新しいファイルは、処理しようとしているファイルとは別のファイルで、OPNQRYF コマンドで作成 しようとするフィールドが入っています。この強力な機能を使用すると、現在のデータベース・レコードに は存在していないが、それらのレコードから派生するフィールドを定義できます。
高水準言語プログラムをコーディングする場合には、既存のフィールドと派生フィールドの両方の外部記述 フィールド定義をプログラムで処理できるように、異なる様式が入っているファイルの名前を指定します。
高水準言語プログラムを呼び出す前に、プログラム・ファイル名を Query ファイルのオープン・コマンド に指示するために、「データベース・ファイルによる一時変更 (OVRDBF)」コマンドを指定しなければな りません。OPNQRYF コマンドでは、データベース・ファイルと、高水準言語プログラムによって使用さ れる特殊な様式の新しいファイルの両方を指定してください。Query の対象となるファイルに
SHARE(*YES) を指定していない場合は、 OVRDBF コマンドで SHARE(*YES) を指定する必要がありま す。
以下の図表は、処理の流れを示しています。
1 異なるレコード様式を持つファイルのデータ記述仕様 (DDS) を指定し、そのファイルを作成しま す。このファイルには、高水準言語プログラムで処理したいフィールドが入っています。通常、こ のファイルにはデータがなく、メンバーは必要ありません。このファイルは、通常、キーのない物 理ファイルとして作成します。フィールドを記述するために、フィールド参照ファイルを使用でき ます。レコード様式名は、指定したデータベース・ファイルのレコード様式名と異なっていてもか まいません。この機能では、どのデータベース・ファイルまたは DDM ファイルでも使用できま す。このファイルは、論理ファイルにすることも、索引付きファイルにすることもできます。この ファイルは、データの有無を問わず、1 つまたは複数のメンバーを持つことができます。
2 ステップ 1 で作成したレコード様式を持つファイルを処理するための高水準言語プログラムを作 成します。このプログラムでは、データが入っているデータベース・ファイルの名前を指定しない でください。
3 OVRDBF コマンドを実行します。FILE パラメーターを用いて、異なる (新しい) レコード様式を
持つファイルの名前を指定します。TOFILE パラメーターを用いて、Query の対象としたいデータ ベース・ファイルの名前を指定します。MBR パラメーターでメンバー名を指定することもできま す。Query の対象とするデータベース・メンバーに SHARE(*YES) が指定されていない場合は、
OVRDBF コマンドで SHARE(*YES) も指定しなければなりません。
4 OPNQRYF コマンドを実行します。Query の対象とするデータベース・ファイルを FILE パラメー
ターで指定し、ステップ 1 で作成した異なる (新しい) 様式を持つファイルの名前を FORMAT パ ラメーターで指定します。OPNQRYF コマンドでは、データベース・ファイルからのデータを、ス テップ 1 で作成された様式にマップする方法を記述するために、マップ・フィールド定義が必要