【COBOL学習|初心者向け】COBOLの計算処理をスマートに!COMPUTE文で複雑な計算を一行でこなす作法

1. 導入:なぜCOMPUTE文が重要なのか

COBOLといえば、ADDやMULTIPLYといった個別の演算命令をイメージする方も多いでしょう。しかし、それらを一つずつ記述していると、プログラムが長大になり、どこで何を計算しているのか追うのが大変になります。COMPUTE文は、数学の数式に近い感覚で複雑な計算を一括して記述できる非常に強力なツールです。可読性を高め、メンテナンス性を向上させるために、ぜひマスターしておきましょう。

2. 基礎知識:COMPUTE文の仕組み

COMPUTE文は、四則演算(+、-、*、/)に加えて、べき乗(**)を扱うことができます。最大の特徴は「演算の優先順位」をカッコで制御できる点です。通常の算術演算命令では、計算の途中で一時的な作業領域(ワークエリア)が必要になることがありますが、COMPUTE文を使えば、コンパイラが自動的に最適化してくれるため、コードがスッキリと整理されます。

3. 実装と解決策

COMPUTE文を利用する際は、代入先となる変数の「型」に注意が必要です。計算結果が整数か小数か、また桁溢れ(オーバーフロー)が起きないかを確認しましょう。基本的には、計算結果を受け取る変数は、計算過程で発生する値よりも十分な桁数と小数部を持つように定義するのが、現場での鉄則です。

4. サンプルプログラム

以下のサンプルは、消費税込みの合計金額を計算する例です。そのままコピーして、皆さんの環境で試してみてください。

IDENTIFICATION DIVISION.
PROGRAM-ID. COMPUTE-SAMPLE.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 WS-UNIT-PRICE PIC 9(05) VALUE 1500. > 単価
01 WS-QUANTITY PIC 9(03) VALUE 10. > 数量
01 WS-TAX-RATE PIC V99 VALUE 0.10. > 消費税率
01 WS-TOTAL PIC 9(08) VALUE 0. > 計算結果格納用

PROCEDURE DIVISION.
> (単価 数量) (1 + 税率) を計算する
> COMPUTE文なら一撃で記述可能です
COMPUTE WS-TOTAL = (WS-UNIT-PRICE WS-QUANTITY) (1 + WS-TAX-RATE).

DISPLAY “合計金額は: ” WS-TOTAL ” 円です。”.

STOP RUN.

5. 応用・注意点:現場で陥りやすい罠

最後に、現場でよくある失敗を二つお伝えします。一つ目は「ゼロ除算」です。除数(割る数)が計算過程でゼロになる可能性がある場合、プログラムが異常終了することがあります。必ず計算前にゼロチェックを行うか、ON SIZE ERROR句を併用してエラーハンドリングを行いましょう。

二つ目は「精度」の問題です。特に金融系の計算では、小数点の扱いでわずかな誤差が生じることがあります。計算結果の変数は、必要以上に小数部を大きくせず、運用ルールに合わせた桁数で定義するよう心がけてください。この「データ操作の作法」を守ることで、より堅牢なプログラムが出来上がります。

コメント

タイトルとURLをコピーしました