キー付きファイルを使用した予期しない結果
同等のために READE、READPE、SETLL を使用するか、レコード・アドレス・ファイルによる制限内順次処理の場合、通常、キー比較はデータ管理機能レベルで実行されます。ただし、キー比較をデータ管理機能レベルで実行できない状態があります。データ管理機能がキー比較を実行できない場合、16 進数照合順序を使用して比較が実行されます。 これは、予期しない結果を引き起こすことがあります。
例えば、ABSVAL を数字キーに使うと、ファイルの中で 1 の値を持つキーに対して、-1 と 1 の両方の検索引数が一致してしまいます。
16 進の照合順序を使うと、-1 の検索引数は 1 の値を持つ実際のキーには一致しません。
異なるキー比較を引き起こす機能の一部を以下に示します。
- 「複数の読み取り (Read Multiple)」に続く「次の等しいキーの取得 (Get Next Key Equal)」で、検索キーが提供される必要がありません。 この状態を回避するには、「複数の読み取り」が 1 つのレコードのみを読み取るように、SEQONLY(*NO) または SEQONLY(*YES 1) のいずれかを指定して、OVRDBF コマンドを実行します。
- キー付きフィードバックは、ファイルに対して開いたときに要求されませんでした。
- 「読み取り」要求は、データの「グループ別」ビューを介して実行されました。この状態を回避するために、「グループ別」データの物理的コピーを使用します。
- ファイルは分散データ管理 (DDM) ファイルであり、リモート・ファイルは、バージョン 3 リリース 1 モディフィケーション 0 の前に作成されました。
データ管理機能で実行されるキー比較と異なる 16 進数キー比較を引き起こす機能の一部を以下に示します。
- ファイルに ALTSEQ が指定された
- キー・フィールドでの ABSVAL、ZONE、UNSIGNED、または DIGIT キーワード
- 可変長、日付、時刻、またはタイム・スタンプのキー・フィールド
- ALWNULL(*USRCTL) が制御仕様上のキーワードまたはコマンド・パラメーターとして指定され、レコードまたは検索引数のキーが null 値を持っている。 ファイルまたは検索引数のキーが null 値を持っている。これは、外部記述ファイルにのみ適用されます。
- ファイル用の SRTSEQ が 16 進数でない
- 番号記号がシステムの優先記号と異なる
- ファイル内のキーの CCSID がジョブの CCSID と異なる
(C) Copyright IBM Corporation 1992, 2006. All Rights Reserved.