カテゴリ: COBOL 更新日: 2025/12/30

COBOLのファイルステータスでエラーを見逃さない!初心者でも安心のエラー検知と対処法

ファイルステータスを使ったエラー検知と対処
ファイルステータスを使ったエラー検知と対処

先生と生徒の会話形式で理解しよう

生徒

「COBOLでファイルを読み込もうとしたら、エラーが出て動かなくなりました…。どうすれば原因がわかるんですか?」

先生

「それはファイルステータスを使うと分かりやすくなりますよ。ファイルステータスは、ファイル操作のあとにどんな状態だったかを数値で教えてくれる仕組みです。」

生徒

「ファイルステータスって、難しそう…。初心者でも使えるように教えてください!」

先生

「もちろんです!それでは、初心者にもわかるように、ファイルステータスの基本から見ていきましょう。」

1. ファイルステータスとは?

1. ファイルステータスとは?
1. ファイルステータスとは?

ファイルステータスとは、COBOLのファイル操作(読み込みや書き込み)をした直後の状態を教えてくれる2桁の数字です。この数字を確認することで、ファイルが正しく開けたか、読み込めたか、エラーが起きたかを判断できます。

たとえば、ファイルが見つからなかったときは「35」、正常に読み込めたときは「00」、ファイルの終わりに達したときは「10」など、数字によって状態がわかるようになっています。

初心者の方には「お知らせランプ」のようなものだと考えてください。何か問題があったときに、「ランプ」が光って教えてくれるイメージです。

2. ファイルステータスの定義方法

2. ファイルステータスの定義方法
2. ファイルステータスの定義方法

COBOLでファイルステータスを使うには、まずFILE-CONTROLの中でSTATUSを使って定義します。定義した変数には、ファイル操作後に自動で値が入ります

ファイルを読み込むときの定義例を見てみましょう。


ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
    SELECT IN-FILE ASSIGN TO "input.txt"
        ORGANIZATION IS LINE SEQUENTIAL
        FILE STATUS IS WS-FILE-STATUS.

このように書くことで、ファイルを開いたり読んだりするたびにWS-FILE-STATUSに状態コードが入ります。

3. ワーキングストレージでの変数定義

3. ワーキングストレージでの変数定義
3. ワーキングストレージでの変数定義

WS-FILE-STATUSという変数には、2文字のコードが入るので、次のように定義します。


WORKING-STORAGE SECTION.
01 WS-FILE-STATUS      PIC XX.

PICとは「ピクチャ」の略で、「どんな形のデータを使うか」を表します。XXは2文字の英数字を表すので、ファイルステータスにピッタリです。

4. 実際に読み込み処理をしてエラー検知する例

4. 実際に読み込み処理をしてエラー検知する例
4. 実際に読み込み処理をしてエラー検知する例

それでは実際にファイルを開いて読み込むプログラムを作り、ファイルステータスをチェックしてみましょう。


IDENTIFICATION DIVISION.
PROGRAM-ID. FILE-STATUS-CHECK.

ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
    SELECT IN-FILE ASSIGN TO "input.txt"
        ORGANIZATION IS LINE SEQUENTIAL
        FILE STATUS IS WS-FILE-STATUS.

DATA DIVISION.
FILE SECTION.
FD IN-FILE.
01 IN-RECORD     PIC X(30).

WORKING-STORAGE SECTION.
01 WS-FILE-STATUS   PIC XX.
01 EOF-FLAG         PIC X VALUE "N".

PROCEDURE DIVISION.
    OPEN INPUT IN-FILE
    DISPLAY "ファイルステータス(OPEN):" WS-FILE-STATUS

    IF WS-FILE-STATUS NOT = "00" THEN
        DISPLAY "ファイルのオープンに失敗しました。"
        STOP RUN
    END-IF

    PERFORM UNTIL EOF-FLAG = "Y"
        READ IN-FILE
            AT END
                MOVE "Y" TO EOF-FLAG
            NOT AT END
                DISPLAY "読み込みデータ:" IN-RECORD
        END-READ
        DISPLAY "ファイルステータス(READ):" WS-FILE-STATUS
    END-PERFORM

    CLOSE IN-FILE
    DISPLAY "ファイルステータス(CLOSE):" WS-FILE-STATUS

    STOP RUN.

5. 実行結果の例と読み方

5. 実行結果の例と読み方
5. 実行結果の例と読み方

このプログラムを実行すると、画面にはファイルステータスの値が表示されます。


ファイルステータス(OPEN):00
読み込みデータ:田中一郎
ファイルステータス(READ):00
読み込みデータ:佐藤花子
ファイルステータス(READ):00
ファイルステータス(READ):10
ファイルステータス(CLOSE):00

「00」は正常、「10」はファイルの終わり(EOF: End Of File)を意味します。もしファイルが存在しなければ、最初の「OPEN」で「35」が表示され、読み込み処理は実行されません。

6. よく使われるファイルステータスコード一覧

6. よく使われるファイルステータスコード一覧
6. よく使われるファイルステータスコード一覧

よく使うファイルステータスは以下のとおりです。コードと意味をしっかり覚えておきましょう。

  • 00:正常に処理が行われた
  • 10:ファイルの終わりに達した(EOF)
  • 30:ファイル属性のエラー(定義ミスなど)
  • 35:ファイルが存在しない
  • 39:ファイルのフォーマットが違う
  • 92:読み取りや書き込みの失敗

この一覧は、トラブルが起きたときに原因を調べるヒントになります。

7. ファイルステータスを活用するコツ

7. ファイルステータスを活用するコツ
7. ファイルステータスを活用するコツ

