SET CURRENT DECFLOAT ROUNDING MODE

SET CURRENT DECFLOAT ROUNDING MODE ステートメントは、CURRENT DECFLOAT ROUNDING MODE 特殊レジスターの値を変更します。

呼び出し

このステートメントは、アプリケーション・プログラムに組み込むことができ、また対話式に呼び出すこともできます。 これは、動的に準備できる実行可能ステートメントです。

権限

ステートメント内のグローバル変数を参照する場合は、ステートメントの権限 ID が保持する特権に、少なくとも次のいずれか 1 つが含まれなければなりません。

  • ステートメント内で識別されるグローバル変数に対して、
    • そのグローバル変数に対する READ 特権
    • そのグローバル変数を含むライブラリーに対する *EXECUTE システム権限
  • データベース管理者権限

構文

構文図を読む構文図をスキップする
                                       .- = -.   
>>-SET CURRENT DECFLOAT ROUNDING MODE--+-----+------------------>

>----+-ROUND_CEILING---+---------------------------------------><
     +-ROUND_DOWN------+     
     +-ROUND_FLOOR-----+     
     +-ROUND_HALF_DOWN-+     
     +-ROUND_HALF_EVEN-+     
     +-ROUND_HALF_UP---+     
     +-ROUND_UP--------+     
     +-variable--------+     
     '-string-constant-'     

説明

ROUND_CEILING
正の無限大の方向に丸めます。廃棄される桁がすべてゼロであるか、符号が負である場合、廃棄される桁が除去されることを除いて結果は変わりません。それ以外の場合、結果の係数は 1 だけ増分されます (切り上げられます)。
ROUND_DOWN
ゼロの方向に丸めます (切り捨て)。廃棄される桁は無視されます。
ROUND_FLOOR
負の無限大の方向に丸めます。廃棄される桁がすべてゼロであるか、符号が正である場合、廃棄される桁が除去されることを除いて結果は変わりません。それ以外の場合、符号は負となり、結果の係数は 1 だけ増分されます。
ROUND_HALF_DOWN
最も近い値に丸めます。等距離である場合、切り捨てます。廃棄される桁が左隣の桁の値の半分 (0.5) より大きい値を表す場合、結果の係数は 1 増分されます (切り上げ)。そうでない場合、廃棄される桁は無視されます。

この丸めモードは浮動小数点の算術計算に関する IEEE ドラフト標準でサポートされていないため、移植可能アプリケーションの作成時にはお勧めしません。

ROUND_HALF_EVEN
最も近い値に丸めます。等距離である場合、最後の桁が偶数になるように丸めます。廃棄される桁が左隣の桁の値の半分 (0.5) より大きい値を表す場合、結果の係数は 1 増分されます (切り上げ)。半分未満の場合、結果の係数は調整されません (つまり、廃棄される桁は無視されます)。上記がいずれも該当しない場合 (つまり正確に半分を表す場合)、結果の係数は、右端の桁が偶数の場合は変更されず、右端の桁が奇数 (偶数桁を作成するために) の場合は 1 だけ増分されます (切り上げられます)。
ROUND_HALF_UP
最も近い値に丸めます。等距離である場合、切り上げます。廃棄される桁が左隣の桁の値の半分 (0.5) 以上の値を表す場合、結果の係数は 1 増分されます (切り上げられます)。そうでない場合、廃棄される桁は無視されます。
ROUND_UP
ゼロから離れる方向に丸めます。廃棄される桁がすべてゼロである場合、廃棄される桁が除去されることを除いて結果は変わりません。それ以外の場合、結果の係数は 1 だけ増分されます (切り上げられます)。

この丸めモードは浮動小数点の算術計算に関する IEEE ドラフト標準でサポートされていないため、移植可能アプリケーションの作成時にはお勧めしません。

string-constant
丸めモードの指定を含む文字定数。
variable
CURRENT DECFLOAT ROUNDING MODE の値を含む変数を指定します。内容が大文字に変換されることはありません。

変数は、次の条件に合っていなければなりません。

  • 文字ストリングまたは Unicode グラフィック・ストリングの変数でなければなりません。
  • その後に標識変数が続くことはできません。
  • 7 つの丸めモード・キーワードの 1 つを含んでいなければなりません。
  • 変数が固定長である場合、右側はブランクで埋め込まれています。

トランザクションに関する考慮事項: SET CURRENT DECFLOAT ROUNDING MODE ステートメントはコミット可能な操作ではありません。ROLLBACK は、CURRENT DECFLOAT ROUNDING MODE に影響を与えません。

初期 CURRENT DECFLOAT ROUNDING MODE: 活動化グループ内の CURRENT DECFLOAT ROUNDING MODE の初期値は、その活動化グループ内で実行される最初の SQL ステートメントによって設定されます。
  • 活動化グループにおける最初の SQL ステートメントが、SQL プログラムまたは SQL パッケージから実行される場合、CURRENT DECFLOAT ROUNDING MODE 特殊レジスターは DECFLTRND パラメーターの値に設定されます。
  • それ以外の場合、初期値は ROUND_HALF_EVEN です。

CURRENT DECFLOAT ROUNDING MODE の有効範囲は活動化グループです。

例 1: CURRENT DECFLOAT ROUNDING MODE 特殊レジスターを、ストリング定数およびキーワードを使用して ROUND_DOWN に設定します。

  SET CURRENT DECFLOAT ROUNDING MODE = 'ROUND_DOWN'
  SET CURRENT DECFLOAT ROUNDING MODE = ROUND_DOWN