最初のページに戻ります。

総合の目次があるページに戻ります。

よく使うマニュアルです

Wiki

updated on 2004.06.23

9.21.QRYの除算エラーの回避

[ Previous ] [ HOME ] [ Upper ] [ Next ]


QRYの計算式で、比率などを出すために、

RATIO     (FLD001 * 100) / FLD002                  

としたことは、ありますよね。もし、FLD002が0でも、++++と結果表示するだけですが、このRATIOを「分類キー指定」にすると、F5を押しても、「除算エラー」とエラーメッセージが出て、リストを表示さえしてくれません。(算術のルール違反の結果をキーの値として、ソート出来ないのです。)

正確な結果を求めなくてもいいのならば、

RATIO     (FLD001 * 100 * FLD002) / (FLD002 * FLD002 + 0.0000001)                  

で回避できます。

要は、限りなく0に近くて、0でない数字を、分母に足すのです。これで、上記のエラーは回避出来ます。

b_upd.gif (283 バイト)念のため、結果のフィールドは桁指定すること。でないと、すごい小数以下が出ますよ。きっと、分かるよね。

b_debug.gif (341 バイト)実は、上記の例は、全体の中の分子の割合を、出すものだったので、分母=0(空集合)ならば、必ず、分子も0のはずです。全体が無いのだから、ある固体の数の割合もなにも無いのです。しかし、OPNQRYFの除算エラー回避をみて、わり算は割合以外でも使うことに、はたと気づきました。もし、分子が有数だとすると、÷ 0.0000001は  × 10000000 と同じなので、ものすごい桁の値が出ます。(実は、プログラムのバグで気づきました。データレコードで分子部分をセットして、分母をセットし忘れたのです。)そこで、やはり、OPNQRYFに見習って、上記のように修正しました。これなら、まあ、デバッグ用に分子が有数でも、0になるので、うまくいきます。また、通常の場合も、きちんと計算されていました。それから、勿論、分母=0をレコード選択で、除外してもいいのです。ただ、レコードがそこで、除外されてしまうので、全体の件数がでなかっり、分母0でも、他のフィールドの値を見たい場合、上記の方法を取ります。

でも、ちょっと、正確性に問題があるので、正確な数字を求めるときは、使わないでください。デバッグなどに限ってください。


[ Previous ] [ HOME ] [ Upper ] [ Next ]

You are at K's tips-n-kicks of AS/400

 

SEO [PR] 爆速!無料ブログ 無料ホームページ開設 無料ライブ放送