読み込み中...

【COBOL】INCLUDE文の10の使い方とサンプルコード

COBOLでのINCLUDE文の基本と応用 COBOL
この記事は約13分で読めます。

【サイト内のコードはご自由に個人利用・商用利用いただけます】

この記事では、プログラムの基礎知識を前提に話を進めています。

説明のためのコードや、サンプルコードもありますので、もちろん初心者でも理解できるように表現してあります。

本記事のサンプルコードを活用して機能追加、目的を達成できるように作ってありますので、是非ご活用ください。

※この記事は、一般的にプロフェッショナルの指標とされる『実務経験10,000時間以上』を満たす現役のプログラマチームによって監修されています。

※Japanシーモアは、常に解説内容のわかりやすさや記事の品質に注力しております。不具合、分かりにくい説明や不適切な表現、動かないコードなど気になることがございましたら、記事の品質向上の為にお問い合わせフォームにてご共有いただけますと幸いです。
(送信された情報は、プライバシーポリシーのもと、厳正に取扱い、処分させていただきます。)

はじめに

この記事では、COBOLプログラミング言語の重要な要素であるINCLUDE文に焦点を当てています。

COBOLは長い歴史を持つ言語で、今でも多くの金融機関や企業で広く使われています。

INCLUDE文は、COBOLプログラムをより効率的で整理された形に保つためのキーとなる機能です。

この記事を通じて、INCLUDE文の基本的な使い方から応用テクニックまでを、初心者にも理解しやすい形で解説します。

●COBOLとは

COBOL(Common Business-Oriented Language)は、ビジネスアプリケーションのために設計されたプログラミング言語です。

1959年に開発されて以来、主に企業の財務、人事、在庫管理などのシステムで使われてきました。

COBOLはその堅牢性と信頼性の高さから、現在でも多くの企業や金融機関で重宝されています。

特に、大量のデータ処理やバッチ処理においてその強みを発揮します。

○COBOLの歴史と特徴

COBOLの歴史は、コンピュータ技術の変遷と密接に関連しています。

当初はメインフレームコンピュータで利用され、その後小型化が進むにつれてより多様な環境で採用されるようになりました。

COBOLの特徴は、英語に近い構文で書かれていることです。

これにより、プログラミング経験が少ない人でも比較的容易にコードを読み書きできます。

また、大規模なビジネスアプリケーションの開発に適しており、特にファイル処理やデータベース操作に関する強力な機能を持っています。

●INCLUDE文の基本

COBOLにおけるINCLUDE文は、コードの再利用性を高めるために非常に重要な役割を果たします。

この文は、他のファイルに記述されているコードセグメントを現在のプログラムファイルに取り込むために使用されます。

これにより、同じコードの繰り返しを避けることができ、プログラムの保守性と可読性が向上します。

たとえば、複数のプログラムで共通して使用されるデータ宣言やサブルーチンなどを、一つのファイルにまとめ、必要なプログラムでINCLUDE文を使って参照することができます。

○INCLUDE文とは

INCLUDE文は、COBOLプログラム内で外部ファイルの内容を挿入するために使用される指令です。

この文はコンパイル時に処理され、指定されたファイルの内容がプログラムコードに直接挿入されます。

例えば、「INCLUDE “common.cbl”」という文は、”common.cbl”という名前のファイルの内容を現在の位置に挿入することを意味します。

これにより、プログラムの一部を外部ファイルに分離し、複数のプログラム間で共有することが可能になります。

○INCLUDE文の文法

INCLUDE文の基本的な文法は非常にシンプルです。

まず、INCLUDEというキーワードを記述し、続けてダブルクオーテーションで囲んだファイル名を指定します。

ファイル名は、プログラムが存在する同じディレクトリ、またはコンパイラが参照する標準のディレクトリ内にある必要があります。

●INCLUDE文の使い方

COBOLでのINCLUDE文の使い方は、プログラムの効率化と整理に大きく貢献します。

具体的には、共通のコードセグメントやライブラリの参照、変数の定義などを外部ファイルに記述し、必要な場所でINCLUDE文を用いて呼び出す方法があります。

これにより、コードの重複を避け、変更があった場合にも一箇所の修正で済むため、プログラムのメンテナンスが容易になります。

○サンプルコード1:単純なインクルード

単純なインクルードの例として、共通の設定ファイルをメインプログラムに取り込むケースを考えます。

例えば、「settings.cbl」という設定ファイルがあり、これには環境に依存する変数や定数が定義されているとします。

メインプログラムでは、この設定ファイルをINCLUDE文で取り込むことで、定義された変数や定数を利用できます。

      IDENTIFICATION DIVISION.
      PROGRAM-ID. MAIN-PROGRAM.
      DATA DIVISION.
      INCLUDE "settings.cbl".
      PROCEDURE DIVISION.
      ...

      END PROGRAM MAIN-PROGRAM.

