カテゴリ: COBOL 更新日: 2026/08/18

COBOLのCOMPUTE文と算術演算子の基本を完全ガイド!初心者でもわかる数値計算の仕組み

COMPUTE文と算術演算子の基本を解説
COMPUTE文と算術演算子の基本を解説

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

生徒

「先生、COBOLで足し算や引き算をしたいときって、どうやって書くんですか?」

先生

「COBOLでは、COMPUTE(コンピュート)文を使うと、簡単に数値の計算ができますよ。」

生徒

「へえ!なんか英語っぽい単語ですね。どんなふうに使うんですか?」

先生

「では、基本的な使い方から一緒に見ていきましょう。」

1. COMPUTE文とは?初心者でもわかる「計算の基本」

1. COMPUTE文とは?初心者でもわかる「計算の基本」
1. COMPUTE文とは?初心者でもわかる「計算の基本」

COBOLのCOMPUTE文は、数値を計算してその結果を変数に代入するための命令です。英語の「計算する(compute)」という言葉の通り、複雑な数式を直感的に記述できるのが最大の特徴です。

プログラミング未経験の方にとって、COBOLの計算は難しく感じるかもしれません。しかし、COMPUTE文は「学校で習った算数の式」をほぼそのまま書くだけで動きます。例えば、「売上(SALES)から原価(COST)を引いて、利益(PROFIT)を出す」といった計算も、パズルを組み合わせるように簡単に表現できます。

COMPUTE文の基本構文

まずは、一番シンプルな書き方を見てみましょう。算数の「=(イコール)」の向きに注目してください。


COMPUTE 結果を入れる変数 = 計算したい式

このの部分には、数字を直接入れることもできますし、「変数(値が入った箱)」を組み合わせて使うこともできます。また、四則演算(+、-、*、/)を自由に組み合わせて、一度に複雑な計算を行うことが可能です。

【未経験者向け】100円のリンゴを3個買った時の計算例

具体的に、日常生活のような計算をCOBOLで書いてみましょう。「100円の商品を3個買ったときの合計金額」を計算するプログラムの一部です。


DATA DIVISION.
WORKING-STORAGE SECTION.
01 PRICE    PIC 9(3) VALUE 100.  *> 商品の単価(100円)
01 COUNT    PIC 9(1) VALUE 3.    *> 買った個数(3個)
01 ANS      PIC 9(3).            *> 合計を入れる箱

PROCEDURE DIVISION.
    COMPUTE ANS = PRICE * COUNT
    DISPLAY "計算結果は " ANS " 円です。"

計算結果は 300 円です。

上記の例では、PRICE * COUNT(単価×個数)の計算結果が、自動的にANSという変数に格納されます。このように、COMPUTE文は「左側に答えを書き、右側に計算式を書く」というルールさえ覚えれば、誰でもすぐに使いこなせる便利な文法なのです。

2. COMPUTE文の基本的な使い方

2. COMPUTE文の基本的な使い方
2. COMPUTE文の基本的な使い方

COBOLで計算を行う際、最も便利で頻繁に使われるのがCOMPUTE文です。算術演算子(+, -, *, /)を組み合わせることで、数学の数式に近い感覚でプログラミングが可能です。

プログラミング未経験の方でも分かりやすいよう、まずは「商品の単価」と「購入個数」から「合計金額」を計算するシンプルなプログラムを見てみましょう。


IDENTIFICATION DIVISION.
PROGRAM-ID. COMPUTE-SAMPLE.
DATA DIVISION.
WORKING-STORAGE SECTION.
* 変数の定義(数字を入れる入れ物を作ります)
01 PRICE       PIC 9(4) VALUE 500.   *> 単価:500円
01 QUANTITY    PIC 9(2) VALUE 3.     *> 個数:3個
01 TOTAL       PIC 9(6).             *> 合計金額を格納する変数

