入出力エラー値

次の表では、データベース、ファイル、および WebSphere® MQ メッセージ・キューに影響を与える入出力 (I/O) 操作に関する EGL エラー値が説明されています。 V6 の例外互換性を使用する場合 (『V6 の例外互換性の使用』を参照)、 ハード入出力エラーおよびソフト入出力エラーの両方にアクセスできます (『is/not 演算子』を参照)。 詳しくは、『例外処理』を参照してください。

エラー値 エラーのタイプ レコードのタイプ エラー値の意味
deadlock ハード SQL 2 つのプログラム・インスタンスがレコードを変更しようとしていますが、システム介入がない限りどちらも変更できません。DB2® の SQL テーブルにアクセスしている場合、deadlock は sqlcode の値が -911 であることを表します。
duplicate ソフト DL/I、索引付き、または相対 詳しくは、このトピック内の「duplicate」を参照してください。
endOfFile ソフト DL/I、索引付き、相対、シリアル 詳しくは、このトピック内の「endOfFile」を参照してください。
ioError ハードまたはソフト すべてのタイプ 詳しくは、このトピックの『ioError』を参照してください。
fileNotAvailable ハード 索引付き、相対、シリアル fileNotAvailable はどの入出力操作でも生じる可能性があり、 例えば、別のプログラムがファイルを使用していること、またはファイルにアクセスするために必要なリソースが不足していることを表す場合があります。
fileNotFound ハード 索引付き、メッセージ・キュー、相対、シリアル fileNotFound は、すべての入出力操作で発生する可能性があり、要求されたファイルが見つからないことを示します。
full ハード 索引付き、相対、シリアル full は、以下の場合に設定されます。
  • 索引付きまたはシリアル・ファイルが満杯である
  • 索引付きまたは相対ファイルが CICS® 一時記憶域のキューとして実装されており、add が 32767 バイトより大きいキーを挿入しようとしている
hardIOError ハード すべてのタイプ 詳しくは、このトピック内の『hardIOError』を参照してください。
invalidFormat ハード 索引付き、相対、シリアル アクセスされたファイルがレコード定義と非互換です。詳しくは、このトピック内の「invalidFormat」を参照してください。
noRecordFound ソフト すべてのタイプ 詳しくは、このトピック内の「noRecordFound」を参照してください。
softIOError ソフト すべてのタイプ ソフト・エラー (endOfFile、noRecordFound、または duplicate) が発生しました。
unique ハード DL/I、索引付き、相対、SQL コードが、既存のキーを持つレコードを追加または置換しようとして失敗しました。 詳しくは、このトピック内の「unique」を参照してください。

duplicate

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

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

iSeries® 上で、EGL 生成 COBOL プログラムからエミュレートされた VSAM ファイルにアクセスする場合、生成時に使用される、リソース関連パーツの duplicates プロパティーの説明については、「EGL 生成ガイド」の『関連要素』を参照してください。

DL/I データベースでは、duplicate はソフト・エラーです。重複キーを持つレコードが許可されていないデータベースに add 文がセグメントを挿入しようとする場合、および同じキーを持つレコードがそのデータベースに既に存在している場合に、これが設定されます。add は、失敗します。対応する状況コードは、II です。DL/I では duplicateunique の値は等価です。

endOfFile

シリアルまたは相対レコードの場合、endOfFile が設定される条件は、次のとおりです。
  • 関連するファイル・ポインターがファイルの終わりにある場合に、コードがシリアル・レコードまたは相対レコードに対して get next 文を発行する。 ファイルの最終レコードが直前の get または get next 文によってアクセスされたときに、ポインターが末尾にある。
  • GSAM ファイルとして実装されるシリアル・レコードに対して、コードが get next 文を発行し、データベース内にそれ以上セグメントがない。 対応する状況コードは GB です。
  • IMS™ メッセージ・キューとして実装されるシリアル・レコードに対して、コードが get next 文を発行し、メッセージ・キュー上にそれ以上メッセージがない。 対応する状況コードは QC です。
シリアルまたは相対レコードの場合、endOfFile が設定される条件は、次のとおりです。
  • 関連するファイル・ポインターがファイルの終わりにある場合に、コードが 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 文が、空のファイルからデータを取り出そうとした。
  • COBOL 生成の場合、get previous 文が、未初期化ファイルからデータを取り出そうとした。

