【COBOL】COMPUTE文の活用法を6選で徹底解説 – Japanシーモア

【COBOL】COMPUTE文の活用法を6選で徹底解説

COBOLプログラミングのCOMPUTE文を使ったコード例COBOL
この記事は約14分で読めます。

 

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

このサービスは複数のSSPによる協力の下、運営されています。

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

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

基本的な知識があればカスタムコードを使って機能追加、目的を達成できるように作ってあります。

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

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

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

はじめに

この記事を読めば、COBOLの基本的な概念であるCOMPUTE文の使い方を、初心者でも簡単に理解できるようになります。

COBOLは長い歴史を持つプログラミング言語で、ビジネスや金融分野で今もなお広く使われています。

この記事では、COBOLの基本的な知識と、COMPUTE文の使い方を詳細に解説します。

サンプルコードを通して、COBOLの計算機能の活用方法を学びましょう。

●COBOLとは

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

その名の通り、商用データ処理に特化しており、銀行や保険会社、政府機関などで広く使われています。

COBOLは読みやすく、理解しやすい構文が特徴です。そのため、長期間にわたるシステム運用や保守に適しており、古いシステムでも現代に至るまで利用され続けています。

○COBOLの歴史と特徴

COBOLは、その開発当初からビジネス環境における大規模なデータ処理のニーズに応えるために設計されました。

COBOL言語の主な特徴は、英語に近い自然な構文と、堅牢なファイル処理機能です。

これらの特徴により、COBOLはプログラミング初心者や非技術者でも比較的容易に学べる言語となっています。

また、COBOLは互換性が高く、古いシステムと新しいシステムの間でのデータ交換が可能です。

○COBOLの現代における重要性

現代においても、COBOLは金融業界や政府機関など、重要な分野で広く使われ続けています。

多くの既存システムがCOBOLで書かれており、これらのシステムを維持・更新するためにはCOBOLの知識が不可欠です。

また、新しい技術との統合や、クラウドコンピューティングへの対応など、COBOLの応用範囲は拡大しています。

このように、COBOLは古い言語でありながら、その重要性は現代でも変わらず、新たな技術と共存しながら進化を続けています。

●COMPUTE文の基本

COBOLにおけるCOMPUTE文は、数値計算を行うための強力なツールです。

この文は複雑な数学的演算を簡単に記述できるため、ビジネスや金融分野での計算処理に非常に有用です。

COBOLプログラミングにおいて、COMPUTE文の理解と正しい使用は非常に重要です。

ここでは、COMPUTE文の基本的な構文と機能、そして基本的な使い方を解説します。

○COMPUTE文の構文と機能

COMPUTE文は、算術演算を行い、結果を変数に代入するために使用されます。

基本的な構文は次の通りです。

「COMPUTE 変数 = 算術表現」。

ここで、「変数」は計算結果を格納する変数を指し、「算術表現」は加算、減算、乗算、除算などの算術演算を含む式です。

COMPUTE文は、複数の演算を一つの文で扱うことができ、プログラムをより簡潔にし、可読性を高めることができます。

○COMPUTE文の基本的な使い方

COMPUTE文の基本的な使い方を理解するために、簡単な例を見てみましょう。

ここでは、二つの数値の加算を行い、その結果を別の変数に代入するサンプルコードを紹介します。

       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 Sum  PIC 9(4).
       PROCEDURE DIVISION.
           COMPUTE Sum = Num1 + Num2.
           DISPLAY "Sum: " Sum.
           STOP RUN.

このコードでは、まず「Num1」と「Num2」という二つの数値変数を定義し、それらに100と200の値を代入しています。

次に、「COMPUTE Sum = Num1 + Num2」という文でこれらの数値の和を計算し、結果を「Sum」という変数に代入しています。

最後に、計算結果を表示するために「DISPLAY」文を使用しています。

●COMPUTE文の詳細なサンプルコード

COBOLのCOMPUTE文を用いた詳細なサンプルコードを紹介します。

これらの例は、COMPUTE文の多様な活用方法を理解するのに役立ちます。

ここでは、基本的な計算から始めて徐々に複雑な計算式へと進み、最後に条件付きの計算を行います。

○サンプルコード1:基本的な計算

最初の例では、単純な加算を行うサンプルコードを紹介します。

       IDENTIFICATION DIVISION.
       PROGRAM-ID. SimpleAddition.
       DATA DIVISION.
       WORKING-STORAGE SECTION.
       01 NumA PIC 9(4) VALUE 25.
       01 NumB PIC 9(4) VALUE 75.
       01 Total PIC 9(4).
       PROCEDURE DIVISION.
           COMPUTE Total = NumA + NumB.
           DISPLAY "Total: " Total.
           STOP RUN.

このコードでは、二つの数値変数「NumA」と「NumB」にそれぞれ25と75を代入しています。

