uCosminexus Interschema ユーザーズガイド

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

3.3.2 レングスタグ形式フォーマットの定義

データの形式には,各要素のサイズと値を定義した形式があります。データサイズを表す要素があるので,一般的に「レングスタグ形式」と呼びます。レングスタグ形式は,CII標準で使用される形式です。

ここでは,これまでの例で定義した固定長フォーマットを使用して,レングスタグ形式のフォーマット定義について説明します。データ全体は,ヘッダとメッセージの繰り返しから構成されますが,ヘッダ部分は固定長フォーマットのままで,メッセージ本体の部分をレングスタグ方式としたフォーマットを定義します。

ここでは,次の例を使用してレングスタグ形式のフォーマット定義について説明します。

次に,各レングスタグ形式フォーマットの定義について説明します。

<この項の構成>
(1) 一つの要素に対するレングスタグ構造のフォーマット
(2) 固定長形式のメッセージ「MSG1」のレングスタグ構造化(フォーマット「LT1」)
(3) 固定長形式のメッセージ「MSG2」のレングスタグ構造化(フォーマット「LT2」)
(4) 複数種類のメッセージを持つレングスタグ形式のフォーマット(フォーマット「LT」)

(1) 一つの要素に対するレングスタグ構造のフォーマット

ここでは,一つの要素に対するレングスタグ構造のフォーマット定義について説明します。レングスタグは,データのサイズを表す要素とデータの実体である要素から構成されます。

[図データ]

「LEN」がサイズを表す要素,「DATA」が要素データの実体です。各要素の構造定義にこの構造を使用し,レングスタグ構造のフォーマットを作成します。

レングスタグの構造では,構造のデータが入力データの場合と,出力データの場合とではサイズの定義方法がやや異なります。各定義方法について次に説明します。

要素「LEN」に対しては,特別な定義は必要ないので普通に型を定義します。ここでは,データ種別に「数値,符号無2進整数」,サイズを「2」バイトとします。2進整数を使用する場合は,フォーマットのプロパティで定義するエンディアンに注意してください。

次に,これまで定義した固定長フォーマットの例を使用して,レングスタグ形式のフォーマットの定義について説明します。

(2) 固定長形式のメッセージ「MSG1」のレングスタグ構造化(フォーマット「LT1」)

ここでは,固定長フォーマット「FIX1」で定義したメッセージ「MSG1」をレングスタグ構造にしたフォーマットを定義します。

[図データ]

データの項目はフォーマット「FIX1」と同様ですが,個々の要素データの前にサイズを表す要素を挿入し,フォーマット「FIX1」で要素だったものは,この例では構造となります。フォーマット名は,「LT1」とします。

(a) フォーマットの定義

フォーマットを作成し,プロパティを定義します。固定長フォーマット「FIX1」の場合と同様に,不要文字削除指定のチェックを入れ,文字列の後続スペースや数値の前後の0などの余分な文字を削除します。レングスタグ構造のサイズを表す要素「LEN」には2進数を使用するので,ここではビッグエンディアンを指定します。

(b) 型の定義

サイズの定義以外は,固定長フォーマット「FIX1」と同様に定義します。要素のサイズ定義は,「単位」「注文日」はサイズを可変とする必要がないため固定長のままとします。ほかの要素のサイズ定義は「1バイト以上の可変」,「コンポーネントのサイズ決定式で動的に決定する」と指定します。

(c) 構造の定義

「LEN」以外の各要素に対してレングスタグ構造を定義し,ルート構造の子コンポーネントとします。この例では,レングスタグ構造の名前は,各要素名に「S」を付けたものとします。フォーマット「LT1」の構造を図3-29に示します。

図3-29 フォーマット「LT1」の構造

[図データ]

「単位」と「注文日」はレングスタグ構造化しますが,固定長のためサイズ決定式は記述しません。

以上で,フォーマット「FIX1」のメッセージ「MSG1」をレングスタグ構造化したフォーマット「LT1」の定義が完成しました。

(3) 固定長形式のメッセージ「MSG2」のレングスタグ構造化(フォーマット「LT2」)

繰り返し構造を持つ固定長フォーマット「FIX2」のメッセージ「MSG2」をレングスタグ構造にしたフォーマットを定義します。レングスタグ構造化の方法は,「MSG1」の場合と同様です。要素「単位」と「注文日」を固定長,残りの要素はすべて可変長として定義し,構造を作成します。データの構造を図3-30に示します。フォーマット名は,「LT2」とします。

図3-30 フォーマット「LT2」の構造

[図データ]

(4) 複数種類のメッセージを持つレングスタグ形式のフォーマット(フォーマット「LT」)

ここでは,フォーマット「LT1」「LT2」で作成したレングスタグ形式のメッセージフォーマットにヘッダ部を追加し,一つのフォーマットにまとめます。複数データ及び複数メッセージに対応したレングスタグ形式のフォーマットを定義します。フォーマット名は,「LT」とします。

[図データ]

ヘッダ部は固定長のままで,構造「TRANS」「HEAD」「MESSAGE」はフォーマット「FIX」と同様に定義します。構造「MESSAGE」の子コンポーネント「MSG1」にはフォーマット「LT1」の構造「MSG1」を,「MSG2」にはフォーマット「LT2」の構造「MSG2」を使用します。「MSG1」及び「MSG2」は,各フォーマットから要素及び構造をドラッグ&ドロップでコピーして使用できます。

以上でフォーマット「LT」の定義が完成しました。