カテゴリ: COBOL 更新日: 2026/02/02

COBOLのWRITE文の使い方を完全ガイド!初心者でもわかるレコード出力処理

WRITE文を使ったレコードの出力処理
WRITE文を使ったレコードの出力処理

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

生徒

「先生、COBOLでデータをファイルに書き出す方法ってありますか?」

先生

「はい、COBOLではWRITE文という命令を使って、ファイルにレコードを書き込むことができますよ。」

生徒

「ファイルって、例えばメモ帳で開けるようなものですか?」

先生

「そうですね。COBOLで扱うファイルもテキスト形式で、中身をメモ帳などで見ることができますよ。実際の例で一緒に見ていきましょう!」

1. COBOLのWRITE文とは?

1. COBOLのWRITE文とは?
1. COBOLのWRITE文とは?

COBOLのWRITE文は、ファイルにレコード(1行のデータ)を書き込むための命令です。たとえば、お客様の情報や商品のデータを、1行ずつファイルに保存するのに使います。

「レコード」とは、簡単にいうと「ひとまとまりの情報」です。たとえば「山田 太郎 30歳」という情報が1つのレコードになります。

2. WRITE文を使った基本構文

2. WRITE文を使った基本構文
2. WRITE文を使った基本構文

まずは、基本的な構文を見てみましょう。


WRITE 出力レコード名
    AFTER ADVANCING 1 LINE.

AFTER ADVANCING は改行の指定です。「1 LINE」は1行分の改行という意味です。印刷やレポート形式の出力にも使われます。

3. サンプルプログラムで理解するWRITE文

3. サンプルプログラムで理解するWRITE文
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. 実行結果のイメージ

4. 実行結果のイメージ
4. 実行結果のイメージ

このプログラムを実行すると、customer.txt に以下のような内容が出力されます。


YAMADA TARO         30

20文字分の名前と2桁の年齢が1行で表示されます。

5. 出力する前に必要なOPEN命令

5. 出力する前に必要なOPEN命令
5. 出力する前に必要なOPEN命令

WRITE文を使う前に、ファイルを開く必要があります。それがOPEN OUTPUTという命令です。

OUTPUTは「出力専用」という意味で、「このファイルにデータを書き込みますよ」という宣言です。

書き込みが終わったら、CLOSEで必ずファイルを閉じてください。

6. なぜWRITE文が必要なの?

6. なぜWRITE文が必要なの?
6. なぜWRITE文が必要なの?

パソコンでデータを管理するとき、いちいち手作業でメモ帳に書くのは大変ですよね。WRITE文を使えば、COBOLプログラムが自動でファイルにデータを書いてくれます。

銀行や保険会社、役所などの大量の情報も、COBOLとWRITE文で効率的に保存しているんですよ。

7. よくあるミスと対処法

7. よくあるミスと対処法
7. よくあるミスと対処法
  • OPENし忘れ:WRITEの前に必ずOPEN OUTPUTが必要です。
  • データのMOVE忘れ:WORKING-STORAGEの変数を、レコードにMOVEしてからWRITEしましょう。
  • ファイル名の間違い:OS上で使用できるファイル名を確認しましょう。

8. ファイル出力の活用シーン

8. ファイル出力の活用シーン
8. ファイル出力の活用シーン

COBOLのWRITE文は、次のような場面でよく使われます:

  • 売上データの出力
  • 請求書情報の作成
  • 顧客情報の保存
  • 従業員の勤務記録の出力

実際のビジネスでも非常に重要な役割を果たしている機能です。

9. 書き込みモードの種類

9. 書き込みモードの種類
9. 書き込みモードの種類

OPEN OUTPUT は、ファイルを新しく作成して書き込むモードです。

すでに同じ名前のファイルがある場合は、上書きされてしまうので注意しましょう。

書き込みモードを間違えると、大切なデータが消えてしまう可能性もあります。

まとめ

まとめ
まとめ

COBOLにおけるWRITE文は、業務システムで頻繁に登場する重要な命令の一つです。今回の記事では、ファイル出力の基本から具体的なサンプルプログラムまでを通して、レコードをファイルに書き出す方法を丁寧に解説しました。特に、「OPEN OUTPUT」でファイルを開いてから「WRITE」で書き込み、「CLOSE」で閉じるという一連の流れがCOBOLのファイル処理では不可欠です。

また、WORKING-STORAGEの変数にデータを準備し、MOVE文でファイルレコード定義に値をコピーする工程も非常に大切です。初心者のうちはMOVEOPENの抜け漏れが原因で正しく出力されないことも多いので、今回紹介した「手順を守る」姿勢がエラーを防ぐ最大のポイントになるでしょう。

