Hitachi

Hitachi Advanced Data Binder AP開発ガイド


19.5.3 a_rdb_CNV_charDECIMAL()(DECIMAL型またはNUMERIC型データへの変換)

〈この項の構成〉

(1) 機能

C言語またはC++言語の文字列データをSQLのDECIMALまたはNUMERICのデータに変換します。文字列データをDECIMAL型のデータに変換する場合の例を次の図に示します。

図19‒3 文字列データを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) 戻り値

  1. a_rdb_CNV_charDECIMAL()が正常に終了した場合,a_rdb_RC_CNV_SUCCESSが返却されます。

  2. エラーが発生した場合,戻り値にエラーコードが返却されます。エラーコードについては,「19.8 CLI関数の戻り値」を参照してください。

(5) 留意事項

  1. 変換前のデータ格納領域(char_Data)と,変換後のデータ格納領域(DECIMAL_Data)は重複しないようにしてください。

  2. 変換前のデータが"-0."に相当する場合,同じ文字数の"+0."と見なします。例えば,変換するデータが"-0.0"の場合は"+0.0"と見なし,変換前のデータが"-0.0000"の場合は"+0.0000"と見なします。

  3. 変換前の文字列データをDECIMALまたはNUMERICのデータ形式に変換し,格納領域の先頭から格納します。このとき,整数部分が格納できない場合はエラーになります。小数部分が格納できない場合は格納できない部分を切り捨てます。

  4. 精度と位取りが一致している場合だけ,整数部に0を付加した文字列データを指定できます。その場合,DECIMAL_Precisionには,整数部の0を除いた整数の数を指定してください。