19.5.3 a_rdb_CNV_charDECIMAL()(DECIMAL型またはNUMERIC型データへの変換)
(1) 機能
C言語またはC++言語の文字列データを,SQLのDECIMAL型またはNUMERIC型のデータに変換します。文字列データをDECIMAL型のデータに変換する場合の例を次の図に示します。
- 重要
-
変換前の文字列データは,次に示す形式にしておく必要があります。
'[△△…△][+|-][aa....aa][.][bb....bb]'
[△△…△]:0個以上の空白
[+|-]:正符号または負符号(符号を省略した場合は正符号が仮定されます)
[aa....aa]:整数部分
[.]:ピリオド(小数部分がない場合はピリオドを省略できます)
[bb....bb]:小数部分
注意事項を次に示します。
-
整数部分[aa....aa],または小数点[.]と小数部分[bb....bb]のどちらかは必ず指定してください。
-
整数部分[aa....aa]と小数部分[bb....bb]を合わせて38個以下になるようにしてください。
-
ピリオド(小数点)を省略した場合は,変換後のデータの末尾に小数点が仮定されます。
-
(2) 形式
#include <adbcnv.h> signed short a_rdb_CNV_charDECIMAL ( char *char_Data, /* In */ unsigned short char_Length, /* In */ unsigned short DECIMAL_Precision, /* In */ unsigned short DECIMAL_Scale, /* In */ unsigned char *DECIMAL_Data, /* Out */ unsigned short BufferLength, /* In */ void *Option /* In */ )
(3) 引数の説明
- char_Data:
-
変換前の文字列データ(C言語またはC++言語の文字列データ)を格納している領域の先頭アドレスを指定します。
- char_Length:
-
変換前の文字列データの長さをバイト数で指定します。1〜41を指定できます。
- DECIMAL_Precision:
-
変換後のDECIMAL型またはNUMERIC型のデータの精度(全体の桁数)を指定します。1〜38を指定できます。
?パラメタの関連づけを行う?パラメタと同じ精度を指定してください。
- DECIMAL_Scale:
-
変換後のDECIMAL型またはNUMERIC型のデータの位取り(小数点以下の桁数)を指定します。0〜38を指定できます。
?パラメタの関連づけを行う?パラメタと同じ位取りを指定してください。
- DECIMAL_Data:
-
変換後のDECIMAL型またはNUMERIC型のデータを格納する領域の先頭アドレスを指定します。
- BufferLength:
-
変換後のDECIMAL型またはNUMERIC型のデータを格納する領域の長さをバイト数で指定します。次に示す値を指定してください。
表19‒6 BufferLengthの指定値 項番
DECIMAL_Precisionの値
BufferLengthの指定値
1
1≦DECIMAL_Precision≦4の場合
2
2
5≦DECIMAL_Precision≦8の場合
4
3
9≦DECIMAL_Precision≦16の場合
8
4
17≦DECIMAL_Precision≦38の場合
16
- Option:
-
NULLを指定します。
(4) 戻り値
-
a_rdb_CNV_charDECIMAL()が正常に終了した場合,a_rdb_RC_CNV_SUCCESSが返却されます。
-
エラーが発生した場合,戻り値にエラーコードが返却されます。エラーコードについては,「19.8 CLI関数の戻り値」を参照してください。
(5) 留意事項
-
変換前のデータ格納領域(char_Data)と,変換後のデータ格納領域(DECIMAL_Data)は重複しないようにしてください。
-
変換前のデータが"-0."に相当する場合,同じ文字数の"+0."と見なします。例えば,変換するデータが"-0.0"の場合は"+0.0"と見なし,変換前のデータが"-0.0000"の場合は"+0.0000"と見なします。
-
変換前の文字列データをDECIMAL型またはNUMERIC型のデータ形式に変換し,格納領域の先頭から格納します。このとき,整数部分が格納できない場合はエラーになります。小数部分が格納できない場合は格納できない部分を切り捨てます。
-
精度と位取りが一致している場合だけ,整数部に0を付加した文字列データを指定できます。その場合,DECIMAL_Precisionには,整数部の0を除いた整数の数を指定してください。