入出力エラー値

次の表は、データベース、ファイル、および MQSeries® メッセージ・キューに影響を及ぼす入出力 (I/O) 操作の EGL エラー値を説明しています。 ハード・エラーに関連した値がコードで有効となるのは、 『例外処理』で説明されているとおり、システム変数 VGVar.handleHardIOErrors が 1 に設定されている場合のみです。

エラー値 エラーのタイプ レコードのタイプ エラー値の意味
deadLock ハード SQL 2 つのプログラム・インスタンスがレコードを変更しようとしていますが、システム介入がない限りどちらも変更できません。
duplicate ソフト 索引付きまたは相対 コードが、既に存在するキーを持つレコードにアクセスしようとし、その試行は成功しました。詳細については、『duplicate』を参照してください。
endOfFile ソフト 索引付き、相対、シリアル 詳細については、『endOfFile』を参照してください。
ioError ハードまたはソフト 任意 EGL で入出力操作から非ゼロの戻りコードが受け取られました。
format ハード 任意 アクセスされたファイルがレコード定義と非互換です。詳細については、『format』を参照してください。
fileNotAvailable ハード 任意 fileNotAvailable はどの入出力操作でも生じる可能性があり、 例えば、別のプログラムがファイルを使用していること、またはファイルにアクセスするために必要なリソースが不足していることを表す場合があります。
fileNotFound ハード 索引付き、メッセージ・キュー、相対、シリアル ファイルが見つかりませんでした。
full ハード 索引付き、相対、シリアル full は、以下の場合に設定されます。
  • 索引付きまたはシリアル・ファイルが満杯である
hardIOError ハード 任意 ハード・エラーが発生しました。これは、endOfFile、noRecordFound、duplicate 以外のエラーです。
noRecordFound ソフト 任意 詳細については、『noRecordFound』を参照してください。
unique ハード 索引付き、相対、または SQL UNQ は固有 (unique) を表します。コードが、既に存在するキーを持つレコードを追加または置換しようとしましたが、その試行は失敗しました。詳細については、『unique』を参照してください。

duplicate

索引付きまたは相対レコードの場合、duplicate が設定される条件は、以下のとおりです。
  • add 文が、キーまたはレコード ID が既にファイルまたは代替索引に存在するレコードを挿入しようとし、 挿入が成功した。
  • replace 文がレコードを正常に上書きし、置換値に別のレコードの代替索引キーと同じキーが含まれている。
  • getget next、または get previous 文は、レコードを正常に読み取り (または、set record position という書式の set 文が正常に実行され)、2 番目のレコードが同じキーを持つ。

duplicate 設定は、アクセス・メソッドが情報を戻す場合にのみ戻されます。 これは、一部のオペレーティング・システムに当てはまりますが、 他のオペレーティング・システムには当てはまりません。このオプションは、SQL データベース・アクセス中は使用不可です。

endOfFile

endOfFile が設定される条件は、以下のとおりです。
  • 関連するファイル・ポインターがファイルの終わりにある場合に、コードがシリアル・レコードまたは相対レコードに対して get next 文を発行する。 ファイルの最終レコードが直前の get または get next 文によってアクセスされたときに、ポインターが末尾にある。
  • 関連するファイル・ポインターがファイルの終わりにある場合に、コードが索引付きレコードに対して get next 文を発行する。これは、以下の状況で生じます。
    • ファイルの最終レコードが直前の get または get next 文によってアクセスされた。または、
    • 以下のいずれかの条件が該当する場合に、ファイルの最終レコードが、直前の set record position 型の set 文によってアクセスされた。
      • キー値がファイルの最終レコードのキーと一致した。
      • キー値のすべてのバイトが 16 進の FF に設定されている。(set record position 型の set 文が、すべて 16 進の FF に設定されたキー値を指定して実行された場合、文は位置ポインターをファイルの終わりに設定します。)
  • 関連するファイル・ポインターがファイル先頭にある場合に、コードが索引付きレコードに対して get previous 文を発行する。これは、以下の状況で生じます。
    • ファイルの最初のレコードが直前の get または get previous 文によってアクセスされた。
    • コードの直前のアクセスが、同じファイルに対するものではなかった。または
    • set record position 型の set 文がキーを指定して実行されたが、ファイル内でそのキーの前にキーがなかった。
  • get next 文が、空のファイルまたは未初期化ファイルから索引付きレコードにデータを取り出そうとした。

    (空のファイルは、すべてのレコードが削除されたファイルです。 未初期化ファイルは、一度もレコードが追加されたことがないファイルです。)

  • get previous 文が、空のファイルから索引付きレコードにデータを取り出そうとした。

format

format はどの種類の入出力操作によっても生じる可能性がありますが、特に以下の理由で設定されます。
  • レコード形式

    ファイル形式 (固定長または可変長) が EGL レコード形式と異なる。

  • レコード長

    固定長レコードの場合、ファイル内のレコードの長さが EGL レコードの長さと異なる。 可変長レコードの場合、ファイル内のレコードの長さが EGL レコードの長さより大きい。

  • ファイル・タイプ

    レコードに指定されているファイル・タイプが、実行時のファイル・タイプと一致しない。

  • キー長

    ファイル内のキー長が、EGL 索引付きレコード内のキー長と異なる。

  • キー・オフセット

    ファイル内のキー位置が、EGL 索引付きレコード内のキー位置と異なる。

noRecordFound

noRecordFound が設定される条件は、以下のとおりです。
  • 索引付きレコードの場合、get 文に指定されたキーと一致するレコードが検出されなかった。
  • EGL で生成された Java™ の場合、VSAM ファイルが空または未初期化である場合に、コードが索引付きレコードに対して get next または get previous 文を発行する。
  • 相対レコードの場合、get 文に指定されたレコード ID と一致するレコードが検出されなかった。あるいは、get next 文がファイルの終わりを超えるレコードにアクセスしようとした。
  • SQL レコードの場合、指定された SELECT 文と一致する行が検出されなかった。 あるいは、調査対象となる選択された行が残っていないときに get next 文が実行された。

unique

索引付きまたは相対レコードの場合、unique が設定される条件は、以下のとおりです。
  • add 文が、キーまたはレコード ID が既にファイルまたは代替索引に存在するレコードを挿入しようとしたが、 重複のために挿入が失敗した。
  • 置換値に別のレコードの代替索引キーと同じキーが含まれているので、replace 文がレコードを上書きできなかった。

unique 設定は、アクセス・メソッドが情報を戻す場合にのみ戻されます。 これは、一部のオペレーティング・システムに当てはまりますが、 他のオペレーティング・システムには当てはまりません。

追加または置換されている SQL 行が、固有索引に既に存在するキーを 持っている場合は、SQL データベース・アクセス時に unique が設定されます。対応する sqlcode は -803 です。

フィードバック
(C) Copyright IBM Corporation 2000, 2005. All Rights Reserved.