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

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

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

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

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

  tag1data1*tag2data2*tag3data3

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

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

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

tag1data1tag2data2tag3data3

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

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

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

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

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

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

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

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

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

data1*data2data3
データ・パターンの使用
各エレメントに関連付けられたデータは、そのエレメントの「データ・パターン」プロパティー内にある正規表現とデータとの突き合わせによってパーサーで判別されます。 TDS パーサーは、「データ・パターン」の正規表現を使用して、以下のことを行います。
  • 各エレメントと関連付けるデータの長さを判別します。
  • 反復エレメントの場合には、ビット・ストリーム内の他の位置にエレメントが出現しているかどうかを判別します。
  • ビット・ストリーム中にエレメントが存在するか (パターンが一致する場合)、または存在しないか (パターンがマッチしない場合) を判別します。
正規表現パターンの一部としてのこれらのコード以外の区切り文字またはタグはありません。 パターン・マッチングの作動法の詳細については、正規表現の構文を参照してください。
以下の例は、それぞれが以下のような正規表現の「データ・パターン」を示した 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'
最初の「データ・パターン」は「A から Z までの範囲の 1 から 3 個の文字」を意味し、2 番目は「0 から 9 までの範囲の 1 個以上の文字」を意味し、3 番目は「a から z までの範囲の 0 個以上の文字」を意味します。エレメントの「データ・パターン」に一致しなかった最初の文字に応じて、各エレメントのデータがどのように終了されているかに注意してください。
固定長
すべてのエレメントは固定長であり、データ値の直後に次のデータ値が続いて、 それらの間に区切り文字は入りません。 タグはありません。

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

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

データ・エレメント分離」メソッドを「未定義」に設定する場合、「タイプ構成」プロパティーを「空」「選択」「非順序セット」「順序セット」「シーケンス」、または「単純非順序セット」に設定しないでください。

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

関連概念
メッセージのモデル化
メッセージ・モデル
複数パーツ・メッセージ
TDS 形式: 論理モデルとの関係
関連タスク
メッセージ・モデルの開発
メッセージ・モデル・オブジェクトの処理
関連資料
メッセージ・モデルの参照情報
メッセージ・モデル・オブジェクトのプロパティー
追加の MRM ドメイン情報
追加の TDS 情報
メッセージの特性
特記事項 | 商標 | ダウンロード | ライブラリー | サポート | フィードバック
Copyright IBM Corporation 1999, 2006 最終更新: 08/21/2006
ad09830_