メイン コンテンツをスキップする 補完的コンテンツへスキップ

フラットストラクチャーでのループ反復回数の設定

SetElementPropertyを使えば、エレメント用に読み取るループの数を定義して他の反復を無視できます。

始める前に

サンプルドキュメントとして使うフラットファイルがあること。下のサンプルデータから作成できます。

このタスクについて

この例では、abcという3つのエレメントが含まれているフラットファイルを使います。bエレメントはループで、読み取るループの反復回数を設定して他は無視するよう設定したいとします。これはエレメントのプロパティで[Occurs Min/Max] (出現最小/最大)値を設定すれば実行できますが、ストラクチャーに影響を与えずにマップでその値を変更したい場合は、代わりに SetElementPropertyを使用すると便利です。

サンプル入力には次のデータを使用できます:
a1b1b2b3b4b5c1

手順

  1. ストラクチャーを作成します:
    1. [Hierarchical Mapper] (階層マッパー)[Structure] (ストラクチャー)を右クリックし、[New] (新規) > [Structure] (ストラクチャー)をクリックします。
    2. ウィザードが開いたら、[Create a new structure where you manually enter elements] (エレメントを手動で入力するための新しいストラクチャーを作成)を選択して[Next] (次へ)をクリックします。
    3. フォルダーを選択して新しいストラクチャーの名前を入力し、[Next] (次へ)をクリックします。
    4. [Flat Files] (フラットファイル)表記を選択して[Next] (次へ)をクリックします。
    5. [Import a file as document] (ファイルをドキュメントとしてインポート)をクリックして[Next] (次へ)をクリックします。
    6. 関連するフォルダーを参照してフラットファイルを選択し、[Finish] (終了)をクリックします。
  2. ワークスペースの左側にあるセクションを右クリックし、[New Element] (新規エレメント)をクリックしてルートエレメントを作成します。
  3. ルートエレメントを右クリックし、3つの子エレメントをabcという名前で作成します。
    ストラクチャーは次のようになります。
  4. aエレメントをクリックし、[Size Min/Max] (サイズ最小/最大)の両フィールドに2と入力した後、cエレメントにも同じ値を入力します。
  5. bエレメントをクリックし、[Occurs Min] (出現最小)フィールドに1と、[Occurs Max] (出現最大)フィールドに100 と、[Size Min/Max] (サイズ最小/最大)の両フィールドに2とそれぞれ入力します。
    これは、このエレメントが1回出現しなければならないこと、100回まで出現できること、各反復が2バイトのサイズを持っていることを示しています。
  6. bエレメントの[Util] (ユーティリティ)タブで、SetElementPropertyファンクションをドラッグ&ドロップします。
  7. SetElementPropertyファンクションをダブルクリックし、[Property] (プロパティ)ドロップダウンリストで[Loop Count] (ループカウント)を選択します。
  8. ConstantファンクションをValue引数にドラッグ&ドロップし、このファンクションをダブルクリックして、[Value] (値)フィールドに3と入力して[OK]をクリックします。
    これは、bエレメントの最初の3つの反復だけが読み取られることを示しています。
    読み取るループの数は定義されていますが、ファイルに残っている反復の処理方法に関する指示がないため、エラーが表示されます。
  9. cエレメントの[Util] (ユーティリティ)タブで、SetElementPropertyファンクションをドラッグ&ドロップします。デフォルトの[Byte offset] (バイトオフセット)プロパティはそのままにしておきます。
  10. ConstantファンクションをValue引数にドラッグ&ドロップし、このファンクションをダブルクリックして、[Value] (値)フィールドに12と入力して[OK]をクリックします。
    この式は、cエレメントがドキュメントの最初のバイトから12バイト後に始まることを示しています。そのため、bエレメントで無視された2つのループ反復が破棄され、cエレメントの一部としては読み取られません。

タスクの結果

ストラクチャーが設定されます。プロパティが正しいことをチェックしたい場合は、このストラクチャーを入力と出力の両方として使用するマップを作成します。
[Test Run] (テスト実行)機能を使うと、次の結果が表示されます:
a1b1b2b3c1

必要であれば、ストラクチャーやそれを使用する他のマップに影響を与えずにマップ内の[Loop Count] (ループカウント)プロパティを変更できます。

このページは役に立ちましたか?

このページまたはコンテンツに、タイポ、ステップの省略、技術的エラーなどの問題が見つかった場合は、お知らせください。改善に役立たせていただきます。