複数の区切り文字の使用

「データ・エレメント分離 (Data Element Separation)」 をメソッド「データ・パターンの使用 (Use Data Pattern)」に設定すると、文字セットまたはストリング・セットのうちの 1 つで区切られたフィールドを持つメッセージを構文解析することができます。

たとえば、区切り文字として ';' または '/' のいずれかの文字を使用できる 2 つの数値フィールドをもった単純なメッセージを考慮してみます。使用できるアプローチには、次の 2 とおりがあります。

  1. メッセージ・ツリーに追加されるデータ・エレメントとして区切り文字をモデル化します。メッセージが再書き込みされると、入力メッセージのようになります。
    次のようなモデルを考慮してみます。
    Composition = Sequence
    Data Element Separation = Use Data Pattern
    			FieldA    Data Pattern = [0-9]* 
    			Delim     Data Pattern = [;/] optionally with a default value.
    			FieldB    Data Pattern = [0-9]*

    構文解析後のエレメント FieldA および FieldB には、数字 0 - 9 の中の任意の数字が入り、エレメント Delim には ";" または "/" が入っています。

  2. ツリーには追加されない 区切り文字として区切り文字を認識します。メッセージが再書き込みされるときには、望ましい方の区切り文字 (モデル内での指定どおりのもの) が使用されます。
    次のようなモデルを考慮してみます。
    構成 (Composition) = 選択 (Choice)
    Data Element Separation = Use Data Pattern
    		SubType1	Data Pattern = [0-9]*;[0-9]*
    		(Composition = Sequence
    		Data Element Separation = All Elements Delimited
    		Delimiter = ';')
    			FieldA
    			FieldB
    		SubType2	Data Pattern = [0-9]*/[0-9]*
    		(Composition = Sequence
    		Data Element Separation = All Elements Delimited
    		Delimiter = '/')
    			FieldA
    			FieldB

    これらの正規表現では、メッセージ内に出現する可能性のある 2 つのオプションが区別され、それらは通常の区切られた構造として構文解析されます。 構文解析後のエレメント FieldA および FieldB にはそれぞれ数字 0 - 9 の中の任意の数字が入っています。入力メッセージ内で検出された区切り文字はエレメント内に保管されません

    このアプローチを洗練するには、子に別々の名前を使うか、または SubType1 および SubType2 に別々のエレメントを使って、どの区切り文字が使用されるかを知らせたり、どの区切り文字を出力メッセージに組み込むかを制御したりすることができます。

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

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

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