PROCEDURE DIVISION.
    * COMPUTE文を使って掛け算を実行
    COMPUTE TOTAL = PRICE * QUANTITY
    
    DISPLAY "【計算結果】"
    DISPLAY "単価 " PRICE " 円 × 個数 " QUANTITY " 個"
    DISPLAY "合計金額は " TOTAL " 円です。"
    STOP RUN.

【計算結果】
単価 0500 円 × 個数 03 個
合計金額は 001500 円です。

上記のコードにあるCOMPUTE TOTAL = PRICE * QUANTITYという一行が計算の核となります。これは「PRICE(単価)とQUANTITY(個数)を掛け算した結果を、TOTAL(合計)という変数に入れなさい」という命令です。

COBOLには加算専用のADDや乗算専用のMULTIPLYといった命令も存在しますが、COMPUTE文を使えば、足し算、引き算、掛け算、割り算を一つの式の中に混在させて書くことができます。複雑な計算式も1行でスッキリと表現できるため、実務の現場でも非常に重宝される書き方です。

3. 算術演算子(+ − × ÷)の意味と使い方をマスターしよう

3. 算術演算子(+ − × ÷)の意味と使い方をマスターしよう
3. 算術演算子(+ − × ÷)の意味と使い方をマスターしよう

COBOLで計算を行う際に欠かせないのが「算術演算子(さんじゅつえんざんし)」です。これは簡単に言うと、数値を計算するための「記号」のこと。プログラミングと聞くと難しく感じるかもしれませんが、基本は小学校で習った算数と全く同じです。

まずは、COBOLでよく使われる4つの基本的な記号を一覧で確認してみましょう。掛け算(*)と割り算(/)の記号が算数とは少し異なりますが、慣れてしまえばスムーズに使いこなせます。

演算子 読み方 意味 計算例 結果
+プラス足し算10 + 515
-マイナス引き算10 - 46
*アスタリスク掛け算3 * 412
/スラッシュ割り算20 / 54
**アスタリスク2つべき乗2 ** 38

実際のプログラムでは、主にCOMPUTE文という命令を使って計算式を書きます。プログラミング未経験の方でも直感的に理解できる、簡単なサンプルプログラムを見てみましょう。


IDENTIFICATION DIVISION.
PROGRAM-ID. CALC-SAMPLE.

DATA DIVISION.
WORKING-STORAGE SECTION.
01 NUM-A    PIC 9(3) VALUE 100.
01 NUM-B    PIC 9(3) VALUE 20.
01 RESULT   PIC 9(5).

PROCEDURE DIVISION.
    * 基本的な足し算と掛け算の組み合わせ
    COMPUTE RESULT = (NUM-A + NUM-B) * 2.
    DISPLAY "計算結果は:" RESULT.

    STOP RUN.

計算結果は:00240

このサンプルでは、(100 + 20) を先に計算してから 2 を掛けています。COBOLでも算数と同じように、「括弧(かっこ)の中を最優先で計算する」というルールがあるため、複雑な計算も括弧をうまく使うことでミスなく記述できます。

もし括弧を付けずに COMPUTE RESULT = 100 + 20 * 2 と書いた場合は、掛け算が優先されて 100 + 40 となり、結果は「140」に変わります。計算の優先順位(掛け算・割り算 > 足し算・引き算)を意識することが、正確なプログラムを作る第一歩です。

4. 複数の演算をまとめて行う(COMPUTE文の活用)

4. 複数の演算をまとめて行う(COMPUTE文の活用)
4. 複数の演算をまとめて行う(COMPUTE文の活用)

プログラミングで複雑な計算をする際、足し算や引き算を一つずつ順番に書くのは大変ですよね。COBOLのCOMPUTE文を使えば、算数や数学の数式と同じように、複数の計算を一行にまとめて記述できます。

例えば、「合計金額 = (単価 × 数量) − 割引額」という、日常の買い物でよくある計算を考えてみましょう。未経験の方でも、直感的に理解できるのがCOBOLの魅力です。


       COMPUTE TOTAL = (PRICE * QUANTITY) - DISCOUNT.

