uCosminexus Interschema ユーザーズガイド

[目次][用語][索引][前へ][次へ]

6.1.2 MDLでの定義情報

MDLでは,マップ式以外にもグループ単位出力と未使用コンポーネントについて定義できます。ここでは,グループ単位出力指定と未使用コンポーネント指定について説明します。

<この項の構成>
(1) グループ単位出力指定
(2) 未使用コンポーネント指定

(1) グループ単位出力指定

MDLエディタで指定できるグループ単位出力の指定について説明します。

通常,トランスレータは,入力データをすべて読み込んでから変換処理を実行し,最後に変換結果を出力します。この場合,1か所でもデータに不正があると,変換全体が失敗することになります。また,入力データを一括して読み込むため,データのサイズが大きくなると,メモリが不足するおそれがあります。しかし,グループ単位での変換の実行を指定すると,変換途中でエラーが発生しても,それまでに正常に変換されたグループの出力データは保証されます。したがって,エラー原因を修正した後は,正常に出力できたグループ以降のグループから変換処理を続行できます。このような指定を「グループ単位出力指定」と呼びます。グループ単位出力指定では,CII標準形式のメッセージグループのように,意味を持つグループ単位でデータを変換できます。さらに,1グループ単位で入力や出力をするため,メモリ使用量を抑えられます。

グループ単位出力指定は,MDLエディタで入力フォーマットのグループを表すコンポーネントと,出力フォーマットのグループを表すコンポーネントとを対応付けて,対で指定します。以上のように指定しておくと,トランスレータは入力側の1グループのデータを読み込んで変換処理を実行し,出力側の1グループのデータを出力します。

次のような構造のフォーマットがあります。

図6-1 グループ単位出力指定の構造の例

[図データ]

入力側のコンポーネント「RECORD」と出力側のコンポーネント「MG」に対して,グループ単位出力を指定すると,入力側のコンポーネント「RECORD」が1回出現するごとにデータが変換されます。「図6-1 グループ単位出力指定の構造の例」のフォーマットのデータ変換処理を次に示します。

図6-2 グループ単位出力指定のデータ変換の例

[図データ]

グループ単位出力指定を入力側のフォーマットだけに対して指定した場合は機能しません。出力側のフォーマット,又は入力フォーマットと出力のフォーマットを組にして指定してください。グループ単位出力指定を出力側のフォーマットだけに対して指定した場合は,入力データを一括して読み込み,指定されたコンポーネントごとに変換結果をファイル(又はメモリ)に出力します。

グループ単位出力指定は,[コンポーネントのプロパティ]ダイアログで「グループ単位出力指定」をチェックして指定します。

[図データ]

グループ単位出力指定は,ラベルを付けて複数階層に指定できます。ラベルを使用する場合は,[コンポーネントのプロパティ]ダイアログで「グループ単位出力指定」をチェックし,ラベルの値を入力します。ラベルの値は1から指定し,対応する入力側と出力側のコンポーネントには同じ値を入力してください。

ラベルを使用する場合,次の二つの条件を満たす必要があります。

ラベルを使用したグループ単位出力指定の例を次に示します。

図6-3 グループ単位出力指定のラベルを使用した例

[図データ]

グループ単位出力指定は,大量のデータを一括変換する場合に有効な指定です。グループとして指定するコンポーネントは,可変回出現する最上位のコンポーネントを目安にしてください。なお,グループ単位出力を指定した出力側のコンポーネントにある要素の値が,1回分のグループの入力ですべて決まらない場合はエラーになるので注意してください。

グループ単位出力指定には,次の制限事項があります。

(2) 未使用コンポーネント指定

MDLエディタで指定できる未使用コンポーネントについて説明します。

選択構造の不要なメンバなどMDL内で使用しないコンポーネントがある場合は,未使用コンポーネントとして指定します。未使用コンポーネントに指定されたコンポーネントは,MDL内に存在しないと見なされます。使用しないコンポーネントをあらかじめ指定しておくと,トランスレータの処理効率が向上します。未使用コンポーネントの指定方法については,「4.3.5 選択構造を持つフォーマットのマッピング」を参照してください。

なお,未使用コンポーネントとして指定できるのは,選択構造のメンバであるコンポーネントだけです。選択構造のメンバ以外のコンポーネントは,未使用コンポーネントとして指定できません。