uCosminexus Interschema ユーザーズガイド
MDLでは,マップ式以外にもグループ単位出力と未使用コンポーネントについて定義できます。ここでは,グループ単位出力指定と未使用コンポーネント指定について説明します。
MDLエディタで指定できるグループ単位出力の指定について説明します。
通常,トランスレータは,入力データをすべて読み込んでから変換処理を実行し,最後に変換結果を出力します。この場合,1か所でもデータに不正があると,変換全体が失敗することになります。また,入力データを一括して読み込むため,データのサイズが大きくなると,メモリが不足するおそれがあります。しかし,グループ単位での変換の実行を指定すると,変換途中でエラーが発生しても,それまでに正常に変換されたグループの出力データは保証されます。したがって,エラー原因を修正した後は,正常に出力できたグループ以降のグループから変換処理を続行できます。このような指定を「グループ単位出力指定」と呼びます。グループ単位出力指定では,CII標準形式のメッセージグループのように,意味を持つグループ単位でデータを変換できます。さらに,1グループ単位で入力や出力をするため,メモリ使用量を抑えられます。
グループ単位出力指定は,MDLエディタで入力フォーマットのグループを表すコンポーネントと,出力フォーマットのグループを表すコンポーネントとを対応付けて,対で指定します。以上のように指定しておくと,トランスレータは入力側の1グループのデータを読み込んで変換処理を実行し,出力側の1グループのデータを出力します。
次のような構造のフォーマットがあります。
図6-1 グループ単位出力指定の構造の例
入力側のコンポーネント「RECORD」と出力側のコンポーネント「MG」に対して,グループ単位出力を指定すると,入力側のコンポーネント「RECORD」が1回出現するごとにデータが変換されます。「図6-1 グループ単位出力指定の構造の例」のフォーマットのデータ変換処理を次に示します。
図6-2 グループ単位出力指定のデータ変換の例
グループ単位出力指定を入力側のフォーマットだけに対して指定した場合は機能しません。出力側のフォーマット,又は入力フォーマットと出力のフォーマットを組にして指定してください。グループ単位出力指定を出力側のフォーマットだけに対して指定した場合は,入力データを一括して読み込み,指定されたコンポーネントごとに変換結果をファイル(又はメモリ)に出力します。
グループ単位出力指定は,[コンポーネントのプロパティ]ダイアログで「グループ単位出力指定」をチェックして指定します。
グループ単位出力指定は,ラベルを付けて複数階層に指定できます。ラベルを使用する場合は,[コンポーネントのプロパティ]ダイアログで「グループ単位出力指定」をチェックし,ラベルの値を入力します。ラベルの値は1から指定し,対応する入力側と出力側のコンポーネントには同じ値を入力してください。
ラベルを使用する場合,次の二つの条件を満たす必要があります。
ラベルを使用したグループ単位出力指定の例を次に示します。
図6-3 グループ単位出力指定のラベルを使用した例
グループ単位出力指定は,大量のデータを一括変換する場合に有効な指定です。グループとして指定するコンポーネントは,可変回出現する最上位のコンポーネントを目安にしてください。なお,グループ単位出力を指定した出力側のコンポーネントにある要素の値が,1回分のグループの入力ですべて決まらない場合はエラーになるので注意してください。
グループ単位出力指定には,次の制限事項があります。
MDLエディタで指定できる未使用コンポーネントについて説明します。
選択構造の不要なメンバなどMDL内で使用しないコンポーネントがある場合は,未使用コンポーネントとして指定します。未使用コンポーネントに指定されたコンポーネントは,MDL内に存在しないと見なされます。使用しないコンポーネントをあらかじめ指定しておくと,トランスレータの処理効率が向上します。未使用コンポーネントの指定方法については,「4.3.5 選択構造を持つフォーマットのマッピング」を参照してください。
なお,未使用コンポーネントとして指定できるのは,選択構造のメンバであるコンポーネントだけです。選択構造のメンバ以外のコンポーネントは,未使用コンポーネントとして指定できません。
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.