(57)【要約】【課題】複数のコアを用いた並列走行方式により、バッチ処理の高速化を図ると共にデータの順序性を保証するデータ並列処理システム、データ並列処理方法、及びそのプログラムを提供すること。【解決手段】プログラム格納装置１０内の格納プログラムをもとにデータを処理する主制御装置２０と、上記処理前後のデータを格納する入力，出力トランザクションファイル５２，５４及び該処理時に参照される情報が記憶されるデータ記憶装置５０と、を含むデータ並列処理システム６０において、主制御装置２０は、バッチ処理プログラム１３をもとに多重度相当のスレッド１３Ａ（１）〜（ｎ）を生成するスレッド生成処理手部３０と、予め番号が付された上記データを取得すると共にこれを独立して処理し出力済レコードカウンタ５５を参照することで前記番号順に処理後のデータを出力する複数のトランザクション制御部４０（１）〜（ｎ）と、を有する。【選択図】図１
2014211782.tif 000002
【特許請求の範囲】
【請求項１】
バッチ処理にかかるプログラムが格納されたプログラム格納装置と、この格納プログラムをもとにデータの並列処理を行う主制御装置と、この主制御装置による処理にかかるデータを格納するトランザクションファイル及び当該処理に際して参照される情報が記憶されるデータ記憶装置と、を有するデータ並列処理システムであって、
前記主制御装置は、
前記格納プログラムをもとに前記並列処理に必要な複数のスレッドを生成するスレッド生成処理手部と、
この生成した複数のスレッドの各々に順次関連づけられ且つ予め番号が付された前記データを取得すると共にこれを独立して処理し出力する複数のトランザクション制御部と、を有し、
このトランザクション制御部は、予め記憶された出力済カウント値を参照することで、前記独立処理後のデータが前記番号順に出力されるように制御することを特徴としたデータ並列処理システム。
【請求項２】
前記請求項１に記載のデータ並列処理システムにおいて、
前記各トランザクション制御部は、前記出力に際して、前記出力済カウント値に１を加算する出力カウント手段を有することを特徴としたデータ並列処理システム。
【請求項３】
前記請求項１又は２に記載のデータ並列処理システムにおいて、
前記各トランザクション制御部は、前記独立処理後のデータを、前記付された番号に応じた前記トランザクションファイル内の位置に出力することを特徴としたデータ並列処理システム。
【請求項４】
前記請求項２に記載のデータ並列処理システムにおいて、
前記各トランザクション制御部は、前記独立処理後のデータの前記付された番号が前記出力済カウント値に１を加えた値よりも大きければ、当該番号と前記加算後の出力済カウント値に１を加えた数とが等しくなるまで待機した後に当該データを出力する待機後出力手段を有することを特徴としたデータ並列処理システム。
【請求項５】
前記請求項１乃至４の何れか一つに記載のデータ並列処理システムにおいて、
前記各トランザクション制御部は、対応する前記スレッドを読み込んだ際に、前記出力済カウント値に応じたデータへの位置づけを行うと共に、前記トランザクションファイルをオープンするトランザクションオープン手段を有することを特徴としたデータ並列処理システム。
【請求項６】
バッチ処理にかかるプログラムが格納されたプログラム格納装置と、この格納プログラムをもとにデータの並列処理を行う主制御装置と、この主制御装置による処理にかかるデータを格納するトランザクションファイル及び当該処理に際して参照される情報が記憶されるデータ記憶装置と、を有するデータ並列処理システムにあって、
前記格納プログラムをもとに前記並列処理に必要な複数のスレッドを生成し、
この生成した複数のスレッドの各々に前記主制御装置内の複数のプロセッサコアを順次関連づけ、
この複数のプロセッサコアがそれぞれ対応するスレッドを読み込み、
この対応するスレッドを読み込んだ前記各プロセッサコアが、予め番号が付された前記データを取得すると共にこれを独立して処理し、
予め記憶された出力済カウント値を参照することにより前記各プロセッサコアが、前記独立処理後のデータを前記番号順になるように制御して出力することを特徴としたデータ並列処理方法。
【請求項７】
前記請求項６に記載のデータ並列処理方法において、
前記出力に際して前記各プロセッサコアは、前記出力済カウント値に１を加算することを特徴としたデータ並列処理方法。
【請求項８】
前記請求項７に記載のデータ並列処理方法において、
前記出力に先立って前記各プロセッサコアが、
前記独立処理後のデータに前記付された番号が前記出力済カウント値に１を加えた値よりも大きいか否かを判定し、
大きい旨判定した場合に当該番号と前記加算後の出力済カウント値に１を加えた数とが等しくなるまで待機することを特徴としたデータ並列処理方法。
【請求項９】
前記請求項６乃至８の何れか一つに記載のデータ並列処理方法において、
前記対応するスレッドを読み込んだ際に前記各プロセッサコアが、
前記出力済カウント値に応じたデータへの位置づけを行い、
前記トランザクションファイルをオープンすることを特徴としたデータ並列処理方法。
【請求項１０】
バッチ処理にかかるプログラムが格納されたプログラム格納装置と、この格納プログラムをもとにデータの並列処理を行う主制御装置と、この主制御装置による処理にかかるデータを格納するトランザクションファイル及び当該処理に際して参照される情報が記憶されるデータ記憶装置と、を有するデータ並列処理システムにあって、
前記格納プログラムをもとに前記並列処理に必要な複数のスレッドを生成するスレッド生成処理手段、
予め番号が付された前記データを取得すると共にこれを独立して処理する複数のデータ取得処理手段、
予め記憶された出力済カウント値を参照することにより、前記独立処理後のデータを前記番号順になるように制御して出力するデータ制御出力手段、
として前記主制御装置に予め設けられたコンピュータを機能されるためのデータ並列処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、バッチ処理の高速化技術に係り、特に、複数のプロセッサコアによる並列走行方式を採用したデータ並列処理システム、データ並列処理方法、及びそのプログラムに関する。
【背景技術】
【０００２】
コンピュータによるバッチ処理は、１日のオンライン処理業務が終了した後から、翌日のオンライン処理開始前までの間に行われることが多く、決められた時間内に終了することが求められる。
【０００３】
このバッチ処理を実行させるためのプログラムは、一般に、入力トランザクションファイルから１件のレコードを読み込み、このレコードに対する編集・加工処理をマスタファイルを参照しながら行うと共に、該処理後のレコードを出力トランザクションファイルに出力するという一連の処理を、入力トランザクションファイルが終わりとなるまで続けるという構造になっている。加えて、バッチ処理プログラム自体が古くから使われていることもあり、トランザクションファイルとしては、レコード長が固定長である順編成ファイルが利用されるケースが多い。
【０００４】
昨今、コンピュータが処理するデータ量は劇的に増えてきており、これに伴って、バッチ処理プログラムを読み込んだコンピュータが入力するトランザクションファイルのレコード件数が増大している。この増大したレコード件数に比例して処理時間が伸びていることから、バッチ処理に要する時間を短縮するための様々なアプローチが採られている。
【０００５】
こうした処理時間の短縮のための手法としては、近年増加傾向にあるＣＰＵのコア数に着目し、複数のコアを並列に動作させるためにプログラムを書き換えるという方法が知られている。
【０００６】
また、他の手法としては、入力トランザクションファイルを複数に分割すると共に、この分割後の各ファイルを対象として同一バッチ処理プログラムを並列走行させるという方法が公知である。
【０００７】
さらに、上述した内容に関連する技術としては、例えば、下記の技術内容（特許文献１乃至４）が知られている。
【０００８】
特許文献１には、スレッドを複数のタイプに分離すると共に、同一又は類似タイプのスレッドを含むバッチを形成し、該バッチをコアによって実行するという技術内容が開示されている。特許文献２には、負荷分散対象として登録されたサーバに対し、外部入力されたパケットを分配するロードランサが、レイテンシを計測するレスポンス計測装置からの指示に応じて負荷分散処理を実行するという技術内容が開示されている。このロードランサには、負荷分散アルゴリズムとして、ラウンドロビン方式が採用されている。
【０００９】
特許文献３にかかるオンラインバッチメッセージプロセシング処理方式では、処理済みとなったレコードの数を管理テーブルにて更新していくことにより、処理途中で発生した障害に起因する中断の後、一件目に遡ることなく処理を再開できるという技術内容を開示している。特許文献４にかかるバッチ処理システムは、ジョブ毎のレコードにかかる更新処理がどこまで行われたかを示す処理レコード数を随時記録する手段と、各ジョブにおける全レコードの処理が終了した際に対応する処理レコード数をリセットする手段と、を有している。ここでは、次のシステム起動時に処理レコード数がリセットされていなければ、障害が発生していた旨判定すると共に、該数値に対応するレコードまでを読みとばした上で処理を実行するという技術内容が開示されている。
【先行技術文献】
【特許文献】
【００１０】
【特許文献１】特表２０１２−５３３８２５号公報
【特許文献２】特開２０１１−１９７７９６号公報
【特許文献３】特開平３−９１０５４号公報
【特許文献４】特開平６−１２２６７号公報
【発明の概要】
【発明が解決しようとする課題】
【００１１】
しかしながら、前述した複数のコアを並列に動作させるという方法は、古くから使われており且つ業務ノウハウが蓄積された資産であることから、プログラムの書き換えとそれに伴うテストの必要性等により、手間と追加コストが増加するといった不都合がある。また、並列に動作させるようにプログラムを書き換えるとしても、トランザクションファイルは順編成のファイルであるため、順序性を保証しながら性能を確保することは非常に困難である。
【００１２】
ところで、実行環境如何によっては、高度なファイルシステムが存在するため、上述した方法を活用する途があるようにも思われる。しかし、実行環境間の移行性を考慮すると、ファイルシステムへの依存度は出来るだけ低くしておくべきであるため、ファイルシステムの高度化は好適な対策とは言えない。
【００１３】
さらに、上述した入力トランザクションファイルを複数に分割するという方法を採った場合には、何らかの規則に基づいて該分割を行う必要があり、且つ入力トランザクションファイルの各件数が均等になるように設計しなければならないため、手数がかかるという問題がある。また、この手法によれば、該分割に要する処理時間が通常時に比べて余計にかかるといった不都合と共に、出力トランザクションファイルを再結合する必要がある等の問題もある。
加えて、特許文献１乃至４を含む上記関連技術では、入出力間においてデータの順序が入れ替わるといった不都合が生じ得る。
【００１４】
（発明の目的）
本発明は、上記関連技術の有する不都合を改善するものであり、特に、複数のコアを用いた並列走行方式により、バッチ処理の高速化を図ると共にデータの順序性を保証するデータ並列処理システム、データ並列処理方法、及びそのプログラムの提供を目的とする。
【課題を解決するための手段】
【００１５】
上記目的を達成するために、本発明にかかるデータ並列処理システムでは、バッチ処理にかかるプログラムが格納されたプログラム格納装置と、この格納プログラムをもとにデータの並列処理を行う主制御装置と、この主制御装置による処理にかかるデータを格納するトランザクションファイル及び当該処理に際して参照される情報が記憶されるデータ記憶装置と、を有するデータ並列処理システムであって、前記主制御装置は、前記格納プログラムをもとに前記並列処理に必要な複数のスレッドを生成するスレッド生成処理手部と、この生成した複数のスレッドの各々に順次関連づけられ且つ予め番号が付された前記データを取得すると共にこれを独立して処理し出力する複数のトランザクション制御部と、を有し、このトランザクション制御部は、予め記憶された出力済カウント値を参照することで、前記独立処理後のデータが前記番号順に出力されるように制御するという構成を採っている。
【００１６】
また、本発明にかかるデータ並列処理方法では、バッチ処理にかかるプログラムが格納されたプログラム格納装置と、この格納プログラムをもとにデータの並列処理を行う主制御装置と、この主制御装置による処理にかかるデータを格納するトランザクションファイル及び当該処理に際して参照される情報が記憶されるデータ記憶装置と、を有するデータ並列処理システムにあって、前記格納プログラムをもとに前記並列処理に必要な複数のスレッドを生成し、この生成した複数のスレッドの各々に前記主制御装置内の複数のプロセッサコアを順次関連づけ、この複数のプロセッサコアがそれぞれ対応するスレッドを読み込み、この対応するスレッドを読み込んだ前記各プロセッサコアが、予め番号が付された前記データを取得すると共にこれを独立して処理し、予め記憶された出力済カウント値を参照することにより前記各プロセッサコアが、前記独立処理後のデータを前記番号順になるように制御して出力することを特徴とする。
【００１７】
さらに、本発明にかかるデータ並列処理プログラムでは、バッチ処理にかかるプログラムが格納されたプログラム格納装置と、この格納プログラムをもとにデータの並列処理を行う主制御装置と、この主制御装置による処理にかかるデータを格納するトランザクションファイル及び当該処理に際して参照される情報が記憶されるデータ記憶装置と、を有するデータ並列処理システムにあって、前記格納プログラムをもとに前記並列処理に必要な複数のスレッドを生成するスレッド生成処理手段、予め番号が付された前記データを取得すると共にこれを独立して処理する複数のデータ取得処理手段、
予め記憶された出力済カウント値を参照することにより、前記独立処理後のデータを前記番号順になるように制御して出力するデータ制御出力手段、として前記主制御装置に予め設けられたコンピュータを機能されることを特徴とする。
【発明の効果】
【００１８】
本発明によれば、特に、複数のコアを用いた並列走行方式により、バッチ処理の高速化を図ると共にデータの順序性を保証することができるデータ並列処理システム、データ並列処理方法、及びそのプログラムの提供が可能となる。
【図面の簡単な説明】
【００１９】
【図１】本発明の実施形態にかかるデータ並列処理システムにおいて、複数のコアと生成されたスレッドとの対応関係を示す機能ブロック図である。
【図２】本発明の実施形態にかかるデータ並列処理システムの機能的構成を示すブロック図である。
【図３】図２に開示したデータ並列処理システムが内包するトランザクション制御部の具体的構成を示すブロック図である。
【図４】図２に開示したデータ並列処理システムにおいて、多重度が５に設定された場合の入出力間におけるレコードの順序制御にかかる構成を示すブロック図である。
【図５】図２に開示したデータ並列処理システムにおいて、多重度が５に設定された場合のエラー発生後におけるリカバリ処理にかかる構成を示すブロック図である。
【図６】図２に開示したデータ並列処理システムにおいて、スレッドの生成にかかる動作を示すフローチャートである。
【図７】図２に開示したデータ並列処理システムにおいて、入力トランザクションファイルのオープン処理にかかる動作を示すフローチャートである。
【図８】図２に開示したデータ並列処理システムにおいて、出力トランザクションファイルのオープン処理にかかる動作を示すフローチャートである。
【図９】図２に開示したデータ並列処理システムにおいて、入出力間での順序性の保証にかかる動作を示すフローチャートである。
【発明を実施するための形態】
【００２０】
〔実施形態〕
本発明にかかるデータ並列処理システムの実施形態を、図１乃至図９に基づいて説明する。
【００２１】
（全体的構成）
図２に示すように、トランザクションファイルにかかる入出力処理を並列走行方式にて実行するデータ並列処理システム６０は、バッチ処理にかかるプログラムが格納されたプログラム格納装置１０と、この格納プログラムをもとにデータの並列処理を実行する主制御装置２０と、この主制御装置２０による処理にかかるデータや該処理に際して参照される情報等が記憶されるデータ記憶装置５０と、を備えている。
【００２２】
プログラム格納装置１０は、バッチ処理にかかるプログラムが記述されたコード部１１内に、主制御装置２０がデータの並列処理を実現するための初期動作等にかかるスタートアップ処理プログラム１２と、主制御装置２０のバッチ処理にかかる動作指令等により構成されたバッチ処理プログラム１３と、を含むユーザプログラムを格納している。
【００２３】
一般に、バッチ処理とは、一定期間において収集したデータや一定量のデータをまとめて一括処理を行う方式等をいい、トランザクションファイルとは、関連する複数の処理用データを一つの処理単位としてまとめて格納したファイルをいう。また、スレッドとは、並列処理に対応したプログラムの実行単位をいう。
【００２４】
スタートアップ処理プログラム１２は、後述する並列処理用スレッドの生成等にかかる指令プログラムであり、バッチ処理プログラム１３は、入力トランザクションファイルのオープン（ＯＰＥＮ）命令，出力トランザクションファイルのオープン（ＯＰＥＮ）命令，入力トランザクションファイルの読み込み要求，及び出力トランザクションファイルの出力要求等により構成された指令プログラムである。
【００２５】
データ記憶装置５０には、主制御装置２０がバッチ処理の並列走行に用いるスレッドの数を示す多重度及び該スレッドを生成する際に主制御装置２０がカウントする多重度カウンタを含む多重度情報５１と、主制御装置２０にて処理されるデータがレコード単位でまとめて格納された入力トランザクションファイル５２と、主制御装置２０がバッチ処理を行う際に参照するマスタファイル５３と、主制御装置２０にて処理されたデータが適宜出力される出力トランザクションファイル５４と、が格納されている。
【００２６】
本実施形態において入力トランザクションファイル５２内のデータは、レコード単位で序列をつけてまとめられ、これら各レコードには、入力トランザクションファイル５２において格納された位置を示す番号（位置番号）が付されている。
加えて、処理済みの各レコードは、各々の位置番号をもとに出力位置が特定される。すなわち、後述するように、この位置番号に基づいて主制御装置２０が出力順序制御を実現するように構成されている。
【００２７】
また、データ記憶装置５０には、主制御装置２０が出力したレコード数が出力済カウント値として記録される出力済レコードカウンタ５５と、処理済レコードが正常に出力された際に随時更新される情報であり最後に出力したレコード位置（出力トランザクションファイル５４に処理済みのレコードを書き込んだ位置）のみを示すリカバリ情報５６と、が格納されている。
【００２８】
ここで、出力済カウント値は、後述するように、関連するすべてのレコードの出力が完了した際にリセットされる情報であり、本実施形態では上記位置番号と同値となる。また、リカバリ情報５６は、主制御装置２０による出力が正常終了した際に加算された出力済カウント値により更新される情報であり、当該更新により随時出力済カウント値と同値になる。すなわち、出力済レコードカウンタ５５の出力済カウント値とリカバリ情報５６とは、出力した処理済レコードの位置番号に基づいて定まる情報であり、本実施形態においてこれらは、随時当該位置番号と同値となる。
【００２９】
エラーが発生した際のリカバリ情報５６としては、当該エラーの発生直前に出力したレコードの位置番号が記録されている。このため、リカバリ情報５６を取得した主制御装置２０は、正常に出力したデータを再度読み込む必要がなくなることから、処理時間の短縮を図ることが可能となる。
【００３０】
コード部１１に格納されたプログラムを内部メモリ等（図示せず）にロードすると共に各処理動作を行う主制御装置２０は、環境変数で取得する多重度情報５１の多重度（並列多重度）に相当する複数のスレッドをバッチ処理プログラム１３をもとに生成するスレッド生成処理部（プログラム並列実行開始部）３０と、このスレッド生成処理部３０が生成した複数のスレッドの各々に関連づけられ且つ入力トランザクションファイル５２内のデータの入出力処理をレコード単位で実行する複数のトランザクション制御部４０（１）〜４０（ｎ）と、を有している。ｎは任意の自然数とし、以下においても同様である。
【００３１】
本実施形態において主制御装置２０は、図１に示すように、それぞれが異なるコンピュータプログラムを実行する主体となる複数のコア（０）〜（ｎ）を備えたマルチコアプロセッサにより構成されている。すなわち、コア（０）は、スレッド生成処理部３０として機能し、コア（１）〜（ｎ）はそれぞれ、トランザクション制御部４０（１）〜４０（ｎ）として機能するため、これにより、バッチ処理の有意な並列走行が実現可能となる。
【００３２】
具体的には、スタートアップ処理プログラム１２を内部メモリ等（図示せず）にロードしたコア（０）がスレッド生成処理部３０として機能することにより、多重度情報５１から取得した多重度（ここでは多重度＝ｎ）に相当する数のスレッドを生成すると共に、これら各スレッド１３Ａ（１）〜（ｎ）に各コア（１）〜（ｎ）を関連づける、という構成を採っている。これにより、対応する各スレッド１３Ａ（１）〜（ｎ）をロードした各コア（１）〜（ｎ）が、複数のトランザクション制御部４０（１）〜４０（ｎ）としての各機能を実現するように構成されている。
【００３３】
本実施形態において、各スレッド（１）〜（ｎ）は、それぞれが同様の指令・要求等を含むプログラム構成であり、各トランザクション制御部４０（１）〜４０（ｎ）の機能構成も同様である。
したがって、ここでは図３に基づき、スレッド（１）を読み込んで各機能を実現するトランザクション制御部４０（１）の構成を説明する。
【００３４】
並列処理用スレッド（１）を読み込んだトランザクション制御部４０（１）は、スレッド（１）に記述されたオープン要求にかかるコードをもとに入力トランザクションファイル５２のオープン処理を実行する入力ファイルオープン手段４１（１）と、スレッド（１）に記述されたオープン要求にかかるコードをもとに出力トランザクションファイル５４のオープン処理を実行する出力ファイルオープン手段４２（１）と、スレッド（１）に記述された入力トランザクションファイル５２の１レコードの読み込み要求にかかるコードをもとに読み込み済みレコードの次のレコードを読み込む入力ファイル読込み手段４３（１）と、読み込んだレコードに対して編集・加工などの所定の処理を施すレコード処理実行手段４４（１）と、スレッド（１）に記述された出力トランザクションファイル５４への出力要求にかかるコードをもとに処理後のレコードを有意なタイミングで出力する（出力トランザクションファイル５４に書き出す）出力ファイル書出し処理手段４５（１）と、を有している。
ここでのオープンとは、各トランザクションファイルからデータの書き込みや書き出しが行える状態にすることをいう。
【００３５】
入力ファイルオープン手段４１（１）は、入力トランザクションファイル５２がオープン済みであるか否かを、ファイルポインタがヌル（ＮＵＬＬ：値なし）であるか否かによって判定するように構成されている。すなわち、ファイルポインタがヌルであれば入力ファイルオープン手段４１（１）は、オープン済みではない旨判定すると共にＩＮＰＵＴモードでオープンする（実オープンを実行する）ように構成されている。
【００３６】
一方で、ファイルポインタがヌルでなければ、入力ファイルオープン手段４１（１）は、入力トランザクションファイル５２がオープン済みである旨判定すると共に、そのファイルポインタを返却するように構成されている。
【００３７】
オープンに成功した場合に入力ファイルオープン手段４１（１）は、リカバリ情報５６を読み取り、これが０でなければ、当該リカバリ情報５６に応じた位置番号を有する入力トランザクションファイル５２内のレコードに位置づけるように構成されている。
【００３８】
すなわち、リカバリ情報５６を参照した際に、これが０でなければ、すべての処理が終了していない状態にあることから、入力ファイルオープン手段４１（１）は、エラー発生後のリカバリ処理である旨判断すると共に、カレントレコード指示子をリカバリ情報５６で指定されたレコードに位置づける、という構成を採っている。このリカバリ情報５６で指定されたレコードとは、リカバリ情報５６に１を加えた値の位置番号を有するレコードである。
【００３９】
かかる構成を採用したため、各入力ファイルオープン手段４１（１）〜（ｎ）は、順次入力トランザクションファイル５２内のレコードを読み込むことが可能となり、また、エラー発生後においては、エラー発生直前までに出力したレコードの再読み込みを回避することが可能となる。
【００４０】
出力ファイルオープン手段４２（１）は、出力トランザクションファイル５４がオープン済みであるか否かをファイルポインタがヌルであるか否かによって判定するように構成されている。
【００４１】
すなわち、ファイルポインタがヌルであることにより出力トランザクションファイル５４がオープン済みではない旨判定した出力ファイルオープン手段４２（１）は、リカバリ情報５６を読み取ると共に、この読み取ったリカバリ情報５６に応じたモードでオープン処理を実行する。
【００４２】
具体的には、リカバリ情報５６が０でなければ、エラー発生後のリカバリ処理であると判断できるため、追加書き出しが必要になることから、出力ファイルオープン手段４２（１）が出力トランザクションファイル５４を拡張モード（ＥＸＴＥＮＤモード）でオープンするという構成を採り、リカバリ情報５６が０であれば、出力ファイルオープン手段４２（１）が出力トランザクションファイル５４をＯＵＴＰＵＴモードでオープンするという構成を採っている。
【００４３】
リカバリ情報５６が０ではないことから拡張モードオープン処理を行った場合に、オープンに成功した出力ファイルオープン手段４２（１）は、当該リカバリ情報５６に応じた出力トランザクションファイル５４内の位置に位置づけを行うように構成されている。
【００４４】
一方で、ファイルポインタがヌルでなければ、出力ファイルオープン手段４２（１）は、出力トランザクションファイル５４がオープン済みである旨判定すると共に、そのファイルポインタを返却するように構成されている。
【００４５】
出力ファイル書出し処理手段４５（１）は、レコード処理実行手段４４（１）にて所定の処理を施したレコードを、予め指定された出力トランザクションファイル５４内のレコード位置に出力するように構成されている。この出力するレコード位置は、上述した各レコードの位置番号により定まるものである。
【００４６】
出力ファイル書出し処理手段４５（１）は、出力トランザクションファイル５４への出力が正常に終了した際に、出力したレコードの位置番号を出力済カウント値として設定し、トランザクションがすべて完了した際に（関連するひとまとまりのデータの出力を終えた際に）出力ファイル書出し処理手段４５（１）は、出力済カウント値を０に設定するように構成されている。
【００４７】
より具体的には、出力ファイル書出し処理手段４５（１）は、出力処理が正常終了した際に出力済カウント値に１を加算し、入力トランザクションファイル５２内の関連するレコードの出力がすべて完了した際に出力済カウント値を０にリセットする出力カウント処理機能４５Ａ（１）を有している。
【００４８】
また、出力ファイル書出し処理手段４５（１）は、出力済レコードカウンタ５５に示された出力済カウント値と処理後のレコードが有する位置番号とを比較し、この位置番号が「出力済カウント値＋１」であれば、当該位置番号に対応する出力レコード位置へと処理済みレコードを出力するように構成されている。
【００４９】
一方で、位置番号が「出力済カウント値＋１」よりも大きい場合（位置番号が「出力済カウント値＋２」以上の場合）に出力ファイル書出し処理手段４５（１）は、他のコアにて先に入力されたレコードの出力がすべて完了していない旨判断し、完了するまで待ち合わせを行うように構成されている。
【００５０】
すなわち、出力ファイル書出し処理手段４５（１）は、処理後のレコードの位置番号が出力済カウント値に１を加えた数よりも大きければ、当該位置番号と上記出力カウント処理機能４５Ａ（１）による加算後の出力済カウント値に１を加えた数とが等しくなるまで待機した後に、当該処理後のレコードを出力する待機後出力機能４５Ｂ（１）を有している。
【００５１】
さらに、上記出力が正常に終了した際に出力ファイル書出し処理手段４５（１）は、出力済レコードカウンタ５５の出力済カウント値をリカバリ情報５６に出力し、トランザクションがすべて完了した際に出力ファイル書出し処理手段４５（１）は、リカバリ情報５６に０を出力するように構成されている。
【００５２】
すなわち、出力ファイル書出し処理手段４５（１）は、出力処理が正常終了した際に、出力済カウント値によりリカバリ情報５６を更新し、入力トランザクションファイル５２内の関連するレコードの出力がすべて完了した際に、リカバリ情報５６を０に初期化するリカバリ情報更新機能４５Ｃ（１）を有している。
【００５３】
各スレッド（２）〜（ｎ）及び各トランザクション制御部４０（２）〜４０（ｎ）にかかる構成は、上述した通り、スレッド（１）及びトランザクション制御部４０（１）と同様であるため、ここでは省略する。
【００５４】
上述した構成から成るデータ並列処理システム６０によれば、１つの入力トランザクションファイルを分割することなく且つプログラムを改造することなく、バッチ処理にかかるユーザプログラムをもとに生成した複数のスレッドを利用しての並列処理が実現でき、出力トランザクションファイル５４の順序性を保証することが可能となる。
また、エラー発生時においては、リカバリ情報５６に応じて指定されたレコードからトランザクションファイルにかかる処理を再開でき、すなわち、入出力処理を終えたレコードについての読み飛ばしができるため、処理時間を短縮することが可能となる。
【００５５】
本実施形態では、便宜上、トランザクション制御部として機能させる複数のコアを、多重度（ｎ）と同じ数だけ設けるという構成を採用した。しかし、主制御装置２０に、多重度（ｎ）よりも多くのコアを設けるという構成を採ってもよい。
このようにすれば、特に、必要に応じて多重度を増加させた場合にも、増加後の多重度に応じて生成した複数のスレッドに対して各コアを確実に関連づけることができるため、上記同様に、バッチ処理の有意な並列処理が実現でき、且つ入出力間でのレコードの順序性を保証することが可能となる。
【００５６】
次に、図１及び図２に開示したデータ並列処理システム６０において、多重度が５に設定された場合の入出力間におけるレコードの順序制御にかかる構成を、図４に基づいて説明する。この図４は、図１乃至図３に開示したデータ並列処理システム６０のうちで、当該説明に必要となる構成部材を部分的に示したものである。
【００５７】
ここでは、スタートアップ処理プログラム１２を読み込んで機能するスレッド生成処理部３０が、多重度情報５１（多重度＝５）をもとにバッチ処理プログラム１３から５つのスレッド１３Ａ（１）〜（５）を生成した後、これら各スレッドを読み込んだ各コア（図１参照）がそれぞれトランザクション制御部４０（１）〜（５）として機能している状況を想定する。
【００５８】
入力トランザクションファイル５２には、予め付された位置番号により序列をつけて並べられた関連するレコードがまとめて格納されている。１００１番目〜１００５番目のレコードはそれぞれ、トランザクション制御部４０（１）〜（５）にて入出力処理されるように構成されている。
【００５９】
更にここでは、スレッド１３Ａ（１）を読み込んで機能するトランザクション制御部４０（１）が、処理済みである１００１番目のレコードを出力トランザクションファイル５４に書き出すと共に出力済カウント値を加算したことで、該カウント値が１００１となっている状況にある。
【００６０】
また、スレッド１３Ａ（２）〜（５）を読み込んで機能するトランザクション制御部４０（２）〜（５）はそれぞれ、１００２番目〜１００５番目のレコードの読み込みを行った状態にある。加えて、トランザクション制御部４０（４）は、１００４番目のレコードに対する所定の処理を終えているが、トランザクション制御部４０（２）及び（３）は、対応するレコードに対する処理を終えていないため、出力トランザクションファイル５４への書き出しを実行していないという状況を想定する。
【００６１】
かかる状況下において、入力ファイル読込み手段４３（４）にて読み込んだレコードの処理を終えたトランザクション制御部４０（４）は、出力ファイル書出し処理手段４５（４）にて、出力済カウント値が１００３になるまで待機した後に書き出しを行うように構成されている。
【００６２】
すなわち、まず、入力ファイル読込み手段４３（２）で読み込んだレコードの処理を終えたトランザクション制御部４０（２）が、出力ファイル書出し処理手段４５（２）にて書き出しを行うと共に出力済カウント値を１００２に設定し、次いでトランザクション制御部４０（３）が同様に、書き出しを行うと共に出力済カウント値を１００３に設定することで、「位置番号＝出力済カウント値＋１（１００４＝１００３＋１）」なる関係が成り立つことから、トランザクション制御部４０（４）は出力ファイル書出し処理手段４５（４）にて、出力トランザクションファイル５４への書き出しを実行するように構成されている。
【００６３】
このように、他のコアとの待ち合わせによる順序制御を出力済カウント値に基づいて行うデータ並列処理システム６０によれば、出力トランザクションファイル５４に出力される処理済レコードが、入力トランザクションファイル５２における処理前のレコードと同じ序列で並べられるため、入出力間におけるデータの順序性を保証することが可能となる。
【００６４】
次に、図１及び図２に開示したデータ並列処理システム６０において、上記図４と同様に多重度情報５１の多重度が５に設定された場合のエラー発生後におけるリカバリ処理にかかる構成を、図５に基づいて説明する。この図５は、図１乃至図３に開示したデータ並列処理システム６０のうちで、当該説明に必要となる構成部材を部分的に示したものである。
【００６５】
ここでは、事前に行った１００１番目のレコードにかかる処理においてエラーが発生したため、リカバリ情報５６の表示が１０００となっている状況を想定する。
【００６６】
かかる場合において、主制御装置２０は、１００１番目のレコードから読み込みを開始するように制御するという構成を採っている。
具体的には、スレッド生成処理部３０にて生成されたスレッド１３Ａ（１）を読み込んで機能するトランザクション制御部４０（１）が、リカバリ情報５６に示された１０００に１を加算した位置にある１００１番目のレコードに対してスレッド１３Ａ（１）に基づく処理を実行するように構成されている。
【００６７】
上記同様にトランザクション制御部４０（１）は、入力ファイル読込み手段４３（１）にて入力トランザクションファイルから読み込んだ１００１番目のレコードに所定の処理を施すと共に、該処理後のレコードを出力ファイル書出し処理手段４５（１）にて出力トランザクションファイルの１００１番目の位置に書き出すように構成されている。
【００６８】
（動作説明）
図１及び図２に開示したデータ並列処理システム６０の動作を、図６及び図９に示すフローチャートに基づいて説明する。
まず、図６に基づいて、スレッド生成処理部３０がスレッドを生成する毎にカウントする多重度カウンタの数値が０である初期状態を想定したスレッドの生成にかかる動作を説明する。
【００６９】
スレッド生成処理部３０は、多重度情報５１を参照し多重度を環境変数にて取得すると共に、多重度カウンタの数値と多重度とが異なることを確認する（図６：Ｓ６０１）。
次いで、スレッド生成処理部３０は、スレッド１３Ａ（１）を生成すると共に、これをコア（１）に関連づける（図６：Ｓ６０２）。
【００７０】
この生成されたスレッド１３Ａ（１）に関連づけられたコア（１）が、当該スレッド１３Ａ（１）を読み込むと共にトランザクション制御部４０として機能することにより、他のコアとは独立しての入出力処理を開始する（図６：Ｓ６０３）。
【００７１】
スレッドを１つ生成したことから、スレッド生成処理部３０は、多重度カウンタに１を加算する（図６：Ｓ６０４）。
【００７２】
続いて、多重度カウンタの数値と多重度とを比較することによりスレッド生成処理部３０は、多重度カウンタの数値が多重度以上であるか否か（多重度に達したか否か）を判定する（図６：Ｓ６０５）。
【００７３】
その際、多重度カウンタの数値が多重度よりも小さければ（図６：Ｓ６０５／いいえ）、スレッド生成処理部３０が更にスレッド（２）を生成し（図６：Ｓ６０２）、これに応じてトランザクション制御部４０（２）が独立しての入出力処理を開始し（図６：Ｓ６０３）、次いで多重度カウンタに１を加算したスレッド生成処理部３０が（図６：Ｓ６０４）、該加算後における多重度カウンタの数値が多重度以上であるか否かを判定する（図６：Ｓ６０５）。
【００７４】
このようにして、多重度カウンタの数値と多重度とが等しくなるまで、上記一連の各工程内容（図６：Ｓ６０２〜Ｓ６０５）を順次実行することにより、スレッド生成処理部３０は、並列処理に必要な（多重度に相当する）複数のスレッドを生成する。
そして、多重度カウンタの数値と多重度とが等しくなった際に（図６：Ｓ６０５／はい）、スレッド生成処理部３０は、スレッドの生成処理を終了する。
【００７５】
次に、図７に基づいて、入力トランザクションファイルのオープン処理にかかる動作を説明する。
ここでは、上記同様に、スレッド１３Ａ（１）〜（ｎ）にはそれぞれ、コア（１）〜（ｎ）が関連づけられていることを前提とし、一般的に、トランザクション制御部４０（ｋ）として機能するスレッド１３Ａ（ｋ）を読み込んだコア（ｋ）の動作を説明する。なお、ｋは「１≦ｋ≦ｎ」を満たす自然数であるものとする。
【００７６】
入力ファイルオープン手段４１（ｋ）は、入力トランザクションファイル５２がオープン済みであるか否かを、ファイルポインタがヌルであるか否かによって判定する（図７：Ｓ７０１）。
【００７７】
その際、ファイルポインタがヌルであることからオープン済みではない旨判定した入力ファイルオープン手段４１（ｋ）は（図７：Ｓ７０１／はい）、ＩＮＰＵＴモードで入力トランザクションファイル５２をオープンする（図７：Ｓ７０２）。
【００７８】
一方で、ファイルポインタがヌルではないことからオープン済みである旨判定した入力ファイルオープン手段４１（ｋ）は（図７：Ｓ７０１／いいえ）、そのファイルポインタを返却する（図７：Ｓ７０３）。
【００７９】
オープンに成功した入力ファイルオープン手段４１（ｋ）は、リカバリ情報５６を読み取ると共に、これが０以外であれば（図７：Ｓ７０４／はい）、当該リカバリ情報５６に応じた位置番号（リカバリ情報５６に１を加えた位置番号）を有する入力トランザクションファイル５２内のレコードに位置づけを行う（図７：Ｓ７０５）。
【００８０】
これにより、各入力ファイル読込み手段４３（１）〜（ｎ）は、順次入力トランザクションファイル５２内のレコードを読み込むことが可能となり、また、エラー発生後においては、エラー発生直前までに出力したレコードの再読み込みを回避できるため、処理時間の短縮を図ることが可能となる。
【００８１】
次に、図８に基づいて、出力トランザクションファイルのオープン処理にかかる動作を説明する。ここでも上記同様に、トランザクション制御部４０（ｋ：１≦ｋ≦ｎ）の動作を説明する。
【００８２】
出力ファイルオープン手段４２（ｋ）は、出力トランザクションファイル５４がオープン済みであるか否かをファイルポインタがヌルであるか否かによって判定する（図８：Ｓ８０１）。
【００８３】
その際、ファイルポインタがヌル（ＮＵＬＬ：値なし）であることからオープン済みではない旨判定した出力ファイルオープン手段４２（ｋ）は（図８：Ｓ８０１／はい）、リカバリ情報５６を読み取ると共にこれが０以外であれば（図８：Ｓ８０２／はい）、拡張モード（ＥＸＴＥＮＤモード）で出力トランザクションファイル５４をオープンする（図８：Ｓ８０３）。
【００８４】
一方、読み取ったリカバリ情報５６が０であれば（図８：Ｓ８０２／いいえ）、出力ファイルオープン手段４２（ｋ）は、ＯＵＴＰＵＴモードで出力トランザクションファイル５４をＯＵＴＰＵＴモードでオープンする（図８：Ｓ８０４）。
【００８５】
読み取ったリカバリ情報５６が０ではないことから拡張モードでオープン処理を行い（図８：Ｓ８０３）、オープンに成功した出力ファイルオープン手段４２（ｋ）は、出力トランザクションファイル５４における当該リカバリ情報５６に応じた位置に位置づけを行う（図８：Ｓ８０５）。
【００８６】
一方、読み取ったリカバリ情報５６が０であることからＯＵＴＰＵＴモードでオープン処理を行い（図８：Ｓ８０４）、オープンに成功した出力ファイルオープン手段４２（ｋ）は、出力トランザクションファイル５４の最初の位置に位置づけを行う（図８：Ｓ８０５）。
【００８７】
また、出力トランザクションファイル５４がオープン済みであるか否かの判定において（図８：Ｓ８０１）、ファイルポインタがヌルであることからオープン済みである旨判定した出力ファイルオープン手段４２（１）は（図８：Ｓ８０１／いいえ）、そのファイルポインタを返却する（図８：Ｓ８０６）。
【００８８】
次に、図９に基づいて、入力トランザクションファイル５２と出力トランザクションファイル５４との間での順序性の保証にかかる動作を説明する。ここでも上記同様に、トランザクション制御部４０（ｋ：１≦ｋ≦ｎ）の動作を説明する。
【００８９】
入力ファイル読込み手段４３（ｋ）が、入力トランザクションファイルから特定のレコードを入力し（図９：Ｓ９０１）、当該レコードに対してレコード処理実行手段４４（ｋ）が所定の処理を施す（図９：Ｓ９０２）。
【００９０】
次いで、出力ファイル書出し処理手段４５（ｋ）は、出力済レコードカウンタ５５を参照し、当該処理後のレコードが有する位置番号（指定レコード位置番号）が「出力済カウント値＋１」であるか否かを判定する（図９：Ｓ９０３）。
【００９１】
これを具備する場合に出力ファイル書出し処理手段４５（ｋ）は（図９：Ｓ９０３／はい）、当該処理後のレコードを位置番号に対応する出力トランザクションファイル５４内の位置に書き出す（図９：Ｓ９０５）。
【００９２】
一方で、これを具備しない場合に出力ファイル書出し処理手段４５（ｋ）は（図９：Ｓ９０３／いいえ）、先に入出力処理を開始した他のコアとの待ち合わせを実行する（図９：Ｓ９０４）。
すなわち、先に入出力処理を開始した他のコアが、正常に出力トランザクションファイル５４への出力を終えると共に出力済カウント値を加算したことにより、当該加算後の出力済カウント値に１を加えた値と当該指定レコード位置番号とが等しくなった際に（図９：Ｓ９０３／はい）出力ファイル書出し処理手段４５（ｋ）は、当該処理後のレコードを位置番号に対応する位置に書き出す（図９：Ｓ９０５）。
【００９３】
こうして出力トランザクションファイル５４への出力が正常に終了した際に、出力ファイル書出し処理手段４５（ｋ）は、出力済カウント値に１を加算する（出力したレコードの位置番号を設定する）。この時、入力トランザクションファイル５２内の関連するレコードの出力がすべて完了していれば、出力済カウント値を０に初期化する（図９：Ｓ９０６）。
【００９４】
次いで、出力ファイル書出し処理手段４５（ｋ）は、加算又は初期化した出力済カウント値によってリカバリ情報５６を更新する（図９：Ｓ９０７）。
【００９５】
上記動作内容は、便宜上、図６乃至図９に付した番号（Ｓ６０１〜Ｓ６０５，Ｓ７０１〜Ｓ７０５，Ｓ８０１〜Ｓ８０６，Ｓ９０１〜Ｓ９０７）の順に説明したが、本実施形態にかかるデータ並列処理システム６０の動作順序は、必ずしもこれに限定されるものではない。
【００９６】
また、上記各ステップＳ６０１〜Ｓ６０５（図６），Ｓ７０１〜Ｓ７０５（図７），Ｓ８０１〜Ｓ８０６（図８），及びＳ９０１〜Ｓ９０７（図９）における各工程の実行内容をプログラム化すると共に、この一連の各制御プログラムをコンピュータによって実現するように構成してもよい。
【００９７】
（実施形態の効果等）
本実施形態における主制御装置２０は、プログラム格納装置１０からバッチ処理にかかるユーザプログラムを内部メモリ等にロードすると共に、このユーザプログラムに従って処理動作を開始するように構成されている。
この開始の時点において、スタートアップ処理プログラムを読み込んだスレッド生成処理部３０が、多重度情報５１に示された多重度（ｎ）相当のスレッド（１）〜（ｎ）を生成すると共にこの各スレッド（１）〜（ｎ）に各コア（１）〜（ｎ）を関連づけ、これにより複数のトランザクション制御部４０（１）〜（ｎ）として機能する各コア（１）〜（ｎ）が、バッチ処理プログラム１３にかかる手続きを開始するように構成されている。
【００９８】
かかる構成から成るデータ並列処理システム６０によれば、１つの入力トランザクションファイルを分割することなく且つプログラムを改造することなく、バッチ処理にかかるユーザプログラムをもとに生成した複数のスレッドを利用しての並列処理が実現でき、出力トランザクションファイル５４の順序性を保証することが可能となる。
また、エラー発生時においては、リカバリ情報５６に基づいて入出力処理を終えたレコードについての読み飛ばしができ、すなわち、リカバリ情報５６に応じた入力トランザクションファイル５２内のレコードから処理を再開できるため、処理時間の短縮を図ることが可能となる。
【００９９】
トランザクションファイル入出力処理の並列走行方式を採用したデータ並列処理システム６０では、バッチ処理プログラムに対して並列多重度を外部から与えることにより、プログラムの修正を行うことなく複数のスレッドによる分割走行が可能となり、すなわち、複数のコアを有意に用いたデータの並列処理が実現できるため、これにより、バッチ処理の高速化を図ると共にデータの順序性を保証することが可能となる。
【０１００】
本実施形態では、便宜上、トランザクション制御部として機能させる複数のコアが多重度と同じ数だけ設けられたデータ並列処理システム６０を示す図１乃至図５により、その構成及び動作を説明した。しかし、このトランザクション制御部として機能させる複数のコアを、データ並列処理システム６０に、多重度より多く設けるという構成を採用してもよい。このようにすれば、特に、必要に応じて多重度を増加させた場合にも、増加後の多重度に応じて生成した複数のスレッドに対して各コアを確実に関連づけることができるため、上記同様に、バッチ処理の有意な並列処理が実現でき、且つ入出力間でのレコードの順序性を保証することが可能となる。
【０１０１】
また、本実施形態におけるデータ並列処理システムは、入力トランザクションファイル５２や出力トランザクションファイル５４を参照する手段を含んで構成した。しかし、言語処理系にオプションとして渡す方法を採用して、入力トランザクションファイル５２や出力トランザクションファイル５４を採用した場合と同等の機能を実現するように構成してもよい。また、プログラム言語仕様として入力・出力トランザクションファイルを明示する方法等を採用するようにしてもよい。
【０１０２】
なお、上述した実施形態は、データ並列処理システム、データ並列処理方法、及びそのプログラムにおける好適な具体例であり、技術的に好ましい種々の限定を付している場合もある。しかし、本発明の技術範囲は、特に本発明を限定する記載がない限り、これらの態様に限定されるものではない。
【０１０３】
以下は、上述した実施形態についての新規な技術的内容の要点をまとめたものであるが、本発明は必ずしもこれに限定されるものではない。
【０１０４】
（付記１）
バッチ処理にかかるプログラムが格納されたプログラム格納装置と、この格納プログラムをもとにデータの並列処理を行う主制御装置と、この主制御装置による処理にかかるデータを格納するトランザクションファイル及び当該処理に際して参照される情報が記憶されるデータ記憶装置と、を有するデータ並列処理システムであって、
前記主制御装置は、
前記格納プログラムをもとに前記並列処理に必要な（予め記憶された多重度に相当する）複数のスレッドを生成するスレッド生成処理手部と、
この生成した複数のスレッドの各々に順次関連づけられ且つ予め番号が付された前記データを取得すると共にこれを独立して処理し出力する複数のトランザクション制御部と、を有し、
このトランザクション制御部は、予め記憶された出力済カウント値を参照することで、前記独立処理後のデータが前記番号順に出力されるように制御することを特徴としたデータ並列処理システム。
【０１０５】
（付記２）
前記付記１に記載のデータ並列処理システムにおいて、
前記各トランザクション制御部は、前記出力に際して、前記出力済カウント値に１を加算する出力カウント手段を有することを特徴としたデータ並列処理システム。
【０１０６】
（付記３）
前記付記２に記載のデータ並列処理システムにおいて、
前記出力カウント手段は、関連するひとまとまりのデータの前記出力を終えた際に前記出力済カウント値を０に初期化する機能をさらに有することを特徴としたデータ並列処理システム。
【０１０７】
（付記４）
前記付記１乃至３の何れか一つに記載のデータ並列処理システムにおいて、
前記各トランザクション制御部は、前記独立処理後のデータを、前記付された番号に応じた前記トランザクションファイル内の位置に出力することを特徴としたデータ並列処理システム。
【０１０８】
（付記５）
前記付記２又は３に記載のデータ並列処理システムにおいて、
前記各トランザクション制御部は、前記独立処理後のデータの前記付された番号が前記出力済カウント値に１を加えた値よりも大きければ、当該番号と前記加算後の出力済カウント値に１を加えた数とが等しくなるまで待機した後に当該データを出力する待機後出力手段を有することを特徴としたデータ並列処理システム。
【０１０９】
（付記６）
前記付記１乃至５の何れか一つに記載のデータ並列処理システムにおいて、
前記各トランザクション制御部は、対応する前記スレッドを読み込んだ際に、前記出力済カウント値（リカバリ情報）に応じたデータへの位置づけを行うと共に、前記トランザクションファイルをオープンするトランザクションオープン手段を有することを特徴としたデータ並列処理システム。
【０１１０】
（付記７）
バッチ処理にかかるプログラムが格納されたプログラム格納装置と、この格納プログラムをもとにデータの並列処理を行う主制御装置と、この主制御装置による処理にかかるデータを格納するトランザクションファイル及び当該処理に際して参照される情報が記憶されるデータ記憶装置と、を有するデータ並列処理システムにあって、
前記格納プログラムをもとに前記並列処理に必要な複数のスレッドを生成し、
この生成した複数のスレッドの各々に前記主制御装置内の複数のプロセッサコアを順次関連づけ、
この複数のプロセッサコアがそれぞれ対応するスレッドを読み込み、
この対応するスレッドを読み込んだ前記各プロセッサコアが、予め番号が付された前記データを取得すると共にこれを独立して処理し、
予め記憶された出力済カウント値を参照することにより前記各プロセッサコアが、前記独立処理後のデータを前記番号順になるように制御して出力することを特徴としたデータ並列処理方法。
【０１１１】
（付記８）
前記付記７に記載のデータ並列処理方法において、
前記出力に際して前記各プロセッサコアは、前記出力済カウント値に１を加算することを特徴としたデータ並列処理方法。
【０１１２】
（付記９）
前記付記８に記載のデータ並列処理方法において、
前記出力に際して、関連するひとまとまりのデータの前記出力を終えた際に前記各プロセッサコアが、前記出力済カウント値を０に初期化する処理を、前記加算処理に代えて実行することを特徴としたデータ並列処理方法。
【０１１３】
（付記１０）
前記付記８又は９に記載のデータ並列処理方法において、
前記出力に先立って前記各プロセッサコアが、
前記独立処理後のデータに前記付された番号が前記出力済カウント値に１を加えた値よりも大きいか否かを判定し、
大きい旨判定した場合に当該番号と前記加算後の出力済カウント値に１を加えた数とが等しくなるまで待機することを特徴としたデータ並列処理方法。
【０１１４】
（付記１１）
前記付記７乃至１０の何れか一つに記載のデータ並列処理方法において、
前記対応するスレッドを読み込んだ際に前記各プロセッサコアが、
前記出力済カウント値に応じたデータへの位置づけを行い、
前記トランザクションファイルをオープンすることを特徴としたデータ並列処理方法。
【０１１５】
（付記１２）
バッチ処理にかかるプログラムが格納されたプログラム格納装置と、この格納プログラムをもとにデータの並列処理を行う主制御装置と、この主制御装置による処理にかかるデータを格納するトランザクションファイル及び当該処理に際して参照される情報が記憶されるデータ記憶装置と、を有するデータ並列処理システムにあって、
前記格納プログラムをもとに前記並列処理に必要な複数のスレッドを生成するスレッド生成処理手段、
予め番号が付された前記データを取得すると共にこれを独立して処理する複数のデータ取得処理手段、
予め記憶された出力済カウント値を参照することにより、前記独立処理後のデータを前記番号順になるように制御して出力するデータ制御出力手段、
として前記主制御装置に予め設けられたコンピュータ（マルチコアプロセッサ）を機能されるためのデータ並列処理プログラム。
【０１１６】
（付記１３）
前記付記１２に記載のデータ並列処理プログラムにおいて、
前記出力に際して前記出力済カウント値に１を加算する加算手段として前記コンピュータを機能させるためのデータ並列処理プログラム。
【０１１７】
（付記１４）
前記付記１２又は１３に記載のデータ並列処理プログラムにおいて、
前記出力に際して、関連するひとまとまりのデータの前記出力を終えた際に前記出力済カウント値を０に初期化する初期化手段として前記コンピュータを機能させるためのデータ並列処理プログラム。
【０１１８】
（付記１５）
前記付記１３又は１４に記載のデータ並列処理プログラムにおいて、
前記出力に先立って、
前記独立処理後のデータに前記付された番号が前記出力済カウント値に１を加えた値よりも大きいか否かを判定する判定手段、
大きい旨判定した場合に当該番号と前記加算後の出力済カウント値に１を加えた数とが等しくなるまで待機する待機手段、
として前記コンピュータを機能させるためのデータ並列処理プログラム。
【産業上の利用可能性】
【０１１９】
本発明は、情報処理分野においてバッチ処理システムの高速化手法として適用可能である。特に、ＣＯＢＯＬのようなファイル操作を言語仕様として規定している言語処理系で有用である。
【符号の説明】
【０１２０】
０〜ｎ    コア
１０    プログラム格納装置
１１    コード部
１２    スタートアップ処理プログラム
１３    バッチ処理プログラム
１３Ａ（１）〜（ｎ）    スレッド
２０    主制御装置（マルチコアプロセッサ）
３０    スレッド生成処理部
４０（１）〜（ｎ）    トランザクション制御部
４１（１）    入力ファイルオープン手段
４２（１）    出力ファイルオープン手段
４３（１）    入力ファイル読込み手段
４４（１）    レコード処理実行手段
４５（１）    出力ファイル書出し処理手段
４５Ａ（１）    出力カウント処理機能
４５Ｂ（１）    待機後出力機能
４５Ｃ（１）    リカバリ情報更新機能
５０    データ記憶装置
５１    多重度情報
５２    入力トランザクションファイル
５３    マスタファイル
５４    出力トランザクションファイル
５５    出力済レコードカウンタ
５６    リカバリ情報
６０    データ並列処理システム
【図１】
2014211782.tif 000003
【図２】
2014211782.tif 000004
【図３】
2014211782.tif 000005
【図４】
2014211782.tif 000006
【図５】
2014211782.tif 000007
【図６】
2014211782.tif 000008
【図７】
2014211782.tif 000009
【図８】
2014211782.tif 000010
【図９】
2014211782.tif 000011