付録H.3 DECIMAL型符号正規化関数
DECIMAL型符号正規化関数とは,DECIMAL型データの符号をX'C',又はX'D'に統一(値が0の場合はX'C'に統一)する関数です。DECIMAL型データをデータベースに格納しなくても符号を正規化した結果が分かるので,次のような場合に使用すると有効です。
-
システム定義pd_dec_sign_normalize=Yの場合,表をキーレンジ分割するための分割キーを決定するときに,格納するデータが均等に分割されるかどうかを評価する場合
-
システム定義pd_dec_sign_normalize=Yの場合,データベース作成ユティリティで,キーレンジ分割した表へRDエリア単位に並列にデータロードする場合,RDエリアごとに入力データファイルを作成する場合
- DECIMAL型符号正規化関数を使用する場合の前提条件
-
表分割ハッシュ関数と同じです。詳細については,「表分割ハッシュ関数を使用する場合の前提条件」を参照してください。
- DECIMAL型符号正規化関数を使用したUAPの作成,実行
-
表分割ハッシュ関数と同じです。詳細については,「表分割ハッシュ関数を使用したUAPの作成,実行」を参照してください。
- 〈この項の構成〉
(1) DECIMAL型符号正規化関数の詳細
(a) 記述構成
記述構成については,「記述構成」を参照してください。
(b) DECIMAL型符号正規化関数(p_rdb_dec_sign_norm)
- 機能
-
DECIMAL型データの符号を正規化します。
srcpが示すDECIMAL型データの符号部を,次のように正規化します。
正規化前
正規化後
X'A'
X'C'
X'B'
X'D'※
X'C'
X'C'
X'D'
X'D'※
X'E'
X'C'
X'F'
X'C'
X'0'〜X'9'
エラー
- ヘッダファイル
-
- #include<pdauxcnv.h>
-
DECIMAL型符号正規化関数を使用する場合に必ず指定します。
- 形式
int p_rdb_dec_sign_norm(unsigned char *srcp, short srcl, unsigned char *destp);
- 引数
-
- srcp(入力)
-
正規化するDECIMAL型データの先頭アドレスを指定します。
- srcl(入力)
-
引数srcpが示すDECIMALデータのデータ長コードを指定します。指定できるデータ長コードを次に示します。
データ型
データ長コード
INTERVAL YEAR TO DAY
8×256
INTERVAL HOUR TO SECOND
6×256
DECIMAL[(p[,q])]
p×256+q
(pを省略した場合は15を仮定,qを省略した場合は0を仮定)
- destp(出力)
-
正規化後のDECIMAL型データが格納されます。destpが示す領域はDECIMAL型符号正規化関数の呼び出し側で確保してください。
- 戻り値
-
データ型:int
- p_rdb_RC_RTRN(0)
-
正常終了
- p_rdb_RC_ERRDFRM(-12)
-
データの符号部が不正
- 注意事項
-
-
DECIMAL型データの符号部以外はエラーチェックされません。したがって,不正なDECIMAL型データの場合,又は引数srclで設定したデータ長コードがDECIMAL型データと矛盾する場合は,動作は保証されません。
-
データの入力領域と出力領域が同一の場合,又は出力領域が入力領域の前にあり,出力領域の後半部と入力領域の前半部が重複している場合は,動作は保証されます。
-