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