9.21.QRYの除算エラーの回避 |
QRYの計算式で、比率などを出すために、 RATIO (FLD001 * 100) / FLD002 としたことは、ありますよね。もし、FLD002が0でも、++++と結果表示するだけですが、このRATIOを「分類キー指定」にすると、F5を押しても、「除算エラー」とエラーメッセージが出て、リストを表示さえしてくれません。(算術のルール違反の結果をキーの値として、ソート出来ないのです。) 正確な結果を求めなくてもいいのならば、 RATIO (FLD001 * 100 * FLD002) / (FLD002 * FLD002 + 0.0000001) で回避できます。 要は、限りなく0に近くて、0でない数字を、分母に足すのです。これで、上記のエラーは回避出来ます。 念のため、結果のフィールドは桁指定すること。でないと、すごい小数以下が出ますよ。きっと、分かるよね。 実は、上記の例は、全体の中の分子の割合を、出すものだったので、分母=0(空集合)ならば、必ず、分子も0のはずです。全体が無いのだから、ある固体の数の割合もなにも無いのです。しかし、OPNQRYFの除算エラー回避をみて、わり算は割合以外でも使うことに、はたと気づきました。もし、分子が有数だとすると、÷ 0.0000001は × 10000000 と同じなので、ものすごい桁の値が出ます。(実は、プログラムのバグで気づきました。データレコードで分子部分をセットして、分母をセットし忘れたのです。)そこで、やはり、OPNQRYFに見習って、上記のように修正しました。これなら、まあ、デバッグ用に分子が有数でも、0になるので、うまくいきます。また、通常の場合も、きちんと計算されていました。それから、勿論、分母=0をレコード選択で、除外してもいいのです。ただ、レコードがそこで、除外されてしまうので、全体の件数がでなかっり、分母0でも、他のフィールドの値を見たい場合、上記の方法を取ります。 でも、ちょっと、正確性に問題があるので、正確な数字を求めるときは、使わないでください。デバッグなどに限ってください。 |
You are at K's tips-n-kicks of AS/400
|
SEO | [PR] 爆速!無料ブログ 無料ホームページ開設 無料ライブ放送 | ||