(57)【要約】【課題】  既定の時間帯の中でバッチジョブを実行するコンピュータシステムにおいて、既定時間帯の終了時刻を超過してバッチジョブを処理させることを回避し、既定時間帯の終了時刻によるバッチジョブの強制中断によるバッチジョブの異常終了、および人の判断によるバッチ処理時間帯の延長を回避できるバッチジョブ実行制御方法を提供する。【解決手段】  バッチジョブ５０の実行前に、実行するバッチジョブ５０に関する情報および現在の時間情報に基づいて、バッチジョブ終了時刻を算出し、算出したバッチジョブ終了時刻がバッチ処理時間帯の終了時刻を超過してしまう場合、バッチジョブを実行せずに、次回のバッチ処理時間帯に実行するものである。【選択図】        図１ 
2005071171.tif 000002
【特許請求の範囲】
【請求項１】
バッチジョブを実行するバッチ処理時間帯が既定されており、前記バッチ処理時間帯中にシーケンシャルに繰り返しバッチ処理を行い、前記バッチ処理時間帯に処理できなかったバッチ処理は、処理の実行順番が守られていれば、次回の前記バッチ処理時間帯に実行することが許されるシステムにおけるバッチジョブ実行制御方法であって、
前記バッチジョブの実行前に、実行する前記バッチジョブに関する情報および現在の時間情報に基づいて、バッチジョブ終了時刻を算出し、算出したバッチジョブ終了時刻が前記バッチ処理時間帯の終了時刻を超過してしまう場合、前記バッチジョブを実行せずに、次回の前記バッチ処理時間帯に実行することを特徴とするバッチジョブ実行制御方法。
【請求項２】
バッチジョブを実行するバッチ処理時間帯が既定されており、前記バッチ処理時間帯中にシーケンシャルに繰り返しバッチ処理を行い、前記バッチ処理時間帯に処理できなかったバッチ処理は、処理の実行順番が守られていれば、次回の前記バッチ処理時間帯に実行することが許されるシステムにおけるバッチジョブ実行制御方法であって、
前記バッチ処理時間帯中に実行する前記バッチジョブに関する情報および現在の時間情報に基づいて、最後のバッチジョブ終了時刻を算出し、算出したバッチジョブ終了時刻が前記バッチ処理時間帯の終了時刻を超過してしまう場合、前記バッチ処理時間帯の開始時刻を早めて、バッチジョブを実行することを特徴とするバッチジョブ実行制御方法。
【請求項３】
請求項１または２記載のバッチジョブ実行制御方法において、
前記バッチジョブに関する情報は、前記バッチジョブのデータ処理時間および処理対象のデータ件数であることを特徴とするバッチジョブ実行制御方法。
【請求項４】
請求項３記載のバッチジョブ実行制御方法において、
前記バッチジョブで処理される入力ファイルを作成する際、前記入力ファイル名に対応して、そのデータ件数を登録することを特徴とするバッチジョブ実行制御方法。
【請求項５】
請求項３記載のバッチジョブ実行制御方法において、
前記バッチジョブを登録する際、前記バッチジョブに対応して、前記バッチジョブで処理される入力ファイルおよび前記入力ファイルのデータ１件当たりの処理時間を登録することを特徴とするバッチジョブ実行制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はコンピュータシステムで実施するバッチジョブ実行制御方法に関し、特に、バッチジョブの処理時間帯が既定されており、時間帯の延長等は厳禁であるが、既定の時間帯内に処理を終了できないバッチジョブの処理は次回のバッチジョブ処理時間帯に処理することが許容されている、コンピュータシステムでのバッチジョブ実行制御に適用して有効な技術に関する。
【背景技術】
【０００２】
コンピュータシステムでバッチ処理を実施する場合、既定の時間帯中にバッチジョブを実行することが一般的である。これに対し、コンピュータシステムのバッチ処理により扱うデータは様々であり、極端にデータ量が多い場合と少ない場合があるなどデータ量にバラツキがあるデータを処理する場合、ピーク時には既定された処理時間帯の終了時刻までに終了することができないケースがある。
【０００３】
このような場合、従来は、時間帯の終了時刻となった時点で強制的に処理中のバッチジョブを中断させ、中断したバッチジョブの処理および未処理のデータは、次回バッチ処理時間帯に処理するか、または、やむを得ず、既定のバッチ処理時間帯の終了時刻を人の判断により延長していた。
【０００４】
また、バッチジョブ処理サービスが遅延した場合でも、予め規定されたシステムサービス終了時間にシステムを停止させ、時間内に実行できなかったバッチジョブを翌システムサービス時に、本来実行されるべき営業日付での実行を可能とするものがあった（例えば、特許文献１参照）。
【特許文献１】特開２０００−１１２８８７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、従来では、限定された時間帯の中でバッチ処理を行うケースにおいて、バッチジョブの終了が既定の処理時間帯の終了時刻を超過してしまう場合は、終了時刻となった時点で稼働中のバッチジョブを強制的に中断するか、あるいは処理時間帯の終了時刻を延長するしかなかった。
【０００６】
また、特許文献１に記載のものも、システムサービス終了時間に実行中のバッチジョブは、強制的に中断され、強制的に中断されたバッチジョブを含めて、時間内に実行できなかったバッチジョブを翌システムサービス時に実行するので、バッチジョブの終了が既定の処理時間帯の終了時刻を超過してしまう場合では、必ず、正常終了しないバッチジョブが発生してしまう。
【０００７】
そのため、バッチジョブを強制的に中断した場合、中断されたバッチジョブの処理は無駄となり、また、バッチジョブの終了状態は異常終了となるため、ジョブの終了状態が正常終了でない原因は、終了時刻による強制中断なのか、障害によるものなのかを判断する必要があり、この判断を自動で行うことは困難であった。
【０００８】
また、例えば、顧客毎に１日のデータや１ヶ月のデータを処理するバッチジョブなどでは、処理の途中で中断されてしまった場合、バッチジョブで処理された結果のデータと処理できなかった結果のデータが混在してしまい、その後の処理において、整合性がとれなくなってしまうという問題点があった。
【０００９】
また、やむを得ずバッチ処理時間帯を延長する場合、バッチ処理の後続処理へ影響があり、人による判断が不可欠となり自動化が困難であるという問題があった。
【００１０】
そこで、本発明の目的は、既定の時間帯の中でバッチジョブを実行するコンピュータシステムにおいて、既定時間帯の終了時刻を超過してバッチジョブを処理させることを回避し、既定時間帯の終了時刻によるバッチジョブの強制中断によるバッチジョブの異常終了、および人の判断によるバッチ処理時間帯の延長を回避できるバッチジョブ実行制御方法を提供することにある。
【課題を解決するための手段】
【００１１】
本発明によるバッチジョブ実行制御方法は、バッチジョブを実行するバッチ処理時間帯が既定されており、バッチ処理時間帯中にシーケンシャルに繰り返しバッチ処理を行い、バッチ処理時間帯に処理できなかったバッチ処理は、処理の実行順番が守られていれば、次回のバッチ処理時間帯に実行することが許されるシステムにおけるバッチジョブ実行制御方法であって、バッチジョブの実行前に、実行するバッチジョブに関する情報および現在の時間情報に基づいて、バッチジョブ終了時刻を算出し、算出したバッチジョブ終了時刻がバッチ処理時間帯の終了時刻を超過してしまう場合、バッチジョブを実行せずに、次回のバッチ処理時間帯に実行するものである。
【００１２】
また、本発明によるバッチジョブ実行制御方法は、バッチジョブを実行するバッチ処理時間帯が既定されており、バッチ処理時間帯中にシーケンシャルに繰り返しバッチ処理を行い、バッチ処理時間帯に処理できなかったバッチ処理は、処理の実行順番が守られていれば、次回のバッチ処理時間帯に実行することが許されるシステムにおけるバッチジョブ実行制御方法であって、バッチ処理時間帯中に実行するバッチジョブに関する情報および現在の時間情報に基づいて、最後のバッチジョブ終了時刻を算出し、算出したバッチジョブ終了時刻がバッチ処理時間帯の終了時刻を超過してしまう場合、バッチ処理時間帯の開始時刻を早めて、バッチジョブを実行するものである。
【発明の効果】
【００１３】
本発明によれば、既定されたバッチ時間帯の終了時刻を超過してバッチジョブを処理させることがなく、既定されたバッチ時間帯の終了時刻によるバッチジョブの強制中断を回避することができる。
【００１４】
また、本発明によれば、バッチジョブの異常終了原因が時間帯終了時刻によるものなのか障害によるものなのかを判断する必要がなくなる。
【００１５】
また、本発明によれば、時間帯終了時刻を超過してしまい次回再度処理を実施し直すような無駄な処理が排除されるため、その分コンピュータ資源を効率的に利用することができる。
【発明を実施するための最良の形態】
【００１６】
以下、本発明の実施の形態を図面に基づいて詳細に説明する。
【００１７】
図１は本発明の一実施の形態のバッチジョブ実行制御方法を実施するためのバッチ処理部の構成を示す構成図である。
【００１８】
図１において、バッチ処理部１０は、バッチジョブの実行制御を行うバッチ処理実行制御部２０、バッチ処理実行制御部２０がバッチジョブの実行制御を行うために必要なバッチジョブ情報ファイル３０、入力データ情報ファイル４０、バッチ処理時間帯に実行されるバッチジョブ５０、バッチジョブ５０で処理される入力データが格納される入力データ格納ファイル６０から構成されている。
【００１９】
また、バッチ処理部１０は、例えば、コンピュータシステムなどに設けられ、バッチ処理実行制御部２０によりバッチジョブを実行し、その処理結果がコンピュータシステムにより使用される。
【００２０】
なお、バッチ処理部１０は、コンピュータシステムに設けられたバッチ処理用コンピュータなどに設けられ、バッチ処理用コンピュータまたはバッチ処理用コンピュータに接続された処理システムなどにより、バッチジョブの処理結果を利用するようにしてもよい。
【００２１】
バッチジョブ情報ファイル３０は、バッチジョブ５０を実行する時間帯の情報が格納されたバッチ時間帯情報レコード３１と、バッチジョブ５０毎にその名称、バッチジョブ５０が入力とする入力ファイル名、およびデータ１件の処理時間の情報が格納されたバッチジョブ情報レコード３２を有している。
【００２２】
また、入力データ情報ファイル４０は、入力データ格納ファイル６０に格納された各入力データのファイル名とそのデータ件数を保持する入力データ情報レコード４１を有する。
【００２３】
次に、この実施の形態のバッチ処理実行制御部２０によるバッチジョブ実行制御の処理動作について説明する。
【００２４】
まず、バッチ処理実行制御部２０は、バッチジョブのデータ１件当たりの処理時間および入力ファイル名が格納されたバッチジョブ情報レコード３２と入力データ情報ファイル４０に保持される入力データ情報レコード４１を参照し、バッチジョブ５０の処理に要する時間を算出する。
【００２５】
また、バッチ処理実行制御部２０は、バッチ処理部１０が設けられているコンピュータシステムやバッチ処理用コンピュータから現在日時（コンピュータ内に保持するシステム日付、および時刻）を取得し、算出した処理時間と取得した現在の日時によりバッチジョブ終了時刻を算出し、バッチ時間帯情報レコード３１に格納されたバッチ時間帯終了時刻と比較することによりバッチジョブ５０の実行可否を判断する。
【００２６】
そして、バッチ処理実行制御部２０は、バッチジョブ終了時刻がバッチ時間帯終了時刻を超過していなければ、バッチジョブ５０を起動しバッチジョブ５０は入力データ格納ファイル６０を入力し処理を実行し、また、バッチジョブ終了時刻がバッチ時間帯終了時刻を超過していた場合、以降のバッチジョブの起動は行わない。
【００２７】
ここで、バッチ処理実行制御部２０による、バッチ時間帯に実行するバッチジョブの実行可否を決定する処理の詳細について説明する。
【００２８】
図２はバッチ時間帯に実行するバッチジョブの実行可否を決定する処理を示すフローチャートであり、バッチジョブのスケジューリング情報により、実行対象のバッチジョブが決定し、その後、実行するバッチジョブの実行可否を決定する処理を示している。
【００２９】
まず、予め設定されたバッチジョブのスケジューリング情報などにより、次に実施対象のバッチジョブを決定する（Ｓ１００）。
【００３０】
そして、バッチ処理実行制御部２０は、予め登録されたバッチ時間帯終了時刻（ａ）、実行対象バッチジョブのデータ１件当たりの処理時間（ｂ）、および実行対象バッチジョブが入力とする入力ファイル名（ｃ）を、バッチジョブ情報ファイル３０に格納されたバッチ時間帯情報レコード３１、およびバッチジョブ情報レコード３２から取得し（Ｓ１０１）、取得した入力ファイル名（ｃ）を元に、入力データ情報ファイル４０に格納された入力データ情報レコード４１から、これから実行するバッチジョブで処理するデータ件数（ｄ）を取得する（Ｓ１０２）。
【００３１】
そして、実行対象バッチジョブのデータ１件当たりの処理時間（ｂ）とバッチジョブで処理するデータ件数（ｄ）からバッチジョブの処理時間（Ａ）を算出する（Ｓ１０３）。また、現在の日時を取得するために、コンピュータシステムやバッチ処理用コンピュータからシステム日付および時刻（ｅ）を取得し（Ｓ１０４）、取得したシステム日付および時刻（ｅ）にバッチジョブの処理時間（Ａ）を加算することにより、実行対象のバッチジョブ終了時刻（Ｂ）を算出する（Ｓ１０５）。
【００３２】
そして、バッチ処理実行制御部２０は、算出した実行対象のバッチジョブ終了時刻（Ｂ）とバッチ時間帯終了時刻（ａ）を比較し、バッチジョブ終了時刻（Ｂ）がバッチ時間帯終了時刻（ａ）以内に収まる（（Ｂ）＜＝（ａ））かを判断する（Ｓ１０６）。
【００３３】
Ｓ１０６でバッチジョブ終了時刻（Ｂ）がバッチ時間帯終了時刻（ａ）以内に収まる（（Ｂ）＜＝（ａ））と判断されると、実行対象のバッチジョブを実行し（Ｓ１０７）、Ｓ１０６でバッチジョブ終了時刻（Ｂ）がバッチ時間帯終了時刻（ａ）以内に収まらない（（Ｂ）＞（ａ））と判断されると、実行対象のバッチジョブの実行を中止して、現在のバッチ処理時間帯でのバッチジョブ実行処理を終了し、未処理のデータを次回バッチ処理対象分のデータとする（Ｓ１０８）。
【００３４】
次に、この実施の形態のバッチ処理実行制御部２０によるバッチジョブ実行制御の具体例について説明する。
【００３５】
図３〜図６はバッチ処理実行制御部によるバッチジョブ実行制御の具体例を説明するための説明図である。
【００３６】
まず、図３に示すように、バッチジョブ情報ファイル３０のバッチジョブ情報レコード３２には、バッチ名称として、「ＢＴ００１」、「ＢＴ００２」、…、「ＢＴ００Ｘ」という情報が格納され、「ＢＴ００１」のバッチジョブは、入力ファイル名が「Ａ」、データ１件の処理時間が「１分」という情報が格納され、「ＢＴ００２」のバッチジョブは、入力ファイル名が「Ｂ」、データ１件の処理時間が「２分」という情報が格納され、「ＢＴ００Ｘ」のバッチジョブは、入力ファイル名が「Ｘ」、データ１件の処理時間が「１０分」という情報が格納されている。
【００３７】
また、入力データ情報ファイル４０の入力データ情報レコード４１には、入力ファイル名として、「Ａ」、「Ｂ」、…、「Ｘ」という情報が格納され、ファイル名「Ａ」のデータは、データ件数が「１０件」という情報が格納され、ファイル名「Ｂ」のデータは、データ件数が「１０件」という情報が格納され、ファイル名「Ｘ」のデータは、データ件数が「２件」という情報が格納されている。
【００３８】
また、バッチジョブ情報ファイル３０のバッチ時間帯情報レコード３１に、開始時刻として、「０：００」、終了時刻として、「５：００」が格納されており、０：００〜５：００の間がバッチ時間帯となる。
【００３９】
まず、図３に示すように、バッチ時間帯開始時刻の「０：００」になると、まず、バッチジョブのスケジューリング情報などにより、「ＢＴ００１」のバッチジョブを決定する。
【００４０】
「ＢＴ００１」のバッチジョブは、入力ファイル名が「Ａ」で、入力ファイル名「Ａ」のデータ件数が「１０件」、入力ファイル名「Ａ」のデータ１件の処理時間が「１分」なので、「ＢＴ００１」のバッチジョブは処理時間が「１０分」となり、バッチジョブの終了時刻は「０：１０」となる。
【００４１】
この終了時刻は、バッチ時間帯終了時刻の「５：００」に収まるため、「ＢＴ００１」のバッチジョブは起動ＯＫとなり、実行される。
【００４２】
そして、図４に示すように、「ＢＴ００１」のバッチジョブの処理が終了（「０：１０」に終了）すると、バッチジョブのスケジューリング情報などにより、「ＢＴ００２」のバッチジョブを決定する。
【００４３】
「ＢＴ００２」のバッチジョブは、入力ファイル名が「Ｂ」で、入力ファイル名「Ｂ」のデータ件数が「１０件」、入力ファイル名「Ｂ」のデータ１件の処理時間が「２分」なので、「ＢＴ００２」のバッチジョブは処理時間が「２０分」となり、バッチジョブの終了時刻は「０：３０」となる。
【００４４】
この終了時刻は、バッチ時間帯終了時刻の「５：００」に収まるため、「ＢＴ００２」のバッチジョブは起動ＯＫとなり、実行される。
【００４５】
そして、図５に示すように、「ＢＴ００Ｘ」の前のバッチジョブの処理が終了（「４：５０」に終了）すると、バッチジョブのスケジューリング情報などにより、「ＢＴ００Ｘ」のバッチジョブを決定する。
【００４６】
「ＢＴ００Ｘ」のバッチジョブは、入力ファイル名が「Ｘ」で、入力ファイル名「Ｘ」のデータ件数が「２件」、入力ファイル名「Ｘ」のデータ１件の処理時間が「１０分」なので、「ＢＴ００Ｘ」のバッチジョブは処理時間が「２０分」となり、バッチジョブの終了時刻は「５：１０」となる。
【００４７】
この終了時刻は、バッチ時間帯終了時刻の「５：００」に収まらないため、「ＢＴ００Ｘ」のバッチジョブは起動ＮＧとなり、実行されずに、翌日に持ち越される。
【００４８】
そして、図６に示すように、翌日のバッチ時間帯開始時刻の「０：００」になると、まず、バッチジョブのスケジューリング情報などにより、まずは、前日から持ち越された「ＢＴ００Ｘ」のバッチジョブを決定する。
【００４９】
「ＢＴ００Ｘ」のバッチジョブは、入力ファイル名が「Ｘ」で、入力ファイル名「Ｘ」のデータ件数が「２件」、入力ファイル名「Ｘ」のデータ１件の処理時間が「１０分」なので、「ＢＴ００Ｘ」のバッチジョブは処理時間が「２０分」となり、バッチジョブの終了時刻は「０：２０」となる。
【００５０】
この終了時刻は、バッチ時間帯終了時刻の「５：００」に収まるため、「ＢＴ００Ｘ」のバッチジョブは起動ＯＫとなり、実行される。
【００５１】
そして、その後は、その日の通常のバッチジョブのスケジューリング情報などにより、バッチジョブが決定されて、同様に処理される。
【００５２】
このように、この実施の形態では、予め実行対象のバッチジョブについて、その終了時刻を算出し、バッチ時間帯終了時刻に収まらない場合には、バッチジョブの実行を中止して、バッチジョブの実行中にバッチ時間帯終了時刻になり、バッチジョブが強制終了されてしまうことを回避することが可能である。
【００５３】
次に、バッチジョブ情報ファイル３０の具体例について説明する。
【００５４】
図７はバッチジョブ情報ファイルの一例を示した図である。
【００５５】
図７において、バッチジョブ情報ファイル３０は、バッチ時間帯情報レコード（１レコード）３１とバッチジョブ毎のデータ１件当たりの処理時間、バッチジョブが入力とするファイル名等が格納されたバッチジョブ情報レコード（複数レコード）３２を有するが、各レコードは各レコード中に設定されたキー情報により管理される。
【００５６】
図７に示す例では、バッチ時間帯情報レコード（１レコード）３１は、キー値がオールゼロのレコードとし、複数レコード存在するバッチジョブ情報レコード３２は、シーケンシャルにつけられたキー値により管理される。
【００５７】
そして、バッチ時間帯情報レコード（１レコード）３１のキー値である、オールゼロのレコードのバッチ時間帯開始時刻およびバッチ時間帯終了時刻の情報（例えば、開始時刻２：００、終了時刻５：００）は、その後に続くシーケンシャルにつけられたキー値を持つ複数のバッチジョブ情報レコード３２に適用され、そのバッチジョブのバッチ時間帯情報として使用される。
【００５８】
また、バッチ時間帯情報レコード（１レコード）３１のキー値である、別のオールゼロのレコードのバッチ時間帯開始時刻およびバッチ時間帯終了時刻の情報（例えば、開始時刻０：００、終了時刻２：００）があれば、その後に続くシーケンシャルにつけられたキー値を持つ複数のバッチジョブ情報レコード３２は、そのバッチ時間帯情報が適用される。
【００５９】
これによりバッチジョブ情報ファイル３０中に２種類の意味を持つレコードを配置することが可能である。
【００６０】
なお、この実施の形態では、バッチ時間帯終了時刻を基準に当該時刻をバッチジョブの処理終了時刻が超過するか否かにより、バッチジョブの実行可否を判断したが、例えば、バッチジョブの処理時間からバッチ時間帯の開始時刻を早めてバッチジョブを実行するようなことも可能である。この場合、バッチジョブの処理量も増やすことも可能となる。
【００６１】
また、この実施の形態では、バッチジョブ情報ファイル３０および入力データ情報ファイル４０の情報に基づいて、バッチジョブの処理時間を算出しているが、バッチジョブの処理時間を算出できる情報であれば、他の情報に基づいて、バッチジョブの処理時間を算出してもよい。
【図面の簡単な説明】
【００６２】
【図１】本発明の一実施の形態のバッチジョブ実行制御方法を実施するためのバッチ処理部の構成を示す構成図である。
【図２】本発明の一実施の形態におけるバッチ時間帯に実行するバッチジョブの実行可否を決定する処理を示すフローチャートである。
【図３】本発明の一実施の形態におけるバッチ処理実行制御部によるバッチジョブ実行制御の具体例を説明するための説明図である。
【図４】本発明の一実施の形態におけるバッチ処理実行制御部によるバッチジョブ実行制御の具体例を説明するための説明図である。
【図５】本発明の一実施の形態におけるバッチ処理実行制御部によるバッチジョブ実行制御の具体例を説明するための説明図である。
【図６】本発明の一実施の形態におけるバッチ処理実行制御部によるバッチジョブ実行制御の具体例を説明するための説明図である。
【図７】本発明の一実施の形態におけるバッチジョブ情報ファイルの一例を示した図である。
【符号の説明】
【００６３】
１０…バッチ処理部、２０…バッチ処理実行制御部、３０…バッチジョブ情報ファイル、３１…バッチ時間帯情報レコード、３２…バッチジョブ情報レコード、４０…入力データ情報ファイル、４１…入力データ情報レコード、５０…バッチジョブ、６０…入力データ格納ファイル。
【図１】
2005071171.tif 000003
【図２】
2005071171.tif 000004
【図３】
2005071171.tif 000005
【図４】
2005071171.tif 000006
【図５】
2005071171.tif 000007
【図６】
2005071171.tif 000008
【図７】
2005071171.tif 000009