COBOLのCOMPUTE文と算術演算子の基本を完全ガイド!初心者でもわかる数値計算の仕組み
生徒
「先生、COBOLで足し算や引き算をしたいときって、どうやって書くんですか?」
先生
「COBOLでは、COMPUTE(コンピュート)文を使うと、簡単に数値の計算ができますよ。」
生徒
「へえ!なんか英語っぽい単語ですね。どんなふうに使うんですか?」
先生
「では、基本的な使い方から一緒に見ていきましょう。」
1. COMPUTE文とは?
COBOLのCOMPUTE文は、数値を計算して変数に代入するための文です。英語の「計算する(compute)」という意味そのままで、電卓のように計算をしてくれる便利な命令です。
例えば、「売上 − 原価 = 利益」のような式をCOBOLで表現するとき、COMPUTE文を使います。プログラミング初心者でも理解しやすい文法で、四則演算(足し算、引き算、掛け算、割り算)が簡単に書けます。
基本的な書き方は次の通りです。
COMPUTE 結果変数 = 式
この式の部分に、数値や変数、演算子(+、−、×、÷)を入れて計算します。
2. COMPUTE文の基本的な使い方
では、実際にCOBOLで足し算や掛け算をしてみましょう。以下のサンプルでは、商品の価格と個数を掛け算して合計金額を求めています。
IDENTIFICATION DIVISION.
PROGRAM-ID. COMPUTE-SAMPLE.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 PRICE PIC 9(4) VALUE 500.
01 QUANTITY PIC 9(2) VALUE 3.
01 TOTAL PIC 9(6).
PROCEDURE DIVISION.
COMPUTE TOTAL = PRICE * QUANTITY
DISPLAY "合計金額は " TOTAL " 円です。"
STOP RUN.
合計金額は 1500 円です。
このように、COMPUTE TOTAL = PRICE * QUANTITYの形で書くだけで、掛け算の結果がTOTALに入ります。難しい計算式でも1行で表現できるのがCOMPUTE文の魅力です。
3. 算術演算子(+ − × ÷)の意味を理解しよう
COBOLで使える主な算術演算子(さんじゅつえんざんし)を一覧で見てみましょう。算術演算子とは、「数値を計算するための記号」です。算数の記号と同じなので、初心者でもすぐに覚えられます。
| 演算子 | 意味 | 例 | 結果 |
|---|---|---|---|
| + | 足し算 | 5 + 3 | 8 |
| - | 引き算 | 5 - 2 | 3 |
| * | 掛け算 | 4 * 2 | 8 |
| / | 割り算 | 10 / 2 | 5 |
COBOLでは、これらの記号を使って自由に数値を計算できます。また、括弧(かっこ)を使うと計算の順番を変えることも可能です。
COMPUTE RESULT = (5 + 3) * 2
結果:16
このように括弧をつけることで、「5 + 3」を先に計算してから「×2」を行うようになります。もし括弧がないと、掛け算が先に実行されて結果が変わることがあります。算数と同じルールですね。
4. 複数の演算をまとめて行う
COMPUTE文では、複雑な計算も一行でまとめて書けます。例えば「売上 = (価格 × 個数) − 割引額」のような計算も簡単にできます。
COMPUTE TOTAL = (PRICE * QUANTITY) - DISCOUNT
このように書くと、括弧の中が先に計算され、最後に割引が引かれます。COBOLのCOMPUTE文は、日常の電卓操作と同じ感覚で使えるのが特徴です。
さらに、計算結果をそのまま表示することもできます。
COMPUTE TOTAL = (PRICE * QUANTITY) - DISCOUNT
DISPLAY "お支払い金額は " TOTAL " 円です。"
お支払い金額は 2700 円です。
5. COMPUTE文とADD・SUBTRACTとの違い
COBOLでは、数値を計算する方法としてADD(足し算)、SUBTRACT(引き算)などの専用文もありますが、COMPUTEを使うとそれらを一つにまとめて書けます。
例えば、次の2つの書き方は同じ意味になります。
ADD PRICE TO TOTAL.
COMPUTE TOTAL = TOTAL + PRICE.
COMPUTE文を使うと、複数の演算をまとめて一行で書けるため、可読性(読みやすさ)が高くなります。最近のCOBOLプログラムでは、COMPUTE文のほうがよく使われています。
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の数値演算は怖くない!
COMPUTE文は、COBOLの中でも特によく使われる命令のひとつです。業務システムでは売上や税金、在庫数などの計算が多く登場するため、数値演算の基本を理解しておくととても役に立ちます。
「難しい数式を書かなきゃ」と思うかもしれませんが、COBOLのCOMPUTE文は英語の文のように自然な形で書けるのがポイントです。慣れてくると、読みやすくエラーの少ないコードが書けるようになります。