10 進数演算機構エラーの回避
Db2 10進数の操作を実行すると、適切な精度とスケールを使用しない場合はエラーが発生する可能性があります。Db2
このタスクについて
静的 SQL ステートメントの場合、 除算エラーを避けるための最も簡単な方法は、プリコンパイラー・オプション DEC(15) を指定して、DEC31 規則 をオーバーライドすることです。 一部のケースでは、 D31.s を指定することで除算エラーを回避できます。ここで、sは 1~9の範囲の数値であり、除算操作で使用される最小のスケールを表します。 この指定により、プログラムに組み込まれた ステートメントに対してエラーが発生する可能性を減少させます。
動的SQL文にバインド、定義、または呼び出しの動作があり、パネルのUSE FOR DYNAMICRULESのインストールオプションの値が DSNTIP4 NOに設定されている場合、プリコンパイラ・オプションDEC(15)、 DEC15、または D15.s を使用して、 DEC31 ルールを無効にすることができます。ここで、s は1~9の範囲の数値です。
動的ステートメントの場合、または単一の静的ステートメントの場合は、 スカラー関数 DECIMAL を使用して、 結果がなるべくエラーにならないような精度と位取りの値を指定できます。
動的ステートメントの実行前に、特殊レジスター CURRENT PRECISION の 値を設定して DEC15 または D15.s にしてください (ここで、s は 1 から 9 の数値)。
たとえ DEC31 規則を使用しても、乗算はときには、積の精度が 31 より大きいためにオーバーフローを起こす可能性があります。 大きな数字の乗算でオーバーフローが発生するのを避けるには、乗算演算子の代わりに、MULTIPLY_ALT 組み込み関数を使用します。