COBOLのRETURN文を活用しよう!7つのサンプルコードで徹底解説

COBOLのRETURN文を使ったコーディング例COBOL
この記事は約16分で読めます。

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

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

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

基本的な知識があればサンプルコードを活用して機能追加、目的を達成できるように作ってあります。

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

サイト内のコードを共有する場合は、参照元として引用して下さいますと幸いです

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

はじめに

COBOLのRETURN文に焦点を当て、この記事ではCOBOLの基本から応用に至るまでを、7つのサンプルコードを通して徹底的に解説します。

COBOLに関心のあるプログラミング初心者から経験者まで、この記事を通じてCOBOLのRETURN文の理解を深め、基本操作から応用技術までを学ぶことができます。

●COBOLとは

COBOLはCommon Business-Oriented Languageの略で、ビジネス用途に特化したプログラミング言語です。

1959年に開発されて以来、金融機関や政府機関などで幅広く使用されてきました。

COBOLの最大の特徴は、その英語に近い読みやすい構文にあります。

大規模な商用アプリケーション開発において、その信頼性と堅牢性から高い評価を受けています。

○COBOLの歴史

COBOLは、コンピュータの黎明期に開発されたビジネスアプリケーション向けの最初の高水準プログラミング言語の一つです。

その目的は、読みやすく、理解しやすいプログラミング言語を提供することにありました。

英語のような自然言語に近い構文を採用することで、この目的を達成しています。

ビジネスデータの処理と報告に特化しているため、多くの企業や組織で長年にわたり採用されてきました。

○COBOLの特徴

COBOLの特徴としては、英語に似た構文があり、非技術者でも理解しやすい点が挙げられます。これにより、プログラムの可読性が高まります。

また、ビジネスアプリケーション向けに設計されているため、大量のデータを扱う際のファイル処理やデータベースアクセスに優れています。

長期にわたる使用による安定性と、多くの既存システムとの互換性も特長です。

大規模な商用システムへの適用性が高く、特に金融機関や政府機関での使用が多いことも、COBOLの重要な特性です。

これらの特徴により、COBOLは今もなお多くの企業や組織で利用され続けています。

●RETURN文の基本

COBOLでのRETURN文は、ファイル処理の際に特に重要な役割を果たします。

この文は、シーケンシャルまたはインデックスファイルからレコードを読み込むために使用され、データ処理の効率を高めるための重要なツールです。

RETURN文は、データがファイルからどのように取り出され、プログラムによってどのように処理されるかを定義することにより、COBOLプログラムの効率と正確性を大きく向上させることができます。

○RETURN文の役割

RETURN文は、主にファイル処理におけるレコードの読み込みに使用されます。

この文を使うことで、プログラムはファイルから次のレコードを読み込み、それを処理するためのデータとして使用することができます。

RETURN文は、特にループ処理や条件判定の中で役立ちます。

例えば、ファイルからすべてのレコードを読み込んで処理する際、RETURN文はループの各繰り返しで次のレコードを取得するために使用されます。

また、ファイルの終端に達したかどうかを判断するためにも用いられます。

○RETURN文の構文

COBOLのRETURN文の基本構文は、次のようになります。

RETURN ファイル名 [INTO データ項目]

ここで、「ファイル名」は読み込むファイルの名前を指定し、「データ項目」は読み込んだレコードを格納する変数を指定します。

INTO句はオプションで、この句がない場合、ファイルから読み込まれたデータは、ファイルの記述で指定されたデータ領域に直接配置されます。

●RETURN文の使い方

COBOLのRETURN文は、ファイルからデータを効率的に読み込むために広く使用されます。

この文を使用することで、プログラマはファイルのレコードを一つずつ取得し、それらを必要に応じて処理することができます。

RETURN文の使用方法は、ファイルの種類やプログラムの要件によって異なりますが、一般的にはループ処理の中で使用されることが多いです。

例えば、ファイルのすべてのレコードを順番に読み込み、それぞれに対して特定の操作を行う場合などに役立ちます。

○サンプルコード1:ファイル読み込み

ここでは、COBOLでRETURN文を使用してファイルからレコードを読み込む基本的なサンプルコードを紹介します。

