スケーラブルデータベースサーバ HiRDB Version 8 UAP開発ガイド
付録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型符号正規化関数を使用する場合の前提条件
- 表分割ハッシュ関数と同じです。詳細については,「付録H.1(1) 表分割ハッシュ関数を使用する場合の前提条件」を参照してください。
- DECIMAL型符号正規化関数を使用したUAPの作成,実行
- 表分割ハッシュ関数と同じです。詳細については,「付録H.1(2) 表分割ハッシュ関数を使用したUAPの作成,実行」を参照してください。
- <この項の構成>
- (1) DECIMAL型符号正規化関数の詳細
(1) DECIMAL型符号正規化関数の詳細
記述構成については,「付録H.1(3)(b) 記述構成」を参照してください。
- 機能
- 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' |
エラー |
注※ データの絶対値が0の場合,符号部はX'C'に統一されます。
- ヘッダファイル
- #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型データと矛盾する場合は,動作は保証されません。
- データの入力領域と出力領域が同一の場合,又は出力領域が入力領域の前にあり,出力領域の後半部と入力領域の前半部が重複している場合は,動作は保証されます。
All Rights Reserved. Copyright (C) 2006, 2016, Hitachi, Ltd.