例 : 暗黙共用アクセス・パス

この例は、論理ファイル間でアクセス・パスを暗黙に共用する方法を示します。

2 つの論理ファイル LFILE1 と LFILE2 が物理ファイル PFILE を基礎にして 作成されています。LFILE1 が最初に作成され、 これは 2 つのキー・フィールド KFD1 と KFD2 を持ちます。LFILE2 には 3 つのキー・フィールド KFD1、KFD2、および KFD3 があります。2 つの論理ファイルは、2 つの同一キー・フィールドを使用しますが、2 つ のキー・フィールドを持つファイルの後に、3 つのキー・フィールドを持つ 論理ファイルが作成されたため、アクセス・パスは共用しません。

表 1. 保管と復元の前の物理ファイルと論理ファイル
説明 物理ファイル (PFILE) 論理ファイル 1 (LFILE1) 論理ファイル 2 (LFILE2)
アクセス・パス   KFD1、KFD2 KFD1、KFD2、KFD3
フィールド KFD1、 KFD2、 KFD3、 A、 B、 C、 D、 E、 F、 G KFD1、 KFD2、 KFD3、 F、 C、 A KFD1、 KFD2、 KFD3、 D、 G、 F、 E

アプリケーションは LFILE1 を使用してレコードにアクセスし、KFD3 フィールドを ブランク (C が入っている場合) または C (ブランクの場合) に変更します。このアプリケーションでは、アクセス・パスが共用されないため、予期しない結果は生じません。 しかし、物理ファイルと両方の論理ファイルの保管と復元の後は、プログラムが何もしていないように見え、処理に時間がかかります。

論理ファイルを復元する方法を変更しない限り (例えば、オブジェクト復元 (RSTOBJ) コマンドで LFILE1 と LFILE2 を別々に復元する場合など)、システムはキー数が最大の論理ファイルを最初に復元します。つまり、不要なアクセス・パスを作成しません。

3 つのキー・フィールドを持つので、LFILE2 が最初に復元されます。回復の後、LFILE1 は LFILE2 のアクセス・パスを暗黙に共用します。暗黙に共用されるアクセス・パスについて理解していないユーザーは、 回復後に LFILE1 を使用するとき、実際には LFILE2 のキーを使用していることに気付きません。

表 2. 保管と復元の後の物理ファイルと論理ファイル. 保管と復元の前との違いは、論理ファイルが同一のアクセス・パスを 共用するようになったことだけであることに注意してください。
説明 物理ファイル (PFILE) 論理ファイル 1 (LFILE1) 論理ファイル 2 (LFILE2)
アクセス・パス   KFD1、KFD2、KFD3 KFD1、KFD2、KFD3
フィールド KFD1、KFD2、KFD3、 A、B、C、D、E、F、G KFD1、KFD2、KFD3、 F、C、A KFD1、KFD2、KFD3、 D、G、F、E

以下のレコードがテストされて変更されます。

相対レコード KFD1 KFD2 KFD3
001 01 01 <ブランク>
002 01 01 <ブランク>
003 01 01 <ブランク>
004 01 01 <ブランク>

最初のレコードは、0101<ブランク> の最初のキーを介して読み取られ、 0101C に変更されます。 レコードは次のようになります。

相対レコード KFD1 KFD2 KFD3
001 01 01 C
002 01 01 <ブランク>
003 01 01 <ブランク>
004 01 01 <ブランク>

アプリケーションが次のキーを取得するとき、0101<ブランク> の上にある 次の高位のキーは 0101C です。これは変更されたばかりのレコードです。しかし、 この時点でアプリケーションは KFD3 フィールドを C からブランクへ変更します。

ユーザーは暗黙のアクセス・パス共用を理解していないので、アプリケーションは すべてのレコードに二度アクセスして変更します。その結果、アプリケーションの実行に時間がかかり、 レコードが変更されなかったように見えます。