読み込み中...

【COBOL】RETURNING句の活用法8選

COBOL RETURNING句解説画像 COBOL
この記事は約18分で読めます。

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

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

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

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

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

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

はじめに

この記事を読めば、COBOLプログラミングの基礎であるRETURNING句の使い方を初心者にも分かりやすく解説します。

COBOLはビジネスデータ処理に強みを持つ古典的なプログラミング言語で、その中でもRETURNING句は重要な機能の一つです。

本記事では、RETURNING句の基本的な概念から実用的なサンプルコードまで、8つの異なる使用方法を詳細に説明します。

この記事を通じて、COBOLの理解を深め、RETURNING句を効果的に活用する方法を学びましょう。

●COBOLとRETURNING句の基本

COBOL(Common Business Oriented Language)は、1959年に開発されたビジネス向けのプログラミング言語です。

主に金融、行政、企業のデータ処理で広く使用されています。COBOLの特徴は、その可読性の高さにあります。

英語に近い構文を持つため、プログラミング初心者でも比較的学びやすい言語です。

また、COBOLは大規模なデータの処理に優れており、長年にわたり多くのビジネスシステムで活躍しています。

RETURNING句は、COBOLプログラム内でのサブルーチンや関数からの値の返却を指定するために使用されます。

通常、サブルーチンや関数は特定の処理を行い、その結果をプログラムの他の部分に返す必要があります。

RETURNING句を使用することで、これらの値を効率的に受け渡すことが可能になります。

○COBOLの歴史と特徴

COBOLは、その開発当初からビジネスデータ処理を主な目的として設計されました。

この言語は、企業の財務報告や管理、銀行の取引処理など、正確で信頼性の高いデータ処理が求められる分野で広く採用されています。

COBOLのコードは、英語に似た文法を持っているため、他の多くのプログラミング言語よりも読みやすく、理解しやすいです。

そのため、非技術者でもプログラムのロジックを把握しやすく、ビジネスの現場でのコミュニケーションが容易になります。

COBOLのもう一つの重要な特徴は、その堅牢性です。

長年にわたる使用と改良を経て、COBOLは大規模なビジネスアプリケーションの要求を満たす安定性と信頼性を備えています。

特に、大量のデータを扱うシステムでは、その性能の高さが評価されています。

○RETURNING句の概要

RETURNING句は、COBOLプログラム内で別のプログラムセグメント、特にサブルーチンや関数からの結果を返す際に使用されます。

この句を利用することで、プログラムのモジュール間でデータの受け渡しがスムーズに行われ、プログラムの構造が明確になります。

RETURNING句は、特に大規模なアプリケーションや複雑なビジネスロジックを持つシステムにおいて、その効果を発揮します。

プログラムの一部分が処理を完了した際、RETURNING句を使用して処理結果を他の部分へ返すことで、プログラム全体の効率が向上します。

例えば、ある関数が特定の計算を行い、その結果をメインプログラムに返す場合、RETURNING句を用いることで、その値を直接メインプログラムに渡すことができます。

これにより、プログラムの可読性とメンテナンス性が向上し、開発プロセスが効率化されます。

●RETURNING句の基本的な使い方

COBOLにおけるRETURNING句の使い方を理解するために、まず基本的な概念から始めましょう。

RETURNING句は、サブルーチンや関数が処理した結果を呼び出し元のプログラムに返すために使用されます。

この句は、特にCOBOLプログラムの中でデータの受け渡しを行う際に重要な役割を果たします。

RETURNING句を適切に使うことで、プログラムの構造がより明確になり、データフローがスムーズになります。

○サンプルコード1:シンプルな値の返却

例として、簡単なサンプルプログラムを見てみましょう。以下のコードは、単純な計算を行い、その結果をRETURNING句を使用してメインプログラムに返す例です。

下記のコードは、単純な計算を行い、その結果をRETURNING句を使用してメインプログラムに返す例です。

IDENTIFICATION DIVISION.
PROGRAM-ID. SampleProgram.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 Num1 PIC 9(4) VALUE 100.
01 Num2 PIC 9(4) VALUE 200.
01 Result PIC 9(4).
PROCEDURE DIVISION.
    CALL 'AddNumbers' USING Num1, Num2 RETURNING Result
    DISPLAY "結果: " Result
    STOP RUN.

IDENTIFICATION DIVISION.
PROGRAM-ID. AddNumbers.
DATA DIVISION.
LINKAGE SECTION.
01 L-Num1 PIC 9(4).
01 L-Num2 PIC 9(4).
01 L-Result PIC 9(4).
PROCEDURE DIVISION USING L-Num1, L-Num2 RETURNING L-Result.
    ADD L-Num1 TO L-Num2 GIVING L-Result
    EXIT PROGRAM.

