COBOL言語の「COPY文とREPLACE文」の違いを理解しよう! | 用語辞典
COBOL(コボル)言語の予約語COPY文とREPLACE文を使った命令文の書き方と違いとは
COBOL(コボル)言語のCOPY文とは?
COPY文(コピー)を使用すると、コンパイル時にプログラムの指定した箇所に、別のファイルで記述したプログラムの内容を挿入できます。
COPY文は複数のプログラムで同じ定義内容を使用するときに、1つのファイルにプログラムを記述して共有することが可能です。そのため、複数のプログラムで共通のデータ項目を使用するデータ部(DATA DIVISION)の定義内容を共有するために使用することが多いと言えます。
共有処理の内容を変更する場合は、共通処理を記述したプログラムのファイルを修正して再コンパイルするだけで済みます。
書き方1:
COPY ファイル名
書き方2:
COPY ファイル名 REPLACING ==置き換え前== BY ==置き換え後==
外部ファイルをそのままソースコードにコピーする場合はファイル名を指定するだけですが、共通ファイルのプログラムを置き換えたい場合はREPLACING句を使用します。
COBOL(コボル)言語のREPLACE文とは?
REPLACE文(置き換え)はプログラムの原文を置き換えたい場合に使用します。COPY文同様コンパイル時に置換処理を行います。
書き方:
REPLACE ==置換前文字列== BY ==置換後文字列==
REPLACE OFF
REPLACE文は連続で記述してしまうと、最後に記述したREPLACE文以外は無効となります。
REPLACE OFFを記述するとREPLACEによる置換処理が強制終了します。
COBOL(コボル)言語のCOPY文とREPLACE文の違いとは?
COPY文は先述したとおりデータ部などの共通処理をプログラムに挿入するときに便利ですが、手続き部で共通処理に記述したデータ項目を使用していた場合は、データ項目も全て変更する必要があります。そのため、変更時に漏れがでる可能性もあります。
このような問題を防ぐ場合はREPLACE文を使用すると便利です。
COPY文とREPLACE文は混同しやすいですが、
- COPY文はファイルに記述したレイアウトのコピーを行う
- REPLACE文はプログラムの内容を置き換える
と覚えておきましょう。
ファイルに記述した共通処理の内容を置き換えたい場合は、COPY文のREPLACING句を使用する必要があります。
COPY文とREPLACE文を使ったCOBOL(コボル)プログラムの活用法
ここでは、COPY文とREPLACE文を使用してファイルのレイアウトのコピー及びレイアウトの項目を変更した場合のプログラムの項目の置き換えを行う簡単なサンプルを紹介します。
レイアウトの定義は以下のように定義します。
IN-LAYOUT-FILE--------
01 ITEM-RECORD.
03 ITEM-DATA-1 PIC X(10).
03 ITEM-DATA-2 PIC X(10).
03 ITEM-DATA-3 PIC X(10).
---------------------------
COPY文を使用したファイルレイアウトのコピー:
- IDENTIFICATION DIVISION.
- PROGRAM-ID. COPY_SAMPLE01.
- ENVIRONMENT DIVISION.
- INPUT-OUTPUT SECTION.
- DATA DIVISION.
- WORKING-STORAGE SECTION.
- *>------------------------------
- *> コピーするファイルを指定する
- *>------------------------------
- COPY IN-LAYOUT-FILE.
- PROCEDURE DIVISION.
- *>------------------------------
- *> コピーしたファイルの項目を指定
- *>------------------------------
- MOVE "APPLE" TO ITEM-DATA-1.
- DISPLAY ITEM-DATA-1.
- MOVE "ORANGE" TO ITEM-DATA-2.
- DISPLAY ITEM-DATA-2.
- MOVE "MELON" TO ITEM-DATA-3.
- DISPLAY ITEM-DATA-3.
- STOP RUN.
実行結果:
COPY文を使用すれば、別のファイルに定義したレイアウトを読み込んで、手続き部の項目が使用できることがわかります。
しかし、レイアウトに記述したデータ項目を変更してしまうと、プログラムに記述したデータ項目と不整合が発生してしまい、コンパイルの時にundefinedのコンパイルエラーが発生してしまいます。
紹介したプログラムのような簡単な処理では1つずつ項目を置き換えれば済みますが、実際のプログラムでは膨大なデータ項目を手作業で置き換えることもありますので、変更漏れが発生することもあります。
このような問題を防ぐために上述したようにREPLACE文を使用します。
以下にREPLACE文を使用した項目を置き換える簡単なプログラムを紹介します。レイアウトの定義は以下のように変更します。
IN-LAYOUT-FILE--------
01 FRUITS-RECORD.
03 FRUITS-DATA-1 PIC X(10).
03 FRUITS-DATA-2 PIC X(10).
03 FRUITS-DATA-3 PIC X(10).
---------------------------
REPLACE文を使用した項目の置き換え:
- IDENTIFICATION DIVISION.
- PROGRAM-ID. REPLACE_SAMPLE01.
- ENVIRONMENT DIVISION.
- INPUT-OUTPUT SECTION.
- DATA DIVISION.
- WORKING-STORAGE SECTION.
- *>------------------------------
- *> コピーするファイルを指定する
- *>------------------------------
- COPY IN-LAYOUT-FILE.
- PROCEDURE DIVISION.
- *>------------------------------
- *> コピーしたファイルの項目を指定
- *>------------------------------
- REPLACE ==ITEM-DATA-1== BY ==FRUITS-DATA-1==.
- MOVE "APPLE" TO ITEM-DATA-1.
- DISPLAY ITEM-DATA-1.
- REPLACE ==ITEM-DATA-2== BY ==FRUITS-DATA-2==.
- MOVE "ORANGE" TO ITEM-DATA-2.
- DISPLAY ITEM-DATA-2.
- REPLACE ==ITEM-DATA-3== BY ==FRUITS-DATA-3==.
- MOVE "MELON" TO ITEM-DATA-3.
- DISPLAY ITEM-DATA-3.
- REPLACE OFF.
- STOP RUN.
実行結果:
REPLACE文を使用すれば簡単に項目の置き換えができることがわかります。1つのREPLACE文の有効範囲は、次のREPLACE文が出現するまでの範囲となります。
この記事を読んだ人は、こちらの記事も読んでいます
あなたの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句」は便利?使用方法を学びましょう|用語辞典