オープン・データ・パスとは、ファイルのすべての入出力操作が実行されるパ スのことです。 通常、ファイルがオープンされるたびに、別個のオープン・データ・パスが定 義されます。 ファイルの作成または一時変更で SHARE(*YES) を指定した場合には、ファイル の最初のプログラムのオープン・データ・パスがそのファイルを同時にオープ ンする後続のプログラムでも共用されます。
現行レコードの位置は、このファイルを使用しているすべてのプログラムのオ ープン・データ・パスで保存されます。 あるプログラムでレコードを読み取って、呼び出されるプログラムでレコードを 読み取る場合には、2 回目の読み取りで検索されるレコードはオープン・データ ・パスを共用しているかどうかによって異なります。 オープン・データ・パスを共用している場合には、呼び出されるプログラムの 現行レコードの位置は、呼び出し側プログラムの現在位置によって決まります。 オープン・データ・パスを共用していない場合には、各プログラムごとに 現行レコードの位置は独立したものになります。
プログラムが共用ファイルにレコード・ロックを保持してから、更新用に共用 ファイルを読み取る 2 番目のプログラムを呼び出す場合には、最初の プログラムのロックは、次を行うことによって解除することができます。
ILE では、共用ファイルはジョブ・レベルまたは活動化グループ・レベルまで 拡大されています。 ジョブ・レベルまで拡大された共用ファイルは、ジョブ内 のどの 活動化グループで実行中のどのプログラムとでも 共用することができます。 活動化グループ・レベルまで拡大された共用ファイルは、同じ活動化グループ で実行中のプログラムによってのみ 共用することができます。
共用ファイルのデフォルトの有効範囲は、活動化グループです。 ジョブ・レベルの有効範囲の場合には、一時変更コマンドに OVRSCOPE(*JOB) を指定してください。
ILE RPG では、共用 ODP の分野におけるいくつかの機能強化を提供します。プログラムまたは プロシージャーが読み取り命令を実行する場合には、問題の ファイルに SHARE(*YES) が指定されている限り、別のプログラムまたは プロシージャーがレコードを更新することができます。 さらに、複数装置ファイルを使用している時に、1 つの プログラムが装置を獲得した場合には、ODP を共用するその他のプログラムもその獲得された装置を 使用することができます。 更新の実行に必要なすべてのデータが呼び出し先プログラムで使用可能であ るかどうかの確認は、プログラマーが行います。
プログラムが順次入力操作を実行し、ファイルの終わり状態になる場合、通常の操作とは、同じモジュール内の任意の後続の順次入力操作で、データベースへの物理的入力要求なしに即時にファイルの終わり状態になることです。 ただし、ファイルが共有される場合は、RPG ランタイムは常時物理的入力要求をデータベースに送信し、共用ファイルを使用してファイルが別のプログラムまたはモジュールへの呼び出しで位置変更されている場合に、入力操作は成功します。
オープン・データ・パスの共用により、i5/OS システムは新しいオープン・データ・パスを作成する必要がないので、パフォーマンスが向上します。しかし、オープン・データ・パスの共用によって 問題が起こることもあります。例えば、次の場合にはエラーが通知されます。
実行時に、あるプログラム中の複数のファイルが 1 つの共用ファイルに 一時変更される時には、ファイルのオープン順序が重要です。 ファイルのオープン順序を制御するためには、プログラマー制御オープンを使 用するか、あるいはプログラムを呼び出す前に CL プログラムを使用する必要 があります。
プログラムがプライマリーまたはセカンダリー・ファイルのオープン・データ ・パスを共用する場合には、そのオープン・データ・パスを共用する別の プログラムを呼び出す前に、プログラムは、処理中のレコードの明細演算を処理し なければなりません。 それを行わない場合には、先読みを使用しているか、または合計時に呼び出した 場合に、プライマリー または セカンダリー・ファイルのオープン・データ・パスの共用によって、 呼び出し先プログラムはファイルの間違ったレコードからデータを読み取ることがあります。
最初に共用ファイルをオープンする時には、そのファイルの後続のオープンで 必要となるすべてのオープン・オプションが指定されていることを確認する必 要があります。 共用ファイルの後続のオープンに指定されたオープン・オプションが、 共用ファイルの最初のオープンに指定されたオープン・オプションに含まれていない 場合には、エラー・メッセージがプログラムに送られます。
表 36 は、ユーザーが指定できる各オープン・オプションに認められた、 システムのオープン・オプションを示します。
RPG ユーザー・オープン・オプション |
システム・オープン・オプション |
---|---|
INPUT | INPUT |
OUTPUT | OUTPUT (プログラム作成ファイル) |
UPDATE | INPUT、UPDATE、DELETE |
ADD | OUTPUT (既存のファイル) |
オープン・データ・パス共用、および活動化グループ対ジョブ・レベルの有効範囲に ついての詳細は、「ILE 概念」を参照してください。
(C) Copyright IBM Corporation 1992, 2006. All Rights Reserved.