iSeriesC の sysVar.errorCode のファイル入出力状況
V60ExceptionCompatibility プログラム・プロパティーが YES に設定されている場合、sysVar.errorCode システム環境変数には、iSeriesC 環境のファイル入出力の状況コードが入ります。
生成された COBOL では、sysCodes ビルド記述子オプションを使用して、ファイル入出力エラーに関して返されるコードを制御します。sysCodes ビルド記述子オプションは、
EGL 入出力エラー値には影響を与えません。
- sysCodes ビルド記述子オプションを「YES」に設定すると、sysVar.errorCode にはシステム依存のアクセス方式戻りコードが入ります。これは COBOL ファイル状況キーです。 COBOL ファイル状況キーの値については、i5/OS™ インフォメーション・センターを参照してください。 sysVar.errorCode のフォーマットについて詳しくは、errorCodeを参照してください。
- 対照的に、sysCodes ビルド記述子オプションを「NO」に設定すると、sysVar.errorCode には IBM® i ファイル入出力エラーを検出した EGL ランタイム・サービス入出力ルーチンからの戻りコードが入ります。
状況キーの値、EGL 入出力エラーの値、および sysVar.errorCode の対応表を以下に示します。 1 つの sysVar.errorCode に複数の COBOL ファイル状況キー値が対応していることがあります。
| errorCode (sysCodes = "YES")、COBOL ファイル状況キー値 | EGL 入出力エラー値 | errorCode (sysCodes = "NO") |
|---|---|---|
| 00,05,07 | [no error] | 000 |
| 02 | duplicate, ioError | 103 |
| 04 (可変長レコード) | [no error] | 000 |
| 04 | invalidFormat、ioError、hardIOError | 220 |
| 10,14,46 | endOfFile、ioError | 102 |
| 22 | unique、ioError | 206 |
| 23 (START) | endOfFile、ioError | 102 |
| 23 | noRecordFound、ioError | 205 |
| 24、34 (アクセス方式が関連していない、または相対キーが 0 ではない) | full、ioError、hardIOError | 25A |
| 35 | fileNotFound、ioError、hardIOError | 251 |
| 38 | fileNotAvailable、ioError、hardIOError | 218 |
| 39,95 | invalidFormat、ioError | 220 |
| 9D | deadlock、ioError、hardIOError | 381 |
その他のすべての COBOL ファイル状況キー値の場合、下の表に示す要求タイプに基づいて sysVar.errorCode が設定されます。
| 要求のタイプ | EGL 入出力エラー値 | errorCode (sysCodes = "NO") |
|---|---|---|
| OPEN | ioError、hardIOError | 500 |
| CLOSE、UNLOCK | ioError、hardIOError | 989 |
| READ、START | ioError、hardIOError | 987 |
| WRITE | ioError、hardIOError | 988 |