(57)【特許請求の範囲】
【請求項１】
順データを格納したレコードを分類して振り分けて該当出力ファイルに書き出すデータ書出プログラムであって、
コンピュータを、
レコード番号と、出力すべきデータと、出力先と処理タスクとを分類する分類用キーとを持つレコードを入力ファイルから読み込んで、読み込んだ分類用キーをもとに、分類用キーと処理タスクと出力ファイルとを関連づけて持つ分類定義ファイルを参照して、出力すべきデータを渡すタスクと出力ファイルとを判断し、判断をしたタスクに出力すべきデータをキューイングし、読み込んだレコードの数が所定の数に達したと判断すると、読み込んだレコードの持つレコード番号を全てのタスクにキューイングし、全タスクから応答があると該レコード番号をデータ書出管理ファイルに記憶するデータ振分手段と、
前記出力すべきデータを渡すタスクを、前記データ振分手段からキューイングされた情報が出力すべきデータであれば出力ファイルに出力し、レコード番号であれば、タスクとレコード番号とを関連づけて記録する同期テーブルに、自タスクに関連するレコード番号としてキューイングされたレコード番号を記録するよう機能させるデータ書出手段と
して機能させることを特徴とするデータ書出プログラム。
【請求項２】
異常が発生した後に復旧をしたときに、
前記データ振分手段を、前記データ書出管理ファイルに記録をしたレコード番号の次のレコード番号の入力ファイルから読み込むように機能をさせること、
を特徴とする請求項１に記載のデータ書出プログラム。
【請求項３】
前記データ出力手段を、出力ファイルに出力すると、出力先と該出力先に出力をしたレコード番号とを関連づけてデータ書出管理ファイルに記録し、異常が発生して復旧したときに、データ書出管理ファイルに記録をした次のレコード番号から出力ファイルに出力する処理をさせるよう機能させること、
を特徴とする請求項２に記載のデータ書出プログラム。
【請求項４】
順データを格納したレコードを分類して振り分けて該当出力ファイルに書き出すデータ書出プログラムを記録したコンピュータ読取可能な記録媒体であって、
コンピュータを、
レコード番号と、出力すべきデータと、出力先と処理タスクとを分類する分類用キーとを持つレコードを入力ファイルから読み込んで、読み込んだ分類用キーをもとに、分類用キーと処理タスクと出力ファイルとを関連づけて持つ分類定義ファイルを参照して、出力すべきデータを渡すタスクと出力ファイルとを判断し、判断をしたタスクに出力すべきデータをキューイングし、読み込んだレコードの数が所定の数に達したと判断すると、読み込んだレコードの持つレコード番号を全てのタスクにキューイングし、全タスクから応答があると該レコード番号をデータ書出管理ファイルに記憶するデータ振分手段と、
前記出力すべきデータを渡すタスクを、前記データ振分手段からキューイングされた情報が出力すべきデータであれば出力ファイルに出力し、レコード番号であれば、タスクとレコード番号とを関連づけて記録する同期テーブルに、自タスクに関連するレコード番号としてキューイングされたレコード番号を記録するよう機能させるデータ書出手段と
して機能させることを特徴とするデータ書出プログラムを記録したコンピュータ読取可能な記録媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、順データを格納したレコードを分類して振り分けて該当出力ファイルに書き出すデータ書出プログラムおよび記録媒体に関するものである。
【０００２】
【従来の技術】
従来、他の処理から受け取った多量の順データをキーにより分類し複数の出力ファイルに出力する場合、タスクを複数用意してこれらタスクがそれぞれの出力ファイルにデータを出力（格納）するようにしていた。
【０００３】
このため、出力中に何等かの原因によりシステムダウンなどの異常が発生すると、異常の復旧後に、全ての処理をやり直していた。
【０００４】
【発明が解決しようとする課題】
上述したように従来の多量の順データをキーにより分類して多数のタスクがそれぞれ並列に該当出力ファイルに出力して途中に異常が発生した場合、システムの復旧後に最初から全て多量のデータについて再試行していたため、当該再試行に非常に多くの時間が必要となってしまうと共に、以前のデータがあると２重書出みを行ってしまうなどの問題があった。
【０００５】
本発明は、これらの問題を解決するため、多量のレコードをキーで振り分けて複数のタスクが出力ファイルにそれぞれ書き出す際に、複数のタスクのレコード書出の同期化を行って同期レコード番号を記憶すると共に各タスクで書出完了レコード番号を記憶しておき、異常発生して復旧したときに同期レコード番号の次から振分を再開すると共に各タスクは書出完了レコード番号の次から書出を再開し、多量レコードの分類振分および書出時に異常が発生して復旧したときに二重分類振分および二重書出を抑止して短時間で分類振分処理および書出処理を再開して続行することを目的としている。
【０００６】
【課題を解決するための手段】
図１を参照して課題を解決するための手段を説明する。
図１において、入力ファイル（入力データ）１は、本願発明の分類振分対象となる順データであって、ここでは、レコードに分類用のキーと、例えばシーケンシャルなレコード番号と、実際のデータとから構成されるものである。
【０００７】
データ振分手段２は、取り込んだレコードのキーについて、分類定義テーブル３を参照して振分先のタスク６に渡したり、所定のレコード数を処理したときあるいは指定されたときに同期要求レコードを全てのタスク６に渡したり、全タスク６から応答があったときに同期レコード番号を記憶域に記憶したり、分類振分処理中などに異常発生して復旧したときに記憶域中の同期レコード番号８の次のレコード番号から取り込んで分類振分を再開したりなどするものである。
【０００８】
分類定義テーブル３は、キーに対応づけて出力するタスクあるいは出力ファイルを設定するものである。
同期レコード番号８は、同期化したレコード番号を記憶域（データ書出管理ファイル７）に記憶したものである。
【０００９】
タスク６は、レコードを出力ファイル１１に書き出したり、レコードが同期要求レコードであったときに応答をデータ振分手段２に返したりなどするものである。
【００１０】
次に、動作を説明する。
データ振分手段２が入力されたレコード中のキーをもとに分類定義テーブル３を参照して該当タスク６に渡す、あるいは該当出力ファイル１１にレコードを出力するタスク６に渡すと共に、所定のレコード数を処理したとき、あるいは指定されたときに同期要求レコードを全てのタスク６に渡し、全タスク６から応答があったときに記憶域に同期レコード番号を記憶し、タスク６が振分手段２から渡されたレコードを出力ファイル１１に書き出すと共に、渡されたレコードが同期要求レコードであったときに応答をデータ振分手段２に返すようにしている。
【００１１】
この際、データ振分手段２およびタスク６を含むシステムに異常発生して復旧したときに、データ振分手段２が記憶域に記憶されている同期レコード番号の次のレコードから振分処理を再開するようにしている。
【００１２】
また、タスク６が渡されたレコードを出力ファイル１１に書出完了したときに完了レコード番号を記憶しておき、異常発生して復旧したときに、各タスク６が渡されたレコードのうち、記憶しておいた完了レコード番号の次の番号のレコードから出力ファイル１１への書き出しを再開するようにしている。
【００１３】
従って、多量のレコードをキーで振り分けて複数のタスク６が出力ファイル１１にそれぞれ書き出す際に、複数のタスク６のレコード書出の同期化を行って同期レコード番号を記憶すると共に各タスク６で書出完了レコード番号を記憶しておき、異常発生して復旧したときに同期レコード番号の次から振分を再開すると共に各タスク６は書出完了レコード番号の次から書出を再開することにより、多量レコードの分類振分および書出時に異常が発生して復旧したときに二重分類振分および二重書出を抑止して短時間で分類振分処理および書出処理を再開して続行することが可能となる。
【００１４】
【発明の実施の形態】
次に、図１から図１０を用いて本発明の実施の形態および動作を順次詳細に説明する。
【００１５】
図１は、本発明のシステム構成図を示す。
図１において、入力ファイル（入力データ）１は、本願発明の振分対象となる順データであって、ここでは、図示のようにレコードに分類用のキー（図示の「キーＡ」など）と、例えばシーケンシャルなレコード番号（「レコード１」など）と、実際のデータ（例えばデータ「Ａ」，「Ｂ」など）とから構成されるものである。
【００１６】
データ振分手段２は、取り込んだレコードのキーについて、分類定義テーブル３を参照して振分先のタスク６に渡したり、所定のレコード数（同期インターバルとして設定されたレコード数）を処理したときあるいは指定されたときに同期要求レコードを全てのタスク６に渡したり、全タスク６から応答があったときに記憶域（データ書出管理ファイル７）に同期レコード番号（同期レコード番号）を記憶したり、振分処理中に異常発生して復旧したときに記憶域（データ書出管理ファイル７）中の同期レコード番号８の次のレコード番号から取り込んで振分処理を再開したりなどするものである（図２を用いて後述する）。
【００１７】
分類定義テーブル３は、キーに対応づけて出力するタスク（処理タスク）６および出力ファイル１１を設定するものである。
同期テーブル４は、データ振分手段２が同期化するときに使用するテーブルであって、ここでは、図示の下記の情報を設定して管理するものである。
【００１８】
・同期インターバル：
・同期カウンタ：
・タスク（１）（タスク１から応答のあった同期レコード番号を設定するフィールド）：
・タスク（２）（タスク２から応答のあった同期レコード番号を設定するフィールド）：
・タスク（３）（タスク３から応答のあった同期レコード番号を設定するフィールド）：
・その他：
ここで、同期インターバルはデータ振分手段２がここに設定されたレコード数だけ取り込んで振分処理を実行したとき、図では３つのレコードの振分処理を実行したときに、同期要求レコードを全タスク６に渡すという、インターバルを設定するものである。同期要求レコードを渡された各タスク６は、渡されたレコードを順番に出力ファイル１１に書出処理を実行し、同期要求レコードを処理する段階になったときにデータ振分手段２に応答を返すので、当該応答を受け取ったデータ振分手段２がタスク（１）、（２）、（３）などの該当するフィールドに受け取ったレコード番号を設定し、全タスクのフィールドに設定されたときに同期完了とし、データ書出管理ファイル７の同期レコード番号８として書き込んで記憶させる。
【００１９】
データ書出手段５は、データ振分手段２から渡されたレコードを順番に出力ファイル１１に書き出したりなどするものであって、タスク（１）６、タスク（２）６、タスク（３）６などから構成されるものである。
【００２０】
タスク（１）６、タスク（２）６、タスク（３）６などは、データ振分手段２から渡されたレコードを該当する出力ファイル１１に書き出したり、書出を完了したときにデータ書出管理ファイル７中の該当処理済データ位置９に書出完了レコード番号をそれぞれ書き込んで記憶させたり、同期要求レコードのときに応答をデータ振分手段２に返送したり、異常発生して復旧したときに渡されたレコードについて、データ書出管理ファイル７の自己の処理済データ位置９から読み出した書出完了レコード番号の次のレコード番号から出力ファイル１１への書出を再開したりなどするものである。
【００２１】
データ書出管理ファイル７は、同期レコード番号８および各タスク６の処理済データ位置（書出完了レコード番号）を書き込んで記憶するものである。
同期レコード番号８は、データ振分手段２が同期インターバルとなったレコード数を振分処理したときに、同期要求レコードを全タスク６に渡してその応答が全てのタスク６からあったときに同期完了した当該同期レコード番号８を設定したものである。データ振分手段２やタスク６などに異常発生して復旧したときに、データ振分手段２は当該同期レコード番号８を取り出して、当該同期レコード番号の次の番号のレコードから振分処理を再開し、最初から全レコードについて処理を再開することなく、短時間に復旧処理を行うことが可能となる。
【００２２】
処理済データ位置９は、各タスクで出力ファイル１１に書出を完了した最終のレコード番号を書き込んで記憶するものである。データ振分手段２やタスク６などに異常発生して復旧したときに、データ振分手段２は既述した同期レコード番号の次の番号のレコードから各タスク６に渡してくるので、各タスク６では自己の処理済データ位置９に記憶されている最終の書出完了レコードの次の番号のレコード番号から出力ファイル１１への書出を再開する。これにより、書出完了レコードの番号と同一および以前の番号のレコードについては、出力ファイル１１への書き出しを抑止して二重書出みを防止すると共に、無駄な書出処理を抑止して迅速に復旧を行うことが可能となる。
【００２３】
出力ファイル１１は、タスクがレコードを書き出す出力ファイルである。
次に、図２のフローチャートの順番に従い、図１の構成の動作を図３から図６を用いて順次詳細に説明する。
【００２４】
図２は、本発明の動作説明フローチャートを示す。
図２において、Ｓ１は、入力ファイルより入力データを読み込む。これは、後述する図３中のＳ１と記載した矢印で示すように、データ振分手段２が、入力ファイル１からレコードを１つ読み込む。
【００２５】
Ｓ２は、分類定義テーブル３に従い入力データを渡すデータ書出手段５のタスク６を決定する。これは、図３中のＳ２の点線の矢印で示すように、データ振分手段２がＳ１で読み込んだ１つのレコード中のキーをもとに、分類定義テーブル３を参照してレコードを渡すデータ書出手段５のタスク６を決定する。
【００２６】
Ｓ３は、入力データを渡すデータ書出手段５のタスク６にデータ書き出し依頼メッセージを送信する。これは、図３中のＳ３に示すように、分類定義テーブル３に従いデータ書き出し依頼のメッセージを、該当タスク６に送信する。
【００２７】
Ｓ４は、同期テーブル４の同期カウンタを＋１する。これは、図３中のＳ４の矢印で示すように、同期テーブル４中の同期カウンタの値を＋１する。
Ｓ５は、同期インターバル＝同期テーブル４の同期カウンタ＋１か判別する。これは、データ振分手段２が振分処理したレコード数の設定されている同期テーブル中の同期カウンタの値＋１が、同期インターバルに設定されている値（ここでは、３）と等しいか判別する。ＹＥＳの場合には、同期化する必要があると判明したので、Ｓ６とＳ７で同期化を行う。一方、ＮＯの場合には、同期化する必要が今回のレコードの振分処理では必要がないと判明したので、Ｓ６、Ｓ７をスキップしてＳ８に進む。
【００２８】
Ｓ６は、Ｓ５のＹＥＳで同期化必要と判明したので、全タスク６に同期要求メッセージを送信する。後述する図４中のＳ６で示すように、ここでは、全タスク（１）から（３）に同期要求メッセージを送信する。
【００２９】
Ｓ７は、同期テーブル４の同期カウンタ＝０にする。これは、図４中のＳ７に示すように、同期テーブル４中の同期カウンタ＝０とリセットする。
Ｓ８は、タスクのメッセージ受信する（No Waitモード）。これは、図５のＳ８に示すように、データ振分手段２が、Ｓ６で送信した同期要求メッセージに対する、タスク６からの応答メッセージの受信を待機する。
【００３０】
Ｓ９は、メッセージ無しか判別する。ＹＥＳの場合には、Ｓ１に戻り繰り返す。ＮＯの場合には、Ｓ１０に進む。
Ｓ１０は、同期応答メッセージか判別する。ＹＥＳの場合には、Ｓ１１に進む。ＮＯの場合には、Ｓ８に戻り繰り返す。
【００３１】
Ｓ１１は、Ｓ１０のＹＥＳで同期応答メッセージを受信したと判明したので、同期テーブル４の該当タスクに対応するタスクフィールド＝通知されたレコード番号を設定する。これは、例えば図５のＳ１１に示すように、ここでは、データ振分手段２がタスク（３）から同期応答メッセージ（レコード３）を受信し、同期テーブル４の該当するタスク（３）のフィールドに、受信した同期応答メッセージ中の同期レコード番号（レコード３）を図示のように設定する。
【００３２】
Ｓ１２は、Ｌｏｏｐ（全タスクフィールド）を行う。
Ｓ１３は、タスクフィールド＜通知されたレコード番号か判別する。ＹＥＳの場合には、Ｓ８に戻り繰り返す。ＮＯの場合には、Ｓ１２に戻り次のタスクフィールドについて順にＳ１３を繰り返し、全てがＮＯとなったときにＳ１４に進む（図６の同期テーブル４のタスク（１）、（２）、（３）のフィールドに示すように、レコード３（同期レコード番号＝３）が全て設定された場合には、Ｓ１４に進む）。
【００３３】
Ｓ１４は、トランザクション開始する。
Ｓ１５は、データ書出管理ファイル７の同期レコード番号＝通知されたレコード番号を設定する。例えば図６のデータ書出管理ファイル７の同期レコード番号８のフィールドに通知されたレコード番号（同期レコード番号＝３）をここでは設定し、記憶する。
【００３４】
Ｓ１６は、トランザクション終了し、Ｓ８に進む。
以上のように、データ振分手段２が読み込んだレコード（入力データ）中のキーをもとに分類定義テーブル３を参照して振分先のタスク６に依頼メッセージを送信し、同期カウンタの値を＋１して同期インターバルの値に等しくなったときに同期要求メッセージを全てのタスク６に送信し、全てのタスク６から同期完了応答があったときに同期レコード番号８に同期レコード番号を設定して記憶すると共に、各タスク６が通知されたレコードを出力ファイル１１に書き出して完了したときに処理済レコード番号９にタスク毎に書出完了レコード番号を設定して記憶することが可能となる。そして、異常発生して復旧したときに、後述するように、同期レコード番号８に設定されている同期レコード番号の次のレコード番号からデータ振分手段２がレコードを読み込んで振分処理を再開すると共に、依頼メッセージを受信した各タスク６は処理済レコード番号９に設定されている書出完了レコード番号の次の番号のレコードから出力ファイル１１に書出を再開することが可能となり、二重振分処理や二重書出処理を抑止して無駄な処理を無くし、短時間に振分処理と書出処理を再開して続行することが可能となる。
【００３５】
図３から図６は、本発明の説明図を示す。これら図３から図６は、レコードの振分、同期化、書出処理などを説明するものである。ここで、入力データ１、データ振分手段２、分類定義テーブル３、同期テーブル４、データ書出手段５、タスク６、データ書出管理ファイル７、同期レコード番号８、処理済データ位置９、出力ファイル１１は、既述した図１の同一番号のものと同一であるので説明を省略する。
【００３６】
図３は、本発明の説明図（その１）を示す。図中のＳ１、Ｓ２、Ｓ３、Ｓ４は、既述した図２のＳ１、Ｓ２、Ｓ３、Ｓ４の処理の例を示す。
（１）データ振分手段２は、入力データ１から１レコードを読み込む（Ｓ１）。
【００３７】
（２）データ振分手段２は、（１）で読み込んだレコード中のキーをもとに、分類定義テーブル３を参照して振分先のタスク（処理タスク）６を決定する（Ｓ２）。
【００３８】
（３）データ振分手段２は、（２）で決定した振分先のタスク６に依頼メッセージを送信する（Ｓ３）。
（４）データ振分手段２は、（３）でレコードの依頼メッセージを送信した後、レコードの処理済をカウントするために、同期カウンタの値を＋１して更新する（Ｓ４）。
【００３９】
また、図示の状態では、タスク（１）にはレコード１、レコード２がキューにキューイングされて書出処理を待ち、タスク（２）にはレコード１がキューにキューイングされて書出処理を待ち、タスク（３）にはレコード３がキューにキューイングされて書出処理を待っている。
【００４０】
図４は、本発明の説明図（その２）を示す。
（５）データ振分手段２が同期カウンタの値＝３が、同期インターバル＝３に到達したと検出したため、同期要求メッセージを全タスクに送信する（Ｓ５のＹＥＳ，Ｓ６）。
【００４１】
（６）（５）で同期要求メッセージを送信した後、同期カウンタをリセットする（Ｓ７）。
また、図示の状態では、タスク（１）にはレコード３（同期要求メッセージ）、レコード２がキューにキューイングされて処理を待ち、タスク（２）にはレコード３（同期要求メッセージ）、レコード１がキューにキューイングされて処理を待ち、タスク（３）にはレコード３（同期要求メッセージ）がキューにキューイングされて処理を待っている。処理済レコード番号９には、出力ファイル１にはレコード１（書出完了レコード番号）が設定され、出力ファイル２に０（初期状態のまま）が設定され、出力ファイル３にはレコード３が設定されている。
【００４２】
図５は、本発明の説明図（その３）を示す。
（７）データ振分手段２がタスク（３）から同期完了応答メッセージ（同期完了レコード３）を受信し、同期テーブル４のタスク（３）のフィールドに設定する（Ｓ８、Ｓ１１）。
【００４３】
また、図示の状態では、タスク（１）にはレコード３（同期要求メッセージ）、レコード２がキューにキューイングされて処理を待ち、タスク（２）にはレコード３（同期要求メッセージ）がキューにキューイングされて処理を待ちかつレコード１のデータが出力ファイル１１に書出最中であり、タスク（３）はレコード３（同期要求メッセージ）に対する同期応答を送信完了し状態にある。処理済レコード番号９には、出力ファイル１にはレコード１（書出完了レコード番号）が設定され、出力ファイル２にはレコード１が設定され、出力ファイル３にはレコード３が設定されている。
【００４４】
以上の図５では、タスク（３）のみが同期完了し、同期テーブル４のタスク（３）のフィールドに同期レコード番号＝３が設定され、他のタスク（１）、（２）は未だ同期完了していなく、処理中である。
【００４５】
図６は、本発明の説明図（その４）を示す。
（８）データ振分手段２が、（７）に続けて、タスク（１）、（２）からも同期完了応答メッセージ（同期完了レコード３）を受信し、同期テーブル４のタスク（１）、（２）のフィールドにそれぞれ設定する（Ｓ８、Ｓ１１）。
【００４６】
（９）（８）で全タスク（１）、（２）、（３）から同期完了を受信してフィールドにそれぞれ、ここでは、レコード３（同期レコード番号）が設定されたと判明したので、同期レコード番号８のフィールドにレコード３（全てのタスクの同期完了レコード）を設定する（Ｓ１５）。
【００４７】
また、図示の状態では、タスク（１）にはレコード４がキューにキューイングされて処理を待ち、タスク（２）、（３）にはレコードがキューにキューイングされていない。処理済レコード番号９には、出力ファイル１にはレコード２（書出完了レコード番号）が設定され、出力ファイル２にはレコード１が設定され、出力ファイル３にはレコード３が設定されている。
【００４８】
以上の図６では、全タスク（１）、（２）、（３）が同期応答をデータ振分手段２に応答し、同期化が完了したので、同期レコード番号８のフィールドに同期レコード番号＝レコード３が設定されている。当該同期レコード番号＝レコード３が設定された以降で異常発生して復旧したときは、データ振分手段２は当該設定されている同期レコード番号＝レコード３の次の番号のレコードから読み込んで振分けて該当タスク６に依頼する。一方、依頼を受けたタスク６は処理済レコード番号のフィールドに設定されている自己用の書出完了レコード、例えば出力ファイル１に書出処理するタスク（１）はレコード２（書出完了レコード番号）の次の番号のレコード番号から出力ファイル１１への書出を再開し、同一およびそれ以前の番号のレコードについては書出処理をしなく、二重書出を抑止し短時間に書出処理を再開することが可能となる。
【００４９】
図７は、本発明の動作説明フローチャートを示す。
図７の（ａ）は、Ｓ２１は、自タスクのメッセージ受信する。
Ｓ２２は、データ書き出し依頼か判別する。ＹＥＳの場合には、Ｓ２３でデータ書き出し処理（後述する図７の（ｂ）のＳ３１からＳ３４）を実行したらＳ２１に戻る。一方、ＮＯの場合には、受信したメッセージが、書き出し要求のメッセージでないと判明したので、Ｓ２４に進む。
【００５０】
Ｓ２４は、同期要求か判別する。ＹＥＳの場合には、Ｓ２５で同期処理（後述する図７の（ｃ）のＳ４１）を実行したらＳ２１に戻る。一方、ＮＯの場合には、同期処理でもないと判明したので、ここでは、そのままＳ２１に戻り繰り返す。
【００５１】
以上のＳ２１からＳ２５によって、メッセージを受信した各タスク６は、データ書き出し要求メッセージを受信したときは書き出し処理（図７の（ｂ））を実行し、同期要求メッセージを受信したときは同期処理（図７の（ｃ））を実行したり、メッセージの種類に応じた適切な処理を実行することが可能となる。
【００５２】
図７の（ｂ）は、データ書き出し処理のフローチャートを示す。
図７の（ｂ）において、Ｓ３１は、トランザクション開始する。
Ｓ３２は、出力ファイルにデータ出力する。これは、図８の例えばタスク（１）がトランザクション開始し、データ出力して出力ファイル１１に書き出す。
【００５３】
Ｓ３３は、データ書出管理ファイル７の処理済レコード番号９の該当出力ファイルのフィールドに書出完了レコード番号を設定する（例えばレコード１を設定する）。
【００５４】
Ｓ３４は、トランザクション終了する。
以上のＳ３１からＳ３４によって、後述する図８の例えばタスク（１）は、データ出力して出力ファイル１１にデータを書き出した後、データ管理ファイル７の処理済レコード番号９の出力ファイル１のフィールドにレコード１（書出完了レコード番号）を設定する。これにより、異常発生して復旧したときに当該設定した書出完了レコード（ここでは、レコード１）の次の番号のレコード番号から出力ファイル１への書き出しを再開して二重書き出しを抑止し、短時間に書き出し処理を再開することが可能となる。
【００５５】
図７の（ｃ）は、同期処理フローチャートを示す。
図７の（ｃ）において、Ｓ４１は、データ振分手段に同期応答メッセージを送信する。これは、タスク６がキューから取り出したメッセージが同期要求メッセージの場合に（図７の（ａ）のＳ２４のＹＥＳの場合に）、同期応答メッセージ（データ振分手段２から通知された同期要求レコード番号を設定したメッセージ）をデータ振分手段２に返信する。これにより、データ振分手段２は、全てのタスクからの同期応答メッセージを受信したときに、既述した図６のＳ１５の矢印に示すように、同期レコード番号８に同期レコード番号を設定し、同期化を行うことが可能となる。
【００５６】
図８は、本発明の説明図（図７）を示す。
（１）タスク（１）がデータ出力し、出力ファイル１１にデータを書き出し完了した後、データ書出管理ファイル７の処理済レコード番号９の該当出力フィル、例えば出力ファイル（１）のフィールドにレコード１（書出完了レコード番号）を設定（更新）する。同様に、タスク（３）も、出力ファイル（３）のフィールドには、レコード３（書出完了レコード番号）で更新する。
【００５７】
図９は、本発明の動作説明フローチャートを示す。これは、異常発生して復旧したときに、データ振分手段２が実行する処理の例を示す。
図９において、Ｓ５１は、同期レコード番号８の読み出しを行う。これは、異常発生して復旧したときに、データ振分手段２が、まず、データ書出管理ファイル７中の同期レコード番号８に設定されている同期レコード番号を読み出す。
【００５８】
Ｓ５２は、入力データより、レコード番号＋１から読み込み再開する。これは、Ｓ５１で読み出した同期レコード番号＋１のレコード番号を、入力データより読み出し、当該読み出したレコードについて既述した振分処理を再開する。これにより、同期レコード番号と同一および以前の番号のレコードについて二重読み出して振分する事態を抑止し、短時間に振分処理を再開することが可能となる。尚、同期レコード番号＋１のレコード番号を入力データより読み出して振り分けて該当タスク６に依頼し、タスク６では更に、データ書出管理ファイル７の処理済データ位置９の該当ファイルの書出完了レコード番号＋１のレコード番号から出力ファイルへの書出を再開することにより、更に、二重書出を抑止して短時間に書出処理を再開することが可能となる。
【００５９】
図１０は、本発明の入力データ例を示す。これは、既述した入力データ１の例であって、ここでは、多数のオンライン処理端末２１から受信したデータを複数のＤＢ処理タスク２３がＤＢ２２に保存すると共に、トランザクションマネージャ２４がＤＢ２２に保存（更新、新規登録など）したデータ▲１▼，▲２▼，▲３▼を取りこみ、順データとして図示のようなレコード（データに、シーケンシャルな番号、検索用のキーを付加したレコード）を作成し、当該作成したレコードを本願発明で入力となる入力データ１として出力する。入力データが多量であって、キーをもとに分類定義テーブル２に設定されている定義に従い振り分けて該当出力ファイル１１に書き出すようにしている。
【００６０】
【発明の効果】
以上説明したように、本発明によれば、多量のレコードをキーで振り分けて複数のタスク６が出力ファイル１１にそれぞれ書き出す際に、複数のタスク６のレコード書出の同期化を行って同期レコード番号を記憶すると共に各タスク６で書出完了レコード番号を記憶しておき、異常発生して復旧したときに同期レコード番号の次から振分を再開すると共に各タスク６は書出完了レコード番号の次から書出を再開する構成を採用しているため、多量レコードの分類振分および書出時に異常が発生して復旧したときに二重分類振分および二重書出を抑止して短時間で分類振分処理および書出処理を再開して続行することが可能となる。
【図面の簡単な説明】
【図１】本発明のシステム構成図である。
【図２】本発明の動作説明フローチャートである。
【図３】本発明の説明図（その１）である。
【図４】本発明の説明図（その２）である。
【図５】本発明の説明図（その３）である。
【図６】本発明の説明図（その４）である。
【図７】本発明の動作説明フローチャートである。
【図８】本発明の説明図（図７）である。
【図９】本発明の動作説明フローチャートである。
【図１０】本発明の入力データ例である。
【符号の説明】
１：入力ファイル（入力データ）
２：データ振分手段
３：分類定義テーブル
４：同期テーブル
５：データ書出手段
６：タスク
７：データ書出管理ファイル
８：同期レコード番号
９：処理済データ位置
１１：出力ファイル
【図１】
0004048037.tif 000002
【図２】
0004048037.tif 000003
【図３】
0004048037.tif 000004
【図４】
0004048037.tif 000005
【図５】
0004048037.tif 000006
【図６】
0004048037.tif 000007
【図７】
0004048037.tif 000008
【図８】
0004048037.tif 000009
【図９】
0004048037.tif 000010
【図１０】
0004048037.tif 000011