次に、「COMPUTE Total = NumA + NumB」文を用いてこれらの数値の和を計算し、結果を「Total」という変数に代入しています。

最後に、計算結果を表示するために「DISPLAY」文を使用しています。

○サンプルコード2:複雑な計算式

次に、より複雑な計算式を含む例を見てみましょう。

       IDENTIFICATION DIVISION.
       PROGRAM-ID. ComplexCalculation.
       DATA DIVISION.
       WORKING-STORAGE SECTION.
       01 NumX PIC 9(4) VALUE 10.
       01 NumY PIC 9(4) VALUE 20.
       01 NumZ PIC 9(4) VALUE 30.
       01 Result PIC 9(4).
       PROCEDURE DIVISION.
           COMPUTE Result = (NumX + NumY) * NumZ / 2.
           DISPLAY "Result: " Result.
           STOP RUN.

この例では、三つの変数「NumX」、「NumY」、「NumZ」を用いて、複雑な算術演算を行っています。演算は括弧を使って、加算と乗算、除算の順序を明確にしています。

こうすることで、COBOLがどのように複雑な式を扱うかを表しています。

○サンプルコード3:条件付き計算

最後に、条件付き計算を行う例を紹介します。

       IDENTIFICATION DIVISION.
       PROGRAM-ID. ConditionalCalculation.
       DATA DIVISION.
       WORKING-STORAGE SECTION.
       01 Score PIC 9(4) VALUE 85.
       01 Grade PIC A(1).
       PROCEDURE DIVISION.
           IF Score > 80 THEN
               COMPUTE Grade = "A"
           ELSE
               COMPUTE Grade = "B".
           DISPLAY "Grade: " Grade.
           STOP RUN.

このコードでは、「Score」という変数に85という値が代入されています。

その後、IF文を使用して「Score」の値が80を超えるかどうかをチェックし、それに基づいて「Grade」という変数にグレードを代入しています。

このようにCOMPUTE文を条件文と組み合わせることで、条件に基づいた計算を実現できます。

●COMPUTE文の応用例

COBOLのCOMPUTE文は、ビジネスロジックの処理やデータ処理の自動化、さらにはファイル操作との組み合わせにも使用できます。

これらの応用例を通じて、COBOLの柔軟性と実用性を理解することができます。

○サンプルコード4:ビジネスロジックへの応用

ビジネスロジックの処理では、COMPUTE文を使って複雑な計算を実装できます。

下記の例では、販売データに基づいて売上と利益を計算します。

       IDENTIFICATION DIVISION.
       PROGRAM-ID. BusinessLogic.
       DATA DIVISION.
       WORKING-STORAGE SECTION.
       01 Sales PIC 9(8) VALUE 100000.
       01 Cost PIC 9(8) VALUE 60000.
       01 Profit PIC 9(8).
       PROCEDURE DIVISION.
           COMPUTE Profit = Sales - Cost.
           DISPLAY "Profit: " Profit.
           STOP RUN.

このコードでは、販売額と原価をそれぞれ変数「Sales」と「Cost」に設定し、COMPUTE文で利益を計算しています。

このようにして、COMPUTE文はビジネスロジックの核となる計算を行うのに適しています。

○サンプルコード5:データ処理の自動化

データ処理の自動化では、COMPUTE文を使用して効率的にデータを処理できます。

下記の例では、シーケンス番号の自動生成を表しています。

       IDENTIFICATION DIVISION.
       PROGRAM-ID. DataAutomation.
       DATA DIVISION.
       WORKING-STORAGE SECTION.
       01 SequenceNumber PIC 9(8) VALUE 0.
       PROCEDURE DIVISION.
           PERFORM 10 TIMES
               COMPUTE SequenceNumber = SequenceNumber + 1
               DISPLAY "Sequence Number: " SequenceNumber
           END-PERFORM.
           STOP RUN.

このコードでは、COMPUTE文を使ってシーケンス番号を自動で増加させています。

PERFORM文と組み合わせることで、繰り返し処理においてもCOMPUTE文の効果を発揮させることができます。

○サンプルコード6:ファイル操作との組み合わせ

ファイル操作との組み合わせでは、COMPUTE文を使用してファイル内のデータを処理することができます。

下記の例では、ファイルから読み込んだデータに対して計算を行います。

       IDENTIFICATION DIVISION.
       PROGRAM-ID. FileOperation.
       DATA DIVISION.
       FILE SECTION.
       FD SalesFile.
       01 SalesRecord.
           05 MonthSales PIC 9(8).
       WORKING-STORAGE SECTION.
       01 TotalSales PIC 9(8) VALUE 0.
       PROCEDURE DIVISION.
           OPEN INPUT SalesFile.
           READ SalesFile INTO SalesRecord AT END DISPLAY "End of file."
           PERFORM UNTIL EOF
               COMPUTE TotalSales = TotalSales + MonthSales
               READ SalesFile INTO SalesRecord AT END DISPLAY "End of file."
           END-PERFORM.
           CLOSE SalesFile.
           DISPLAY "Total Sales: " TotalSales.
           STOP RUN.

