• ベストアンサー

COBOL計算式の中間ワーク桁数について

富士通オフコン:GP6700-1、OS:ASP Version V10 のCOBOL で 例えば、WORKING-STRAGE SECTION で 01 WORK-AREA. 03 A PIC S9(10)V9(03). 03 B PIC S9(10)V9(03). 03 C PIC S9(10)V9(03). 03 D PIC S9(10)V9(03). 03 E PIC S9(10)V9(03). 03 F PIC S9(10)V9(03). という項目があって COMPUTE E = ( A + B ) * C / D. COMPUTE F = A * B + C / D. を実行する場合、 (1) A + B の結果を格納する中間ワーク(1) (2) 中間ワーク(1) * C の結果を格納する中間ワーク(2) (3) A * B の結果を格納する中間ワーク(3) (4) C / D の結果を格納する中間ワーク(4) の4つはコンパイラが所定のルールに従って用意すると思います。 この中間ワーク(1)、(2)、(3)、(4)の属性/桁数をコンパイラが決定する際のルールを 教えて下さい。

質問者が選んだベストアンサー

  • ベストアンサー
  • sanga12
  • ベストアンサー率39% (69/176)
回答No.2

富士通固有に決められているなら、判りませんが、 一般的には、有効小数点は、計算する式の最も多い桁になるはずですが・・・・・ たとえば、 02 A  PIC 9(5). 02 B  PIC 9(5). MOVE 20 TO A. MOVE 75 TO B. COMPUTE A = A / B * 100. これだと Aは0ですね. ちょっと 式を変えて COMPUTE A = A * 1.00 / B * 100. にすると Aは26になりますね COMPUTE A = (A * 1.00 / B + 0.005 )* 100 . だと どうでしょうか Aは26のまま COMPUTE A = (A * 1.000 / B + 0.005 )* 100 . では、 A は 27ですね パーセントを100で表示する際には、途中式で * 1.00000 などをすれば その桁が有効桁になります。 加算(+)、減算(-)でどれだけ小数桁を確保しても、元となる桁が優先されますので、積・商の元で桁を確保するのがいいと思います 回答にならず済みません・・・・・

sara_dog
質問者

お礼

どうもありがとうございます。 やり方として参考にさせていただきます。

その他の回答 (1)

回答No.1

そういったことは、マニュアルに記載されていませんか?

sara_dog
質問者

お礼

回答記入ありがとうございます。 残念ながらマニュアルを買ってもらえないため、手近にマニュアルがありません。