この一行だけで、「掛け算を先に行い、その結果から引き算をする」という処理が完了します。ポイントは、数学と同じように括弧 () を使って計算の優先順位を指定できる点です。括弧の中が最優先で計算されるため、ミスが少なく、後からコードを読み返したときも「何をしているか」が一目でわかります。

それでは、具体的な数値を当てはめた初心者向けのサンプルプログラムを見てみましょう。ここでは「1,000円の商品を3個買い、そこから300円値引きする」というケースを想定しています。


      * 変数の準備(単価1000円、数量3個、割引300円)
       MOVE 1000 TO PRICE.
       MOVE 3    TO QUANTITY.
       MOVE 300  TO DISCOUNT.

      * まとめて計算を実行
       COMPUTE TOTAL = (PRICE * QUANTITY) - DISCOUNT.

       DISPLAY "【計算結果】"
       DISPLAY "お支払い合計金額は " TOTAL " 円です。"

【計算結果】
お支払い合計金額は 2700 円です。

このように、COMPUTE文は「計算式をそのまま書ける」ため、事務処理や家計簿アプリのようなロジックを作るのに非常に適しています。四則演算(+、-、*、/)を組み合わせるだけで、どんなに複雑な式もスッキリと整理できるため、プログラムの読みやすさ(可読性)が格段に向上します。

5. COMPUTE文とADD・SUBTRACTとの違い:どっちを使うべき?

5. COMPUTE文とADD・SUBTRACTとの違い:どっちを使うべき?
5. COMPUTE文とADD・SUBTRACTとの違い:どっちを使うべき?

COBOLで計算を行う際、初心者の方が最初に習うのはADD(加算)やSUBTRACT(減算)といった個別の命令かもしれません。しかし、実務で複雑な計算式を扱うようになると、これらをバラバラに書くのは手間がかかり、ソースコードも長くなってしまいます。

そこで役立つのがCOMPUTE文です。これは、算術演算(足し算・引き算・掛け算・割り算)を数式のようにまとめて記述できる非常に便利な命令です。

書き方の比較(サンプルプログラム)

例えば、「合計金額(TOTAL)に商品価格(PRICE)を加算する」という単純な処理を比較してみましょう。プログラミングが初めての方でも、COMPUTEの方が数学の式に近いと感じるはずです。

① ADD文を使った書き方


ADD PRICE TO TOTAL.

② COMPUTE文を使った書き方


COMPUTE TOTAL = TOTAL + PRICE.

なぜCOMPUTE文が選ばれるのか?

ADD文やSUBTRACT文は「一つの操作」に特化しているため、例えば「(単価 × 個数) + 消費税」といった複数の計算を一度に行うことができません。一方で、COMPUTE文なら以下のように一行でスマートに記述できます。


COMPUTE ZEIKOMI-PRICE = (TANKA * KOSU) * 1.10.

このように、COMPUTE文を使うと計算ロジックが直感的に理解しやすくなり、入力ミス(バグ)を減らせるという大きなメリットがあります。最近の開発現場では、保守性(後でプログラムを直す際の楽さ)を重視して、単純な計算であってもCOMPUTE文に統一して書くスタイルが主流となっています。

