COBOL2002 XML連携機能ガイド


9.4 小数点以下のけた落ちを判定する機能

XMLドキュメントの入力時に数字項目に対応づけた要素および属性の入力する値の小数点以下のけた数がDDFで指定したCOBOLデータ項目の小数点以下のけた数より長く,けたの切り落としが発生したときにオーバフローが発生したとみなしたい場合は環境変数CBLXML_CHKUFLOWにYESを指定します。オーバフローを判定するためには環境変数CBLXML_CHKUFLOWと同時に-chkovflowオプション,overflowValue属性,またはaccessInfo属性のどちらかを指定しなければなりません。

数字項目とは,DDFでItem要素のtype属性に"numeric","packed",または"binary"のどれかを指定した項目です。

形式

(UNIXの場合)

sh(Bシェル)の場合
CBLXML_CHKUFLOW=YES
export CBLXML_CHKUFLOW
(Windowsの場合)
set CBLXML_CHKUFLOW=YES

けたの切り落としが発生する例

(DTDの例)
<?xml version="1.0" encoding="Shift_JIS"?>
<!DOCTYPE root [
<!ELEMENT root (item1)>
<!ELEMENT item1 (#PCDATA)>
]>
<root/>
(DDFの例)
<?xml version="1.0" encoding="Shift_JIS"?>
<Interface interfaceName="EXAMPLE">
  <BaseElement elemName="root">
  <Item elemName="item1" type="numeric" size="9" fractionalDigits="3"/>
  </BaseElement>
</Interface>
(生成されるCOBOLデータ項目)
01 item1 PIC 9(6)V9(3).
(入力されるXMLドキュメント(けたの切り落としが発生する値))
<?xml version="1.0" encoding="Shift_JIS"?>
 
<root>
  <item1>123.4567</item1>
</root>
注※

DDFで指定したCOBOLデータ項目の小数点以下のけた数を超えています。

注意事項
  • 環境変数CBLXML_CHKUFLOWを指定しても-chkovflowオプション,overflowValue属性,またはaccessInfo属性のどちらかを指定しない場合は,それぞれの条件で-chkovflowオプション指定時のCBLXML-RD-Interface-BaseElementアクセスルーチンのステータス10(CBLXML-VALUE-OVERFLOW)やoverflowValue属性の設定値,accessInfo属性でのアクセス情報フラグのCBLXML-FLAG-OVERFLOWが設定されません。小数点以下のけた落ちを判定する場合は環境変数CBLXML_CHKUFLOWと同時に-chkovflowオプション,overflowValue属性,またはaccessInfo属性のどちらかを必ず指定してください。

  • 小数点以下のけた落ちの判定は,有効数字以外の0を削除した値で判定します。

(例)

COBOLデータ項目9(4)V9(1)に対して,XMLの入力値が「123.400」である場合,右端の「00」を削除した有効数字123.4で判定を行います。このため,けたの切り落としが発生しません。