このサンプルでは、「settings.cbl」ファイルの内容が「DATA DIVISION」内に挿入され、その後のプログラム部分で利用されることになります。

○サンプルコード2:変数定義の共有

複数のプログラムで共通の変数を使用する場合、INCLUDE文を利用して変数定義を共有することができます。

例として、顧客情報を扱う複数のプログラムがある場合、顧客情報のデータ構造を一つのファイルに定義し、各プログラムでこのファイルを参照します。

      IDENTIFICATION DIVISION.
      PROGRAM-ID. CUSTOMER-PROCESS.
      DATA DIVISION.
      INCLUDE "customer-definitions.cbl".
      PROCEDURE DIVISION.
      ...

      END PROGRAM CUSTOMER-PROCESS.

この例では、「customer-definitions.cbl」に顧客情報のデータ構造が定義されており、これを「CUSTOMER-PROCESS」というプログラムで利用しています。

この方法により、顧客情報のデータ構造に変更があった場合も、共通の定義ファイルを更新するだけで済み、各プログラムの修正は不要になります。

○サンプルコード3:共通のコードセクション

COBOLのプログラム開発において、複数のプログラムで共通して使用されるコードセクションを効率的に管理する方法として、INCLUDE文の活用があります。

例えば、エラーハンドリングやデータベース操作のような処理を共通のコードセクションとして外部ファイルに記述し、必要なプログラムでINCLUDE文を使用して参照することができます。

      IDENTIFICATION DIVISION.
      PROGRAM-ID. MAIN-PROGRAM.
      DATA DIVISION.
      WORKING-STORAGE SECTION.
      INCLUDE "error-handling.cbl".
      PROCEDURE DIVISION.
      BEGIN.
          PERFORM DATA-PROCESSING.
          PERFORM ERROR-HANDLING.
      END.
      END PROGRAM MAIN-PROGRAM.

このコードでは、「error-handling.cbl」にエラーハンドリングに関する処理が記述されており、メインプログラム内でその機能を使用しています。

これにより、エラーハンドリングのコードを一か所で管理し、多くのプログラムで再利用することが可能になります。

○サンプルコード4:モジュール化されたプログラム

モジュール化は、大規模なCOBOLプログラムを効果的に管理するための重要な手法です。

INCLUDE文を使って、特定の機能や処理を独立したモジュールとして切り分け、必要に応じてプログラムに組み込むことができます。

これにより、プログラムの構造を明確にし、保守性や拡張性を高めることができます。

      IDENTIFICATION DIVISION.
      PROGRAM-ID. CUSTOMER-SERVICE.
      DATA DIVISION.
      WORKING-STORAGE SECTION.
      INCLUDE "customer-module.cbl".
      PROCEDURE DIVISION.
      BEGIN.
          PERFORM CUSTOMER-REGISTRATION.
          PERFORM CUSTOMER-QUERY.
      END.
      END PROGRAM CUSTOMER-SERVICE.

この例では、「customer-module.cbl」に顧客サービスに関連する機能がモジュールとして定義されています。

メインプログラム「CUSTOMER-SERVICE」では、このモジュールをINCLUDE文で取り込んで使用しています。

モジュール化された構造により、顧客サービスに関する変更や拡張を効率的に行うことができます。

●INCLUDE文の応用

COBOLのINCLUDE文は、基本的な使い方を超えて、より複雑で高度なプログラミングシナリオにも応用できます。

条件付きコンパイルや動的SQLの利用、エラーハンドリングといった高度な技術を効率的に実装するためにINCLUDE文を活用することができます。

これらの応用は、大規模なシステムや複雑なビジネスロジックを扱う場合に特に有効です。

○サンプルコード5:条件付きコンパイル

条件付きコンパイルは、プログラムの特定の部分をコンパイル時にのみ含める技術です。

INCLUDE文を使って、特定の条件下でのみ必要となるコードセクションを挿入することができます。

これにより、環境や設定に応じて異なる動作をするプログラムを一つのソースコードで管理することが可能になります。

      IDENTIFICATION DIVISION.
      PROGRAM-ID. CONDITIONAL-PROGRAM.
      DATA DIVISION.
      WORKING-STORAGE SECTION.
      INCLUDE "conditional-section.cbl" IF DEBUG-MODE.
      PROCEDURE DIVISION.
      ...

      END PROGRAM CONDITIONAL-PROGRAM.

このコードでは、「DEBUG-MODE」が真の場合に限り、「conditional-section.cbl」がプログラムに含まれます。

これにより、デバッグモードでのみ必要な特定の処理を含めることができます。

○サンプルコード6:動的SQLの利用

動的SQLは、プログラム実行時にSQLクエリを生成し実行する技術です。

