ページの先頭行へ戻る
NetCOBOL V11.0.1 リリース情報
FUJITSU Software

2.1.14 中間結果精度が30桁を超える加減算の演算結果について

変更内容

以下の条件を満たす算術式がある場合、NetCOBOL V7.2以前は、演算作用対象の属性の組み合わせにより、得られる実行結果が異なることがありました。NetCOBOL V8.0L10以降では、どの項類を使用しても一定の値が得られるように処理を改善しています。

  1. 加算または減算である。かつ、

  2. 作用対象がいずれも固定小数点である。かつ、

  3. “COBOL 文法書”の“付録D 中間結果”が示す規則に従い中間結果精度を求めると、精度が30桁を超え、その結果として中間結果精度が30桁と決定される。かつ、

  4. 演算作用対象が、実際に結果が30桁を超える値を保持している。

NetCOBOL V7.2以前の結果
アがDATA-BINの場合  → RCVの格納値:+999999000000000000
アがDATA-ZONEの場合 → RCVの格納値:-000001000000000000
アがDATA-PACKの場合 → RCVの格納値:-000001000000000000

これは、加減算処理が2進で行われる時、中間結果精度が30桁と定められても、2進型のため、16バイトに入りきる値までは値を保持してしまうことによります(上記例では、アがDATA-BINの時のイの加算)。

NetCOBOL V8.0以降の結果
アがDATA-BINの場合  → RCVの格納値:-000001000000000000
アがDATA-ZONEの場合 → RCVの格納値:-000001000000000000
アがDATA-PACKの場合 → RCVの格納値:-000001000000000000