ファイルステータスを使うと、エラーの原因がすぐに特定できるようになります。プログラムが止まっても、「なぜ止まったのか」「どこまで処理が進んでいたのか」が表示されるので、初心者でも安心してデバッグ(間違い探し)できます

また、エラーが出たときに、エラーメッセージだけでなくWS-FILE-STATUSの値も一緒に表示すると、後から確認しやすくなります。

まとめ

まとめ
まとめ

ファイルステータスを理解することでエラー対応力が大きく向上する

今回の記事では、COBOLにおけるファイルステータスの役割と使い方について、 初心者の方でも安心して理解できるよう、基本から実践例まで丁寧に解説してきました。 COBOLのファイル処理では、ファイルのオープン、読み込み、書き込み、クローズといった 各操作のたびに、内部的に処理結果が判定されています。 その結果を数値として受け取れる仕組みが、ファイルステータスです。

ファイルステータスを確認することで、 「ファイルが存在しなかったのか」 「正常に読み込めたのか」 「すでにファイルの終わりに達しているのか」 といった状態を正確に把握できます。 これは、ファイル処理でエラーが発生した際に、 原因を素早く特定するための非常に重要な手がかりになります。 特に業務システムやバッチ処理では、 ファイルエラーを見逃すと大きな障害につながるため、 ファイルステータスの確認は欠かせない基本技術と言えます。

DISPLAYと組み合わせたエラー検知の考え方

記事の中では、FILE-CONTROLでのSTATUS指定や、 WORKING-STORAGEでの変数定義、 そしてOPEN、READ、CLOSEごとに DISPLAY文でファイルステータスを表示する方法を紹介しました。 このように表示を行うことで、 プログラムがどこまで正常に処理されたのかを 実行結果から一目で確認できます。

特に初心者の方にとっては、 エラーが発生したときに突然プログラムが止まるよりも、 ステータスコードと一緒にメッセージが表示される方が、 安心して原因を考えることができます。 ファイルステータスは単なる数値ではなく、 プログラムと人をつなぐ「状況説明のサイン」として 活用する意識を持つことが大切です。

まとめとしてのサンプルプログラム

ここで、今回学んだ内容を整理するために、 ファイルステータスを使ったシンプルな確認用サンプルを見てみましょう。 ファイル操作のたびに状態を表示することで、 エラー検知と処理状況の把握を同時に行う構成になっています。


OPEN INPUT IN-FILE
DISPLAY "OPEN後のステータス:" WS-FILE-STATUS

IF WS-FILE-STATUS NOT = "00" THEN
    DISPLAY "ファイルを開けませんでした"
    STOP RUN
END-IF

READ IN-FILE
DISPLAY "READ後のステータス:" WS-FILE-STATUS

IF WS-FILE-STATUS = "10" THEN
    DISPLAY "ファイルの終わりに達しました"
END-IF

CLOSE IN-FILE
DISPLAY "CLOSE後のステータス:" WS-FILE-STATUS

このような形で処理の節目ごとにファイルステータスを確認しておくと、 実行時のトラブルにも落ち着いて対応できるようになります。 学習段階では特に、DISPLAYによる確認を積極的に行い、 ファイル処理の流れを体で覚えていくことが重要です。

先生と生徒の振り返り会話

生徒

「ファイルステータスって数字だけ見ると難しそうでしたけど、 表示して確認すると意味がよく分かりました。」

先生

「そうですね。ファイルステータスは、 ファイル処理の結果を教えてくれる大切な情報なんです。」

生徒

「エラーが出たときも、どこで失敗したのかが分かるので、 以前より安心してプログラムを動かせそうです。」

先生

「その感覚はとても大切ですよ。 COBOLのファイル処理では、ステータス確認が基本になります。」

生徒

「これからはファイルを扱うときに、 必ずファイルステータスを確認するようにします。」

先生

「それができれば、エラーを見逃さない堅実なプログラムが書けます。 ぜひこの習慣を続けていきましょう。」

カテゴリの一覧へ
新着記事
New1
C#
C#のデフォルト引数と名前付き引数の使い方を解説!初心者でも安心のやさしい入門
New2
C#
C#のオブジェクト初期化子を完全ガイド!初心者でもわかる便利な使い方
New3
COBOL
COBOLの帳票出力と編集を完全マスター!条件付き表示で分かりやすい書類を作る方法
New4
COBOL
COBOLの帳票出力を完全攻略!数値項目のカンマ・小数点編集例を徹底解説
人気記事
No.1
Java&Spring記事人気No1
C#
C#のpartialクラスとは?初心者でも理解できるクラス分割の基本
No.2
Java&Spring記事人気No2
C#
C#でJSONファイルを読み書きする方法(JsonSerializer・Newtonsoft.Json)
No.3
Java&Spring記事人気No3
C#
C#のLINQクエリ構文の書き方と基本操作をマスターしよう
No.4
Java&Spring記事人気No4
C#
C#でswitch式を使う方法!C# 8.0以降の新機能を解説
No.5
Java&Spring記事人気No5
COBOL
COBOLの数値データ型「PIC 9」の使い方と注意点をやさしく解説!
No.6
Java&Spring記事人気No6
C#
C#のLINQ(リンク)とは?基本概念とデータ操作を初心者向けに徹底解説!
No.7
Java&Spring記事人気No7
C#
C#の非同期処理とUIスレッドをマスター!WPF/WinFormsでアプリが止まる問題を解決
No.8
Java&Spring記事人気No8
C#
C#のCancellationTokenを使ったキャンセル処理を完全ガイド!非同期処理を安全に止める方法