Hitachi

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


付録M.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)が発生します。