あなたの習慣について教えてください!!

富士通オフコン: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)の属性/桁数をコンパイラが決定する際のルールを
教えて下さい。

A 回答 (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
などをすれば その桁が有効桁になります。

加算(+)、減算(-)でどれだけ小数桁を確保しても、元となる桁が優先されますので、積・商の元で桁を確保するのがいいと思います

回答にならず済みません・・・・・
    • good
    • 0
この回答へのお礼

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

お礼日時:2006/09/22 20:43

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

    • good
    • 0
この回答へのお礼

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

お礼日時:2006/09/16 01:01

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報