【COBOL】SUBTRACT文の活用方法5選

COBOLのSUBTRACT文の使い方を学ぶ初心者COBOL
この記事は約12分で読めます。

 

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

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

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

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

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

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

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

はじめに

この記事では、プログラミングにおける古典的な言語であるCOBOLと、その中の重要な命令であるSUBTRACT文について、初心者でも理解しやすいように徹底的に解説します。

COBOLが今もなおビジネスシステムで広く使われている理由、そしてSUBTRACT文の基本的な使い方から応用例まで、具体的なサンプルコードと共に学びましょう。

この記事を読めば、COBOLの基礎知識とSUBTRACT文の使い方を身につけることができるでしょう。

●COBOLとは

COBOL(Common Business-Oriented Language)は、1959年に開発されたプログラミング言語です。

ビジネスの分野でのデータ処理に特化して設計されており、その読みやすさと堅牢性から、金融機関や政府機関などで今日まで長く使われ続けています。

COBOLは、その構文が英語に近く、非技術者でも理解しやすいのが特徴です。

また、大規模なデータ処理にも強く、高い信頼性と効率性を持っています。

○COBOLの基本的な特徴

COBOLの最大の特徴は、その読みやすい自然言語に近い構文です。

例えば、”ADD A TO B GIVING C”という命令は、「AにBを加えてCに格納する」という意味になります。

これにより、プログラムの可読性が高まり、長期間にわたるメンテナンスや改修が容易になります。

また、COBOLは固定長のレコード処理に優れており、大量のデータを効率的に扱うことができます。

さらに、ビジネスルールをコードに反映しやすいため、会計システムや給与計算システムなどの複雑なビジネスアプリケーションに適しています。

○COBOLでできること

COBOLは、主にビジネスアプリケーションの開発に使用されます。特に、会計、銀行、保険、政府機関などの分野で広く利用されています。

これらの分野では、大量のデータ処理と厳密な計算が求められるため、COBOLの信頼性と効率性が重宝されています。

また、COBOLはレガシーシステムとの互換性を保ちながら、新しい技術と組み合わせて使うことも可能です。

たとえば、既存のCOBOLプログラムをWebサービスと連携させたり、データベースシステムと統合したりすることができます。

これにより、現代のビジネス環境においてもCOBOLは重要な役割を担い続けています。

●SUBTRACT文の基本

COBOLにおけるSUBTRACT文は、数値の減算を行うための基本的な命令です。

これはCOBOLのプログラムで頻繁に使用され、特に財務計算やデータ処理の際に不可欠です。

SUBTRACT文の基本的な機能は、一つまたは複数の数値を別の数値から引くことです。

この文は、非常に柔軟であり、複数の変数から一つの変数を引く、または複数の変数から複数の変数を一度に引くといった複雑な操作も可能にします。

○SUBTRACT文の役割と構文

SUBTRACT文の主な役割は、変数間での数値の減算を行うことです。

基本的な構文は非常にシンプルで、SUBTRACT A FROM Bという形式を取ります。

ここで、Aは減算される値(減数)、Bは減算する値(被減数)を表します。

また、複数の値を一度に減算する場合、SUBTRACT A FROM B Cのように変数を並べることができます。

この場合、ABCから引かれます。さらに、減算の結果を別の変数に格納するためにGIVING句を使用することも可能です。

たとえば、SUBTRACT A FROM B GIVING Cでは、BからAを引いた結果がCに格納されます。

●SUBTRACT文の詳細な使い方

COBOLのSUBTRACT文は、基本的な数値減算のほかにも、より複雑な数値処理にも対応しています。

ここでは、複数の値を一度に減算する方法と、減算結果に基づいて条件分岐を行う方法について詳しく見ていきます。

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

まず、最も基本的な形のSUBTRACT文を見てみましょう。

下記の例では、一つの変数から他の変数を減算し、結果を表示します。

       IDENTIFICATION DIVISION.
       PROGRAM-ID. BasicSubtract.
       DATA DIVISION.
       WORKING-STORAGE SECTION.
       01 NUM-A PIC 9(4) VALUE 1000.
       01 NUM-B PIC 9(4) VALUE 300.
       01 RESULT PIC 9(4).

       PROCEDURE DIVISION.
           SUBTRACT NUM-B FROM NUM-A GIVING RESULT
           DISPLAY "減算結果: " RESULT
           STOP RUN.

