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

COBOLのファイル入出力のエラーと解決策まとめ!初心者向けやさしく解説

ファイル入出力のエラーと解決策まとめ
ファイル入出力のエラーと解決策まとめ

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

生徒

「COBOLでファイルを読み書きしていると、エラーが出ることがあるんですが、どうすればいいんですか?」

先生

「とても大事なポイントですね。COBOLでは、ファイル操作をするときに注意すべきエラーがいくつかあります。」

生徒

「パソコン初心者なので、何を見ればいいのかもわからなくて困っています…」

先生

「大丈夫ですよ。今回は、ファイル入出力でよくあるエラーの原因と、その対処方法をわかりやすく説明していきますね!」

1. ファイル入出力とは?

1. ファイル入出力とは?
1. ファイル入出力とは?

まずは基本から説明します。ファイル入出力とは、パソコンの中のデータファイル(例えば、メモ帳で作ったようなデータ)を、読み込んだり(入力)、書き込んだり(出力)することです。

COBOL(コボル)というプログラミング言語では、この操作をOPENREADWRITECLOSEといった命令で行います。これらの命令の使い方が間違っていると、エラーが発生します。

2. ファイルエラーの基本とチェック方法

2. ファイルエラーの基本とチェック方法
2. ファイルエラーの基本とチェック方法

ファイル操作でエラーが起こったとき、COBOLではFILE STATUS(ファイルステータス)という仕組みを使って、何が問題なのかを判断できます。

これは、あらかじめ決められたコード(例:10、30、90など)で、原因を教えてくれます。

たとえば、こんなコードを書いておくことで、エラーの内容を知ることができます。


FD  MY-FILE
    LABEL RECORDS ARE STANDARD
    BLOCK CONTAINS 0 RECORDS
    RECORDING MODE IS F
    DATA RECORD IS MY-RECORD.
01  MY-RECORD     PIC X(50).
WORKING-STORAGE SECTION.
01  FILE-STATUS   PIC XX.

PROCEDURE DIVISION.
OPEN INPUT MY-FILE
    IF FILE-STATUS NOT = "00"
        DISPLAY "ファイルオープンエラー:" FILE-STATUS
        STOP RUN
    END-IF.

3. よくあるファイルエラーとその原因

3. よくあるファイルエラーとその原因
3. よくあるファイルエラーとその原因

COBOLでよくあるファイルエラーには、次のようなものがあります。

① ファイルが見つからない(ステータス:35)

パソコンの中に指定されたファイルがない場合に起こります。読み取り(READ)や入力(INPUT)のときに、存在しないファイルを開こうとすると出ます。

対処法:ファイルの名前、場所、拡張子(例:.dat や .txt)をもう一度確認しましょう。

② ファイルがすでに使われている(ステータス:91)

他のプログラムでそのファイルが開かれていたり、前に開いたままになっていたりすると、アクセスできないことがあります。

対処法:他のアプリやプログラムでファイルが開かれていないか確認しましょう。必要があれば、COBOL内でCLOSE命令を入れて、ファイルをきちんと閉じておきましょう。

③ 書き込みできない(ステータス:30)

ファイルに書き込みたいけど、許可がなかったり、フォルダが読み取り専用だったりすると発生します。

対処法:ファイルやフォルダのアクセス権(アクセスけん)を確認してください。必要に応じて、書き込み可能な場所にファイルを保存しましょう。

4. ファイルステータスコード一覧(代表的なもの)

4. ファイルステータスコード一覧(代表的なもの)
4. ファイルステータスコード一覧(代表的なもの)

ファイルステータスコードは数字2桁で示され、各番号には意味があります。ここでは初心者の方にも覚えやすいよう、代表的なステータスを表にまとめます。

コード 意味 対処方法
00 正常に処理された 問題なし
10 読み取りの終わり ファイルの最後。LOOP終了処理が必要
30 入力・出力エラー ファイルのアクセス許可やデバイス確認
35 ファイルが存在しない ファイル名やパスを再確認
91 ファイルが未オープンまたは多重オープン OPEN処理またはCLOSE漏れを確認

5. エラー処理を入れて、安全なプログラムを作ろう

5. エラー処理を入れて、安全なプログラムを作ろう
5. エラー処理を入れて、安全なプログラムを作ろう

ファイル操作をするたびに、必ずエラーが起きるとは限りません。でも、エラーが起きたときの準備をしておくことで、予期せぬ停止やデータ破損を防げます。

