メッセージをモデル化する「データ・エレメント分離 (Data Element Separation)」メソッドの指定

TDS メッセージ内のデータのエレメントは、複合タイプの「データ・エレメント分離 (Data Element Separation)」プロパティーで指定する必要のある、「データ・エレメント分離 (Data Element Separation)」メソッドに基づいて識別されます。 「データ・エレメント分離 (Data Element Separation)」 に設定した値によっては、各エレメントを識別するには、 プロパティー「タグ・データ区切り文字 (Tag Data Separator)」 および 「区切り文字 (Delimiter)」 (メッセージ・セットと複合タイプの場合) も必要になることがあります。

各複合タイプに指定できるメソッドについて、以下に示します。 ここに示されている例はすべて、タイプ STRING の 3 つのエレメントを含む複合タイプに基づいています。 「タグ・データ区切り文字 (Tag Data Separator)」 が使用される場合それはコロン (:) であり、「区切り文字 (Delimiter)」 が使用される場合それはアスタリスク (*) です。

タグ付き区切り (Tagged Delimited)
各データ値の前には、エレメント・プロパティーとして指定されたタグが置かれます。 タグの長さが固定長であることを示す「タグの長さ (Length of Tag)」 がタグに関連付けられている場合、各データ値はタグの直後に続きます。 タグが固定長とは指定されていない場合、タグとエレメントとは「タグ・データ区切り文字 (Tag Data Separator)」 によって分離されます。 それぞれのデータ値は区切り文字 によって分離されます。 複合タイプ内の最後のエレメントの後には区切り文字 は付きません。

次の例は、固定長のタグを示しています。

  tag1data1*tag2data2*tag3data3

次の例は、可変長のタグを示しています。

  tag1:data1*tag11:data2*tag111:data3
タグ付き固定長 (Tagged Fixed Length)
このメソッドは「タグ付き区切り (Tagged Delimited)」と似ていますが、データ値が常に固定長です。 そのため、各データ値の後に区切り文字を置く必要はありません。 「タグ・データ区切り文字 (Tag Data Separator)」「タグの長さ (Length of Tag)」 の設定に応じて、タグそのものは固定長または可変長のどちらかにすることができます。

次の例は、固定長のタグを示しています。

tag1data1tag2data2tag3data3

次の例は、可変長のタグを示しています。

tag1:data1tag11:data2tag111:data3
タグ付きエンコード長 (Tagged Encoded Length)
このメソッドには、データの前にタグおよび長さフィールドがあります。 これはパーサーに、ビット・ストリーム中の各タグに続いて、そのタグに関連するデータの長さを定義するデータがあることを示します。 「エンコード長の長さ (Length of Encoded Length)」パラメーターを設定することが必要です。 「エンコード長の長さ (Length of Encoded Length) の値の中に余分の文字が含まれる場合、「エンコード長の余分の文字 (Extra Chars in Encoded Length)」 パラメーターも設定する必要があります。

以下の例は、4 文字の固定長のタグ (「タグの長さ (Length of Tag)」 は 4 に設定済み)、3 文字の長さフィールド (「エンコード長の長さ (Length Of Encoded Length)」 は 3 に設定済み)、およびいくつかのデータ文字を示しています。 「エンコード長の余分の文字 (Extra Chars in Encoded Length)」 はゼロに設定されています。

tagA007dataAAAtagB006dataBBtagC009dataCCCCC
上記のビット・ストリームの場合、パーサーはタグ "tagA" を検出して長さの値 7 を取り出します。「エンコード長の余分の文字 (Extra Chars in Encoded Length)」 はゼロに設定されているので、次の 7 (7 - 0) 文字はデータです。 その後、次のタグ "tagB" の文字、および長さの値 6 が続き、タグ "tagB" へと続きます。 この例のいずれの場合も、長さフィールド内の値はデータの長さそのものです。

以下の例は、4 文字の固定長をもつタグ (「タグの長さ (Length of Tag)」 は 4 に設定済み)、3 文字の長さフィールド (「エンコード長の長さ (Length Of Encoded Length)」 は 3 に設定済み)、およびいくつかのデータ文字を示しています。 「エンコード長の余分の文字 (Extra Chars in Encoded Length)」 は 3 に設定されています (この例では長さフィールドの値には、3 文字の長さフィールドに加えてデータ・フィールドが入っているからです)。