このコードは、NUM-A(1000)からNUM-B(300)を引いた結果をRESULTに格納し、その結果を表示します。

○サンプルコード2:複数の値を一度に減算

SUBTRACT文では複数の値を一度に減算することも可能です。

下記の例では、複数の数値を同時に減算し、結果を表示しています。

       IDENTIFICATION DIVISION.
       PROGRAM-ID. MultipleSubtract.
       DATA DIVISION.
       WORKING-STORAGE SECTION.
       01 NUM-A PIC 9(4) VALUE 1000.
       01 NUM-B PIC 9(4) VALUE 300.
       01 NUM-C PIC 9(4) VALUE 200.
       01 RESULT PIC 9(4).

       PROCEDURE DIVISION.
           SUBTRACT NUM-B NUM-C FROM NUM-A GIVING RESULT
           DISPLAY "複数減算結果: " RESULT
           STOP RUN.

このコードでは、NUM-A(1000)からNUM-B(300)とNUM-C(200)を引いた結果をRESULTに格納し、その結果を表示しています。

○サンプルコード3:減算結果の条件分岐

減算の結果に基づいてプログラムの流れを制御することも、SUBTRACT文の重要な使い方の一つです。

次の例では、減算の結果に応じて異なるメッセージを表示します。

       IDENTIFICATION DIVISION.
       PROGRAM-ID. ConditionalSubtract.
       DATA DIVISION.
       WORKING-STORAGE SECTION.
       01 NUM-A PIC 9(4) VALUE 1000.
       01 NUM-B PIC 9(4) VALUE 1200.
       01 RESULT PIC 9(4).

       PROCEDURE DIVISION.
           SUBTRACT NUM-B FROM NUM-A GIVING RESULT
           IF RESULT < 0
               DISPLAY "結果は負の値です"
           ELSE
               DISPLAY "結果: " RESULT
           END-IF
           STOP RUN.

このコードでは、NUM-AからNUM-Bを引いた結果が0未満の場合、「結果は負の値です」と表示し、そうでなければ実際の減算結果を表示します。

このようにSUBTRACT文を用いることで、数値の減算だけでなく、その結果に基づいたプログラムの分岐処理も実現できます。

●SUBTRACT文の応用例

COBOLのSUBTRACT文は基本的な減算操作にとどまらず、より複雑なプログラミングシナリオにも応用できます。

ループ処理や複合代入を用いた高度な使い方を学ぶことで、COBOLプログラミングのスキルを一層深めることができます。

○サンプルコード4:ループ処理での応用

ループ処理を用いたSUBTRACT文の応用例として、繰り返し処理内での減算を行う方法を見ていきましょう。

下記のコードは、特定の条件まで数値を減算し続ける例です。

       IDENTIFICATION DIVISION.
       PROGRAM-ID. LoopSubtract.
       DATA DIVISION.
       WORKING-STORAGE SECTION.
       01 NUM PIC 9(4) VALUE 1000.
       01 COUNTER PIC 9(4) VALUE 10.

       PROCEDURE DIVISION.
       BEGIN.
           PERFORM UNTIL COUNTER = 0
               SUBTRACT 100 FROM NUM
               DISPLAY "残り: " NUM
               SUBTRACT 1 FROM COUNTER
           END-PERFORM
           DISPLAY "最終結果: " NUM
           STOP RUN.

このコードでは、NUM(1000)から100を10回減算し、各ステップで残りの値を表示します。

ループが終了すると、最終的な減算結果を表示します。

○サンプルコード5:複合代入を使った応用

COBOLでは、複合代入を使ってより効率的なコードを書くことも可能です。

下記の例では、複数の減算操作を一つのステートメントで行っています。

       IDENTIFICATION DIVISION.
       PROGRAM-ID. CompoundSubtract.
       DATA DIVISION.
       WORKING-STORAGE SECTION.
       01 TOTAL PIC 9(4) VALUE 1000.
       01 DISCOUNT-A PIC 9(4) VALUE 150.
       01 DISCOUNT-B PIC 9(4) VALUE 200.

       PROCEDURE DIVISION.
           SUBTRACT DISCOUNT-A DISCOUNT-B FROM TOTAL
           DISPLAY "割引後合計: " TOTAL
           STOP RUN.

