カテゴリ: COBOL 更新日: 2025/12/01

COBOLのRETURNINGを使ったサブルーチンの戻り値受け渡しを完全解説!初心者でもやさしく理解

サブルーチンの戻り値(RETURNING)を使った結果受け渡し
サブルーチンの戻り値(RETURNING)を使った結果受け渡し

先生と生徒の会話形式で理解しよう

生徒

「先生、サブルーチンで処理結果を戻り値みたいに使う方法ってありますか?」

先生

「はい、それがRETURNINGを使った戻り値の仕組みです。わかりやすく説明しますね。」

生徒

「戻り値って聞くと難しそうですが、イメージで教えてほしいです!」

先生

「もちろんです。例えば自動販売機のように『お金を入れるとおつりが返ってくる』イメージで説明しますね。」

1. RETURNINGとは?

1. RETURNINGとは?
1. RETURNINGとは?

RETURNINGは、COBOLのサブルーチン(別プログラム)から特定の処理結果(戻り値)を受け取る方法です。メインプログラムに「値を返す」ための仕組みで、わかりやすく言えば「おつり返却」です。

サブルーチンに値を渡す方法は以前学んだUSINGでしたが、RETURNINGは“結果だけを渡す”ときに便利です。

2. RETURNINGのメリット

2. RETURNINGのメリット
2. RETURNINGのメリット

RETURNINGを使うことで、次のメリットがあります:

  • メインプログラム側のWORKING-STORAGE変数に結果がすっきり収まる
  • パラメータ受け渡しよりシンプルで、戻り値だけ受け取る想定が明確
  • プログラムを見たとき「この処理は何を返すのか」がわかりやすい

呼び出し元と戻り値変数が指定されていて、コードが見やすく整理できます。

3. RETURNINGを使った基本例

3. RETURNINGを使った基本例
3. RETURNINGを使った基本例

では、例を見てみましょう。「2つの数値を足して結果を受け取る」サブルーチンを作ります。


IDENTIFICATION DIVISION.
PROGRAM-ID. MAINPROG.

DATA DIVISION.
WORKING-STORAGE SECTION.
01 NUM1     PIC 9(3) VALUE 10.
01 NUM2     PIC 9(3) VALUE 20.
01 SUM-RESULT PIC 9(4).

PROCEDURE DIVISION.
    CALL 'ADD-PROG' USING NUM1 NUM2 RETURNING SUM-RESULT
    DISPLAY "合計は " SUM-RESULT " です。"
    STOP RUN.

IDENTIFICATION DIVISION.
PROGRAM-ID. ADD-PROG.

DATA DIVISION.
LINKAGE SECTION.
01 A-IN    PIC 9(3).
01 B-IN    PIC 9(3).

PROCEDURE DIVISION USING A-IN B-IN RETURNING SUM-OUT.
    ADD A-IN TO B-IN GIVING SUM-OUT
    EXIT PROGRAM.

実行結果の例:


合計は 30 です。

この例では、SUM-RESULTに戻り値が格納され、メインプログラムで使われます。

4. RETURNINGの使い方と注意点

4. RETURNINGの使い方と注意点
4. RETURNINGの使い方と注意点

RETURNINGを使う際のポイントは以下のとおりです:

  • 呼び出し元CALL 'サブルーチン名' ... RETURNING 変数と書く
  • サブルーチン側PROCEDURE DIVISION USING ... RETURNING 戻り値変数と書く
  • データ型の一致:返す値と受け取る変数の型が同じである必要がある
  • EXIT PROGRAMでサブルーチンを終了させる

この仕組みを使うことで、サブルーチン処理と結果保存がわかりやすく分かれ、コードがすっきりします。

5. RETURNINGとUSINGの比較

5. RETURNINGとUSINGの比較
5. RETURNINGとUSINGの比較

USINGCALLで使える大切な仕組みですが、役割が少し違います:

  • USING:サブルーチンに「値を渡す(入力)」ときに使う
  • RETURNING:サブルーチンから「結果を返す(出力)」ときに使う

たとえばUSINGで入力値を渡し、RETURNINGで処理結果を受け取る――この組み合わせで、サブルーチンは入力と出力の両方をスマートに行えます。

6. 実践での活用場面

6. 実践での活用場面
6. 実践での活用場面

RETURNINGは特に「計算結果」や「判定結果」を取得するのに便利です。例えば:

  • 税率をかけて税込価格を返す
  • 年齢から成人判定(true/false)を返す
  • 文字列を整形して返す

こうした動きがサブルーチンで簡潔に書けるため、メインプログラムが見通しやすくなります。

まとめ

まとめ
まとめ

COBOLのRETURNINGは、サブルーチンから戻り値を受け取るための便利な仕組みであり、メインプログラムとサブルーチンの役割をより明確に分離できる点が大きな特徴です。今回の記事で扱った内容を振り返ると、RETURNINGは「結果だけを返す」という場面でとても役立ち、USINGと併用することで入力値と出力値を整理して扱えるようになります。とくにCOBOLでは業務処理が複雑化しやすく、サブルーチンをどれだけ明確に構造化できるかがプログラム全体の読みやすさや保守性に直結するため、RETURNINGの理解は実務でも大きな武器になります。 たとえば、税計算や合計値の算出、文字列整形など、ひとつの結果だけを返したい処理ではRETURNINGがシンプルで扱いやすく、コードを見たときにも「何を返しているのか」がひと目でわかるため、初心者にも負担が少なく理解しやすい構造を作れます。また、サブルーチン側でEXIT PROGRAMを用いて終了させること、LINKAGE SECTIONに定義した変数とRETURNINGの戻り値の型を一致させることなど、RETURNINGを正しく使ううえで欠かせない基本事項も押さえておく必要があります。 RETURNINGを使いこなすことで、COBOLプログラムの整理は一段と進み、メインプログラムがすっきり見やすくなります。特に大規模な業務システムでは、数十、数百ものサブルーチンが存在することも珍しくありません。その中で、計算結果や判定結果を明確に返す仕組みは保守担当者にとっても非常に助かるものとなり、バグの発見や修正も容易になります。以下には記事内容を踏まえて、RETURNINGを使ったサンプルコードをまとめとして掲載していますので、復習の際や自分でコードを書くときの参考に活用してください。