INCLUDE文を使用して、SQLクエリのテンプレートや共通のSQL関数を外部ファイルに保持し、必要に応じてプログラムで呼び出すことができます。

      IDENTIFICATION DIVISION.
      PROGRAM-ID. DYNAMIC-SQL-PROGRAM.
      DATA DIVISION.
      WORKING-STORAGE SECTION.
      INCLUDE "sql-queries.cbl".
      PROCEDURE DIVISION.
      BEGIN.
          EXECUTE DYNAMIC-SQL.
      END.
      END PROGRAM DYNAMIC-SQL-PROGRAM.

この例では、「sql-queries.cbl」にSQLクエリのテンプレートが含まれており、プログラム内で動的にクエリを生成し実行することができます。

○サンプルコード7:エラーハンドリング

エラーハンドリングは、プログラム実行中に発生する可能性のあるエラーや例外を適切に処理するための重要な部分です。

INCLUDE文を使用して、エラーハンドリングのコードを別のファイルに記述し、必要なプログラムで共有することができます。

      IDENTIFICATION DIVISION.
      PROGRAM-ID. ERROR-HANDLING-PROGRAM.
      DATA DIVISION.
      WORKING-STORAGE SECTION.
      INCLUDE "error-handling-routines.cbl".
      PROCEDURE DIVISION.
      BEGIN.
          PERFORM TASK.
          PERFORM ERROR-CHECKING.
      END.
      END PROGRAM ERROR-HANDLING-PROGRAM.

このコードでは、「error-handling-routines.cbl」にエラーチェックやエラー応答の処理が記述されており、メインプログラムでその機能を使用しています。

これにより、エラーハンドリングのコードを一箇所に集中させ、複数のプログラムで再利用することが可能になります。

●注意点と対処法

COBOLのINCLUDE文を使用する際には、いくつかの注意点があります。

これらを理解し、適切に対処することで、プログラムの効率性と信頼性を高めることができます。

INCLUDE文は非常に便利な機能ですが、誤用するとプログラムの複雑さを増加させたり、予期せぬエラーの原因となることがあります。

○サンプルコード8:INCLUDE文の誤用

INCLUDE文の誤用の一例として、不必要なファイルの取り込みが挙げられます。

これは、プログラムの可読性を低下させ、コンパイル時間の増加やパフォーマンスの低下を引き起こす可能性があります。

      IDENTIFICATION DIVISION.
      PROGRAM-ID. INCORRECT-USE.
      DATA DIVISION.
      WORKING-STORAGE SECTION.
      INCLUDE "unnecessary-file.cbl".
      PROCEDURE DIVISION.
      ...

      END PROGRAM INCORRECT-USE.

このコードでは、「unnecessary-file.cbl」は実際には不要ながらも取り込まれています。

このような誤用を避けるためには、INCLUDE文の使用は必要最低限に留めることが重要です。

○サンプルコード9:パフォーマンスへの影響

INCLUDE文を多用すると、プログラムのパフォーマンスに影響を及ぼすことがあります。

特に、大規模なファイルを取り込む場合、コンパイル時間の増加や実行時の効率低下が見られることがあります。

      IDENTIFICATION DIVISION.
      PROGRAM-ID. PERFORMANCE-ISSUE.
      DATA DIVISION.
      WORKING-STORAGE SECTION.
      INCLUDE "large-file.cbl".
      PROCEDURE DIVISION.
      ...

      END PROGRAM PERFORMANCE-ISSUE.

この例では、「large-file.cbl」の取り込みにより、プログラムのパフォーマンスが低下しています。

パフォーマンスへの影響を最小限に抑えるためには、取り込むファイルのサイズや数を適切に管理することが重要です。

○サンプルコード10:メンテナンスの容易さ

INCLUDE文を適切に使用することで、プログラムのメンテナンスが容易になります。

共通コードの変更が必要な場合、INCLUDE文を使用しているファイルのみを更新することで、プログラム全体に変更を適用することができます。

      IDENTIFICATION DIVISION.
      PROGRAM-ID. EASY-MAINTENANCE.
      DATA DIVISION.
      WORKING-STORAGE SECTION.
      INCLUDE "common-code.cbl".
      PROCEDURE DIVISION.
      ...

      END PROGRAM EASY-MAINTENANCE.

このコードでは、「common-code.cbl」にプログラム全体で共有されるコードが含まれています。

このファイルを更新することで、すべてのプログラムに変更が適用されるため、メンテナンス作業が大幅に簡素化されます。

まとめ

この記事を通じて、COBOLのINCLUDE文の基本から応用まで、その使い方と様々な応用例を詳細に解説しました。

COBOLプログラミングにおけるINCLUDE文の適切な使い方を理解し、効果的に活用することは、今後のプログラム開発において非常に重要です。

この記事が、INCLUDE文を使った効率的なCOBOLプログラミングの参考になれば幸いです。