# COMPUTE文

説明書の該当箇所: 6.5.7 COMPUTE文

  COMPUTE文.cob    Standard 版

計算式をそのまま書く COMPUTE文 を、20項目ほどまとめて確かめます。
正しく動くと OK だけが並びます。

# 見どころ

・演算の優先順位
    123 + 4 * 5 と (123 + 4) * 5 を並べて、括弧の有無で結果が変わることを
    確かめます。

・単項のマイナス
    - occ3-1 や - (occ3-1 + 100) のほか、

      COMPUTE occ3-1 = - - - - - occ3-1 * occ3-1.

    のようにマイナスを重ねた書き方も通ります。これは SIT COBOL 独自です
    (ソースにも SIT COBOL ONLY と注記しています)。

・丸め(ROUNDED)と項目の用途(USAGE)
    同じ値を、用途の違う項目へ ROUNDED 付き・無しで入れて結果を比べます。

      PIC 9V9      外部10進。小数の桁を持てる
      COMP-1       単精度2進(2バイト)。整数だけ。PICTURE句は書けない
      COMP-2       倍精度2進(4バイト)。整数だけ。PICTURE句は書けない
      COMP-3       内部10進(PACKED-DECIMAL)。小数の桁を持てる

    COMP-1 と COMP-2 は整数の項目なので、100.5 を入れると小数が落ちます。

      COMPUTE cmp1-1 cmp1-2 ROUNDED = 100.5.
        → cmp1-1 は 100(切り捨て)、cmp1-2 は 101(丸め)

    小数の桁を持てる COMP-3 では、丸めは指定した桁の位置で起きます。

      COMPUTE cmp3-1 cmp3-2 ROUNDED = 10000.005.
        → cmp3-1 は 10000.00、cmp3-2 は 10000.01

    PIC 9V9 の項目では、0.05 が 0.1 に、9.94 が 9.9 になります。

・ON SIZE ERROR
    PIC 9V9 の項目に 10.0 を入れるとあふれます。あふれたときだけ
    ON SIZE ERROR 側へ進み、入れ先の値は元のまま残ることを確かめます。
