COBOLのファイル処理とは?初心者でもわかる基本の概念を丁寧に解説!
生徒
「COBOLって、昔のプログラミング言語って聞きましたけど、ファイルを扱えるんですか?」
先生
「もちろんです。COBOLは業務システムでたくさん使われていて、ファイル処理がとても得意な言語なんですよ。」
生徒
「ファイル処理ってどういうことをするんですか?難しそう…」
先生
「大丈夫ですよ!一緒にゆっくり、基本の考え方から見ていきましょう。」
1. ファイル処理って何?
まず、ファイル処理という言葉の意味から確認しましょう。ファイル処理とは、コンピュータの中にある「データが書かれた紙のようなもの」(=ファイル)を読み取ったり、書き込んだり、更新したり、削除したりすることです。
たとえば、学校の出席簿やお店の売上表のようなものがファイルとして保存されていると考えてください。
COBOL(コボル)では、こうした業務用のファイルを取り扱うのが得意なんです。
2. COBOLで扱うファイルの種類
COBOLで扱うファイルには、いくつかの種類がありますが、初心者向けに以下の2つを押さえましょう。
- 順編成ファイル(Sequential File):1行ずつ、順番に読んだり書いたりするファイルです。ノートに1ページずつ書いていくイメージです。
- 相対編成ファイル(Relative File):特定の場所(番号)を指定して読んだり書いたりできるファイルです。例えば、3ページ目だけ読むというような操作ができます。
この記事では、特に基本である順編成ファイル(Sequential File)を中心に紹介します。
3. ファイルを使う前に必要なこと
COBOLでファイルを使うには、準備(定義)が必要です。プログラムの中で、どんなファイルを使うかを決めておく必要があります。
それには、次の3つの段階があります。
- ENVIRONMENT DIVISION:ファイルの名前や、ファイルがどこにあるか(外部情報)を指定します。
- DATA DIVISION:ファイルの中にどんな項目(データ)が入っているかを決めます。
- PROCEDURE DIVISION:ファイルをどう使うか(開く、読む、書く、閉じる)を書きます。
4. ファイルを使った基本的なプログラムの流れ
ファイルを使う基本的な流れは、次のようになります。
- ファイルをOPEN(開く)
- ファイルをREAD(読む)またはWRITE(書く)
- ファイルをCLOSE(閉じる)
それでは、実際にCOBOLのサンプルプログラムを見てみましょう。
5. ファイル読み込みのサンプル
次は、COBOLでファイルからデータを読み込む簡単な例です。
IDENTIFICATION DIVISION.
PROGRAM-ID. FILE-READ-SAMPLE.
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT IN-FILE ASSIGN TO "data.txt"
ORGANIZATION IS LINE SEQUENTIAL.
DATA DIVISION.
FILE SECTION.
FD IN-FILE.
01 IN-RECORD PIC X(50).
WORKING-STORAGE SECTION.
01 END-FLAG PIC X VALUE "N".
88 END-OF-FILE VALUE "Y".
88 NOT-END VALUE "N".
PROCEDURE DIVISION.
OPEN INPUT IN-FILE
PERFORM UNTIL END-OF-FILE
READ IN-FILE
AT END
SET END-OF-FILE TO TRUE
NOT AT END
DISPLAY IN-RECORD
END-READ
END-PERFORM
CLOSE IN-FILE
STOP RUN.
このプログラムでは、「data.txt」というファイルを開き、1行ずつ読み取り、その内容を画面に表示します。
山田 太郎
佐藤 花子
鈴木 一郎
このように、ファイルの中の名前が順番に表示されます。
6. ファイルへの書き込みのサンプル
今度は、ファイルにデータを書き込む例を見てみましょう。
IDENTIFICATION DIVISION.
PROGRAM-ID. FILE-WRITE-SAMPLE.
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT OUT-FILE ASSIGN TO "output.txt"
ORGANIZATION IS LINE SEQUENTIAL.
DATA DIVISION.
FILE SECTION.
FD OUT-FILE.
01 OUT-RECORD PIC X(50).
PROCEDURE DIVISION.
OPEN OUTPUT OUT-FILE
MOVE "田中 裕子" TO OUT-RECORD
WRITE OUT-RECORD
MOVE "高橋 健" TO OUT-RECORD
WRITE OUT-RECORD
CLOSE OUT-FILE
STOP RUN.
田中 裕子
高橋 健
実行後は、このような内容が「output.txt」というファイルに書き込まれます。
7. よく使うCOBOLファイル処理の用語
- OPEN:ファイルを開く。読み取り専用は
OPEN INPUT、書き込み専用はOPEN OUTPUT。 - READ:ファイルから1行ずつデータを読み込む。
- WRITE:ファイルに1行ずつデータを書き込む。
- CLOSE:ファイルを閉じる。最後に必ず使う。
- LINE SEQUENTIAL:ファイルを1行ずつ扱う方式。初心者向けの最も基本的な方法。
- FD:File Description(ファイル記述)。ファイルの中身の形を定義します。
8. ファイル処理で気をつけるポイント
- ファイルは必ずOPENしてから使い、最後にCLOSEする。
- ファイルが存在しない場合や、読み取りの終わりには適切な処理が必要。
- ファイル名の指定ミスや、ファイルのパス(場所)が違うとエラーになるので注意。
- COBOLでは、ファイルの読み書きをきちんと順番通りに行うことが大切。
まとめ
COBOLのファイル処理は、業務システムの中で日常的に使われる重要な技術のひとつです。この記事を通して、「ファイル処理とは何か」から始まり、OPEN、READ、WRITE、CLOSEといった基本的な命令の流れ、またそれらの使い方や書き方をサンプルプログラムとともに学びました。特に、ファイルを扱うためには事前の定義や設定が重要であり、ENVIRONMENT DIVISIONやFILE SECTIONといったCOBOL独特の構成を理解することが、ファイル処理の第一歩となります。
実際のCOBOL開発では、顧客情報の読み込み、請求書の出力、売上記録の追記など、多くの場面でファイル操作が不可欠です。COBOLはそのような大量の業務データを安全かつ安定的に取り扱うために設計されているため、初心者がファイル処理の基本を押さえることは、これからのプログラム学習において非常に価値があります。
ここで改めて、READとWRITEの使い方をシンプルな構成で振り返っておきましょう。読み込みや書き込み処理の書き方の雰囲気を掴んでおくと、他のファイル操作にも応用が利くようになります。
ファイルから読み取る基本構文
OPEN INPUT 顧客ファイル
READ 顧客ファイル
AT END
DISPLAY "データの終わりです"
NOT AT END
DISPLAY 顧客情報
CLOSE 顧客ファイル
ファイルへ書き込む基本構文
OPEN OUTPUT 出力ファイル
MOVE "山田 花子" TO 出力データ
WRITE 出力データ
CLOSE 出力ファイル
COBOLでのファイル処理は、「手続き的に順番を守って書くこと」がとても大切です。OPENしていないファイルをREADしたり、CLOSEを忘れたりすると、エラーの原因になったり、正しくデータが処理されなかったりします。
また、ファイル名やファイルパスが正しく設定されていないと、プログラムがファイルを見つけられずに失敗してしまうこともあります。こうした実務上の注意点を覚えておくことで、トラブルを減らし、安心してCOBOLプログラミングに取り組めるようになります。
最後に、COBOLのファイル処理におけるキーワードは非常に直感的で、OPENは開く、READは読む、WRITEは書く、CLOSEは閉じるというように、日本語と1対1で対応するイメージで覚えることができます。こうした明確な命令は、プログラミング初心者にとって非常に学びやすく、業務系言語としてのCOBOLの魅力のひとつと言えるでしょう。
生徒
「COBOLのファイル処理って、最初は難しそうって思ってましたけど、OPEN・READ・WRITE・CLOSEの流れが分かると案外スムーズですね!」
先生
「そうなんです。COBOLは手順が明確なので、一度流れを掴めば安定したプログラムが書けるようになりますよ。ファイルを開いて、処理して、閉じる。この一連の動作を正確に覚えることが大切です。」
生徒
「あと、ファイルの種類や、LINE SEQUENTIALっていう行単位の読み書きも、実際の業務に使えそうですね!」
先生
「その通りです。たとえば出勤簿や売上ファイルなど、行ごとのデータが多い場面ではとても相性が良いです。次はREADと組み合わせた条件分岐も学んでいきましょうか。」
生徒
「はい!COBOLって業務向けだからこそ、こういう基本をしっかり覚えていきたいですね。」