DL/I データベースの場合、get next または get next inParent 文によってデータを取得しようとするときに、関連するデータベース・ポインターがデータベースの終わりにあると、endOfFile が設定されます。 対応する状況コードは GB です。

ioError

この値が設定される条件は、以下のとおりです。
  • シリアル・ファイル、索引付きファイル、または相対ファイルの場合、ゼロ以外の戻りコードを 入出力操作から受け取った。
  • GSAM ファイルとして実装されたシリアル・ファイルの場合、DL/I がすべての非ブランク 状況コードを戻した。
  • IMS メッセージ・キューとして実装されたシリアル・ファイルの場合、DL/I がすべての非ブランク状況コードを戻した。
  • DL/I データベースの場合、DL/I がすべてのゼロ以外の CICS DL/I エラー・コード、またはすべての非ブランク DL/I 状況コードを戻した。
  • SQL 行レコードに対して DB2 を使用している場合、SQLCODE が 0 以外の値であった。

hardIOError

ハード入出力エラーは、入出力操作の失敗によって起こります。endOfFile およびnoRecordFound の値は決して ハード・エラーとは見なされません。入出力エラーのテストを行うには、 V6 例外モードにしておく必要があります。
  • DL/I 操作以外の場合、システム変数 vgVar.handleHardIOErrors を 1 に設定する必要がある。
  • DL/I 入出力操作の場合、以下の条件のいずれかが該当する必要がある。
    • vgVar.handleHardIOErrors が 1 に設定されている。
    • dliVar.handleHardDLIErrors が 1 に設定されている。
hardIOError が設定される条件は、以下のとおりです。
  • シリアル・ファイル、索引付きファイル、または相対ファイルの場合、ソフト・エラーとして定義されたエラー 以外のファイル入出力エラーが発生した。ソフト・エラーは、duplicateendOfFilenoRecordFound、またはunique を設定した。
  • GSAM ファイルとして実装されたシリアル・ファイルの場合、DL/I が、GB 以外の すべての非ブランク状況コードを戻した。
  • IMS メッセージ・キューとして実装されたシリアル・ファイルの場合、DL/I が、 QC、QD、CE、CF、CG、CI、CJ、CK、または CL 以外のすべての非ブランク状況コードを戻した。
  • DL/I データベースの場合、DL/I が、ゼロ以外の CICS DL/I エラー・コード、あるいは GA、GB、GD、GE、GK、または II 以外の非ブランク DL/I 状況コードを戻した。
  • SQL 行レコードに対して DB2 を使用している場合、SQLCODE が 304、802 であるか、または 0 未満である。

invalidFormat

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

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

  • レコード長

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

  • ファイル・タイプ

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

  • キー長

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

  • キー・オフセット

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

noRecordFound

noRecordFound が設定される条件は、以下のとおりです。
  • 索引付きレコードの場合、get 文に指定されたキーと一致するレコードが検出されなかった。あるいは、CICS で get next または get previous 文が、空の VSAM ファイルから索引付きレコードにデータを取り出そうとした。
  • EGL で生成された Java™ の場合、VSAM ファイルが空または未初期化である場合に、コードが索引付きレコードに対して get next または get previous 文を発行する。
  • 相対レコードの場合、get 文に指定されたレコード ID と一致するレコードが検出されなかった。あるいは、get next 文がファイルの終わりを超えるレコードにアクセスしようとした。
  • SQL レコードの場合、指定された SELECT 文と一致する行が検出されなかった。 あるいは、調査対象となる選択された行が残っていないときに get next 文が実行された。
  • DL/I データベースの場合、DL/I 呼び出しで指定された 選択条件を満たすレコードがデータベース内に見つからなかった。挿入するセグメントの 親が見つからない場合、この状態は EGL add 文に 設定できます。状況コードは GE になります。

unique

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

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

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

DL/I データベースでは、add 文が、 重複キーが許可されていないレコードのある、また同じキーが既にある レコードを持つデータベースにセグメントを挿入しようとしている場合に、 unique が設定されます。add は、失敗します。対応する状況コードは、II です。DL/I では duplicateunique の値は等価です。


フィードバック