カテゴリ: COBOL 更新日: 2025/11/03

COBOLのADD・SUBTRACT文の使い方を完全ガイド!初心者でもわかる足し算と引き算の基本

ADD・SUBTRACT文の使い方と注意点
ADD・SUBTRACT文の使い方と注意点

先生と生徒の会話形式で理解しよう

生徒

「先生、COBOLで足し算や引き算をするにはどうすればいいんですか?」

先生

「良い質問ですね。COBOLではADD文とSUBTRACT文を使うことで、数値の足し算や引き算が簡単にできます。」

生徒

「へえ!英語みたいですね。実際にどんなふうに書くんですか?」

先生

「それでは、実際の使い方と注意点を一緒に見ていきましょう。」

1. ADD文とは?

1. ADD文とは?
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文とは?

2. SUBTRACT文とは?
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文の応用:結果を別の変数に入れる

3. ADD文とSUBTRACT文の応用:結果を別の変数に入れる
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. 複数の変数をまとめて計算する

4. 複数の変数をまとめて計算する
4. 複数の変数をまとめて計算する

COBOLでは、複数の数値を一度に加えたり引いたりすることもできます。


ADD A B C TO TOTAL.
SUBTRACT TAX DISCOUNT FROM TOTAL.

このように書くと、A + B + CTOTALに加えたり、TAXDISCOUNTTOTALから引いたりすることができます。計算式を短くまとめられるのが特徴です。

5. ADD文・SUBTRACT文を使うときの注意点

5. ADD文・SUBTRACT文を使うときの注意点
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の違い

6. ADD・SUBTRACTとCOMPUTEの違い
6. ADD・SUBTRACTとCOMPUTEの違い

COBOLにはCOMPUTE文という、より自由に計算できる命令もあります。実は、ADDSUBTRACTCOMPUTEでも書き換えられます。


ADD A TO B.

COMPUTE B = B + A.

どちらでも同じ結果になりますが、ADDSUBTRACTは「意味が明確で読みやすい」ため、金融システムなどのビジネスプログラムで今もよく使われています。

7. 実務でも役立つCOBOLの数値計算

7. 実務でも役立つCOBOLの数値計算
7. 実務でも役立つCOBOLの数値計算

COBOLは銀行や保険、会計などのシステムで使われることが多いため、数値計算の処理がとても重要です。ADDSUBTRACTを正しく使いこなすことで、売上の合計、在庫の増減、税金の計算など、さまざまなビジネスロジックを正確に表現できます。

また、COBOLの命令文は英語に近い形で書けるため、他のプログラミング言語よりも読みやすく、初心者にも理解しやすいという特徴があります。

カテゴリの一覧へ
新着記事
New1
C#
C#のLINQでAny・Allなど条件確認メソッドの使い方を完全ガイド!初心者でもわかるデータ検証
New2
C#
C#のデフォルト引数と名前付き引数の使い方を解説!初心者でも安心のやさしい入門
New3
C#
C#のオブジェクト初期化子を完全ガイド!初心者でもわかる便利な使い方
New4
COBOL
COBOLの帳票出力と編集を完全マスター!条件付き表示で分かりやすい書類を作る方法
人気記事
No.1
Java&Spring記事人気No1
C#
C#のpartialクラスとは?初心者でも理解できるクラス分割の基本
No.2
Java&Spring記事人気No2
C#
C#でJSONファイルを読み書きする方法(JsonSerializer・Newtonsoft.Json)
No.3
Java&Spring記事人気No3
C#
C#でswitch式を使う方法!C# 8.0以降の新機能を解説
No.4
Java&Spring記事人気No4
COBOL
COBOLの数値データ型「PIC 9」の使い方と注意点をやさしく解説!
No.5
Java&Spring記事人気No5
C#
C#のLINQクエリ構文の書き方と基本操作をマスターしよう
No.6
Java&Spring記事人気No6
C#
C#のLINQ(リンク)とは?基本概念とデータ操作を初心者向けに徹底解説!
No.7
Java&Spring記事人気No7
C#
C#のCancellationTokenを使ったキャンセル処理を完全ガイド!非同期処理を安全に止める方法
No.8
Java&Spring記事人気No8
C#
C#の非同期処理とUIスレッドをマスター!WPF/WinFormsでアプリが止まる問題を解決