付録M.2 サイズノードが表すデータサイズの単位をバイト数から桁数へ変更する
バイナリフォーマット定義では,単純内容要素のサイズの指定方法として,バイト単位のデータサイズを設定したサイズノードを使用することができます。サイズノード値の桁数指定オプションを使用することによって,サイズノードが表すデータサイズの単位を,データの桁数に変更することができます。なお,このオプションは,パック形式数値の単純内容要素にだけ有効です。
(1) サイズノード値の桁数指定オプションの使用例
サイズノード値の桁数指定オプションを使用した場合,サイズノードで指定されたデータの桁数から,パック形式数値型要素の実際のバイトサイズを算出し,バイナリデータを読み取ります。バイトサイズは,次の計算式に従って算出されます。
(桁数÷2(商の小数点以下は切り捨て))+1
サイズノード値の桁数指定オプションの使用例を次に示します。
- 参考
-
データに小数値が含まれる場合,次の規則に従ってデータの桁数を算出します。
-
整数部分と小数部分の和でデータの桁数を解釈します。
-
整数部分が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)が発生します。