IDENTIFICATION DIVISION.
PROGRAM-ID. SampleRead.
DATA DIVISION.
FILE SECTION.
FD EmployeeFile.
01 EmployeeRecord PIC X(100).

PROCEDURE DIVISION.
BEGIN.
    OPEN INPUT EmployeeFile.
    PERFORM UNTIL EOF
        RETURN EmployeeFile
        IF NOT EOF
            PERFORM PROCESSRECORD
        END-IF
    END-PERFORM.
    CLOSE EmployeeFile.
    STOP RUN.

PROCESSRECORD.
    DISPLAY EmployeeRecord.

このコードでは、EmployeeFileというファイルからレコードを読み込み、それをEmployeeRecordに格納しています。

PROCESSRECORD部分では、読み込んだレコードを処理するための手続きが記述されます。

○サンプルコード2:条件分岐

RETURN文は、条件分岐と組み合わせて使用することで、より複雑なデータ処理が可能になります。

例えば、特定の条件に基づいてファイルから特定のレコードのみを選択して処理する場合などです。

IDENTIFICATION DIVISION.
PROGRAM-ID. SampleConditional.
DATA DIVISION.
FILE SECTION.
FD SalesFile.
01 SalesRecord PIC X(100).

PROCEDURE DIVISION.
BEGIN.
    OPEN INPUT SalesFile.
    PERFORM UNTIL EOF
        RETURN SalesFile
        IF NOT EOF
            IF SalesRecord SATISFIES CONDITION
                PERFORM PROCESSRECORD
            END-IF
        END-IF
    END-PERFORM.
    CLOSE SalesFile.
    STOP RUN.

PROCESSRECORD.
    DISPLAY SalesRecord.

このコードでは、SalesFileからレコードを読み込み、SalesRecordが特定の条件を満たす場合にのみPROCESSRECORD手続きを実行しています。

○サンプルコード3:データ処理

RETURN文を使用したデータ処理では、読み込んだデータに対してさまざまな操作を行うことができます。

これには数値の計算、文字列の操作、またはデータの集約などが含まれます。

IDENTIFICATION DIVISION.
PROGRAM-ID. SampleProcessing.
DATA DIVISION.
FILE SECTION.
FD TransactionFile.
01 TransactionRecord PIC X(100).

WORKING-STORAGE SECTION.
01 TotalAmount PIC 9(10) VALUE ZERO.

PROCEDURE DIVISION.
BEGIN.
    OPEN INPUT TransactionFile.
    PERFORM UNTIL EOF
        RETURN TransactionFile
        IF NOT EOF
            ADD AMOUNT FROM TransactionRecord TO TotalAmount
        END-IF
    END-PERFORM.
    DISPLAY "Total Amount: " TotalAmount.
    CLOSE TransactionFile.
    STOP RUN.

このコードでは、TransactionFileからトランザクションのレコードを読み込み、それぞれのトランザクションから金額を抽出して総額を計算しています。

●RETURN文の応用例

COBOLにおけるRETURN文の応用は、その使い方に応じて多岐にわたります。

特に複雑なファイル操作やエラーハンドリングの際に、RETURN文は大きな力を発揮します。

RETURN文を用いることで、より効率的かつ柔軟なファイル処理が可能になり、エラー処理やデータの整合性チェックにおいても重要な役割を果たします。

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

下記のサンプルコードは、複数のファイルから同時にデータを読み込み、それらを組み合わせて処理する例を表しています。

IDENTIFICATION DIVISION.
PROGRAM-ID. MultiFileProcess.
DATA DIVISION.
FILE SECTION.
FD FirstFile.
01 FirstRecord PIC X(100).
FD SecondFile.
01 SecondRecord PIC X(100).

PROCEDURE DIVISION.
BEGIN.
    OPEN INPUT FirstFile, SecondFile.
    PERFORM UNTIL EOF-FirstFile OR EOF-SecondFile
        RETURN FirstFile
        IF NOT EOF-FirstFile
            PERFORM PROCESS-FIRSTRECORD
        END-IF
        RETURN SecondFile
        IF NOT EOF-SecondFile
            PERFORM PROCESS-SECONDRECORD
        END-IF
    END-PERFORM.
    CLOSE FirstFile, SecondFile.
    STOP RUN.

PROCESS-FIRSTRECORD.
    DISPLAY "First File: " FirstRecord.

