繰り返し処理を行うには

ループ処理

あるコンポーネントが起点となって、それ以降の処理を複数回繰り返すことを「ループ」といいます。ループの構成にする場合、コンポーネントの「ループを開始」プロパティを「はい」に設定する方法と、ループ処理が前提のコンポーネントを使う方法があります。

Mapper コンポーネントでループを設定する

1.ループ構成にしたいフローを表示し、配置済みのMapperコンポーネントを選択する

 

2.インスペクタで「ループを開始」プロパティの値欄をクリックし、「はい」を選択する

4-58-01.png

 

HINT

ループ処理
ループとは、あるコンポーネントが起点になって、それ以降の処理を複数回繰り返すことを指します。ループの開始後、フローは、起点となったコンポーネントに続くコンポーネントに沿って実行され、ループの終了を示すコンポーネント(LoopEnd、ParallelSubFlow、終了コンポーネント)にたどり着くと、ループを開始したコンポーネントに戻り、処理を繰り返します。

 

3.ループ処理が設定される

4-58-02.png

ループ処理が設定され、Mapperコンポーネントアイコンの出力ストリームの文字が、繰り返しを表す表示(3重の囲み)に変わります。

 

HINT

「ループを開始」プロパティ
Mapperコンポーネントの「ループを開始」プロパティを「はい」に設定することで、ループ処理を実行できます。CSV、FixedLength、Record の各ストリーム形式では、通常 1 つのストリームに複数のレコードが含まれていますが、Mapper の「ループを開始」プロパティを「はい」にすると、次のコンポーネントに、単一レコードのみを含むストリームとして渡すようになり、レコードの数だけ処理をループさせることができます。なお、Mapper コンポーネントの代わりに、後述する RecordGetコンポーネントを使ってファイルを 1 行ずつループ処理することもできます。

 

ファイル単位のループを設定する(FileGet コンポーネント)

1.ループ構成にしたいフローで、FileGetコンポーネントの「ファイルパス」プロパティをワイルドカードで(複数のファイルを含むように)指定する

4-58-03.png

 

HINT

FileGetコンポーネントの「ループを開始」プロパティ
FileGetコンポーネントの「ファイルパス」プロパティにワイルドカード(「*」または「?」)が指定されていて、複数のファイルが処理対象になっている場合、ファイル単位でのループ処理を設定できます。FileGetの「ループを開始」プロパティが「いいえ」の場合は、すべてのファイルがまとめてストリームに出力されますが、「はい」に設定すると、FileGetコンポーネントがループの起点となって、1 ファイルずつストリームに出力されます。

 

2.FileGetコンポーネントの「ループを開始」プロパティで「はい」を選択する

4-58-04.png

ファイル単位でのループ処理が設定され、FileGetコンポーネントアイコンの出力ストリームの文字が、繰り返しを表す表示に変わります。

 

HINT

FileGetコンポーネントでループ処理を設定した場合、対象のファイルがCSVファイルであってもファイル単位のループとなり、レコード単位でのループとはなりません。CSVファイルを読み込みながらレコード単位でループさせたい場合は、RecordGetコンポーネントを使用します。

 

ファイルを 1 行ずつループ処理する(RecordGetコンポーネント)

1.ループ構成にしたいフローで、「ファイル」タブのRecordGetコンポーネント(「CSVまたはFixedLength形式のファイルをレコード単位で読み込みます」)を配置する

4-58-05.png

 

2.「ファイルパス」プロパティでループ対象のファイルを指定し、「読込み開始行」と「取得行数」を設定する

4-58-06.png

RecordGetコンポーネントがループの起点となって、ループの終了を示すコンポーネントまでの処理を繰り返し実行するよう設定できます。

 

HINT

RecordGetコンポーネントは常にループで処理するコンポーネントです。CSVまたはFixedLength形式のファイルに対し、全体を一度に読み込むのではなく、指定行数ごとに読み込み、ループ処理を行います。

RecordGetコンポーネントの「読込み開始行」プロパティはループ処理を開始する行、「取得行数」プロパティは 1 回のループで単位となる行数です。ファイルを 1 行ずつ処理する場合は、「取得行数」に「1」を指定します。

 

ループを指定回数繰り返す(LoopStart コンポーネント)

1.対象のフローを表示し、ループの起点としたい位置へ、「コントロール」タブのLoopStartコンポーネント(「指定回数ループします」)を配置する

4-58-07.png

 

2.「ループする回数」プロパティに、ループ処理の回数を指定する

4-58-08.png

指定した回数分だけ、ループ処理が実行されるようになります。

 

HINT

ループの起点となるコンポーネントとその使い方として、以下のようなものがあります。

 •RDBGetコンポーネント-RDBから取得したレコード(SELECT結果)を 1 行ずつループ
 •FileList コンポーネント-ファイル一覧を取得して 1 情報ずつループ
 •Mapperコンポーネント-入力レコードを1行ずつループ(入力と出力のストリーム変換が必要な場合)
 •RecordLoopコンポーネント-入力レコードを 1 件ずつループ(入力と出力のストリーム変換が不要な場合)
 •TextSplitLoopコンポーネント-文字列を区切り文字で分割してループ
 • POP3コンポーネントなど-受信メールを1通ずつループ

 

この記事は役に立ちましたか?
4人中3人がこの記事が役に立ったと言っています

他のキーワードで検索する