このコードでは、AddNumbersというサブルーチンが二つの数値を加算し、その結果をResult変数に返しています。

このように、RETURNING句を使うことで、サブルーチンの処理結果をメインプログラムで簡単に受け取ることができます。

○サンプルコード2:条件付きの値の返却

次に、条件に基づいて異なる値を返すサンプルコードを考えてみましょう。

下記のコードでは、入力された数値が特定の条件を満たすかどうかをチェックし、その結果に応じて異なる値を返します。

IDENTIFICATION DIVISION.
PROGRAM-ID. ConditionalReturn.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 InputNum PIC 9(4) VALUE 150.
01 Result PIC X(10).
PROCEDURE DIVISION.
    CALL 'CheckNumber' USING InputNum RETURNING Result
    DISPLAY "結果: " Result
    STOP RUN.

IDENTIFICATION DIVISION.
PROGRAM-ID. CheckNumber.
DATA DIVISION.
LINKAGE SECTION.
01 L-InputNum PIC 9(4).
01 L-Result PIC X(10).
PROCEDURE DIVISION USING L-InputNum RETURNING L-Result.
    IF L-InputNum > 100
        MOVE "大きい" TO L-Result
    ELSE
        MOVE "小さい" TO L-Result
    END-IF
    EXIT PROGRAM.

この例では、CheckNumberサブルーチンがInputNumの値を評価し、100より大きければ”大きい”、そうでなければ”小さい”という文字列を返します。

このように、RETURNING句を使用して条件に基づく複雑な処理の結果を効率的に返すことができます。

●RETURNING句の応用例

COBOLプログラミングにおけるRETURNING句の応用例として、データベース操作やファイル処理、エラーハンドリングなどの複雑なシナリオを考えます。

これらの応用例は、COBOLを使用する現代のビジネスアプリケーションにおいて特に重要です。

RETURNING句を効果的に使用することで、これらの操作をより安全かつ効率的に実行できます。

○サンプルコード3:データベース操作

データベースからデータを取得し、その結果をRETURNING句を用いてメインプログラムに返す例を見てみましょう。

下記のコードは、データベースから特定のレコードを読み込み、その内容を返却するサンプルです。

IDENTIFICATION DIVISION.
PROGRAM-ID. DbOperation.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 DbRecord PIC X(100).
PROCEDURE DIVISION.
    CALL 'FetchRecord' USING "RecordID" RETURNING DbRecord
    DISPLAY "取得したレコード: " DbRecord
    STOP RUN.

IDENTIFICATION DIVISION.
PROGRAM-ID. FetchRecord.
DATA DIVISION.
LINKAGE SECTION.
01 L-RecordID PIC X(10).
01 L-DbRecord PIC X(100).
PROCEDURE DIVISION USING L-RecordID RETURNING L-DbRecord.
    * データベースからレコードを取得する処理
    EXIT PROGRAM.

このコードでは、FetchRecordサブルーチンがデータベースからレコードを取得し、その内容をDbRecord変数に返しています。

RETURNING句を使用することで、データベース操作の結果をメインプログラムで直接扱うことが可能になります。

○サンプルコード4:ファイル処理

ファイルからデータを読み込み、その結果を返す処理の例を見てみましょう。

下記のコードは、ファイルからデータを読み込み、その内容を返却するサンプルです。

IDENTIFICATION DIVISION.
PROGRAM-ID. FileOperation.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 FileData PIC X(100).
PROCEDURE DIVISION.
    CALL 'ReadFile' USING "FileName" RETURNING FileData
    DISPLAY "読み込んだデータ: " FileData
    STOP RUN.

IDENTIFICATION DIVISION.
PROGRAM-ID. ReadFile.
DATA DIVISION.
LINKAGE SECTION.
01 L-FileName PIC X(20).
01 L-FileData PIC X(100).
PROCEDURE DIVISION USING L-FileName RETURNING L-FileData.
    * ファイルからデータを読み込む処理
    EXIT PROGRAM.

この例では、ReadFileサブルーチンがファイルからデータを読み込み、その内容をFileData変数に返しています。

RETURNING句を利用することで、ファイル処理の結果を効果的にメインプログラムに渡すことができます。

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

エラーハンドリングにおいても、RETURNING句は非常に有効です。

下記のコードは、処理中に発生したエラーを検出し、その結果をメインプログラムに返す例です。

