前ページへ ランタイムシステムのエラーメッセージ SAA、OSVS および VSC2 実装上の制限 次ページへ

第 5 章 ファイル状態コード

FILE STATUS 句で定義される各ファイルでは、I/O 操作のたびに状態コードが返されます。 この章では、それらのコードを説明します。 ANSI'85 操作にロードされた標準システムを使用している場合は、ANSI'85 コードがデフォルトで作成されます。 ANSI'74 ファイル状態コードを作成するには、実行時に ‐A スイッチを設定します。

または、NOANS85 指令によってプログラムをコンパイルします。 コンパイル時に NOANS85 を指定しないと、ANSI'85 ファイル状態コードが生成されます。

ANSI'85 構文を使用する場合で ANSI'74 ファイル状態コードを持っている場合は、NOANS85 指令を ANS85"SYNTAX" と置換するか、または NOANS85 指令を削除して実行時に -A スイッチを使用します。

上記のファイル状態の規則に加えて、さらに詳細な拡張ファイル状態コードを生成することができます。 拡張ファイル状態コードは、次の書式で構成されています。

9/nnn

ここで nnn は、実行時のエラー番号に相当する 2 進数 (COMP‐X) です。

実行時エラーについては、『ランタイムシステムのエラーメッセージ』の章で説明します。

たとえば、ファイルをディスクに書き込んでいるときにディスクの空き領域が足りなくなった場合には、ANSI'74 ファイル状態は「30」となります。これは、エラーメッセージ「永続的エラー。これ以外の情報はありません」を意味します。 このエラーメッセージは大変一般的です。「永続的エラー」とは、ディスクに障害が発生したか、またはディスクドライブが開いていることを意味します。 そこで、一般的なファイル状態を返すかわりに、この COBOL システムでは 9/007 の拡張ファイル状態を返します。

ANSI'74 または ANSI'85 ファイル状態コードの使用時には、拡張ファイル状態のほうが通常返されるものよりも明確である場合は、ランタイムシステムによって拡張状態コードが返されます。

特に指定されていない限り、それぞれのファイル状態コードは、どのアクセスモードにおけるどのファイル編成への操作についても受け取ることができます。

5.1 メッセージ一覧

'74
'85
意味
00 00 正常終了
02 02

索引ファイルのみ。

次のどちらかが該当しています。

  • READ 文では、現行キーのキー値は、参照用の現行キーにおける次のレコードの同一キーの値と同じです。
  • WRITE または REWRITE 文では、書き込まれたばかりのレコードが、少なくとも 1 つの重複可能な代替レコードキーに対して重複キー値を作成しています。
00 04 処理中のレコードのレコード長は、該当ファイルの固定ファイル属性に適合しません。
00 05 参照されるオプションファイルは、OPEN 文が実行される時点では存在しません。
00 07 順ファイルのみ。 REEL/UNIT 句のある OPEN あるいは CLOSE 文についての参照ファイルは非 reel/unit 媒体です。
10 10 次の論理レコードは存在しません。

ファイルの終わりに達しました。
  14 相対ファイルのみ。

相対レコード番号における重要な桁数が、該当ファイルのために記述された相対キーデータ項目よりも大きくなっています。
21 21 順呼び出しのファイルのみ。

順序誤りエラーを示します。 連続するレコードのキー値に対して、キーを昇順に並べ替える要求が違反となりました。または、そのファイルに対する READ 文と次の REWRITE 文の正常な実行の間に、第一レコードのキー値が COBOL プログラムによって変更されています。
22 22 索引ファイルと相対ファイルのみ。

重複キーの条件を示します。 索引または相対ファイル内に重複キーを作成するレコード、または重複が許可されていない重複代替レコードキーを作成するレコードを格納しようとしています。
23 23 レコードがまったく検出されなかったことを示します。

キーによって識別されるレコードにアクセスしようとしましたが、ファイル内にそのレコードが存在しません。

もしくは START または READ 操作が、存在しないオプションの入力ファイルに対して試行しています。
24 24 相対ファイルと索引ファイルのみ。

次の状態から起こる境界違反を示しています。
外部的に定義されたファイルの境界線を越えて、書き込みが試行されています。
順 WRITE 操作が相対ファイルに対して試行されましたが、相対レコード番号における重要な桁数は、該当ファイルのために記述された相対キーデータ項目よりも大きくなっています。
  30 順ファイルに対する境界違反の結果、またはデータチェックでのパリティエラーや伝送エラーなどの I/O エラーの結果、I/O 文の実行が異常終了しました。
  34 境界違反のため、I/O 文が異常終了しました。

これは、外部的に定義された順ファイルの境界線を越えて、書き込みが試行されたことを示しています。
  35 I/O、INPUT、または EXTEND 句による OPEN 操作が、存在しない非 OPTIONAL ファイルに対して試行されました。
  37 OPEN 操作が、OPEN 文で指定されたオープンモードをサポートしていないファイルに対して試行されました。
  38 OPEN 操作が、以前ロック状態で終了したファイルに対して試行されました。
  39 プログラムにおける固定ファイル属性とファイルに対して指定された属性との間に、競合が検知されました。
  41 OPEN 操作が、すでに開いているファイルに対して試行されました。
  42 CLOSE 操作が、すでに閉じているファイルに対して試行されました。
  43 順呼び出しモードのファイル。

DELETE または REWRITE 文の実行前に、ファイルに対して実行された最後の I/O 文が、READ 文ではありませんでした。
  44 境界違反があります。 考えられる違反は次のとおりです。