ポイント: 初心者のうちは、まずはCOMPUTE文に慣れておくのがおすすめです。数式と同じ記号(+、-、*、/)が使えるため、他のプログラミング言語(C#やPythonなど)を学ぶ際にもその知識がそのまま活かせます。

6. 0で割るとどうなる?エラー処理に注意

6. 0で割るとどうなる?エラー処理に注意
6. 0で割るとどうなる?エラー処理に注意

割り算(/)を使うときに注意が必要なのが、「0で割ってはいけない」というルールです。数学と同じで、0で割ると計算ができません。

COBOLでは、0で割ると「ゼロ除算エラー(Zero Divide)」が発生してプログラムが止まってしまうことがあります。安全に計算するためには、事前に分母が0でないことを確認しておくとよいでしょう。


IF DENOMINATOR NOT = 0
    COMPUTE RESULT = NUMERATOR / DENOMINATOR
    DISPLAY "計算結果:" RESULT
ELSE
    DISPLAY "0では割り算できません。"
END-IF

7. COMPUTE文をマスターすればCOBOLの数値演算は怖くない!

7. COMPUTE文をマスターすればCOBOLの数値演算は怖くない!
7. COMPUTE文をマスターすればCOBOLの数値演算は怖くない!

COMPUTE文は、COBOLの中でも特によく使われる命令のひとつです。業務システムでは売上や税金、在庫数などの計算が多く登場するため、数値演算の基本を理解しておくととても役に立ちます。

「難しい数式を書かなきゃ」と思うかもしれませんが、COBOLのCOMPUTE文は英語の文のように自然な形で書けるのがポイントです。慣れてくると、読みやすくエラーの少ないコードが書けるようになります。

まとめ

まとめ
まとめ

ここまで、COBOLにおける数値計算の要であるCOMPUTE文と、それを取り巻く算術演算子の基本について詳しく解説してきました。業務システム開発において、データの集計や消費税計算、在庫管理などの数値処理は避けて通れない要素です。従来のCOBOLではADD文やSUBTRACT文といった専用の命令も多用されてきましたが、現代のプログラミングスタイルにおいては、直感的で可読性の高いCOMPUTE文が主流となっています。

COBOLの計算処理を支える重要ポイントの振り返り

COBOLで効率的なプログラムを書くためには、COMPUTE文の特性を正しく理解し、算術演算子を適切に組み合わせることが不可欠です。以下に、本記事で学んだ重要なポイントを整理しました。

  • COMPUTE文の汎用性: 四則演算を一つの式で表現できるため、プログラムの行数を減らし、ロジックを簡潔に保つことができます。
  • 演算子の優先順位と括弧の活用: 算数と同様に、掛け算・割り算が足し算・引き算より優先されます。意図しない計算結果を防ぐために、優先したい箇所には必ず「( )」を使いましょう。
  • 精度の確保: COBOLは金融機関などの基幹システムで使われることが多いため、計算結果を格納する変数の桁数定義(PIC句)には細心の注意が必要です。
  • エラーハンドリング: ゼロ除算などはシステムダウンの原因になります。事前に条件分岐(IF文)でチェックする習慣をつけましょう。

実践的なサンプルプログラム:平均値の算出とC#での比較

さらに理解を深めるために、複数の値から平均値を算出する実践的なコードを見てみましょう。COBOLでの実装と、現代的なオブジェクト指向言語であるC#での実装を比較することで、それぞれの言語の特徴が見えてきます。

COBOLによる平均値計算プログラム

3つのテスト点数の合計を出し、その平均を求めるプログラムです。


IDENTIFICATION DIVISION.
PROGRAM-ID. AVERAGE-CALC.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 SCORE-1      PIC 9(3) VALUE 85.
01 SCORE-2      PIC 9(3) VALUE 90.
01 SCORE-3      PIC 9(3) VALUE 75.
01 TOTAL-SCORE  PIC 9(3).
01 AVG-SCORE    PIC 9(3)V99.
PROCEDURE DIVISION.
    *> 合計と平均を一気に計算する
    COMPUTE TOTAL-SCORE = SCORE-1 + SCORE-2 + SCORE-3.
    COMPUTE AVG-SCORE = TOTAL-SCORE / 3.
    
    DISPLAY "合計点数: " TOTAL-SCORE.
    DISPLAY "平均点数: " AVG-SCORE.
    STOP RUN.

合計点数: 250
平均点数: 83.33

C#による同様の数値計算プログラム

C#では変数の宣言と同時に計算を行うことが一般的です。COBOLのCOMPUTE文に近い直感的な記述が可能です。


using System;

class Program
{
    static void Main()
    {
        int score1 = 85;
        int score2 = 90;
        int score3 = 75;

        // 合計と平均の算出
        int totalScore = score1 + score2 + score3;
        double avgScore = (double)totalScore / 3;

        Console.WriteLine("合計点数: " + totalScore);
        Console.WriteLine("平均点数: " + avgScore.ToString("F2"));
    }
}

合計点数: 250
平均点数: 83.33

このように、言語が違っても「数値を計算して変数に代入する」という基本構造は変わりません。COBOLのCOMPUTE文をマスターすることは、他の言語を学ぶ際にも役立つ汎用的なスキルと言えるでしょう。

SEOキーワードとしてのCOBOL数値計算

COBOLの学習において、「計算式」「算術演算」「COMPUTE 使い方」といったキーワードは非常に重要です。特に、レガシーシステムのマイグレーション(移行)や保守運用の現場では、複雑な計算ロジックを正確に読み解く力が求められます。この記事が、新人プログラマーやCOBOLを学び直すエンジニアの皆様にとって、確かな手助けとなれば幸いです。

先生と生徒の振り返り会話

生徒

「先生、ありがとうございました!COMPUTE文って、思ったよりもずっとシンプルなんですね。他のプログラミング言語と似ていて、なんだか親近感がわきました。」

先生

「そうですね。COBOLは『事務計算用』として生まれた言語ですから、数式を人間が読む英語に近い形で書けるよう設計されているんです。だから、数式がそのままプログラムになるCOMPUTE文は、COBOLの良さが一番出ている部分かもしれませんね。」

生徒

「たしかに!でも、さっきのサンプルで『PIC 9(3)V99』という記述がありましたが、これは小数点以下の桁数を決めているんですよね?」

先生

「その通り、鋭いですね!COBOLでは計算式だけでなく、結果を入れる器(変数)の形をしっかり定義することがとても大切です。小数点を扱う計算では、端数処理(四捨五入や切り捨て)が必要になることも多いので、次は『ROUNDED』句についても勉強してみましょうか。」

生徒

「ROUNDED句ですか。四捨五入まで自動でやってくれるなんて便利そう!ぜひ教えてください。計算ミスでシステムが止まらないように、しっかりマスターしたいです。」

先生

「その意気です。業務システムでは、1円のズレも許されませんからね。正確な知識を身につけて、信頼されるプログラマーを目指しましょう!」

カテゴリの一覧へ
新着記事
New1
C#
C#とは何か?初心者向けにできること・特徴・インストール手順までやさしく解説
New2
C#
C#のメソッドを引数に渡す方法!高階関数の基本を学ぼう
New3
Azure
Azure Front Door Analytics活用|リアルタイム監視とレポートで通信を分析
New4
COBOL
COBOLで数値比較とALPHABETIC・NUMERIC条件をやさしく解説!初心者でも安心ガイド
人気記事
No.1
Java&Spring記事人気No1
C#
C#のWPFとは?XAMLでGUI開発を基礎から完全解説!初心者向けの入門ガイド
No.2
Java&Spring記事人気No2
COBOL
COBOL教育における教材とリソース完全ガイド!初心者でもわかるプログラミング学習の選び方
No.3
Java&Spring記事人気No3
Azure
Azure SQL Database購入モデル比較!vCoreとDTUの違いと選び方を初心者向けに解説
No.4
Java&Spring記事人気No4
C#
C#のLINQでWhere句を使いこなす!初心者でもわかるデータ抽出とフィルタリング
No.5
Java&Spring記事人気No5
COBOL
COBOLのCOPY句の使い方を完全ガイド!初心者でもわかる共通部品の再利用方法
No.6
Java&Spring記事人気No6
COBOL
COBOLの数値データ型「PIC 9」の使い方と注意点をやさしく解説!
No.7
Java&Spring記事人気No7
C#
C#のLINQでFirstとFirstOrDefaultの違いと使い方を完全解説!初心者向けガイド
No.8
Java&Spring記事人気No8
C#
C#のforeachループを完全ガイド!初心者でもわかるコレクション操作の基本