DBのNUMBER(11,8)の項目をFileのdouble(3,8)へ直接転記する際に、
データの丸め処理が発生し、下記のように値が遷移しました。
NUMBER(11,8) double(3,8)
123.12345678 ⇒ 123.123457
BatchClient利用ガイドを参照する限り、
下記のように型が遷移したと理解しました。
DB iot File
NUMBER(11,8) ⇒ double ⇒ double(3,8)
iot上でdouble型の中間変数を定義し、
123.123456789 という数値を与えた結果、
123.123457 となることを確認しました。
DBからFileへ直接転記する際に、
丸め処理を起こさないようにするにはどのようにしたらいいでしょうか?
double型の丸めについてですが、扱える「最大小数桁が5ケタ」という仕様です。
今回のケースで NUMBER(11,8) のDBの値を、ファイルに出力するには、以下の
方法で処理する必要があります。
(1) ファイル定義ファイル上は、double型ではなく、char型で出力項目を定義
します。
そして、この項目のchar型のサイズは、符号1桁+整数桁+小数桁+小数点1桁
の大きさで指定します。
今回のケースでは、1+3+8+1=13になります。
(2) SDE for Batch Client上で製造する際には、この項目については直接転記
はせずに、処理式転記で以下のように記述します。
sprintf($$,"%13.8f", ここに入力DBの項目をドラッグ&ドロップ); ※
※Cのprintfの書式の仕様に従い、小数9ケタ目で四捨五入されます。
(例:DBの値が123.123456789の場合、ファイルには 123.12345679と出力
されます)
同様にファイル出力にて、doubleの小数桁を5ケタを超えて出力する場合は、
直接転記はできず、上記の方法をとる必要があります。
【確認済みのバージョン】全バージョン
【確認済みの対象OS】全OS