IDENTIFICATION DIVISION.
PROGRAM-ID. ErrorHandler.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 ErrorCode PIC 9(4).
PROCEDURE DIVISION.
    CALL 'PerformOperation' RETURNING ErrorCode
    IF ErrorCode > 0
        DISPLAY "エラーが発生しました: " ErrorCode
    ELSE
        DISPLAY "処理が成功しました"
    END-IF
    STOP RUN.

IDENTIFICATION DIVISION.
PROGRAM-ID. PerformOperation.
DATA DIVISION.
LINKAGE SECTION.
01 L-ErrorCode PIC 9(4).
PROCEDURE DIVISION RETURNING L-ErrorCode.
    * 処理中にエラーが発生したかチェックする処理
    EXIT PROGRAM.

この例では、PerformOperationサブルーチンが処理を実行し、エラーがあればそのコードをErrorCodeに設定して返します。

メインプログラムでは、このエラーコードを受け取り、適切なエラーメッセージを表示します。

RETURNING句を使用することで、エラーハンドリングをより簡潔に記述できます。

●RETURNING句と他の句の組み合わせ

COBOLにおけるRETURNING句は、他の句と組み合わせて使用することで、さらにその効果を発揮します。

特にWITH句やUSING句との組み合わせは、プログラムの柔軟性と読みやすさを向上させるのに役立ちます。

ここでは、これらの句との組み合わせによるRETURNING句の使用例を紹介します。

○サンプルコード6:WITH句との組み合わせ

WITH句を使用すると、複数の条件を一度に指定して処理を行うことができます。

下記のコードは、WITH句とRETURNING句を組み合わせて、複数のパラメータに基づく処理を行い、その結果を返す例です。

IDENTIFICATION DIVISION.
PROGRAM-ID. WithCombination.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 Param1 PIC 9(4) VALUE 10.
01 Param2 PIC 9(4) VALUE 20.
01 Result PIC 9(4).
PROCEDURE DIVISION.
    CALL 'ProcessWithParams' WITH Param1, Param2 RETURNING Result
    DISPLAY "処理結果: " Result
    STOP RUN.

IDENTIFICATION DIVISION.
PROGRAM-ID. ProcessWithParams.
DATA DIVISION.
LINKAGE SECTION.
01 L-Param1 PIC 9(4).
01 L-Param2 PIC 9(4).
01 L-Result PIC 9(4).
PROCEDURE DIVISION USING L-Param1, L-Param2 RETURNING L-Result.
    COMPUTE L-Result = L-Param1 * L-Param2
    EXIT PROGRAM.

この例では、ProcessWithParamsサブルーチンが二つのパラメータを受け取り、それらを乗算して結果を返します。

WITH句とRETURNING句を組み合わせることで、複数のパラメータを扱いやすくし、プログラムの可読性を高めています。

○サンプルコード7:USING句との併用

USING句は、サブルーチンや関数に引数を渡す際に使用されます。

RETURNING句とUSING句を併用することで、入力パラメータと出力パラメータを明確に区別できます。

下記のコードは、USING句とRETURNING句を併用して、特定の処理を行い、その結果を返す例です。

IDENTIFICATION DIVISION.
PROGRAM-ID. UsingCombination.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 InputValue PIC 9(4) VALUE 5.
01 OutputValue PIC 9(4).
PROCEDURE DIVISION.
    CALL 'CalculateSquare' USING InputValue RETURNING OutputValue
    DISPLAY "入力値の二乗: " OutputValue
    STOP RUN.

IDENTIFICATION DIVISION.
PROGRAM-ID. CalculateSquare.
DATA DIVISION.
LINKAGE SECTION.
01 L-InputValue PIC 9(4).
01 L-OutputValue PIC 9(4).
PROCEDURE DIVISION USING L-InputValue RETURNING L-OutputValue.
    COMPUTE L-OutputValue = L-InputValue ** 2
    EXIT PROGRAM.

このコードでは、CalculateSquareサブルーチンが入力値の二乗を計算し、その結果を返却しています。

USING句で入力値を指定し、RETURNING句で結果を返すことにより、プログラムの構造が明確になり、エラーの発生を防ぐことができます。

●RETURNING句の高度な使用方法

COBOLプログラミングにおけるRETURNING句の使用法は基本的なものから高度なものまで幅広く存在します。

特に複雑なビジネスロジックを実装する際には、RETURNING句の高度な使用方法が非常に役立ちます。

ここでは、複雑なビジネスロジックを処理するためのRETURNING句の応用例を紹介します。

○サンプルコード8:複雑なビジネスロジック

