uCosminexus Interschema ユーザーズガイド
ここでは,レングスタグ形式のフォーマットから固定長形式のフォーマットへマッピングする例を使用し,構造が階層化されたデータのマッピングについて説明します。
レングスタグ形式のフォーマットとして「LT2」,固定長形式のフォーマットとして「FIX2」を使用します。データの構造を図4-11に示します。
図4-11 フォーマット「LT2」「FIX2」のデータの構造
入力側のデータのレングスタグ構造には,各要素のサイズを表す要素「LEN」がありますが,出力側のデータにはこの要素は必要ありません。したがって,マップ式は,レングスタグ構造の実際の値を持つ要素だけを取り出すマップ式を記述します。
要素ごとにマップ式の定義について説明します。
入力フォーマットの「注文番号」を出力フォーマットの「注文番号」にドラッグ&ドロップし,代入のマップ式を記述します。
マップ式を次に示します。
= LT2@MSG2@S注文番号@注文番号 ;
要素「単位」も要素「注文番号」と同様に代入のマップ式を記述します。
マップ式は,構造に対しても記述できます。構造に対するマップ式は,入力側と出力側それぞれの出現順序の関係を対応付けます。要素のマップ式と同様に,入力側の構造を出力側の構造へドラッグ&ドロップして記述できます。複数回出現する構造には,複数回出現する要素のマップ式の記述と同様に,INDEX関数を使用したマップ式を記述します。
構造「明細」のマップ式を記述します。出力側の構造「明細」は,入力側の構造「明細」とマッピングします。
= LT2@MSG2@明細[INDEX( )] ;
構造「明細」の子コンポーネントのマップ式を記述します。
親の構造「明細」のマップ式で入出力の関係が定義されているので,子コンポーネントの式には構造「明細」のマップ式を引き継ぐ形のマップ式を記述します。
まず,要素「単価」は,入力側の構造「明細」の子コンポーネント「単価」を代入するので「入力側の単価要素を代入する」という意味の式を記述します。
= $@S単価@単価 ;
= $@分納[INDEX(0)] ;
分納構造の子コンポーネント「納入数」「納入番号」は「$」を使用して,親コンポーネントの構造「分納」のマップ式を引き継ぐ形式のマップ式を記述します。
= $@S納入数@納入数;
要素「注文日」は,「4.2 簡単なマッピング例」での例と同様に,データ変換時の日付を出力するようにしたいので,CURRENTDATE関数のマップ式を記述します。
= CURRENTDATE();
要素「注文総額」は,出力した構造「明細」の「金額」の合計を出力する要素です。したがって,出力した構造「明細」の「金額」の合計を計算するマップ式を記述します。ここでは関数を使用します。
= SUM( ) ;
= SUM( FIX2@MSG2@明細[*]@金額 ) ;
= FIX2@MSG2@明細[1]@金額 + FIX2@MSG2@明細[2]@金額 + FIX2@MSG2@明細[3]@金額 ;
表4-4 各コンポーネントのマップ式(構造を含んだマッピング例)
構造/要素 | マップ式 | ||
---|---|---|---|
注文番号 | = LT2@MSG2@S注文番号@注文番号; | ||
単位 | = LT2@MSG2@S単位@単位 ; | ||
明細 | = LT2@MSG2@明細[INDEX(0)] ; | ||
単価 | = $@S単価@単価 ; | ||
個数 | = $@S個数@個数 ; | ||
金額 | = $@S金額@金額 ; | ||
分納 | = $@分納[INDEX(0)] ; | ||
納入数 | = $@S納入数@納入数 ; | ||
納入番号 | = $@S納入番号@納入番号 ; | ||
注文日 | = CURRENTDATE() ; | ||
注文総額 | = SUM(FIX2@MSG2@明細[*]@金額) ; |
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.