以下に、この記事の内容をもとにしたシンプルなファイル出力のCOBOLプログラム例をまとめておきます。


       IDENTIFICATION DIVISION.
       PROGRAM-ID. OUTPUT-DEMO.
       ENVIRONMENT DIVISION.
       INPUT-OUTPUT SECTION.
       FILE-CONTROL.
           SELECT EMP-FILE ASSIGN TO "employee.txt"
               ORGANIZATION IS LINE SEQUENTIAL.

       DATA DIVISION.
       FILE SECTION.
       FD  EMP-FILE.
       01  EMP-RECORD.
           05  EMP-NAME     PIC A(20).
           05  EMP-ID       PIC 9(4).

       WORKING-STORAGE SECTION.
       01  WS-NAME         PIC A(20) VALUE "SUZUKI HANAKO".
       01  WS-ID           PIC 9(4) VALUE 1001.

       PROCEDURE DIVISION.
           OPEN OUTPUT EMP-FILE
           MOVE WS-NAME TO EMP-NAME
           MOVE WS-ID TO EMP-ID
           WRITE EMP-RECORD AFTER ADVANCING 1 LINE
           CLOSE EMP-FILE
           STOP RUN.

この例では、「SUZUKI HANAKO」という名前と社員ID「1001」を1レコードとしてemployee.txtに出力します。WRITE文は、ファイルに対して人の代わりに記録を残すための手段であり、COBOLの強力な機能の一つです。

書き込み後のファイル内容は以下のようになります。


SUZUKI HANAKO       1001

今後、顧客情報や売上データなど実務で扱う多くのデータを効率的にファイル出力するためには、WRITE文の基本を理解していることが前提となります。この記事を通じて、ファイルの扱い方を身につける第一歩となったことでしょう。

ファイル名のスペル、レコードの定義、MOVE漏れ、OPENやCLOSEの忘れなど、細かい部分に注意を払いながらプログラムを書く習慣が大切です。ファイル出力のミスは業務への影響が大きいため、基礎をしっかりと身につけることで信頼される開発者に近づけるはずです。

最後にもう一度確認しておきたいポイント:

  • WRITE文は1レコードずつファイルへ出力する
  • 出力の前に必ずOPEN OUTPUTでファイルを開く
  • データはMOVEで正しくレコードに反映させる
  • 書き込み後は必ずCLOSEでファイルを閉じる
  • ファイルの指定はOSに合った名前で

WRITE文は地味に見えても、COBOLのシステムにおいて非常に重要な役割を担っています。正しく使えるようになれば、COBOLプログラムの幅が一気に広がることでしょう。

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

生徒

「WRITE文って、すごく大事なんですね。ファイルに書き出すって意外と簡単でした!」

先生

「そうですね。ポイントを押さえれば難しくありません。特に、OPENとMOVEの順番を意識できていましたか?」

生徒

「最初はMOVEを忘れて空っぽのレコードが出力されちゃって…でも原因がわかってからはすぐ直せました!」

先生

「素晴らしい経験ですね。エラーに気づけるのも大切なスキルですよ」

生徒

「それに、銀行や保険でも使われてるって知って、責任のある処理なんだと感じました」

先生

「その通りです。だからこそ、基本の書き方をしっかりマスターして、安心して任せられるプログラムを目指しましょうね」

生徒

「はい!次はREWRITE文やDELETE文も覚えて、もっとファイル操作を極めてみたいです!」

先生

「いい意気込みですね。着実にステップアップしていきましょう」

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

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

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

COBOLのWRITE文とはどんな役割がありますか?

COBOLのWRITE文は、レコードと呼ばれる1行のデータをファイルに書き込むための命令です。顧客情報や売上データなどをテキスト形式で保存する際に使用されます。
カテゴリの一覧へ
新着記事
New1
C#
C#のメモリ管理とガーベジコレクションの基礎を理解しよう
New2
C#
C#の参照型と値型の違いを初心者向けにやさしく解説!
New3
C#
C#のクエリ式とメソッド式の書き換え方を完全ガイド!LINQの2つの書き方をマスター
New4
C#
C#の戻り値にタプルを使う方法!複数の値を返すテクニック
人気記事
No.1
Java&Spring記事人気No1
C#
C#で文字列が数値か判定する方法を解説!char.IsDigitやTryParseの基本
No.2
Java&Spring記事人気No2
C#
C#のLINQでOrderByを使った並び替えを完全ガイド!初心者でもわかるソート方法
No.3
Java&Spring記事人気No3
C#
C#のpartialクラスとは?初心者でも理解できるクラス分割の基本
No.4
Java&Spring記事人気No4
C#
C#のrefとoutキーワードとは?引数の参照渡しを理解しよう
No.5
Java&Spring記事人気No5
COBOL
COBOLの数値データ型「PIC 9」の使い方と注意点をやさしく解説!
No.6
Java&Spring記事人気No6
C#
C#の引数と戻り値の基本!値を受け渡し・返す仕組みを理解しよう
No.7
Java&Spring記事人気No7
C#
C#のラムダ式の書き方と構文を初心者向けに完全解説
No.8
Java&Spring記事人気No8
C#
C#で型を調べる方法!GetType()・typeof演算子の違いと使い方