PROCESS-SECONDRECORD.
    DISPLAY "Second File: " SecondRecord.

このコードでは、二つのファイル(FirstFileSecondFile)からデータを読み込み、それぞれのレコードを処理しています。

このような処理は、データの比較や結合など、複数のデータソースを扱う際に有効です。

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

RETURN文を使用する際のエラーハンドリングは、プログラムの堅牢性を高める上で重要です。

下記のサンプルコードでは、ファイル読み込み中のエラーを検出し、適切に処理する方法を表しています。

IDENTIFICATION DIVISION.
PROGRAM-ID. ErrorHandling.
DATA DIVISION.
FILE SECTION.
FD CustomerFile.
01 CustomerRecord PIC X(100).

PROCEDURE DIVISION.
BEGIN.
    OPEN INPUT CustomerFile.
    PERFORM UNTIL EOF-CustomerFile
        RETURN CustomerFile
        IF NOT EOF-CustomerFile
            PERFORM PROCESS-CUSTOMERRECORD
        ELSE
            DISPLAY "Error in reading file or EOF reached."
        END-IF
    END-PERFORM.
    CLOSE CustomerFile.
    STOP RUN.

PROCESS-CUSTOMERRECORD.
    DISPLAY "Customer: " CustomerRecord.

このコードでは、CustomerFileからのレコード読み込みに失敗した場合、またはファイルの終端に達した場合にメッセージを表示します。

エラーハンドリングを行うことで、ファイルの不整合や予期せぬ終了からプログラムを保護し、より信頼性の高い処理を実現できます。

○サンプルコード6:効率的なデータアクセス

効率的なデータアクセスを実現するためには、RETURN文を活用してファイルからのデータ読み込みを最適化することが重要です。

下記のサンプルコードでは、大量のデータを含むファイルから必要な情報のみを迅速に抽出し、処理を行う方法を紹介します。

IDENTIFICATION DIVISION.
PROGRAM-ID. EfficientAccess.
DATA DIVISION.
FILE SECTION.
FD LargeDataFile.
01 LargeDataRecord PIC X(100).

PROCEDURE DIVISION.
BEGIN.
    OPEN INPUT LargeDataFile.
    PERFORM UNTIL EOF-LargeDataFile
        RETURN LargeDataFile
        IF NOT EOF-LargeDataFile
            IF LargeDataRecord SATISFIES SOME CONDITION
                PERFORM PROCESS-LARGEDATARECORD
            END-IF
        END-IF
    END-PERFORM.
    CLOSE LargeDataFile.
    STOP RUN.

PROCESS-LARGEDATARECORD.
    DISPLAY "Data: " LargeDataRecord.

このコードは、大量のデータを扱うファイルLargeDataFileから特定の条件を満たすレコードのみを読み込んで表示する処理を行います。

このようにRETURN文を使うことで、必要なデータのみを効率的に取り出し、処理を行うことができます。

○サンプルコード7:ユーザーインターフェースとの連携

COBOLプログラムがユーザーインターフェースと連携する際にも、RETURN文は重要な役割を果たします。

下記のサンプルコードは、ユーザーからの入力に基づいてファイルから特定のデータを検索し、結果をユーザーインターフェースに表示しています。

IDENTIFICATION DIVISION.
PROGRAM-ID. InterfaceIntegration.
DATA DIVISION.
FILE SECTION.
FD UserQueryFile.
01 UserQueryRecord PIC X(100).
FD ResponseFile.
01 ResponseRecord PIC X(100).

PROCEDURE DIVISION.
BEGIN.
    ACCEPT UserQueryRecord FROM CONSOLE.
    OPEN INPUT UserQueryFile, ResponseFile.
    PERFORM UNTIL EOF-UserQueryFile
        RETURN UserQueryFile
        IF NOT EOF-UserQueryFile AND UserQueryRecord EQUALS SOME KEY
            RETURN ResponseFile
            DISPLAY ResponseRecord ON CONSOLE
        END-IF
    END-PERFORM.
    CLOSE UserQueryFile, ResponseFile.
    STOP RUN.

このコードでは、ユーザーからのクエリUserQueryRecordを受け取り、それに基づいてUserQueryFileから関連するデータを検索し、ResponseFileからの応答をユーザーインターフェースに表示します。

