この例は、暗黙アクセス・パスの共用について十分に理解するために役立ちます。
2つの論理ファイル LFILE1 と LFILE2 が物理ファイル PFILE
を基礎にして作成されています。LFILE1
が最初に作成され、これは2つのキー・フィールド KFD1と KFD2
を持ちます。LFILE2 には3つのキー・フィールド KFD1、KFD2、およびKFD3
があります。2つの論理ファイルは、2つの同一キー・フィールドを使用しますが、2つのキー・フィールドを持つファイルの後に、3つのキー・フィールドを持つ論理ファイルが作成されたため、アクセス・パスは共用しません。
図 3-4.
保管と復元の前の物理ファイルと論理ファイル
|
物理ファイル (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(ブランクの場合)に変更します。この適用業務では、アクセス・パスが共用されないので、ユーザーの予期しない結果は生じません。しかし、物理ファイルと両方の論理ファイルの保管と復元の後は、プログラムが何もしていないように見え、処理に時間がかかります。復元に何も変更を加えない限り、AS/400
システムは、次のように作動します。
- 最大数のキーを持つ論理ファイルを最初に復元します。
- 不必要なアクセス・パスは作成しません。
これらの条件の変更に関する情報は、トピック3.4.3.2.2の『アクセス・パスの再作成時の制御』を参照してください。
3つのキー・フィールドを持つので、LFILE2
が最初に復元されます。回復の後、LFILE1 は LFILE2
のアクセス・パスを暗黙に共用します。暗黙の共用アクセス・パスについて理解していないユーザーは、回復後に
LFILE1 を使用するとき、実際には LFILE2
のキーを使用していることに気づきません。
図 3-5.
保管と復元の後の物理ファイルと論理ファイル.
保管と復元の前との違いは、論理ファイルが同一のアクセス・パスを共用するようになったことだけであることに注意してください。
|
物理ファイル (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 |
*BLANK |
002 |
01 |
01 |
*BLANK |
003 |
01 |
01 |
*BLANK |
004 |
01 |
01 |
*BLANK |
最初のレコードは 0101*BLANK
の最初のキーによって読み取られ、0101C
に変更されます。レコードは次のようになります。
相対レコード |
KFD1 |
KFD2 |
KFD3 |
001 |
01 |
01 |
C |
002 |
01 |
01 |
*BLANK |
003 |
01 |
01 |
*BLANK |
004 |
01 |
01 |
*BLANK |
適用業務が '次を入手' キーを発行するときに、0101*BLANK
より上にある次の高位キーは 0101C
です。これは変更されたばかりのレコードです。しかし、今回は適用業務は
KFD3 フィールドを C からブランクへ変更します。
ユーザーは暗黙アクセス・パス共用を理解していないので、適用業務はすべてのレコードを2度アクセスして変更します。その結果、適用業務が実行に時間がかかり、レコードが変更されなかったように見えます。
|