関連ファイルの RECORD IS VARYING 句によって許可されたレコードの最大よりも大きなレコード、または最小よりも小さなレコードの WRITE または REWRITE が試行されました。
ファイルに対してレコードの REWRITE が試行され、元のレコードと置換するレコードのサイズが一致しません。
  46 INPUT モードまたは I‐O モードで開いているファイルに対して、順 READ 操作が試行されましたが、有効な次のレコードが確立されませんでした。
  47 INPUT モードまたは I‐O モードで開いていないファイルに対して、READ または START 操作が試行されました。
  48 OUTPUT モード、I‐O モード、または EXTEND モードで開いていないファイル、または順呼び出しモードの I‐O モードで開いているファイルに対して、WRITE 操作が試行されました。
  49 I‐O モードで開いていないファイルに対して、DELETE または REWRITE 操作が試行されました。
  9/nnn 拡張ファイル状態コード
    RT001 バッファスペースが不足しています。 OS/2 の場合は、SWAPPATH が正しく設定されていないか、SWPPATH ドライブの空き領域が不足していることを示します。 また、メモリ不足の状態を示しています。
    RT002 アクセスしてもファイルが開きません。
    RT003 逐次モードエラー。
    RT004 ファイル名が無効です。
    RT005 装置の指定が無効です。
    RT006 入力用に開いたファイルに対して書き込もうとしました。
    RT007 ディスクの空き領域がなくなりました。
    RT008 出力用に開いたファイルから入力しようとしました。
    RT009 ディレクトリ内に十分な領域がありません。(または、ディレクトリが存在しません)
    RT010 ファイル名が指定されていません。
    RT012 すでに開いているファイルを開こうとしました。
    RT013 ファイルが見つかりませんでした。
    RT014 同時に開いているファイルの数が多すぎます。
    RT015 開いている索引ファイルの数が多すぎます。
    RT016 開いている装置ファイルの数が多すぎます。
    RT017 レコードエラー。 長さが 0 になっています。
    RT018 レコード部分読みエラー。 EOR の前に EOF になったか、または正しくないモードでファイルを開いています。
    RT019 再書き出しエラー。 オープンモードまたはアクセスモードが正しくありません。
    RT020 装置または資源が使用中です。
    RT021 ファイルがディレクトリです。
    RT022 無効なアクセスモードまたは使用できないアクセスモードで OPEN を実行しました。
    RT023 無効なアクセスモードまたは使用できないアクセスモードで CLOSE を実行しました。
    RT024 ディスク I/O エラー。
    RT025 オペレーティングシステムデータエラー。
    RT026 ブロック I/O エラー。
    RT027 装置が使用できません。
    RT028 装置に空き領域がありません。
    RT029 開いているファイルを削除しようとしました。
    RT030 ファイルシステムは読み取り専用です。
    RT031 ファイルの所有者ではありません。
    RT032 索引ファイルが多すぎるか、そのような処理はありません。
    RT033 物理的 I/O エラー。
    RT034 モードまたはファイル記述子が正しくありません。
    RT035 ファイルへのアクセスが、正しくない権限でおこなわれました。
    RT036 ファイルがすでに存在しています。
    RT037 ファイルアクセスが拒否されました。
    RT038 ディスクに互換性がありません。
    RT039 ファイルに互換性がありません。
    RT040 言語の初期化の設定が正しくありません。
    RT041 索引ファイルが破損しています。
    RT042 壊れたパイプに書き込もうとしました。
    RT043 索引ファイルのファイル情報が見つかりませんでした。
    RT045 互換性のないプログラムを使用して NLS ファイルを開こうとしました。
    RT047 索引の構造がオーバーフローしました。 (重複キーの最大数に達したことを示しています。)
    RT065 ファイルがロックされています。
    RT066 索引ファイルに対して重複レコードキーを追加しようとしました。
    RT068 レコードがロックされています。
    RT069 ISAM モジュールに対する引数が無効です。
    RT070 開いている索引ファイルの数が多すぎます。
    RT071 索引ファイルの書式が正しくありません。
    RT072 索引ファイルの終わりです。
    RT099 無効な整列操作です。
    RT100 無効なファイル操作です。
    RT104 ファイル操作に NULL ファイル名が使用されました。
    RT105 メモリ割り当てエラー。
    RT138 ファイルがロック状態で閉じられているため、開くことができません。
    RT139 レコード長またはキーデータが一致しません。
    RT141 ファイルがすでに開かれているため、開くことができません。
    RT142 ファイルが開かれていないため、閉じることはできません。
    RT143 順呼び出しモードでの REWRITE/DELETE の前に、READ が正常終了していません。
    RT146 順読み込みに定義されている現行レコードはありません。
    RT147 READ/START に使用するオープンモードまたはアクセスモードが正しくありません。
    RT148 WRITE に使用するオープンモードまたはアクセスモードが正しくありません。
    RT149 REWRITE/ DELETE に使用するオープンモードまたはアクセスモードが正しくありません。
    RT161 ファイルヘッダが見つかりませんでした。
    RT173 呼び出されたプログラムが見つかりませんでした。
    RT188 ファイル名が長すぎます。
    RT194 ファイルサイズが大きすぎます。
    RT195 DELETE/REWRITE の前に READ がおこなわれていません。
    RT196 相対ファイルまたは索引ファイルのレコード番号が大きすぎます。
    RT210 ファイルがロック状態で閉じています。
    RT213 ロックが多すぎます。
    RT218 MULTIPLE REEL/UNIT ファイルの書式が正しくありません。
    RT219 オペレーティングシステムの共有ファイル制限を超えました。


Copyright © 2002 Micro Focus International Limited. All rights reserved.
本書、ならびに使用されている固有の商標と商品名は国際法で保護されています。

前ページへ ランタイムシステムのエラーメッセージ SAA、OSVS および VSC2 実装上の制限 次ページへ