スケーラブルデータベースサーバ HiRDB Version 8 UAP開発ガイド

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

付録H.3 DECIMAL型符号正規化関数

DECIMAL型符号正規化関数とは,DECIMAL型データの符号をX'C',又はX'D'に統一(値が0の場合はX'C'に統一)する関数です。DECIMAL型データをデータベースに格納しなくても符号を正規化した結果が分かるので,次のような場合に使用すると有効です。

DECIMAL型符号正規化関数を使用する場合の前提条件
表分割ハッシュ関数と同じです。詳細については,「付録H.1(1) 表分割ハッシュ関数を使用する場合の前提条件」を参照してください。

DECIMAL型符号正規化関数を使用したUAPの作成,実行
表分割ハッシュ関数と同じです。詳細については,「付録H.1(2) 表分割ハッシュ関数を使用したUAPの作成,実行」を参照してください。
<この項の構成>
(1) DECIMAL型符号正規化関数の詳細

(1) DECIMAL型符号正規化関数の詳細

(a) 記述構成

記述構成については,「付録H.1(3)(b) 記述構成」を参照してください。

(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' エラー

注※ データの絶対値が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)
データの符号部が不正

注意事項
  1. DECIMAL型データの符号部以外はエラーチェックされません。したがって,不正なDECIMAL型データの場合,又は引数srclで設定したデータ長コードがDECIMAL型データと矛盾する場合は,動作は保証されません。
  2. データの入力領域と出力領域が同一の場合,又は出力領域が入力領域の前にあり,出力領域の後半部と入力領域の前半部が重複している場合は,動作は保証されます。