繰り返し処理

繰り返し数の変動対応。

xoBlos は抽出や生成、様々な手順を組むことができますが、いずれの手順も繰り返し行わせることができます。では繰り返しの数はどう決めるのでしょうか。‥‥週次の情報を取り扱うなら「7回」、月次の情報を取り扱うなら「12回」、十二支でも「12回」、十干なら「10回」、徳川将軍家なら「15回」‥‥。回数が徹底しているのであれば、そのまま固定設定するだけで決まります。

では、「処理対象となったデータの件数分回したい」という場合にはどのように設定すれば良いでしょうか。

f:id:xoblos:20170713191257p:plain

回数は一意の情報であることが望ましいです。重複した情報があると、無駄に繰り返し処理が行われてしまいます。この情報は、事前にマスタファイルを用意+抽出しておくか、基本となる入力データから繰り返しの要素となる項目を一意にして抽出しておくかの、いずれかになります。しかしいずれも抽出結果は、上図のような XML ファイルになります。今回は前者の方法で‥‥抽出ファイルは「事業所マスタ.xml」と付けておきましょうか。

f:id:xoblos:20170713191430p:plain

上図、『3.手順の繰り返し実行の設定』節『b.設定』項で、「...」となっている所をクリックすると、下図のような設定ウィンドウが新たに出力されます。

f:id:xoblos:20170713212721p:plain

事前に 3件のデータを抽出した「事業所マスタ.xml」を設定しているので、繰り返し数を固定設定しなくても「3回」繰り返すことを xoBlos は判断することができます。無論、別の機会で実行して対象が 5件であった場合は、何も設定変更することなく、「5回」繰り返されることになります。

繰り返し項目の活用とは?

変動する繰り返し数は、前節で処理対象となったデータの件数によって定まることは明らかになったと思います。ということは、1データの中に複数の情報を持っていても良いことになりますね。その情報達は、参照先のブック/シート/値の特定に、活躍させることができます。

基本となる入力データの例①

f:id:xoblos:20170713191318p:plain

上図は、「Data.xlsx」という不確かな名前のブックに、「東京事業所」「大阪事業所」「名古屋事業所」という確かな名前のシートを持った例になります。

基本となる入力データの例②

f:id:xoblos:20170713191329p:plain

こちらは打って変わって、「東京事業所.xlsx」「大阪事業所.xlsx」「名古屋事業所.xlsx」という確かな名前のブックに、「Sheet1」という不確かな名前のシートを持った例になります。

①②共に、物が違いますが主要情報は持っているようですね。抽出する時は、その確かな情報部分も、抽出しておくことで参照元との紐付けを助けることに繋がります。

f:id:xoblos:20170713191605p:plain

①はシート名が確かな情報なので、抽出キーワード『対象セル』に「%SheetName」といれます。これにより、抽出している時点のシート名を保持することができます。

f:id:xoblos:20170713191554p:plain

②はブック名が確かな情報なので、抽出キーワード『対象セル』に「%BookName」といれます。これにより、抽出している時点のブック名を保持することができます。

f:id:xoblos:20170713191621p:plain

①②共に、上図のように出来上がる XML ファイルの内容は同じです。

基本となる入力データの例③

f:id:xoblos:20170713191307p:plain

さて上図は、ブックにもシートにも主要情報が窺えません。これは取り敢えず抽出するしかなさそうですね。

f:id:xoblos:20170713191614p:plain

生成してみよう。

前節のいずれの例も、「事業所コード」という主要情報を持っていました。冒頭の「事業所マスタ.xml」と紐付ける準備は整っていますね。しかし基本入力ファイルに相当する XML ファイルの形態によっては、都度処理対象とするデータの特定方法が変わります。

f:id:xoblos:20170713191441p:plain

生成キーワード『高度選択条件』は、処理対象を限らせることができます。しかしどういうデータがくるかも見えない中、固定の設定は行えません。‥‥仮に 100パターンの値がくると分かっていても、『高度選択条件』を 100行設定することは現実的でありません。普段、設定値を記述するセル「C13」を覚えておきながら、進めていきましょう。

f:id:xoblos:20170713212315p:plain

xoBlos には、作成した制御シートの内容を一時的に書き換える機能があります。先程のセル「C13」に値をいれるようにしていますね。

そして「$(item:"項目名")」は予約変数であり、繰り返し回数を決める XML ファイルにある項目を保持しています。つまり、「事業所マスタ.xml」には「事業所コード」と「事業所名」があって、繰り返しの都度、それら値を活用することができるのです。

これにより、上図設定から1回目は「東京事業所」として生成処理を行うが対象データは『事業所=東京事業所』のものに限らせる、2回目は「大阪事業所」として生成処理を行うが対象データは『事業所=大阪事業所』のものに限らせる、3回目は‥‥。といった繰り返し処理が実現することになります。

変数を色々なところで使ってしまおう。

「$(item:"項目名")」は変数――。変動するとは言え文字列が入っています。様々な部分に使い回してみましょう。

f:id:xoblos:20170713191630p:plain

上図は、基本データに使用している例です。もし抽出の段階で「東京事業所.xml」、「大阪事業所.xml」、「名古屋事業所.xml」と作成できたら‥‥。この設定だけで、XOB の『制御シートの書き換え設定』も、キーワード『高度選択条件』も必要なくなりますね。

f:id:xoblos:20170713191640p:plain

上図は、出力(生成結果)ファイル名に使用している例です。これは事業所毎にブックの出力を分ける‥‥ブック分割の実現になります!

結局「%BookName」と「%SheetName」は何であったの?

列挙した基本となる入力データはいずれも「事業所コード」がありましたが、万一その情報が無かった場合は「事業所名」で特定させるしか方法はありません。‥‥勿論、「基本となる入力データの例③」から「事業所コード」が無くなれば問題外になります。

xoBlos の開発効率を考えずとも、運用上ブック名やシート名のルール徹底化が如何に重要であるか、気付かせてくれるものですね。