サンプルプログラム(まとめ)


IDENTIFICATION DIVISION.
PROGRAM-ID. MAIN-RETURN-SAMPLE.

DATA DIVISION.
WORKING-STORAGE SECTION.
01 PRICE         PIC 9(5) VALUE 1000.
01 TAX-RATE      PIC 9(2) VALUE 10.
01 TAXED-PRICE   PIC 9(6).

PROCEDURE DIVISION.
    CALL 'CALC-TAX' USING PRICE TAX-RATE RETURNING TAXED-PRICE
    DISPLAY "税込価格は " TAXED-PRICE " 円です。"
    STOP RUN.

IDENTIFICATION DIVISION.
PROGRAM-ID. CALC-TAX.

DATA DIVISION.
LINKAGE SECTION.
01 L-PRICE      PIC 9(5).
01 L-TAX-RATE   PIC 9(2).
01 RESULT       PIC 9(6).

PROCEDURE DIVISION USING L-PRICE L-TAX-RATE RETURNING RESULT.
    COMPUTE RESULT = L-PRICE + (L-PRICE * L-TAX-RATE / 100)
    EXIT PROGRAM.

このように、RETURNINGは「結果をひとつ返す」処理と非常に相性が良く、計算処理だけでなく判定処理などにも応用できます。USINGで受け取った値を用いて処理し、その結果をRETURNINGで返すことで、サブルーチン内部の処理内容が整理され、メインプログラムは必要な結果を受け取って次の処理に進むだけというシンプルな構造が実現します。 実際のシステム開発では、RETURNINGを活用するとメインプログラムの可読性が向上し、他の開発者がコードを読み解くときにも理解しやすくなります。値の受け渡し規則が明快であるため、データの流れを追いやすく、誤った値参照によるバグも減らせる点が大きな利点です。とくにCOBOLのように長年運用される業務プログラムでは、最初の構造がどれだけ整っているかでシステム寿命が変わることもあります。RETURNINGを適切に扱うことは、安全性・保守性・見通しの良さという要素を支える大切なスキルです。 繰り返し練習し、自分でもサブルーチンを作って結果を返す処理を書いてみることで、RETURNINGの動きが自然と理解でき、より効率的なCOBOLプログラムを組めるようになります。

先生と生徒の振り返り会話

生徒「RETURNINGって、結果をそのまま受け取れるからとても便利だと感じました!」

先生「そうだね。USINGと併用すれば入力と出力が分かりやすく整理されて、プログラムの流れも掴みやすくなるよ。」

生徒「EXIT PROGRAMで終わる理由も理解できました。RETURNINGで返す値も型を揃える必要があるんですね。」

先生「その通り。そこがきちんと揃っていないと正しい値が返らないから、必ず確認する習慣をつけよう。」

生徒「今度は計算だけでなく、判定処理をRETURNINGで返すサブルーチンも作ってみたいです!」

先生「とても良いね。実務でもRETURNINGはよく使われるから、慣れておくと必ず役に立つよ。自分の手でどんどん書いて身につけていこう。」

カテゴリの一覧へ
新着記事
New1
C#
C#のデフォルト引数と名前付き引数の使い方を解説!初心者でも安心のやさしい入門
New2
C#
C#のオブジェクト初期化子を完全ガイド!初心者でもわかる便利な使い方
New3
COBOL
COBOLの帳票出力と編集を完全マスター!条件付き表示で分かりやすい書類を作る方法
New4
COBOL
COBOLの帳票出力を完全攻略!数値項目のカンマ・小数点編集例を徹底解説
人気記事
No.1
Java&Spring記事人気No1
C#
C#のpartialクラスとは?初心者でも理解できるクラス分割の基本
No.2
Java&Spring記事人気No2
C#
C#でJSONファイルを読み書きする方法(JsonSerializer・Newtonsoft.Json)
No.3
Java&Spring記事人気No3
C#
C#のLINQクエリ構文の書き方と基本操作をマスターしよう
No.4
Java&Spring記事人気No4
C#
C#でswitch式を使う方法!C# 8.0以降の新機能を解説
No.5
Java&Spring記事人気No5
COBOL
COBOLの数値データ型「PIC 9」の使い方と注意点をやさしく解説!
No.6
Java&Spring記事人気No6
C#
C#のLINQ(リンク)とは?基本概念とデータ操作を初心者向けに徹底解説!
No.7
Java&Spring記事人気No7
C#
C#の非同期処理とUIスレッドをマスター!WPF/WinFormsでアプリが止まる問題を解決
No.8
Java&Spring記事人気No8
C#
C#のCancellationTokenを使ったキャンセル処理を完全ガイド!非同期処理を安全に止める方法