以下は、ファイルオープン時のエラー処理をしっかり入れたサンプルです。


WORKING-STORAGE SECTION.
01  FILE-STATUS      PIC XX.
01  ERROR-MESSAGE    PIC X(50).

PROCEDURE DIVISION.
OPEN INPUT MY-FILE
    IF FILE-STATUS = "00"
        CONTINUE
    ELSE
        MOVE "ファイルを開けませんでした。" TO ERROR-MESSAGE
        DISPLAY ERROR-MESSAGE
        DISPLAY "ステータスコード:" FILE-STATUS
        STOP RUN
    END-IF.

6. ファイル操作でよく使う命令の順番を知ろう

6. ファイル操作でよく使う命令の順番を知ろう
6. ファイル操作でよく使う命令の順番を知ろう

COBOLでファイルを扱うときは、命令の順番がとても大切です。順番を間違えると、正常に動かなくなってしまいます。

  • SELECT文(環境設定)で、ファイルの名前を決める
  • OPENでファイルを開く
  • READまたはWRITEで読み書きする
  • CLOSEでファイルを閉じる

これを守れば、エラーをかなり防ぐことができます。

7. ファイルエラーを防ぐちょっとしたコツ

7. ファイルエラーを防ぐちょっとしたコツ
7. ファイルエラーを防ぐちょっとしたコツ

初心者の方がエラーを防ぐためのコツをいくつかご紹介します。

  • ファイル名やパスは半角英数字を使う
  • ファイル操作ごとにFILE STATUSをチェック
  • エラー表示用のメッセージを用意しておく
  • プログラム中にCLOSEを忘れずに入れる
  • 読み取り専用のフォルダではなく、書き込み可能な場所を使う

まとめ

まとめ
まとめ

COBOLでファイル入出力を行うときに起きやすいエラーについて振り返ってみると、エラーの多くは「ファイルが開けない」「書き込めない」「読み取れない」といった基本的なポイントに集約されることがわかる。とくにファイルステータスの確認は、初心者がつまずきやすい場所でありながら、正しく使えるようになるとトラブルの原因がすぐに見つけられるようになる重要な仕組みである。ファイル名の誤り、アクセス権の不足、多重オープンなど、日常的に起こりうる問題を丁寧に切り分けることで、安全で安心できるプログラム運用につながる。 さらに、COBOLでは命令の順番も非常に大切であり、SELECT、OPEN、READ/WRITE、CLOSEという流れを守ることで、エラーの発生を大幅に減らすことができる。ファイルの扱い方を正しく理解しておくと、読み取り専用ファイルと書き込み可能ファイルを区別する判断力が身につき、ファイルの存在確認やアクセス権の確認といった実務的な作業もスムーズに進められるようになる。COBOLで安定したシステムを開発するためには、こうしたファイル操作の基礎をしっかり押さえることが避けて通れない道となる。 また、ファイルステータスの管理によって、プログラムがどこで失敗したのかを正確に把握できるため、トラブルが起きても焦らずに原因を追うことができる。エラーコードの意味が理解できると、例えば「ファイルがない」「書き込みできない」「すでにオープンされている」などの状態がすぐに判断でき、プログラム修正の時間を大幅に短縮できる。初心者ほどエラーに出会ったときに解決方法がわからず困ってしまうが、ステータスコードを確認するだけで道筋が見えやすくなるため、エラー処理の学習は非常に価値が高い。 実務現場では、ファイルが存在しない場合に自動的に生成したり、読み取り専用モードと出力モードを使い分けたりする場面がよくあるため、ファイル操作の理解は避けて通れない。とくに固定長ファイルを扱うシステムでは、読み取りの終わりを判定するステータス10の扱いが非常に重要であり、誤って無限ループに陥らないためにもファイル終端の判定処理を正確に入れておく必要がある。こうした注意点を理解しながら作業を進めていくことで、より安全で信頼性の高いプログラムを作ることが可能になっていく。 以下に、エラー処理を組み込んだより丁寧なサンプルプログラムを示すので、実際の動きとあわせて理解を深めていくとよいだろう。

エラー処理つきサンプルプログラム


WORKING-STORAGE SECTION.
01  FILE-STATUS    PIC XX.
01  ERROR-MSG      PIC X(80).