この例では、ファイル「SalesFile」から月間販売データを読み込み、その合計を計算しています。

COMPUTE文は、ファイルからのデータ読み込みと組み合わせて使用することで、効率的なデータ処理が可能になります。

●COMPUTE文の注意点と対処法

COBOLプログラミングにおけるCOMPUTE文を使用する際には、特に数値精度の管理とエラー処理に注意を払う必要があります。

これらの注意点を理解し、適切な対処法を学ぶことで、COBOLプログラムの信頼性と効率性を高めることができます。

○数値精度の管理

COMPUTE文では、計算の結果が変数の定義に合致するように数値精度を適切に管理することが重要です。

精度の不足は、計算結果の誤りにつながる可能性があります。

例えば、計算結果が予想より大きい場合、変数のサイズが不十分であれば、データが切り捨てられるか、エラーが発生することがあります。

このような問題を避けるためには、変数のサイズを適切に設定し、必要に応じて四捨五入や切り捨てを行う処理を追加することが重要です。

○エラー処理

COMPUTE文を使用する際には、エラー処理も重要な要素です。

特に、ゼロによる除算やオーバーフローなどの計算エラーに注意が必要です。

COBOLには、計算エラーを検出し処理するための機構が用意されています。

例えば、オンサイズエラーやオンオーバーフローといった句を使用して、エラー発生時の処理を定義できます。

このようなエラー処理を適切に実装することで、プログラムの安定性を向上させることができます。

       IDENTIFICATION DIVISION.
       PROGRAM-ID. ErrorHandlingExample.
       DATA DIVISION.
       WORKING-STORAGE SECTION.
       01 Num1 PIC 9(4) VALUE 100.
       01 Num2 PIC 9(4) VALUE 0.
       01 Result PIC 9(4).
       PROCEDURE DIVISION.
           COMPUTE Result = Num1 / Num2 ON SIZE ERROR
               DISPLAY "Error: Division by zero."
           END-COMPUTE.
           DISPLAY "Result: " Result.
           STOP RUN.

このサンプルコードでは、ゼロによる除算を試みた際にエラーメッセージを表示し、プログラムが安全に停止するようにしています。

エラー処理を適切に行うことで、予期せぬ状況でもプログラムが適切に動作するようになります。

●COBOLのカスタマイズと拡張

COBOLは長年にわたり使用されている言語であり、その基本的な機能を拡張し、現代のプログラミングニーズに合わせてカスタマイズすることが可能です。

ライブラリやフレームワークの活用、そして他の現代言語との統合は、COBOLの機能を強化し、より幅広い用途で利用するための鍵となります。

○ライブラリとフレームワークの活用

COBOLプログラミングを行う際、様々なライブラリやフレームワークを活用することで、開発の効率性と機能性を高めることができます。

例えば、数学計算や文字列処理、データベース接続などに特化したライブラリを利用することで、標準的なCOBOLの機能を拡張し、より複雑な処理を簡単に実装できます。

また、特定の業務やアプリケーションに特化したフレームワークを使用することで、開発プロセスを標準化し、効率的にアプリケーションを構築できます。

○現代の言語との統合

COBOLと他の現代のプログラミング言語との統合は、システムの現代化において重要な役割を果たします。

例えば、COBOLとJavaやPythonなどの言語との間でデータを交換したり、一部の処理を他の言語で実装したりすることが可能です。

これにより、既存のCOBOLシステムを維持しつつ、新しい技術や機能を統合することができます。

また、WebサービスやAPIとの連携を通じて、COBOLアプリケーションをより広範なシステムやアプリケーションと統合することも可能です。

まとめ

この記事を通じて、COBOL言語のCOMPUTE文の基本から応用までの幅広い側面を探求しました。

初心者から上級者まで、COMPUTE文の使い方やその機能を理解することで、COBOLプログラミングの可能性を広げることができます。

本記事では、COMPUTE文の基本的な構文や使い方、詳細なサンプルコードに始まり、ビジネスロジックの応用、データ処理の自動化、ファイル操作との組み合わせといった応用例までを紹介しました。

COBOLは、その堅牢性と信頼性から長年にわたりビジネスや金融分野で広く利用されてきました。

現代においても、ライブラリやフレームワークの活用、他のプログラミング言語との統合を通じて、COBOLは進化し続けています。

この記事が、COBOLのCOMPUTE文の理解を深め、実際のプログラミングシーンでの活用に役立つことを願っています。