COBOL言語初心者でも安心! 難解「CORRESPONDING句」を解説 | 用語辞典

COBOL(コボル)言語のCORRESPONDING句とは?

辞典・辞書-CORRESPONDING-イメージ

COBOL(コボル)言語のCORRESPONDING句とは?

CORRESPONDING句は、集団項目間で対応した項目に対して加算や減算、転記するときに使用します。ADD文(加算)、SUBTRACT文(減算)、MOVE文(転記)で使用することができます。

CORRESPONDING句は使用時に省略形でCORRと記述できます。

本記事では、COBOLにおけるCORRESPONDING句について基本的な使い方やルール、注意点などをご紹介します。

CORRESPONDING句は、仕組みを理解しておけば非常に便利ですので、ぜひ基本を覚えておきましょう。

書き方:ADD文

ADD CORRESPONDING 加算元集団項目 TO 加算先集団項目.

ADD CORR 加算元集団項目 TO 加算先集団項目.

書き方:SUBTRACT文

SUBTRACT CORRESPONDING 減算元集団項目 FROM 減算先集団項目.

SUBTRACT CORR 減算元集団項目 FROM 減算先集団項目.

書き方:MOVE文

MOVE CORRESPONDING 転記元集団項目 TO 転記先集団項目.

MOVE CORR 転記元集団項目 TO 転記先集団項目.

使用例:

以下にCORRESPONDING句を使用して、集団項目間で転記を行う簡単なサンプルプログラムを紹介します。

辞典・辞書-CORRESPONDING-使用例

実行結果:

辞典・辞書-CORRESPONDING-実行結果

サンプルでは、集団項目WORK-GROUP-1配下の基本項目に対して、MOVE文で値の転記を行い、CORRESPONDING句の省略形CORRを使用してMOVE文で集団項目WORK-GROUP-2に転記しています。

CORRESPONDING句のCOBOL(コボル)言語における基本事項やルールについて

  1. CORRESPONDINGとCORRは、どちらを指定してもかまいません。
  2. CORRESPONDING句を使用すれば、1つの文でいくつもの対応した加算・減算・転記が可能です。
  3. ADD・SUBTRACT・MOVE文と、CORR、集団項目などの各要素間の改行有無は自由に設定できます。
  4. ADD・SUBTRACT文は値とその設定するデータ項目には、数字のデータ項目を指定する必要があります。
  5. ADD・SUBTRACT・MOVE文で転記する対象の項目が存在しない場合は、転記は行われません。

COBOL(コボル)言語のCORRESPONDING句を扱う上での注意点

  1. 転記元と転記先の項目には、必ず集団項目を指定しなければいけません。
  2. CORRESPONDING句は集団項目の内容が全て転記されるわけではありません。同じ名称の基本項目でも数値形式、英数字形式など、データ型の種類が異なると転記は行いません。

以下のように同じ名称の基本項目でも、集団項目WORK-GROUP-1の基本項目WORK-ITEM-1が英数字形式、集団項目WORK-GROUP-2の基本項目WORK-ITEM-1が数値形式の場合、WORK-ITEM-1の転記は行われません。

   
  1. 01 WORK-AREA.
  2. 03 WORK-GROUP-1.
  3. 05 WORK-ITEM-1 PIC X(5).
  4. 05 WORK-ITEM-2 PIC X(6).
  5.  
  6. 03 WORK-GROUP-2.
  7. 05 WORK-ITEM-1 PIC 9(3).
  8. 05 WORK-ITEM-2 PIC X(6).
  9.  
  10. ~省略~
  11.  
  12. MOVE CORR WORK-GROUP-1 TO WORK-GROUP-2.

CORRESPONDING句を使ったCOBOL(コボル)プログラムの活用法

CORRESPONDING句を使用すれば、集団項目間で加算・減算・転記ができるので、さまざまな用途で活用することができます。

例えば、集団項目1に既定値などの元となる値を設定しておき、集団項目2に対して集団項目1の値を加味した計算を行う場合などに使用することもできます。

以下にCORRESPONDING句を使用して、値の合計値を計算する簡単なサンプルを紹介します。

   
  1. IDENTIFICATION DIVISION.
  2. PROGRAM-ID. CORRESPONDING_SAMPLE02.
  3.  
  4. ENVIRONMENT DIVISION.
  5. CONFIGURATION SECTION.
  6. DATA DIVISION.
  7. WORKING-STORAGE SECTION.
  8. 01 WORK-AREA.
  9. 03 WORK-GROUP-1.
  10. 05 WORK-NUM-1 PIC 9(3) VALUE 100.
  11. 05 WORK-NUM-2 PIC 9(3) VALUE 200.
  12.  
  13. 03 WORK-GROUP-2.
  14. 05 WORK-NUM-1 PIC 9(4).
  15. 05 WORK-NUM-2 PIC 9(4).
  16. 05 WORK-SUM PIC 9(4).
  17.  
  18. PROCEDURE DIVISION.
  19. MAIN SECTION.
  20.  
  21. *> 値を設定する
  22. MOVE 1000 TO WORK-NUM-1 OF WORK-GROUP-2.
  23. MOVE 2000 TO WORK-NUM-2 OF WORK-GROUP-2.
  24.  
  25. *> 集団項目に加算する
  26. ADD CORR WORK-GROUP-1 TO WORK-GROUP-2.
  27.  
  28. DISPLAY "WORK-GROUP-1: "WORK-GROUP-1.
  29. DISPLAY "WORK-GROUP-2: "WORK-GROUP-2.
  30.  
  31. *> 合計値を取得する
  32. COMPUTE WORK-SUM = WORK-NUM-1 OF WORK-GROUP-2 + WORK-NUM-2 OF WORK-GROUP-2.
  33.  
  34. DISPLAY "合計: "WORK-SUM.
  35.  
  36. STOP RUN.

実行結果:

辞典・辞書-CORRESPONDING-実行結果

このサンプルでは、集団項目WORK-GROUP-1の基本項目に対してVALUE句で初期値を設定しておき、集団項目WORK-GROUP-2の基本項目には別の値を設定しています。

次にCORRESPONDING句を使用して、集団項目WORK-GROUP-1の値をWORK-GROUP-2にADD文で加算を行っています。

この時点で、集団項目WORK-GROUP-2には、設定していた基本項目にWORK-GROUP-1の基本項目の値が加算されています。

最後にCOMPUTE文を使用して、基本項目WORK-SUMに合計値を取得しています。

このように集団項目に値を設定しておけば、その集団項目をベースにCORRESPONDING句を使用して、集団項目間でさまざまな計算を行うことも可能になります。

この記事を読んだ人は、こちらの記事も読んでいます

【未経験者歓迎】COBOLプログラマー・システムエンジニアの募集

株式会社COBOLの求人・転職・募集情報を見る

COBOL入門のカテゴリー

取引企業様 募集中
COBOL技術者 募集
COBOL魂
読者採用
COBOL入門