PROCEDURE DIVISION.
OPEN INPUT SAMPLE-FILE
    IF FILE-STATUS NOT = "00"
        MOVE "ファイルを開けません。" TO ERROR-MSG
        DISPLAY ERROR-MSG
        DISPLAY "ステータス:" FILE-STATUS
        STOP RUN
    END-IF

READ SAMPLE-FILE
    AT END
        DISPLAY "読み取り終わり(ステータス10)"
    NOT AT END
        DISPLAY "レコード読み込み成功"
END-READ

CLOSE SAMPLE-FILE
    IF FILE-STATUS NOT = "00"
        DISPLAY "ファイルクローズエラー:" FILE-STATUS
    END-IF.

この例のように、ファイル操作ごとにステータスチェックを入れることで、予期せぬ止まり方を防ぎ、プログラムをより信頼性の高い形で構築できる。読み取り終了やアクセス拒否のような状況を丁寧に区別しながら処理していくことが、エラーの少ないCOBOLプログラムを作る上で大切なポイントである。さらに、ファイル名やパス指定を正しく行うこと、書き込み可能なフォルダへアクセスすること、ファイルを他のアプリが開いたままにしないことなど、細かな確認が習慣化すると、ファイルエラーは驚くほど減っていく。 また初心者の場合、プログラム中にCLOSEを忘れることが非常によくあるが、これはファイルが解放されず次回の実行でエラー91が出る原因になるため、こまめにCLOSEを書く癖をつけることが重要である。こうした基本を着実に積み重ねることで、ファイル入出力の理解が深まり、今後の学習にも大きく役立つ。ファイル操作はCOBOLの根幹ともいえる分野であり、しっかり理解しておけば多くの業務処理にも応用が利くため、繰り返し練習しながら身につけていくことが望ましい。

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

生徒「今日の内容で、エラーの原因がすごくイメージしやすくなりました。とくにステータスコードが役に立つってことがよくわかりました!」

先生「そうですね。ステータスを見れば、どこで問題が起きているのかがほとんど判断できますから、とても便利なんですよ。」

生徒「ファイルの多重オープンとか、読み取り専用フォルダとか、普段気にしていなかったところがエラーの原因になるって知れてよかったです。」

先生「エラーの仕組みがわかると、プログラムの見直しもスムーズになります。実務でも頻繁に役に立ちますよ。」

生徒「CLOSEを書き忘れるだけでもエラーになるのが意外でした。今後はしっかり気をつけます!」

先生「その調子です。こういう細かな積み重ねが、安定したCOBOLプログラムの基礎になりますからね。」

生徒「ファイル入出力が前よりずっと理解しやすくなりました!次のステップも頑張ってみます。」

先生「わからないところがあれば、いつでも一緒に確認していきましょう。」

この記事を読んだ人からの質問

この記事を読んだ人からの質問
この記事を読んだ人からの質問

プログラミング初心者からのよくある疑問/質問を解決します

COBOLでファイル入出力とは何ですか?どんな操作が含まれますか?

COBOLのファイル入出力とは、データファイルを読み込んだり書き込んだりする処理です。具体的には、OPEN、READ、WRITE、CLOSEという命令を使ってファイルを操作します。
カテゴリの一覧へ
新着記事
New1
C#
C#のLINQでAny・Allなど条件確認メソッドの使い方を完全ガイド!初心者でもわかるデータ検証
New2
C#
C#のデフォルト引数と名前付き引数の使い方を解説!初心者でも安心のやさしい入門
New3
C#
C#のオブジェクト初期化子を完全ガイド!初心者でもわかる便利な使い方
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#でswitch式を使う方法!C# 8.0以降の新機能を解説
No.4
Java&Spring記事人気No4
C#
C#のLINQクエリ構文の書き方と基本操作をマスターしよう
No.5
Java&Spring記事人気No5
COBOL
COBOLの数値データ型「PIC 9」の使い方と注意点をやさしく解説!
No.6
Java&Spring記事人気No6
C#
C#の非同期処理とUIスレッドをマスター!WPF/WinFormsでアプリが止まる問題を解決
No.7
Java&Spring記事人気No7
C#
C#のCancellationTokenを使ったキャンセル処理を完全ガイド!非同期処理を安全に止める方法
No.8
Java&Spring記事人気No8
C#
C#のLINQ(リンク)とは?基本概念とデータ操作を初心者向けに徹底解説!