RETURN文の使用により、ユーザーの要求に応じたデータアクセスと処理が可能になります。

●注意点と対処法

COBOLプログラミングにおけるRETURN文の使用には、いくつかの注意点があります。

これらを理解し、適切に対処することで、エラーを防ぎ、プログラムの品質を保つことができます。

まず、RETURN文はファイル操作において非常に強力ですが、ファイルが正しく開かれていない場合や、既に閉じられている場合には、予期せぬエラーが発生する可能性があります。

したがって、RETURN文を使用する前には、ファイルが適切に開かれていることを確認し、処理の終了後はファイルを閉じることが重要です。

また、ファイルの終端に達したかどうかを正しく判断するために、EOF(End-Of-File)のチェックを適切に行う必要があります。

EOFに達していない状態でRETURN文を実行すると、未定義のデータを読み込むリスクがあります。

○RETURN文の使いどころ

RETURN文は特に、大規模なデータファイルや複数のファイルを扱う際に有効です。

データの読み込みが必要な場所、特にループ処理内での使用が一般的です。

しかし、RETURN文はファイルのレコードを一度に一つずつしか読み込まないため、全体のデータを一度に処理する必要がある場合には、他の方法を検討することが望ましいです。

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

COBOLのRETURN文使用時に一般的に発生するエラーには、ファイルが存在しない、アクセス権限の不足、ファイルのフォーマットの不一致などがあります。

これらのエラーに対する対処法としては、事前にファイルの存在を確認する、適切なファイルアクセス権を確保する、ファイルフォーマットを事前にチェックするなどが挙げられます。

ファイルの読み込みエラーが発生した場合は、エラーメッセージを適切にハンドリングして、ユーザーに通知することも重要です。

これにより、プログラムの使い勝手が向上し、エラーの原因を素早く特定し、対応することが可能になります。

●カスタマイズ方法

COBOLにおけるRETURN文のカスタマイズ方法は、プログラムの特定のニーズに応じて多様です。

RETURN文の挙動をカスタマイズすることで、ファイルの読み込みやデータ処理をより柔軟に制御できるようになります。

例えば、特定の条件に基づいてファイルから特定のレコードを読み込む、または特定のデータ形式のみを処理するようにすることが可能です。

RETURN文のカスタマイズには、読み込むデータの型やファイルのアクセス方法を変更することが含まれます。

また、特定のエラー処理ロジックを組み込むことで、ファイル操作中に発生する可能性のある様々なエラーに対応することも重要です。

○RETURN文の応用テクニック

RETURN文を応用するテクニックとしては、条件分岐を使用して特定のレコードのみを処理する、ループ内での効率的な読み込み方法の実装、エラーハンドリングの強化などがあります。

これらのテクニックを駆使することで、COBOLプログラムはより効率的で堅牢になります。

例えば、ファイルから特定の条件を満たすレコードのみを選択的に読み込む方法は、大量のデータを扱う際に特に有効です。

これにより、不要なデータの読み込みを避け、プログラムのパフォーマンスを向上させることができます。

また、エラーハンドリングの強化により、ファイル読み込み時の様々な例外状況に対応することが可能になります。

例外処理を適切に実装することで、プログラムの安定性と信頼性が高まります。

○効果的なコーディング習慣

COBOLプログラミングにおける効果的なコーディング習慣には、コードの明瞭さ、再利用性、効率性が含まれます。

RETURN文を使用する際には、コードの可読性を保ちながらも、必要な機能を適切に実装することが重要です。

コードの再利用性を高めるためには、汎用的なファイル読み込み処理をモジュール化することが効果的です。

これにより、異なるプログラム間で同じファイル処理ロジックを共有し、開発の効率化を図ることができます。

また、プログラムの効率性を向上させるためには、必要最小限のデータのみを読み込む、不要な処理を排除するなどの工夫が必要です。

これにより、プログラムの実行時間の短縮やリソースの節約が可能になります。

まとめ

この記事を通して、COBOLプログラミングにおけるRETURN文の基本から応用までを深く解説してきました。

RETURN文の正しい知識と使い方を身につけることは、あらゆるレベルのCOBOLプログラマーにとって非常に価値があります。

この記事が、COBOLプログラミングの更なる探求への一助となることを願っています。