スケーラブルデータベースサーバ HiRDB Version 8 解説(UNIX(R)用)

[目次][用語][索引][前へ][次へ]

7.7 DECIMAL型の符号正規化機能

DECIMAL型,日間隔型及び時間隔型のデータ形式は,値の整数部分と符号部分で構成される符号付きパック形式です。通常はHiRDBでは符号付きパック形式データの符号部分としてX'C'(正),X'D'(負),X'F'(正)を有効な値として,UAP又はユティリティから入力される符号をそのままデータベースに格納しています。また,+0(符号部X'C'又はX'F')と−0(符号部X'D')は異なる値としています。

DECIMAL型の符号正規化機能を使用すると,DECIMAL型,日間隔型及び時間隔型の符号付きパック形式の符号部を変換できます。

注※
SQL実行中の型変換や演算などで符号が変換される場合があります。また,複数列インデクスを使用した場合に符号が変換される場合があります。
<この節の構成>
(1) 符号付きパック形式の符号部の仕様
(2) 符号付きパック形式の符号部の変換規則
(3) 適用基準
(4) 環境設定

(1) 符号付きパック形式の符号部の仕様

HiRDBでは符号付きパック形式の符号部の仕様が次の表に示すようになっています。

表7-7 符号付きパック形式の符号部の仕様

符号部 意味
X'C' 正の値を示しています。
X'D' 負の値を示しています。
X'F' 正の値を示しています。

(2) 符号付きパック形式の符号部の変換規則

DECIMAL型の符号正規化機能を使用すると,データを入力したときに符号付きパック形式の符号部を次の表に示す規則に従って変換します。この符号部を変換することを,符号部を正規化するといいます。符号部を正規化すると+0と−0を同じ値として処理できます。

表7-8 符号付きパック形式の符号部の変換規則(0データ以外の場合)

埋込み変数のデータの符号部 正規化しない場合 正規化する場合
X'A' エラー X'C'に変換
X'B' エラー X'D'に変換
X'C' 無変換 無変換
X'D' 無変換 無変換
X'E' エラー X'C'に変換
X'F' 無変換 X'C'に変換
X'0'〜X'9' エラー エラー

表7-9 符号付きパック形式の符号部の変換規則(0データの場合)

0データの符号部 正規化しない場合 正規化する場合
X'A' エラー X'C'に変換
X'B' エラー
X'C' 無変換
X'D' 無変換
X'E' エラー
X'F' 無変換

(3) 適用基準

符号部に仕様差があるUAPを使用する場合に,DECIMAL型の符号正規化機能を使用するとよいケースがあります。この場合,符号変換規則をよく確認してからDECIMAL型の符号正規化機能を使用してください。

例えば,XDM/RD E2のUAPをHiRDBに移行した場合に,DECIMAL型の符号正規化機能を使用するとよいケースがあります。XDM/RD E2とHiRDBはDECIMAL型の符号部に仕様差があります。

(4) 環境設定

DECIMAL型の符号正規化機能を使用するには,システム共通定義でpd_dec_sign_normalize=Yを指定します。

DECIMAL型の符号正規化機能は,なるべくHiRDBの新規導入時に指定してください。既にHiRDBを運用しているときに符号部を正規化するには,DECIMAL型を定義した表のデータをデータロードし直す必要があります。

DECIMAL型の符号正規化機能の運用方法については,マニュアル「HiRDB Version 8 システム運用ガイド」を参照してください。