このコードでは、TOTAL(1000)からDISCOUNT-A(150)とDISCOUNT-B(200)を一度に引いて、割引後の合計金額を計算しています。

これにより、複数の減算操作を効率的に行うことが可能になります。

●注意点と対処法

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

これらを理解し、適切な対処法を知ることで、エラーを防ぎ、より効率的なプログラミングを行うことができます。

○SUBTRACT文使用時の一般的な注意点

SUBTRACT文を使用する際の主な注意点としては、次の点が挙げられます。

  • SUBTRACT文では、計算結果が変数の格納範囲を超えることがあります。これをオーバーフローと呼び、不正確な結果を引き起こす可能性があります。
  • 減算の結果が負の数になる場合、その数値を格納する変数が負の数を扱えるかどうかを確認する必要があります。
  • 異なるデータ型の変数を減算しようとすると、エラーが発生することがあります。

○よくあるエラーとその解決策

これらの注意点に基づいて、よくあるエラーとその解決策は次のようになります。

  • 演算前に変数の値が許容範囲内にあるかを確認し、必要に応じて適切なデータ型を選択します。
  • 減算の結果が負の数になる可能性がある場合、変数が負の値を格納できるようにします。例えば、PIC S9(4)のように符号付きのデータ型を使用します。
  • 減算を行う前に、関与する変数が同じデータ型であることを確認します。異なるデータ型を使用する場合は、適切に型変換を行います。

これらのポイントを理解し、適切に対処することで、SUBTRACT文を使用したプログラミングでのエラーを大幅に減らすことができます。

また、これらのポイントはCOBOLプログラミングにおける他の数値演算にも当てはまるため、基本としてしっかりと押さえておくことが重要です。

●COBOLプログラミングのカスタマイズ方法

COBOLプログラミングでは、基本的な構文や命令を応用して、さまざまなカスタマイズが可能です。

特に、SUBTRACT文を活用することで、より効率的で柔軟なプログラムを作成することができます。

○SUBTRACT文を使ったカスタマイズ例

SUBTRACT文のカスタマイズには、複数の減算操作を組み合わせたり、特定の条件下で減算を行ったりすることが含まれます。

例えば、ループ内での繰り返し減算や、条件分岐を伴う減算処理です。

これらのテクニックを駆使することで、より複雑なビジネスロジックを効率的に処理することが可能になります。

また、COBOLプログラム内での変数の使用方法を工夫することも重要です。

例えば、減算結果を一時的に格納するための補助変数を使用することで、プログラムの可読性や保守性を高めることができます。

さらに、変数のスコープや寿命を適切に管理することで、リソースの効率的な使用やエラーの防止にもつながります。

○効率的なコードの書き方

効率的なCOBOLコードを書くためのポイントとしては、次のような点が挙げられます。

  • 変数やプログラムの部品に意味のある名前を付けることで、プログラムの理解とメンテナンスが容易になります。
  • 共通の処理を関数やプロシージャにまとめることで、コードの重複を避け、変更に強いプログラムを作成できます。
  • コードには適切なコメントを付け、必要に応じて外部ドキュメントを整備することで、他の開発者との協力や将来の自分自身のための理解を助けます。

これらのポイントを踏まえながらプログラミングを行うことで、COBOLで効率的かつ高品質なプログラムを作成することができます。

特に、SUBTRACT文のような基本的な命令を巧みに使いこなすことで、COBOLプログラムの可能性を広げることができるでしょう。

まとめ

この記事を通じて、COBOLのSUBTRACT文の基本から応用までを詳細に解説してきました。

SUBTRACT文は、単なる数値の減算を超え、さまざまなビジネスロジックの処理において重要な役割を果たします。

効率的で読みやすいCOBOLコードを書くためには、クリアな命名規則、重複コードの排除、適切なコメントとドキュメントの記述などの基本を守ることが大切です。

これらの実践は、プログラムの品質を高め、他の開発者との協力を容易にします。