COBOL2002 使用の手引 手引編


5.2.4 演算の中間結果

中間結果のけた数は,次の規則に従って確保されます。

なお,Linux(x64)の場合,数字項目のけた拡張機能での演算の中間結果については,「28.3 数字項目のけた拡張機能での演算の中間結果」を参照してください。

演算の中間結果のけた数を求める例を次に示します。

(例)
       77 A PIC S9(3)V9(3).
       77 B PIC S9(4)V9(3).
       77 C PIC S9(3)V9(2).
       77 D PIC S9(7)V9(4).
           :
           COMPUTE D = C + (A / B).

上記のCOMPUTE文を実行すると,中間結果のけた数は次のようになります。

除算A/Bの中間結果のけた数

整数部:I=I1+D2=3+3=6(けた)

小数部:D=MAX(D1-D2,Dmax)=MAX(0,4)=4(けた)

加算C+(A/B)の中間結果のけた数

除算A/Bの中間結果のけた数は,上記の計算式から,I2=6,D2=4として計算します。

整数部:I=MAX(I1,I2)+1=MAX(3,6)+1=7(けた)

小数部:D=MAX(D1,D2)=MAX(2,4)=4(けた)

演算の中間結果についての注意事項
  • 次の場合,浮動小数点演算となるため,中間結果のけた数の計算式は適用されません。

  1. 浮動小数点項目や浮動小数点数字定数が算術演算の対象に指定されている場合

  2. 被べき数(底)が浮動小数点項目であるか,またはべき数(指数)が整数でない場合

  3. 関数値のデータ属性が内部浮動小数点形式の組み込み関数の場合

  4. 浮動小数点項目,べき乗が含まれる算術式,または除算が含まれる算術式を引数に指定した組み込み関数の場合

  • 中間結果が30けたを超えると,切り捨てが行われるため,正しい値が求まらないことがあります。そのため,中間結果が30けたを超える計算をしてはいけません。

  • 中間結果の計算式は,COBOLの規格で規定されていないため,このシステムが独自に規定したものです。