入出力エラー値
次の表では、データベース、ファイル、および 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 は、以下の場合に設定されます。
|
| hardIOError | ハード | すべてのタイプ | 詳しくは、このトピック内の『hardIOError』を参照してください。 |
| invalidFormat | ハード | 索引付き、相対、シリアル | アクセスされたファイルがレコード定義と非互換です。詳しくは、このトピック内の「invalidFormat」を参照してください。 |
| noRecordFound | ソフト | すべてのタイプ | 詳しくは、このトピック内の「noRecordFound」を参照してください。 |
| softIOError | ソフト | すべてのタイプ | ソフト・エラー (endOfFile、noRecordFound、または duplicate) が発生しました。 |
| unique | ハード | DL/I、索引付き、相対、SQL | コードが、既存のキーを持つレコードを追加または置換しようとして失敗しました。 詳しくは、このトピック内の「unique」を参照してください。 |
duplicate
- add 文が、既にファイルまたは代替索引にキーが存在するレコードを挿入しようとし、成功した。
- replace 文がレコードを正常に上書きし、置換値に別のレコードの代替索引キーと同じキーが含まれている。
- get、get next、または get previous 文がレコードを正常に読み取り、2 番目のレコードが同じキーを持っている。
duplicate 設定は、アクセス・メソッドが情報を戻す場合にのみ戻されます。 これは、一部のオペレーティング・システムに当てはまりますが、 他のオペレーティング・システムには当てはまりません。このオプションは、SQL データベース・アクセス中は使用不可です。
iSeries 上で、EGL 生成 COBOL プログラムからエミュレートされた VSAM ファイルにアクセスする場合、生成時に使用される、リソース関連パーツの duplicates プロパティーの説明については、「EGL 生成ガイド」の『関連要素』を参照してください。
DL/I データベースでは、duplicate はソフト・エラーです。重複キーを持つレコードが許可されていないデータベースに add 文がセグメントを挿入しようとする場合、および同じキーを持つレコードがそのデータベースに既に存在している場合に、これが設定されます。add は、失敗します。対応する状況コードは、II です。DL/I では duplicate と unique の値は等価です。
endOfFile
- 関連するファイル・ポインターがファイルの終わりにある場合に、コードがシリアル・レコードまたは相対レコードに対して get next 文を発行する。 ファイルの最終レコードが直前の get または get next 文によってアクセスされたときに、ポインターが末尾にある。
- GSAM ファイルとして実装されるシリアル・レコードに対して、コードが get next 文を発行し、データベース内にそれ以上セグメントがない。 対応する状況コードは GB です。
- IMS™ メッセージ・キューとして実装されるシリアル・レコードに対して、コードが get next 文を発行し、メッセージ・キュー上にそれ以上メッセージがない。 対応する状況コードは QC です。
- 関連するファイル・ポインターがファイルの終わりにある場合に、コードが 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
- DL/I 操作以外の場合、システム変数 vgVar.handleHardIOErrors を 1 に設定する必要がある。
- DL/I 入出力操作の場合、以下の条件のいずれかが該当する必要がある。
- vgVar.handleHardIOErrors が 1 に設定されている。
- dliVar.handleHardDLIErrors が 1 に設定されている。
- シリアル・ファイル、索引付きファイル、または相対ファイルの場合、ソフト・エラーとして定義されたエラー 以外のファイル入出力エラーが発生した。ソフト・エラーは、duplicate、endOfFile、noRecordFound、または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
- レコード形式
ファイル形式 (固定長または可変長) が EGL レコード形式と異なる。
- レコード長
固定長レコードの場合、ファイル内のレコードの長さが EGL レコードの長さと異なる。 可変長レコードの場合、ファイル内のレコードの長さが EGL レコードの長さより大きい。
- ファイル・タイプ
レコードに指定されているファイル・タイプが、実行時のファイル・タイプと一致しない。
- キー長
ファイル内のキー長が、EGL 索引付きレコード内のキー長と異なる。
- キー・オフセット
ファイル内のキー位置が、EGL 索引付きレコード内のキー位置と異なる。
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
- add 文が、キーまたはレコード ID が既にファイルまたは代替索引に存在するレコードを挿入しようとしたが、 重複のために挿入が失敗した。
- 置換値に別のレコードの代替索引キーと同じキーが含まれているので、replace 文がレコードを上書きできなかった。
unique 設定は、アクセス・メソッドが情報を戻す場合にのみ戻されます。 これは、一部のオペレーティング・システムに当てはまりますが、 他のオペレーティング・システムには当てはまりません。
追加または置換されている SQL 行が、固有索引に既に存在するキーを 持っている場合は、SQL データベース・アクセス時に unique が設定されます。対応する sqlcode は -803 です。
DL/I データベースでは、add 文が、 重複キーが許可されていないレコードのある、また同じキーが既にある レコードを持つデータベースにセグメントを挿入しようとしている場合に、 unique が設定されます。add は、失敗します。対応する状況コードは、II です。DL/I では duplicate と unique の値は等価です。