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

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文も覚えて、もっとファイル操作を極めてみたいです!」

先生

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

カテゴリの一覧へ
新着記事
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#でswitch式を使う方法!C# 8.0以降の新機能を解説
No.4
Java&Spring記事人気No4
COBOL
COBOLの数値データ型「PIC 9」の使い方と注意点をやさしく解説!
No.5
Java&Spring記事人気No5
C#
C#のLINQクエリ構文の書き方と基本操作をマスターしよう
No.6
Java&Spring記事人気No6
C#
C#のLINQ(リンク)とは?基本概念とデータ操作を初心者向けに徹底解説!
No.7
Java&Spring記事人気No7
C#
C#のCancellationTokenを使ったキャンセル処理を完全ガイド!非同期処理を安全に止める方法
No.8
Java&Spring記事人気No8
C#
C#の非同期処理とUIスレッドをマスター!WPF/WinFormsでアプリが止まる問題を解決