COBOL言語の「MERGE文」の使い方について理解しよう! | 用語辞典

COBOL(コボル)言語の予約語MERGE文を使った命令文の書き方とは

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

COBOL(コボル)言語のMERGE文とは?

MERGE文は複数のファイルを1つのファイルに結合したい場合に使用します。ファイルのマージはファイルの中から指定した項目を元にマッチングを行い、レコードの並べ替えを実施してファイルに出力します。また、このような結合処理をCOBOLではファイルの併合処理とも言います。

書き方:

MERGE 整列併合用ファイル名

  ASCENDING[またはDESCENDING] KEY ソートキー

  USING 入力ファイル1 入力ファイル2 …

  GIVING 出力ファイル

ソートキーは昇順(小さい順)で指定する場合はASCENDING、降順(大きい順)で指定する場合はDESCENDING を指定します。

整列併合用ファイルはSORT文でも使用するプログラムで処理をする一時ファイルのため、FILE SECTIONではSD句を指定して定義します。

辞典・辞書-MERGE-書き方

この例では2つの入力ファイルと結合した結果を出力するファイル、整列併合用ファイルをそれぞれ定義しています。

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

  1. 「MERGE 整列併合用ファイル」などの間の空白や改行は、自由に設定できます。
  2. ファイルを結合する場合は結合元のファイルを2つ以上指定する必要があります。
  3. 整列併合用ファイルはSD句で指定します。
  4. 入力ファイルにはソートをするためのキーを記述する必要があります。
  5. 出力ファイルには入力ファイルのレコード分のサイズを指定する必要があります。
  6. 整列併合用ファイルのレコードサイズは入力ファイルのサイズを指定する必要があります。
  7. USING 入力ファイル1 入力ファイル2の順序は任意で指定できます。

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

  1. 整列併合用ファイルに対して入出力処理を実行することはできません。
  2. 結合対象の入力ファイルはソートキー順に記述しなければいけません。

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

MERGE文はファイルの内容を1つのファイルに結合したいときに非常に便利です。例えば、月ごとの売上ファイルを降順・昇順を指定して年間の売上として1つのファイルに纏めたいときなどに使用することができます。ここでは3つのファイルを、MERGE文を使用して1つのファイルに結合するサンプルを紹介します。

結合用ファイルはそれぞれ以下のように定義します。

Input1.txt-----------

00001APPLE

----------------------

Input2.txt-----------

00002ORANGE

----------------------

Input3.txt-----------

00003MELON

----------------------

   
  1. IDENTIFICATION DIVISION.
  2. PROGRAM-ID. MERGE_SAMPLE01.
  3. ENVIRONMENT DIVISION.
  4. INPUT-OUTPUT SECTION.
  5. FILE-CONTROL.
  6. SELECT INPUT-FILE1 ASSIGN TO 'input1.txt' *>マージ用ファイル1
  7. ORGANIZATION IS LINE SEQUENTIAL
  8. STATUS IS IN-FIlE-STATUS.
  9. SELECT INPUT-FILE2 ASSIGN TO 'input2.txt' *>マージ用ファイル2
  10. ORGANIZATION IS LINE SEQUENTIAL
  11. STATUS IS IN-FIlE-STATUS.
  12. SELECT INPUT-FILE3 ASSIGN TO 'input3.txt' *>マージ用ファイル3
  13. ORGANIZATION IS LINE SEQUENTIAL
  14. STATUS IS IN-FIlE-STATUS.
  15. SELECT OUTPUT-FILE ASSIGN TO 'output.txt' *>結合用ファイル
  16. ORGANIZATION IS LINE SEQUENTIAL.
  17. SELECT MERGE-FILE ASSIGN TO 'merge.wak'. *>整列併合用ファイル
  18. DATA DIVISION.
  19. FILE SECTION.
  20. FD INPUT-FILE1.
  21. 01 INPUT-RECORD.
  22. 05 MERGE-KEY PIC 9(5).
  23. 05 ITEM PIC X(10).
  24. FD INPUT-FILE2.
  25. 01 INPUT-RECORD.
  26. 05 MERGE-KEY PIC 9(5).
  27. 05 ITEM PIC X(10).
  28. FD INPUT-FILE3.
  29. 01 INPUT-RECORD.
  30. 05 MERGE-KEY PIC 9(5).
  31. 05 ITEM PIC X(10).
  32. FD OUTPUT-FILE.
  33. 01 OUTPUT-RECORD PIC X(15).
  34.  
  35. SD MERGE-FILE.
  36. 01 MERGE-RECORD.
  37. 05 SORT-KEY PIC 9(5).
  38. 05 SORT-DATA PIC X(10).
  39. WORKING-STORAGE SECTION.
  40. 01 IN-FILE-STATUS PIC XX.
  41. PROCEDURE DIVISION.
  42. OPEN INPUT INPUT-FILE1.
  43. OPEN INPUT INPUT-FILE2.
  44. OPEN INPUT INPUT-FILE3.
  45.  
  46. MERGE MERGE-FILE
  47. ASCENDING KEY SORT-KEY
  48. USING INPUT-FILE1 INPUT-FILE2 INPUT-FILE3
  49. GIVING OUTPUT-FILE.
  50.  
  51. CLOSE INPUT-FILE1.
  52. CLOSE INPUT-FILE2.
  53. CLOSE INPUT-FILE3.
  54.  
  55. DISPLAY "プログラム終了".
  56.  
  57. STOP RUN.

実行結果(output.txt):

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

このプログラムでは3つの入力ファイルinput1~input3.txtを定義し、MERGE文を使用して入力ファイルを結合しています。ファイルを結合するときは結合した結果を出力するファイルとソート用の整列併合用ファイルを必ず指定する必要があります。ここでは出力ファイルをoutput.txt、整列併合用ファイルをmerge.wakとして定義しています。

出力ファイルはMERGE処理後に自動で作成されますので、実際にファイルを作成する必要はありません。また、整列併合用ファイルも上述したように、プログラムでのみ使用する実体の無いファイルですので作成しておく必要はありません。

今回ご紹介したMERGE文のように、複数のファイルを1つのファイルに結合する処理はよく使われますので、基本をしっかりと理解しておきましょう。

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

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

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

COBOL入門のカテゴリー

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