カテゴリ: COBOL 更新日: 2025/11/07

COBOLのCORRESPONDING句を徹底解説!初心者でもわかる同名項目のまとめ処理

CORRESPONDING句で同名項目をまとめて処理する方法
CORRESPONDING句で同名項目をまとめて処理する方法

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

生徒

「先生、COBOLで同じ名前のデータ項目をまとめて処理したいんですが、1つずつ書くのが面倒です。」

先生

「いいところに気づきましたね。そんなときに便利なのが、CORRESPONDING句(コレスポンディング句)です。」

生徒

「コレスポンディング句?それは何をしてくれるんですか?」

先生

「同じ名前を持つ項目を自動的に対応させて、一括で加算や代入ができる便利な機能なんですよ。それでは、実際の使い方を見てみましょう!」

1. CORRESPONDING句とは?

1. CORRESPONDING句とは?
1. CORRESPONDING句とは?

CORRESPONDING句(略してCORRとも書けます)は、COBOLの中で「同じ名前を持つ項目を自動的に対応させて処理する」ための命令です。 たとえば、2つのグループ項目(データのまとまり)があり、その中に同じ名前の変数が含まれているとき、それらをまとめて移動(MOVE)したり、加算(ADD)したりできます。

プログラミング初心者の方にもわかりやすく言うと、「同じ名前の箱の中身を自動でコピーしてくれる仕組み」です。1つずつ書かなくても、COBOLが勝手に対応を見つけてくれるのです。

2. CORRESPONDING句の基本構文

2. CORRESPONDING句の基本構文
2. CORRESPONDING句の基本構文

CORRESPONDING句は、主にMOVE文とADD文で使われます。構文はとてもシンプルです。


MOVE CORRESPONDING グループA TO グループB
ADD CORRESPONDING グループX TO グループY

意味:

  • MOVEの場合:グループAとグループBの中で「同じ名前の項目」を見つけ、Aの値をBにコピーします。
  • ADDの場合:グループXとグループYの中で「同じ名前の項目」を見つけ、Xの値をYに加えます。

3. MOVE CORRESPONDINGの実例

3. MOVE CORRESPONDINGの実例
3. MOVE CORRESPONDINGの実例

まずは、MOVE CORRESPONDINGを使って、同名項目をまとめてコピーする例を見てみましょう。


IDENTIFICATION DIVISION.
PROGRAM-ID. MOVE-CORR-DEMO.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 GROUP-A.
   05 NAME       PIC A(10) VALUE "TANAKA".
   05 AGE        PIC 9(2)  VALUE 25.
   05 ADDRESS    PIC A(20) VALUE "TOKYO".

01 GROUP-B.
   05 NAME       PIC A(10) VALUE SPACES.
   05 AGE        PIC 9(2)  VALUE 0.
   05 ADDRESS    PIC A(20) VALUE SPACES.
   05 PHONE      PIC 9(10) VALUE 0.

PROCEDURE DIVISION.
    MOVE CORRESPONDING GROUP-A TO GROUP-B.
    DISPLAY "名前:" NAME OF GROUP-B.
    DISPLAY "年齢:" AGE OF GROUP-B.
    DISPLAY "住所:" ADDRESS OF GROUP-B.
    DISPLAY "電話:" PHONE OF GROUP-B.
    STOP RUN.

このプログラムの実行結果は次のようになります。


    名前:TANAKA
    年齢:25
    住所:TOKYO
    電話:0000000000

GROUP-AGROUP-Bの中で「同じ名前(NAME・AGE・ADDRESS)」の項目だけが自動的にコピーされています。 電話番号(PHONE)はGROUP-Aには存在しないため、移動されません。

4. ADD CORRESPONDINGの実例

4. ADD CORRESPONDINGの実例
4. ADD CORRESPONDINGの実例

ADD CORRESPONDINGを使うと、同じ名前の数値項目をまとめて加算できます。銀行の残高や集計処理などでよく使われます。


IDENTIFICATION DIVISION.
PROGRAM-ID. ADD-CORR-DEMO.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 SALES-MONTH1.
   05 ITEM-A PIC 9(5) VALUE 100.
   05 ITEM-B PIC 9(5) VALUE 200.
   05 ITEM-C PIC 9(5) VALUE 300.

01 SALES-MONTH2.
   05 ITEM-A PIC 9(5) VALUE 400.
   05 ITEM-B PIC 9(5) VALUE 500.
   05 ITEM-C PIC 9(5) VALUE 600.

PROCEDURE DIVISION.
    ADD CORRESPONDING SALES-MONTH1 TO SALES-MONTH2.
    DISPLAY "1月と2月の合計売上:".
    DISPLAY "商品A:" ITEM-A OF SALES-MONTH2.
    DISPLAY "商品B:" ITEM-B OF SALES-MONTH2.
    DISPLAY "商品C:" ITEM-C OF SALES-MONTH2.
    STOP RUN.

実行結果は次のようになります。


    1月と2月の合計売上:
    商品A:500
    商品B:700
    商品C:900

このように、同名項目が自動で対応づけられて加算されます。 個別に「ADD ITEM-A OF SALES-MONTH1 TO ITEM-A OF SALES-MONTH2」と書く必要がなくなります。

5. CORRESPONDING句のルールと注意点

5. CORRESPONDING句のルールと注意点
5. CORRESPONDING句のルールと注意点

とても便利なCORRESPONDING句ですが、使うときはいくつかのルールと注意点があります。

  • 同じ階層(レベル番号)の項目でなければ一致しません。
  • 名前が完全に一致している項目だけが対象になります(スペル違いもNG)。
  • 項目の型(数値か文字か)が異なると正しく動作しません。
  • REDEFINESOCCURSを含む項目には注意が必要です。

特に、現場のCOBOLシステムでは、変数名に少しの違い(例:TOTAL-AMTとTOTAL-AMOUNT)があるだけで対応できないことがあるため、設計段階から命名規則を統一しておくことが重要です。

6. CORRの省略形について

6. CORRの省略形について
6. CORRの省略形について

COBOLでは、CORRESPONDINGを短くしてCORRと書くことができます。意味はまったく同じです。


MOVE CORR GROUP-A TO GROUP-B
ADD CORR SALES-MONTH1 TO SALES-MONTH2

プログラムの可読性(読みやすさ)を重視する場合は、CORRESPONDINGと書くほうがわかりやすいですが、短くしたいときはCORRを使っても問題ありません。

7. まとめて処理できる便利さ

7. まとめて処理できる便利さ
7. まとめて処理できる便利さ

CORRESPONDING句の最大のメリットは、「同名項目を一括で処理できる」ということです。これにより、プログラムがスッキリして読みやすくなり、入力ミスも減らせます。

特に、給与計算・売上集計・データ移行などのように、同じ構造のデータを扱う業務システムでは非常に役立ちます。 COBOLの強力な特徴である「構造化されたデータ操作」を活かす代表的な機能のひとつと言えるでしょう。

カテゴリの一覧へ
新着記事
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
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でアプリが止まる問題を解決