uCosminexus Interschema ユーザーズガイド
データの形式には,各要素のサイズと値を定義した形式があります。データサイズを表す要素があるので,一般的に「レングスタグ形式」と呼びます。レングスタグ形式は,CII標準で使用される形式です。
ここでは,これまでの例で定義した固定長フォーマットを使用して,レングスタグ形式のフォーマット定義について説明します。データ全体は,ヘッダとメッセージの繰り返しから構成されますが,ヘッダ部分は固定長フォーマットのままで,メッセージ本体の部分をレングスタグ方式としたフォーマットを定義します。
ここでは,次の例を使用してレングスタグ形式のフォーマット定義について説明します。
次に,各レングスタグ形式フォーマットの定義について説明します。
ここでは,一つの要素に対するレングスタグ構造のフォーマット定義について説明します。レングスタグは,データのサイズを表す要素とデータの実体である要素から構成されます。
「LEN」がサイズを表す要素,「DATA」が要素データの実体です。各要素の構造定義にこの構造を使用し,レングスタグ構造のフォーマットを作成します。
レングスタグの構造では,構造のデータが入力データの場合と,出力データの場合とではサイズの定義方法がやや異なります。各定義方法について次に説明します。
図3-28 [サイズ決定式]ダイアログ
ここでは,コンポーネント「DATA」のサイズはコンポーネント「LEN」によって動的に決定されることになるので,サイズ決定式には「LEN」のコンポーネント名を記述します。コンポーネント名は,フォーマット名,ルート構造から対象コンポーネントまでを「@」でつないだもので指定します。ここでは,n階層上のコンポーネントを意味する略記法「\n」を使用して次のように記述します。\1@LEN
要素「LEN」に対しては,特別な定義は必要ないので普通に型を定義します。ここでは,データ種別に「数値,符号無2進整数」,サイズを「2」バイトとします。2進整数を使用する場合は,フォーマットのプロパティで定義するエンディアンに注意してください。
次に,これまで定義した固定長フォーマットの例を使用して,レングスタグ形式のフォーマットの定義について説明します。
ここでは,固定長フォーマット「FIX1」で定義したメッセージ「MSG1」をレングスタグ構造にしたフォーマットを定義します。
データの項目はフォーマット「FIX1」と同様ですが,個々の要素データの前にサイズを表す要素を挿入し,フォーマット「FIX1」で要素だったものは,この例では構造となります。フォーマット名は,「LT1」とします。
フォーマットを作成し,プロパティを定義します。固定長フォーマット「FIX1」の場合と同様に,不要文字削除指定のチェックを入れ,文字列の後続スペースや数値の前後の0などの余分な文字を削除します。レングスタグ構造のサイズを表す要素「LEN」には2進数を使用するので,ここではビッグエンディアンを指定します。
サイズの定義以外は,固定長フォーマット「FIX1」と同様に定義します。要素のサイズ定義は,「単位」「注文日」はサイズを可変とする必要がないため固定長のままとします。ほかの要素のサイズ定義は「1バイト以上の可変」,「コンポーネントのサイズ決定式で動的に決定する」と指定します。
「LEN」以外の各要素に対してレングスタグ構造を定義し,ルート構造の子コンポーネントとします。この例では,レングスタグ構造の名前は,各要素名に「S」を付けたものとします。フォーマット「LT1」の構造を図3-29に示します。
図3-29 フォーマット「LT1」の構造
「単位」と「注文日」はレングスタグ構造化しますが,固定長のためサイズ決定式は記述しません。
以上で,フォーマット「FIX1」のメッセージ「MSG1」をレングスタグ構造化したフォーマット「LT1」の定義が完成しました。
繰り返し構造を持つ固定長フォーマット「FIX2」のメッセージ「MSG2」をレングスタグ構造にしたフォーマットを定義します。レングスタグ構造化の方法は,「MSG1」の場合と同様です。要素「単位」と「注文日」を固定長,残りの要素はすべて可変長として定義し,構造を作成します。データの構造を図3-30に示します。フォーマット名は,「LT2」とします。
図3-30 フォーマット「LT2」の構造
ここでは,フォーマット「LT1」「LT2」で作成したレングスタグ形式のメッセージフォーマットにヘッダ部を追加し,一つのフォーマットにまとめます。複数データ及び複数メッセージに対応したレングスタグ形式のフォーマットを定義します。フォーマット名は,「LT」とします。
ヘッダ部は固定長のままで,構造「TRANS」「HEAD」「MESSAGE」はフォーマット「FIX」と同様に定義します。構造「MESSAGE」の子コンポーネント「MSG1」にはフォーマット「LT1」の構造「MSG1」を,「MSG2」にはフォーマット「LT2」の構造「MSG2」を使用します。「MSG1」及び「MSG2」は,各フォーマットから要素及び構造をドラッグ&ドロップでコピーして使用できます。
以上でフォーマット「LT」の定義が完成しました。
All Rights Reserved, Copyright (C) 2000, Information-technology Promotion Agency, Japan.
All Rights Reserved. Copyright (C) 2005, 2008, Hitachi, Ltd.
All Rights Reserved, Copyright (C) 1985-1998, Microsoft Corporation.