tagA012dataAAAAAtagB010dataBBBtagC016dataCCCCCCCCC
上記のビット・ストリームの場合、パーサーは "tagA" の後にある長さ値 12 を取り出します。 しかし、「エンコード長の余分の文字 (Extra Chars in Encoded Length)」 は 3 に設定されているので、その後の 9 (12 - 3) 文字だけがデータということになります。 その後、"tagB" の文字、および長さ値 10 が続き、これが繰り返されます。 この例のいずれの場合も、長さフィールド内の値はデータの実際の長さより 3 だけ大きくなります。
全エレメントを区切る (All Elements Delimited)
データ値にはタグがありませんが、データ値とデータ値は区切り文字によって分離されます。

以下の例は、これを示しています。

data1*data2*data3
可変長エレメントを区切る (Variable Length Elements Delimited)
データ・エレメントが固定長の場合、次のデータ値はその直後に続きます。 データ・エレメントが可変長の場合、次のデータ値との間に区切り文字が入ります。 タグはありません。

以下の例では、エレメント 2 が固定長、エレメント 1 と 3 が可変長です。

data1*data2data3
データ・パターンの使用 (Use Data Pattern)
各エレメントに関連付けられたデータは、そのエレメントの「データ・パターン (Data Pattern)」プロパティー内にある正規表現とデータとの突き合わせによってパーサーで判別されます。 TDS パーサーは、「データ・パターン (Data Pattern)」の正規表現を使用して、以下のことを行います。
  • 各エレメントと関連付けるデータの長さを判別します。
  • 反復エレメントの場合には、ビット・ストリーム内の他の位置にエレメントが出現しているかどうかを判別します。
  • ビット・ストリーム中にエレメントが存在するか (パターンが一致する場合)、または存在しないか (パターンがマッチしない場合) を判別します。
正規表現パターンの一部としてのこれらのコード以外の区切り文字またはタグはありません。 パターン・マッチングの作動法の詳細については、正規表現の構文を参照してください。
以下の例は、それぞれが以下のような正規表現の「データ・パターン (Data Pattern)」を示した 3 つのエレメントを示しています。
First Data Pattern = [A-Z]{1,3}
Second Data Pattern = [0-9]+
Third Data Pattern = [a-z]*

Message data = 'DT31758934information for you'

First element data: 'DT'
Second element data: '31758934'
Third element data: 'information'
最初の「データ・パターン (Data Pattern)」は「A から Z までの範囲の 1~3 個の文字」を意味し、2 番目は「0 から 9 までの範囲の 1 個以上の文字」を意味し、3 番目は「a から z までの範囲の 0 個以上の文字」を意味します。エレメントの「データ・パターン (Data Pattern)」に一致しなかった最初の文字に応じて、各エレメントのデータがどのように終了されているかに注意してください。
固定長 (Fixed Length)
すべてのエレメントは固定長であり、データ値の直後に次のデータ値が続いて、 それらの間に区切り文字は入りません。 タグはありません。

以下の例は、これを示しています。

data1data2data3
固定長 AL3 (Fixed Length AL3)
このメソッドは「固定長 (Fixed Length)」と同じですが、 ACORD AL3 規格で事前定義されているエレメントの不足、長さのエンコード、 およびバージョン設定についてのいくつかの規則をインプリメントするようにパーサーに通知します。
未定義メッセージ (Undefined)
この値は、複合タイプのタイプ構成 プロパティーを メッセージ に設定したときに自動的に設定され、別の値に設定することはできません。 さらに、TDS タイプのプロパティー 「グループ標識 (Group Indicator)」「グループ・ターミネーター (Group Terminator)」「タグ・データ区切り文字 (Tag Data Separator)」「タグの長さ (Length of Tag)」、および 「区切り文字 (Delimiter)」 の値も設定することはできません。

「データ・エレメント分離 (Data Element Separation)」 メソッドを「未定義 (Undefined)」に設定する場合、「タイプ構成 (Type Composition)」 プロパティーを「空 (Empty)」「選択 (Choice)」「非順序セット (Unordered Set)」「順序セット (Ordered Set)」「シーケンス (Sequence)」、または「単純非順序セット (Simple Unordered Set)」に設定しないでください。 設定すると、タイプをチェックインできなくなります。

「タイプ構成 (Type Composition)」「メッセージ (Message)」に設定する場合の詳細については、複数パーツ・メッセージを参照してください。

関連概念
メッセージのモデル化
メッセージ・モデル

関連タスク
メッセージ・モデルの開発
メッセージ・モデル・オブジェクトの処理

関連資料
メッセージ・モデル参照情報
メッセージ・モデル・オブジェクトのプロパティー
追加の MRM ドメイン情報
追加の TDS 情報
メッセージの特性