COBOLのROUNDED句を使った丸め処理を完全マスター!初心者でもわかる数値演算の基本
生徒
「先生、COBOLで計算するときに小数点以下を四捨五入したいんですが、どうすればいいんですか?」
先生
「それなら、ROUNDED(ラウンデッド)句を使うと簡単にできますよ。」
生徒
「ROUNDED句?聞いたことがないです…。どうやって使うんですか?」
先生
「では、今日はCOBOLのROUNDED句を使った丸め処理について、わかりやすく説明していきましょう!」
1. ROUNDED句とは?
COBOLのROUNDED句(ラウンデッド句)は、計算の結果を四捨五入して代入したいときに使う便利な機能です。プログラミング初心者の方にもわかりやすく言うと、「小数点以下の数字をきれいに丸める」ための命令文の一部です。
例えば、1.25を四捨五入して1.3にしたり、2.74を2.7にしたりするような処理を自動で行ってくれます。COBOLでは、ADD(足し算)やSUBTRACT(引き算)、MULTIPLY(掛け算)、DIVIDE(割り算)などの算術文(さんじゅつぶん)にこのROUNDEDをつけるだけで使えます。
2. 基本の書き方
ROUNDED句は、計算結果を代入する変数の後に書きます。形は次のようになります。
ADD A TO B ROUNDED.
MULTIPLY X BY Y GIVING Z ROUNDED.
DIVIDE A BY B GIVING C ROUNDED.
つまり、「ROUNDEDは結果を受け取る変数の後に書く」のがポイントです。これをつけると、COBOLが自動的に小数点以下を四捨五入して処理してくれます。
3. 具体的なサンプルコード
では、実際にどのように使うのか、簡単なCOBOLプログラムで見てみましょう。
IDENTIFICATION DIVISION.
PROGRAM-ID. ROUND-DEMO.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 A PIC 9V99 VALUE 2.75.
01 B PIC 9V99 VALUE 3.25.
01 RESULT PIC 9V9 VALUE 0.
PROCEDURE DIVISION.
ADD A TO B GIVING RESULT ROUNDED.
DISPLAY "丸めあり:" RESULT.
ADD A TO B GIVING RESULT.
DISPLAY "丸めなし:" RESULT.
STOP RUN.
このプログラムを実行すると、次のような結果が出ます。
丸めあり:6.0
丸めなし:5.9
このように、ROUNDEDをつけるだけで四捨五入されるのが分かります。
4. ROUNDED句が使える演算文
ROUNDED句は、すべての算術演算文(数値を扱う命令)で使えます。具体的には次の4種類です。
ADD文(足し算)SUBTRACT文(引き算)MULTIPLY文(掛け算)DIVIDE文(割り算)
これらの命令にROUNDEDをつけると、結果が自動的に四捨五入されます。特に金額や平均値などを扱う業務システムでは、誤差が出ないようにROUNDED句を使うことが多いです。
5. ROUNDED句を使うときの注意点
とても便利なROUNDED句ですが、使うときにはいくつか注意するポイントがあります。
- 結果を受け取る変数の定義
変数の桁数(けたすう)を正しく定義しておかないと、丸めた結果が切り捨てられたりエラーになったりします。例えば、小数第1位まで表示したい場合は、
PIC 9V9のように書きましょう。 - ROUNDEDは「結果の変数」につける
ROUNDEDは必ず結果を受け取る変数の後につけます。間違えて計算する変数の後に書いても動きません。 - ROUNDEDは四捨五入だけ
ROUNDED句は「四捨五入」専用です。「切り捨て」や「切り上げ」は別の方法(桁数制御など)を使う必要があります。
6. 応用例:割り算でのROUNDED
次は、割り算の計算でROUNDEDを使った例を見てみましょう。たとえば、合計金額を人数で割るような場合です。
IDENTIFICATION DIVISION.
PROGRAM-ID. ROUND-DIVIDE.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 TOTAL-AMOUNT PIC 9(4)V99 VALUE 1000.00.
01 PEOPLE PIC 9(2) VALUE 3.
01 AVERAGE PIC 9(4)V9 VALUE 0.
PROCEDURE DIVISION.
DIVIDE TOTAL-AMOUNT BY PEOPLE GIVING AVERAGE ROUNDED.
DISPLAY "1人あたり:" AVERAGE "円".
STOP RUN.
この場合、1000 ÷ 3 = 333.333…となりますが、ROUNDEDをつけているので結果は333.3となります。これならお金の計算でも安心です。
7. 実務での活用ポイント
実際のCOBOL業務プログラムでは、売上計算、給与計算、金利計算などで小数点を扱うことが多くあります。その際、ROUNDED句を使うことで、四捨五入を自動的に行い、計算誤差(けいさんごさ)を防ぐことができます。
また、ROUNDEDを使うと、プログラマーが「自分で四捨五入の処理を書く」必要がなくなるため、プログラムがシンプルで読みやすくなります。特に金融系システムなどでは、このROUNDED句が欠かせません。