本文へスキップ
BecomeCoder

COBOLコース · 第4章 基本の命令 ― MOVE・演算・条件分岐 · レッスン20

算術演算 ― ADD / SUBTRACT / MULTIPLY / DIVIDE

ブラウザで完結

導入

レッスン1で見た ADD PRICE TO TOTAL を覚えていますか。COBOLの算術演算は、記号ではなく英単語の命令文として書きます。この章で四則演算のひととおりを押さえましょう。

説明

       01  WS-A                 PIC 9(3)     VALUE 10.
       01  WS-B                 PIC 9(3)     VALUE 3.
       01  WS-RESULT            PIC 9(5).

       PROCEDURE DIVISION.
           ADD WS-A TO WS-B GIVING WS-RESULT.
           DISPLAY WS-RESULT.
      *>  結果: 00013(値は13。WS-RESULT は PIC 9(5) なので5桁ゼロ詰めで表示される)

           SUBTRACT WS-B FROM WS-A GIVING WS-RESULT.
           DISPLAY WS-RESULT.
      *>  結果: 00007(値は7。10−3)

           MULTIPLY WS-A BY WS-B GIVING WS-RESULT.
           DISPLAY WS-RESULT.
      *>  結果: 00030(値は30。10×3)

           DIVIDE WS-A BY WS-B GIVING WS-RESULT.
           DISPLAY WS-RESULT.
      *>  結果: 00003(値は3。10÷3の商。WS-RESULT に小数桁がないので切り捨て)

四則演算の命令とその基本形は次のとおりです。

命令意味書き方の例
ADD足し算ADD A TO BB = B + AB自体に加算)
ADD ... GIVING足し算の結果を別の変数ADD A TO B GIVING CC = A + B
SUBTRACT引き算SUBTRACT A FROM BB = B − A
MULTIPLY掛け算MULTIPLY A BY BB = A × B
DIVIDE割り算DIVIDE A INTO BB = B ÷ A

GIVING を付けない形(例: ADD A TO B)は、計算結果を送り先の変数自身に書き戻す点に注意してください。GIVING を付けると、計算結果を第三の変数に格納できます。

DIVIDE にはさらに、割り算の余りを求める書き方もあります。

           DIVIDE WS-A BY WS-B GIVING WS-RESULT REMAINDER WS-REM.
      *>  WS-RESULT に商、WS-REM に余りが入る

ADD・SUBTRACT・MULTIPLY・DIVIDEはそれぞれ英語の文としてそのまま読めるのが特徴です。次のレッスンで、これらをもっと簡潔にまとめて書ける COMPUTE 文を紹介します。

試すには

ADDSUBTRACT を使って、消費税込みの合計金額を求める簡単な計算(ADD WS-TAX TO WS-PRICE GIVING WS-TOTAL のような形)を、PICTURE句付きの変数宣言から自分で書いてみましょう。

実際に動かしてみよう

下のエディタにCOBOLを書いて「実行」を押すと、学習用シミュレータが DISPLAY の出力を表示します(本物のGnuCOBOLではなく、教材の範囲を再現した軽量エンジンです)。PICTURE句の桁数・ゼロ詰め・切り捨てなどCOBOLらしい挙動もそのまま体験できます。本文の例を書き換えて動かしてみましょう(ファイル処理やCALLなど一部の機能は対象外です)。

COBOL — ブラウザ内で実行(学習用シミュレータ)

COBOLの教材サブセットを動かす学習用シミュレータを読み込みます(本物のGnuCOBOLではなく、動きを再現した軽量な自作エンジンです)。
スクロールして表示された時点でも自動で読み込まれます。