COBOLのWRITE文の使い方を完全ガイド!初心者でもわかるレコード出力処理
生徒
「先生、COBOLでデータをファイルに書き出す方法ってありますか?」
先生
「はい、COBOLではWRITE文という命令を使って、ファイルにレコードを書き込むことができますよ。」
生徒
「ファイルって、例えばメモ帳で開けるようなものですか?」
先生
「そうですね。COBOLで扱うファイルもテキスト形式で、中身をメモ帳などで見ることができますよ。実際の例で一緒に見ていきましょう!」
1. COBOLのWRITE文とは?
COBOLのWRITE文は、ファイルにレコード(1行のデータ)を書き込むための命令です。たとえば、お客様の情報や商品のデータを、1行ずつファイルに保存するのに使います。
「レコード」とは、簡単にいうと「ひとまとまりの情報」です。たとえば「山田 太郎 30歳」という情報が1つのレコードになります。
2. WRITE文を使った基本構文
まずは、基本的な構文を見てみましょう。
WRITE 出力レコード名
AFTER ADVANCING 1 LINE.
AFTER ADVANCING は改行の指定です。「1 LINE」は1行分の改行という意味です。印刷やレポート形式の出力にも使われます。
3. サンプルプログラムで理解するWRITE文
では、実際に「顧客情報」を1件ずつファイルに書き出すサンプルプログラムを見てみましょう。
IDENTIFICATION DIVISION.
PROGRAM-ID. WRITE-SAMPLE.
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT CUSTOMER-FILE ASSIGN TO "customer.txt"
ORGANIZATION IS LINE SEQUENTIAL.
DATA DIVISION.
FILE SECTION.
FD CUSTOMER-FILE.
01 CUSTOMER-RECORD.
05 CUSTOMER-NAME PIC A(20).
05 CUSTOMER-AGE PIC 99.
WORKING-STORAGE SECTION.
01 WS-NAME PIC A(20) VALUE SPACES.
01 WS-AGE PIC 99 VALUE ZEROS.
PROCEDURE DIVISION.
MAIN-PARA.
MOVE "YAMADA TARO" TO WS-NAME.
MOVE 30 TO WS-AGE.
OPEN OUTPUT CUSTOMER-FILE.
MOVE WS-NAME TO CUSTOMER-NAME.
MOVE WS-AGE TO CUSTOMER-AGE.
WRITE CUSTOMER-RECORD AFTER ADVANCING 1 LINE.
CLOSE CUSTOMER-FILE.
STOP RUN.
この例では、「YAMADA TAROさん(30歳)」のデータを1行のレコードとして customer.txt に出力しています。
4. 実行結果のイメージ
このプログラムを実行すると、customer.txt に以下のような内容が出力されます。
YAMADA TARO 30
20文字分の名前と2桁の年齢が1行で表示されます。
5. 出力する前に必要なOPEN命令
WRITE文を使う前に、ファイルを開く必要があります。それがOPEN OUTPUTという命令です。
OUTPUTは「出力専用」という意味で、「このファイルにデータを書き込みますよ」という宣言です。
書き込みが終わったら、CLOSEで必ずファイルを閉じてください。
6. なぜWRITE文が必要なの?
パソコンでデータを管理するとき、いちいち手作業でメモ帳に書くのは大変ですよね。WRITE文を使えば、COBOLプログラムが自動でファイルにデータを書いてくれます。
銀行や保険会社、役所などの大量の情報も、COBOLとWRITE文で効率的に保存しているんですよ。
7. よくあるミスと対処法
- OPENし忘れ:WRITEの前に必ず
OPEN OUTPUTが必要です。 - データのMOVE忘れ:WORKING-STORAGEの変数を、レコードにMOVEしてからWRITEしましょう。
- ファイル名の間違い:OS上で使用できるファイル名を確認しましょう。
8. ファイル出力の活用シーン
COBOLのWRITE文は、次のような場面でよく使われます:
- 売上データの出力
- 請求書情報の作成
- 顧客情報の保存
- 従業員の勤務記録の出力
実際のビジネスでも非常に重要な役割を果たしている機能です。
9. 書き込みモードの種類
OPEN OUTPUT は、ファイルを新しく作成して書き込むモードです。
すでに同じ名前のファイルがある場合は、上書きされてしまうので注意しましょう。
書き込みモードを間違えると、大切なデータが消えてしまう可能性もあります。