Cosminexus V9 BPM/ESB基盤 サービスプラットフォーム 開発ガイド 基本開発編

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

付録M.2 サイズノードが表すデータサイズの単位をバイト数から桁数へ変更する

バイナリフォーマット定義では,単純内容要素のサイズの指定方法として,バイト単位のデータサイズを設定したサイズノードを使用することができます。サイズノード値の桁数指定オプションを使用することによって,サイズノードが表すデータサイズの単位を,データの桁数に変更することができます。なお,このオプションは,パック形式数値の単純内容要素にだけ有効です。

<この項の構成>
(1) サイズノード値の桁数指定オプションの使用例
(2) サイズノード値の桁数指定オプションの設定方法

(1) サイズノード値の桁数指定オプションの使用例

サイズノード値の桁数指定オプションを使用した場合,サイズノードで指定されたデータの桁数から,パック形式数値型要素の実際のバイトサイズを算出し,バイナリデータを読み取ります。バイトサイズは,次の計算式に従って算出されます。

 
(桁数÷2(商の小数点以下は切り捨て))+1
 

サイズノード値の桁数指定オプションの使用例を次に示します。

図M-2 サイズノード値の桁数指定オプションの使用例

[図データ]

参考
データに小数値が含まれる場合,次の規則に従ってデータの桁数を算出します。
  • 整数部分と小数部分の和でデータの桁数を解釈します。
  • 整数部分が0の場合,桁数に含めません。
  • 小数部分が0の場合,バイナリフォーマット定義の単純内容要素の小数部の数だけ桁数に含めます。
入力値と出力結果のバイナリ(パック形式数値),およびデータの桁数の算出例を次の表に示します。
入力値 出力結果のバイナリ(パック形式数値) データの桁数
"0.2" 0x2C(1) 1
"0.02" 0x002C(2) 2
"-0.02" 0x002D(2) 2
"0.0" 0x0C(1) 1
"0.00" 0x000C(2) 2
"10.2" 0x102C(1) 3
"10.02" 0x01002C(2) 4

注※
丸括弧「()」内の数値は,バイナリフォーマット定義の小数部桁数を表します。

(2) サイズノード値の桁数指定オプションの設定方法

サイズノード値の桁数指定オプションは,バイナリフォーマット定義にサイズノード値の単位を設定することによって使用できます。

バイナリフォーマット定義エディタによる設定,およびCOBOL2FDXコンバータによる設定を次に示します。

(a) バイナリフォーマット定義エディタによる設定

サイズノード値の桁数指定オプションは,[単純内容要素]ダイアログの[構成要素]タブから[サイズノード値の単位]コンボボックスで「桁数」を選択してください。

[単純内容要素]ダイアログの表示・入力内容については,マニュアル「サービスプラットフォーム リファレンス」の「1.3.2 単純内容要素ダイアログ」を参照してください。

注意
[サイズノード値の単位]で[桁数]を指定している場合は,サイズノードの値にサイズノード自身のサイズを含めることができません。そのため,バイナリフォーマット定義エディタでは,[サイズノード値の単位]で[桁数]を指定している場合,[構成要素]タブの[サイズ算出方法]のコンボボックスが非活性となります。
(b) COBOL2FDXコンバータによる設定

サイズノード値の桁数指定オプションは,VALUE-UNIT句で指定します。パック形式数値型の基本項目に対し,VALUE-UNIT句でDIGITSを指定してください。

サイズノード値の桁数指定オプションを使用する場合のCOBOL登録集原文の定義例を次に示します。

 
  01      Root.
    03    SizeNode  INTEGER SIZE 1.
    03    PackNode  PACK SIZE DEPENDING ON SizeNode VALUE-UNIT DIGITS.
 

COBOL2FDXコンバータ,およびCOBOL登録集原文ファイルによるバイナリフォーマット定義ファイルの生成方法については,「4.5 COBOL登録集原文ファイルからのバイナリフォーマット定義ファイルの生成」を参照してください。

注意
サイズノード値の単位で桁数を指定している場合は,サイズノードの値にサイズノード自身のサイズを含めることができません。そのため,COBOL2FDXコンバータでは,サイズノード値の単位で桁数を指定している基本項目に対しCALC句を指定すると,COBOL登録集原文ファイルの変換でエラー(KECT26019-E)が発生します。