COBOL言語のサブプログラムとデータ連携を理解しよう!|基礎ガイド

COBOL(コボル)言語を使いこなすための、サブプログラムとデータ連携とは

基礎-サブプログラム-イメージ

COBOL(コボル)言語のサブプログラムとその使用方法とは?

サブプログラムは、サブルーチンとも呼ばれています。ルーチンという言葉から想像できるように、ある処理、作業を1つの手続きとしてまとめたプログラムをこう呼びます。サブプログラムは、このような作りのプログラムのため、様々な場面で繰り返し利用する事ができるだけでなく、サブプログラム化する事で、プログラムの可読性や保守性を高める事ができます。

ここでは、COBOL(コボル)言語のメインプログラムからサブプログラムを呼び出し、サブプログラムから画面にメッセージを表示するという処理の書き方をご紹介しますので、しっかりその書き方及び使用方法について理解しましょう。

書き方:

CALL プログラム名

使用例:

・メインプログラム

基礎-サブプログラム-メインプログラム

・サブプログラム

基礎-サブプログラム-サブプログラム

使用例は、メインプログラム(SUB_SAMPLE01)からCALL文でサブプログラム(SUB_SAMPLE01KO)を呼び出し、サブプログラム側で、画面にメッセージを表示しています。メインプログラムはサブプログラムを呼び出すだけで、実際の処理はサブプログラム側で記述する事になりますので、プログラムを機能単位に分けて管理する事ができます。

実行結果:

基礎-サブプログラム-実行結果

COBOL(コボル)言語のサブプログラムへのデータ連携

COBOL(コボル)言語の基本的なサブプログラムの使い方について理解いただけたところで、次はメインプログラムで作成したデータをサブプログラムに連携する方法をご紹介します。

COBOL(コボル)言語のサブプログラムへのデータ連携は、主に値渡しと参照渡しというデータ連携の方法があります。値渡しは、メインプログラムで作成したデータをサブプログラムに渡すだけで、そのデータをサブプログラムで加工、編集しても、メインプログラムのデータ項目には影響を与えません。

一方、参照渡しは、データ項目を共通のデータ領域に持つため、サブプログラムで加工、編集した結果をメインプログラムで活用する事ができます。では、順に値渡しと参照渡しの書き方及び使用方法について見ていきましょう。

書き方1:サブプログラムへのデータ連携(値渡し)

CALL プログラム名 USING BY CONTENT データ項目

使用例1:

・メインプログラム

基礎-サブプログラム-メインプログラム

・サブプログラム

基礎-サブプログラム-サブプログラム

使用例は、メインプログラム(SUB_SAMPLE02)で、サブプログラム(SUB_SAMPLE02KO)の呼び出しと取得した日付の引き渡しを行い、サブプログラム側で、メインプログラムから引き渡されたデータの画面表示をしています。このように、USING文を利用するとプログラム間のデータ連携を行う事ができます。

実行結果1:

基礎-サブプログラム-実行結果1

書き方2:サブプログラムへのデータ連携(参照渡し)

CALL プログラム名 USING [BY REFERENCE] データ項目

使用例2:

・メインプログラム

基礎-サブプログラム-メインプログラム

・サブプログラム

基礎-サブプログラム-サブプログラム

使用例は、メインプログラム(SUB_SAMPLE03)で、サブプログラム(SUB_SAMPLE03KO)の呼び出しとデータの引き渡しを行い、サブプログラム側で、引き渡されたデータの加算を行っています。実行結果を見ていただければおわかりになるかと思いますが、値渡しと参照渡しでサブプログラムの呼び出し前後の結果が変わっている事に気づかれると思います。このように参照渡しのデータ連携では、サブプログラムの処理結果をメインプログラムでも活用する事ができます。

実行結果2:

基礎-サブプログラム-実行結果2

COBOL(コボル)言語のサブプログラム利用における基本事項や注意事項

  • サブプログラムを呼び出すCALL文の間の空白や改行は、自由に設定できます。
  • CALL文で[ON EXCEPTION]指定をすると、サブプログラムが実行できなかった場合の処理を記述する事ができます。
  • CALL文で[NOT ON EXCEPTION]指定をすると、サブプログラムが実行できた場合の処理を記述する事ができます。
  • データ連携(参照渡し)で指定する[BY REFERENCE]は、省略する事ができます。

サブプログラムへのデータ連携、COBOL(コボル)プログラムの活用法

COBOL(コボル)言語のサブプログラムへのデータ連携の基本的な書き方や使用例について理解いただけたでしょうか?最後に活用法として、サブプログラムとデータ連携する際に、RETURN-CODEという予め宣言されている項目を利用する事がありますので、その使用例をご紹介します。

基本的な使用方法は、先にご紹介した書き方が理解いただけていれば、それ程難しい内容ではないと思いますので、しっかり理解して活用していっていただければと思います。

サンプルプログラム:

・メインプログラム

  1. IDENTIFICATION DIVISION.
  2. PROGRAM-ID. SUB_SAMPLE04.
  3. ENVIRONMENT DIVISION.
  4. DATA DIVISION.
  5. WORKING-STORAGE SECTION.
  6. PROCEDURE DIVISION.
  7. *> RETURN-CODEの活用
  8. CALL "SUB_SAMPLE04KO".
  9. IF RETURN-CODE < ZERO
  10. THEN
  11. DISPLAY "ERROR RETURN-CODE:" RETURN-CODE
  12. END-IF.
  13. STOP RUN.
  14. END PROGRAM SUB_SAMPLE04.

・サブプログラム

  1. IDENTIFICATION DIVISION.
  2. PROGRAM-ID. SUB_SAMPLE04KO.
  3. ENVIRONMENT DIVISION.
  4. DATA DIVISION.
  5. WORKING-STORAGE SECTION.
  6. PROCEDURE DIVISION.
  7. MOVE -1 TO RETURN-CODE.
  8. EXIT.
  9. END PROGRAM SUB_SAMPLE04KO.

実行結果:

基礎-サブプログラム-実行結果

いかがでしたでしょうか?頻繁に使われる処理を共通のサブプログラムとして作成しておく事は、COBOL(コボル)言語においても、よく行われます。ちょうど予め用意されている関数を利用するイメージに近いでしょうか。

また、今回ご紹介したサブプログラムとのデータ連携は、メインプログラムの処理をシンプルにし、更にはプログラムを分担して作成するという事にもつながりますので、是非しっかり活用できるよう理解を深めていただければと思います。

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

あなたのCOBOL技術を活かしませんか?

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

COBOL入門のカテゴリー

|  基礎  |  応用  |  勉強  |  試験  |  辞書  |

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