複雑なビジネスロジックでは、複数の条件分岐やデータ処理が必要になることがよくあります。

下記のサンプルコードは、様々な条件に基づいてビジネスロジックを実行し、その結果をRETURNING句を使用して返す例です。

IDENTIFICATION DIVISION.
PROGRAM-ID. ComplexBusinessLogic.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 BusinessData PIC X(100).
01 ProcessResult PIC X(100).
PROCEDURE DIVISION.
    CALL 'ExecuteLogic' USING BusinessData RETURNING ProcessResult
    DISPLAY "処理結果: " ProcessResult
    STOP RUN.

IDENTIFICATION DIVISION.
PROGRAM-ID. ExecuteLogic.
DATA DIVISION.
LINKAGE SECTION.
01 L-BusinessData PIC X(100).
01 L-ProcessResult PIC X(100).
PROCEDURE DIVISION USING L-BusinessData RETURNING L-ProcessResult.
    * 複雑なビジネスロジックの処理
    EXIT PROGRAM.

このコードでは、ExecuteLogicサブルーチンが複数のビジネスルールを評価し、その結果をProcessResultに格納して返しています。

RETURNING句を使用することで、複雑なビジネスロジックの結果を効率的かつ明確にメインプログラムに渡すことができます。

このようにして、COBOLプログラムの柔軟性と拡張性を高めることが可能です。

●注意点と対処法

COBOLにおけるRETURNING句を使用する際、いくつかの重要な注意点があります。

これらの点に注意しないと、エラーが発生する可能性があるため、慎重なプログラミングが求められます。

RETURNING句の使用において最も重要なのは、返されるデータの型が受け取る変数の型と一致していることを確認することです。

型の不一致は、予期しないエラーや不正確なデータを引き起こす可能性があります。

また、RETURNING句は内部的にメモリを使用するため、大きなデータを返す際には、十分なメモリが確保されていることを確認することが重要です。

加えて、エラーハンドリングを適切に実装することで、予期しない状況に対応し、プログラムの安定性を保つことが可能になります。

○適切な使用のためのヒント

RETURNING句を使用する際の適切な使用方法には、型の整合性を保つこと、メモリ管理を適切に行うこと、エラーハンドリングを適切に実装することが含まれます。

これらのポイントを把握し、適切に対処することで、エラーの発生を防ぎ、より効率的で安定したプログラミングが可能になります。

○一般的なエラーとその解決策

RETURNING句の使用中に一般的に発生するエラーには、データ型の不一致、メモリ不足、予期しないエラーなどがあります。

これらのエラーに対しては、データ型の確認と必要に応じた型変換、メモリ管理の見直しと最適化、エラーハンドリング部分の強化と詳細なログ出力や例外処理の実装が有効です。

これらの対策を講じることで、エラーの原因を特定しやすくなり、プログラムの品質と信頼性を高めることができます。

●カスタマイズ方法

COBOLにおけるRETURNING句のカスタマイズは、プログラムの柔軟性を高めるために非常に重要です。

特に、特定のビジネス要件や処理に合わせてRETURNING句の挙動を調整することが可能です。

RETURNING句のカスタマイズを行うことにより、より複雑で特定の要件に合わせたプログラムを実現できます。

○RETURNING句のカスタマイズテクニック

RETURNING句のカスタマイズには様々なテクニックが存在し、これらを適用することでプログラムの機能性を大幅に向上させることができます。

例えば、特定の条件に基づいて異なる値やデータ構造を返すための条件付き返却、RETURNING句で返されるデータに対する追加の加工や変換、エラー発生時の詳細なエラーメッセージやコードを返すためのエラーメッセージのカスタマイズなどが挙げられます。

これらのテクニックを適切に使用することで、ビジネスの要件に応じた特定の機能を実装することが可能となります。

重要なのは、カスタマイズによってプログラムの複雑さを適切に管理し、メンテナンス性と可読性を常に保つことです。

まとめ

この記事では、COBOLプログラミングにおけるRETURNING句の基本的な使い方から、応用例、さらにはカスタマイズテクニックに至るまでを詳しく解説しました。

RETURNING句は、COBOLプログラムにおいて非常に重要な機能であり、その理解と適切な使用がプログラムの効率性と信頼性を高める鍵となります。

この記事を通じて、初心者から上級者まで、COBOLプログラミングにおけるRETURNING句の理解を深め、それを実践的なプログラミングに活かしていただければと思います。

RETURNING句の適切な使用とカスタマイズは、COBOLプログラマーとしてのスキルをさらに高めるための重要なステップです。