COBOL言語の「MERGE文」の使い方について理解しよう! | 用語辞典
COBOL(コボル)言語の予約語MERGE文を使った命令文の書き方とは
COBOL(コボル)言語のMERGE文とは?
MERGE文は複数のファイルを1つのファイルに結合したい場合に使用します。ファイルのマージはファイルの中から指定した項目を元にマッチングを行い、レコードの並べ替えを実施してファイルに出力します。また、このような結合処理をCOBOLではファイルの併合処理とも言います。
書き方:
MERGE 整列併合用ファイル名
ASCENDING[またはDESCENDING] KEY ソートキー
USING 入力ファイル1 入力ファイル2 …
GIVING 出力ファイル
ソートキーは昇順(小さい順)で指定する場合はASCENDING、降順(大きい順)で指定する場合はDESCENDING を指定します。
整列併合用ファイルはSORT文でも使用するプログラムで処理をする一時ファイルのため、FILE SECTIONではSD句を指定して定義します。
この例では2つの入力ファイルと結合した結果を出力するファイル、整列併合用ファイルをそれぞれ定義しています。
MERGE文のCOBOL(コボル)言語における基本事項やルールについて
- 「MERGE 整列併合用ファイル」などの間の空白や改行は、自由に設定できます。
- ファイルを結合する場合は結合元のファイルを2つ以上指定する必要があります。
- 整列併合用ファイルはSD句で指定します。
- 入力ファイルにはソートをするためのキーを記述する必要があります。
- 出力ファイルには入力ファイルのレコード分のサイズを指定する必要があります。
- 整列併合用ファイルのレコードサイズは入力ファイルのサイズを指定する必要があります。
- USING 入力ファイル1 入力ファイル2の順序は任意で指定できます。
COBOL(コボル)言語のMERGE文を扱う上での注意点
- 整列併合用ファイルに対して入出力処理を実行することはできません。
- 結合対象の入力ファイルはソートキー順に記述しなければいけません。
MERGE文を使ったCOBOL(コボル)プログラムの活用法
MERGE文はファイルの内容を1つのファイルに結合したいときに非常に便利です。例えば、月ごとの売上ファイルを降順・昇順を指定して年間の売上として1つのファイルに纏めたいときなどに使用することができます。ここでは3つのファイルを、MERGE文を使用して1つのファイルに結合するサンプルを紹介します。
結合用ファイルはそれぞれ以下のように定義します。
Input1.txt-----------
00001APPLE
----------------------
Input2.txt-----------
00002ORANGE
----------------------
Input3.txt-----------
00003MELON
----------------------
- IDENTIFICATION DIVISION.
- PROGRAM-ID. MERGE_SAMPLE01.
- ENVIRONMENT DIVISION.
- INPUT-OUTPUT SECTION.
- FILE-CONTROL.
- SELECT INPUT-FILE1 ASSIGN TO 'input1.txt' *>マージ用ファイル1
- ORGANIZATION IS LINE SEQUENTIAL
- STATUS IS IN-FIlE-STATUS.
- SELECT INPUT-FILE2 ASSIGN TO 'input2.txt' *>マージ用ファイル2
- ORGANIZATION IS LINE SEQUENTIAL
- STATUS IS IN-FIlE-STATUS.
- SELECT INPUT-FILE3 ASSIGN TO 'input3.txt' *>マージ用ファイル3
- ORGANIZATION IS LINE SEQUENTIAL
- STATUS IS IN-FIlE-STATUS.
- SELECT OUTPUT-FILE ASSIGN TO 'output.txt' *>結合用ファイル
- ORGANIZATION IS LINE SEQUENTIAL.
- SELECT MERGE-FILE ASSIGN TO 'merge.wak'. *>整列併合用ファイル
- DATA DIVISION.
- FILE SECTION.
- FD INPUT-FILE1.
- 01 INPUT-RECORD.
- 05 MERGE-KEY PIC 9(5).
- 05 ITEM PIC X(10).
- FD INPUT-FILE2.
- 01 INPUT-RECORD.
- 05 MERGE-KEY PIC 9(5).
- 05 ITEM PIC X(10).
- FD INPUT-FILE3.
- 01 INPUT-RECORD.
- 05 MERGE-KEY PIC 9(5).
- 05 ITEM PIC X(10).
- FD OUTPUT-FILE.
- 01 OUTPUT-RECORD PIC X(15).
- SD MERGE-FILE.
- 01 MERGE-RECORD.
- 05 SORT-KEY PIC 9(5).
- 05 SORT-DATA PIC X(10).
- WORKING-STORAGE SECTION.
- 01 IN-FILE-STATUS PIC XX.
- PROCEDURE DIVISION.
- OPEN INPUT INPUT-FILE1.
- OPEN INPUT INPUT-FILE2.
- OPEN INPUT INPUT-FILE3.
- MERGE MERGE-FILE
- ASCENDING KEY SORT-KEY
- USING INPUT-FILE1 INPUT-FILE2 INPUT-FILE3
- GIVING OUTPUT-FILE.
- CLOSE INPUT-FILE1.
- CLOSE INPUT-FILE2.
- CLOSE INPUT-FILE3.
- DISPLAY "プログラム終了".
- STOP RUN.
実行結果(output.txt):
このプログラムでは3つの入力ファイルinput1~input3.txtを定義し、MERGE文を使用して入力ファイルを結合しています。ファイルを結合するときは結合した結果を出力するファイルとソート用の整列併合用ファイルを必ず指定する必要があります。ここでは出力ファイルをoutput.txt、整列併合用ファイルをmerge.wakとして定義しています。
出力ファイルはMERGE処理後に自動で作成されますので、実際にファイルを作成する必要はありません。また、整列併合用ファイルも上述したように、プログラムでのみ使用する実体の無いファイルですので作成しておく必要はありません。
今回ご紹介したMERGE文のように、複数のファイルを1つのファイルに結合する処理はよく使われますので、基本をしっかりと理解しておきましょう。
この記事を読んだ人は、こちらの記事も読んでいます
あなたのCOBOL技術を活かしませんか?
COBOL入門のカテゴリー
1. 優良社員が多数在籍しています
2. 即日派遣、又は請負います
3. 安心価格で請負います
4. 同時、協力会社募集中です
1. 正社員
2. 契約社員
3. 個人事業主
などの 求人情報 が閲覧できます。
目指せ!COBOLダントツ一番企業。
創業当初の話や理念が閲覧できます。
応募条件
※2020年5月31日を以って、締切りました。
18歳~28歳の方。
正社員採用において、北川社長の著書『祈り方が9割』を読んで感想文を事前に提出すると、無条件で最終面接まで進むことができます。
COBOLとは、どのようなプログラミング言語なのか、初心者にもわかりやすく、文法の例をあげて解説してます。
COBOL入門の人気記事
- COBOL言語とは?プログラムの書き方やルールを解説!|基礎ガイド
- 【COBOL言語】条件分岐処理の代名詞「IF文」について知ろう|用語辞典
- COBOL言語の「MOVE文」とは?転記のルールをご紹介します|用語辞典
- COBOL言語の「STRING文」とは?文字連結の基礎知識と注意点|用語辞典
- 多枝分岐ってなに?COBOL言語の「EVALUATE文」を知ろう!|用語辞典
- COBOL言語の「PICTURE句」とは?基本事項を解説します!|用語辞典
- COBOL言語で計算処理をするなら「COMPUTE文」|用語辞典
- COBOL言語の「REDEFINES句」とは?使い方を確認しよう!|用語辞典
- 覚えておけば楽ができる?COBOL言語の「COPY文」の使い方|用語辞典
- COBOL言語の文字列操作のパターンを理解しよう!|基礎ガイド
- COBOL言語の初期化処理に重宝する「INITIALIZE文」とは?|用語辞典
- COBOL言語の「LOW-VALUE」の使い方について理解しよう!|基礎ガイド
- COBOL言語の「OCCURS句」について知ろう!学ぶべき基本とは|用語辞典
- COBOL言語初心者も安心! 難解「CALL文」をスッキリ解決|用語辞典
- COBOL言語の「PERFORM文」とは。実行制御について解説!|用語辞典
- COBOL言語の繰り返し処理のパターンを理解しよう!|基礎ガイド
- COBOL言語の「定数」の種類と使い方について理解しよう!|用語辞典
- COBOLのDBアクセスパターンを学ぼう!「FETCH」|応用ガイド
- COBOL言語の「DISPLAY文」は、ディスプレイ出力の為にある|用語辞典
- COBOL言語の「VARYING句」は便利?使用方法を学びましょう|用語辞典