COBOLのADD・SUBTRACT文の使い方を完全ガイド!初心者でもわかる足し算と引き算の基本
生徒
「先生、COBOLで足し算や引き算をするにはどうすればいいんですか?」
先生
「良い質問ですね。COBOLではADD文とSUBTRACT文を使うことで、数値の足し算や引き算が簡単にできます。」
生徒
「へえ!英語みたいですね。実際にどんなふうに書くんですか?」
先生
「それでは、実際の使い方と注意点を一緒に見ていきましょう。」
1. ADD文とは?
ADD文は、COBOLで足し算を行うための命令です。英語の「add(足す)」という単語の通り、数値を加算して結果を保存します。
基本の形は次のようになります。
ADD 数値1 TO 数値2.
これは「数値1を数値2に加える」という意味になります。TOの後にある変数が、計算結果を受け取る変数です。
では、実際に動くサンプルを見てみましょう。
IDENTIFICATION DIVISION.
PROGRAM-ID. ADD-SAMPLE.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 A PIC 9(3) VALUE 10.
01 B PIC 9(3) VALUE 5.
PROCEDURE DIVISION.
ADD A TO B.
DISPLAY "結果は " B " です。"
STOP RUN.
結果は 15 です。
このプログラムでは、Aの値(10)をBに足して、結果が15になりました。
2. SUBTRACT文とは?
SUBTRACT文は、COBOLで引き算を行う命令です。英語の「subtract(引く)」という意味で、数値を引いて結果を保存します。
基本の形は次のようになります。
SUBTRACT 数値1 FROM 数値2.
これは「数値2 − 数値1」という意味です。つまり、「FROMの後の値」から「前の値」を引きます。最初は逆に見えて戸惑うかもしれませんが、英語の語順の通りに読めば簡単です。
IDENTIFICATION DIVISION.
PROGRAM-ID. SUBTRACT-SAMPLE.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 A PIC 9(3) VALUE 10.
01 B PIC 9(3) VALUE 3.
PROCEDURE DIVISION.
SUBTRACT A FROM B.
DISPLAY "結果は " B " です。"
STOP RUN.
結果は -7 です。
この例では、B(3)− A(10)なので、結果は−7になります。FROMの位置に注意しましょう。
3. ADD文とSUBTRACT文の応用:結果を別の変数に入れる
COBOLのADD文やSUBTRACT文は、結果を別の変数に保存することもできます。
例えば、次のようにGIVING(与える)を使うと、計算結果を指定した変数に格納できます。
ADD 10 TO 20 GIVING RESULT.
SUBTRACT 5 FROM 15 GIVING RESULT.
「GIVING」は「〜に与える」という意味で、計算結果を別の変数に渡すというイメージです。実際に動かしてみましょう。
IDENTIFICATION DIVISION.
PROGRAM-ID. GIVING-SAMPLE.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 RESULT PIC 9(4).
PROCEDURE DIVISION.
ADD 10 TO 20 GIVING RESULT.
DISPLAY "足し算の結果:" RESULT.
SUBTRACT 5 FROM 15 GIVING RESULT.
DISPLAY "引き算の結果:" RESULT.
STOP RUN.
足し算の結果:30
引き算の結果:10
このように、GIVINGを使えば元の値を変更せずに結果を別の変数に保存できます。これは業務プログラムで「計算結果だけを記録したい」ときにとても便利です。
4. 複数の変数をまとめて計算する
COBOLでは、複数の数値を一度に加えたり引いたりすることもできます。
ADD A B C TO TOTAL.
SUBTRACT TAX DISCOUNT FROM TOTAL.
このように書くと、A + B + CをTOTALに加えたり、TAXとDISCOUNTをTOTALから引いたりすることができます。計算式を短くまとめられるのが特徴です。
5. ADD文・SUBTRACT文を使うときの注意点
COBOLのADD文とSUBTRACT文を使うときには、いくつかの注意点があります。初心者がつまずきやすいポイントを整理しておきましょう。
① データ型(PIC句)の桁数を確認する
COBOLでは、数値を格納する変数に「PIC句(ピク句)」で桁数を指定します。もし計算結果が桁を超えると、「オーバーフロー(値が大きすぎて入らない)」が発生します。
たとえば、PIC 9(3)だと最大値は999までしか入らないので、それ以上の結果を足すと誤動作する可能性があります。
② 小数を扱うときはVを使う
COBOLでは、小数点を扱いたいときはVを使います。たとえばPIC 9(3)V9(2)なら「999.99」まで扱えます。
01 PRICE PIC 9(3)V9(2) VALUE 100.50.
01 TAX PIC 9(3)V9(2) VALUE 5.25.
01 TOTAL PIC 9(4)V9(2).
ADD PRICE TO TAX GIVING TOTAL.
このようにして、正確な小数計算ができます。
③ FROMとTOを混同しない
ADDでは「TO」、SUBTRACTでは「FROM」を使います。これを間違えると計算結果がまったく違ってしまいます。
「ADD〜TO〜」「SUBTRACT〜FROM〜」という英語の語順で覚えるとミスを防げます。
④ GIVINGを使うと安全に計算できる
特に業務プログラムでは、元の値を上書きしないほうが安全です。GIVINGを使えば、元の変数を壊さずに計算結果だけを新しい変数に保存できます。
6. ADD・SUBTRACTとCOMPUTEの違い
COBOLにはCOMPUTE文という、より自由に計算できる命令もあります。実は、ADDやSUBTRACTはCOMPUTEでも書き換えられます。
ADD A TO B.
COMPUTE B = B + A.
どちらでも同じ結果になりますが、ADDやSUBTRACTは「意味が明確で読みやすい」ため、金融システムなどのビジネスプログラムで今もよく使われています。
7. 実務でも役立つCOBOLの数値計算
COBOLは銀行や保険、会計などのシステムで使われることが多いため、数値計算の処理がとても重要です。ADDとSUBTRACTを正しく使いこなすことで、売上の合計、在庫の増減、税金の計算など、さまざまなビジネスロジックを正確に表現できます。
また、COBOLの命令文は英語に近い形で書けるため、他のプログラミング言語よりも読みやすく、初心者にも理解しやすいという特徴があります。