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
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
「データ・エレメント分離」メソッドを「未定義」に設定する場合、「タイプ構成」プロパティーを「空」、「選択」、「非順序セット」、「順序セット」、「シーケンス」、または「単純非順序セット」に設定しないでください。
「タイプ構成」を「メッセージ」に設定する場合の詳細については、複数パーツ・メッセージを参照してください。