(57)【要約】【課題】ジョブの実行の遅延の発生を早期に予測できるようにする。【解決手段】情報処理装置１０は、監視手段１３と予測手段１４とを有する。監視手段１３は、第１のジョブ１ａの実行中に、第１のジョブ１ａの実行により出力されたデータ量を監視する。予測手段１４は、第１のジョブ１ａの実行により出力されたデータ量に基づいて、第１のジョブ１ａの実行により出力されたデータを用いた処理を行う第２のジョブ１ｂの実行が、予め設定された期限までに終了できるかどうかを予測する。【選択図】図１
2015026197.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータに、
第１のジョブの実行中に、前記第１のジョブの実行により出力されたデータ量を監視し、
前記第１のジョブの実行により出力されたデータ量に基づいて、前記第１のジョブの実行により出力されたデータを用いた処理を行う第２のジョブの実行が、予め設定された期限までに終了できるかどうかを予測する、
処理を実行させるプログラム。
【請求項２】
前記コンピュータに、さらに、
実行予定の複数のジョブの中から、入力ファイルからの抽出条件に合致するレコードの抽出、および抽出したレコードの出力を行うジョブを、前記第１のジョブとして特定する処理を実行させることを特徴とする請求項１記載のプログラム。
【請求項３】
ジョブの特定では、ジョブを実行した場合に、入力ファイル内のすべてのレコードを、所定量ずつ読み込むか否かに基づいて、該ジョブを前記第１のジョブとして特定するかどうかを判断することを特徴とする請求項２記載のプログラム。
【請求項４】
ジョブの特定では、ジョブを実行した場合に、入力ファイル内の複数のレコードのうち、前記抽出条件に適合するレコードを、加工せずに出力するか否かに基づいて、該ジョブを前記第１のジョブとして特定するかどうかを判断することを特徴とする請求項２または３記載のプログラム。
【請求項５】
ジョブの特定では、ジョブの実行によりデータの出力先となるファイルの識別情報が、前記抽出条件を定義するファイルで指定されているか否かに基づいて、該ジョブを前記第１のジョブとして特定するかどうかを判断することを特徴とする請求項２乃至４のいずれかに記載のプログラム。
【請求項６】
ジョブの特定では、ジョブを実行した場合に、前記抽出条件を定義するファイルが１回の読み込み処理で読み込まれたか否かに基づいて、該ジョブを前記第１のジョブとして特定するかどうかを判断することを特徴とする請求項２乃至５のいずれかに記載のプログラム。
【請求項７】
予測では、前記第１のジョブの実行により出力されたデータ量と、前記期限までに前記第２のジョブの実行により処理を施すことが可能なデータ量とを比較することを特徴とする請求項１乃至６のいずれかに記載のプログラム。
【請求項８】
予測では、前記第１のジョブの実行により出力されたデータ量が、前記期限までに前記第２のジョブの実行により処理を施すことが可能なデータ量を超えた時点で、アラームを出力することを特徴とする請求項１乃至７のいずれかに記載のプログラム。
【請求項９】
予測では、前記第１のジョブの実行により出力されたデータ量に基づいて、前記第２のジョブの実行時間を予測し、予測された該実行時間に基づいて、予め設定された期限までに終了できるかどうかを予測することを特徴とする請求項１乃至８のいずれかに記載のプログラム。
【請求項１０】
前記コンピュータに、さらに、
実行予定の複数のジョブの中から、入力ファイルからの抽出条件に合致するレコードの抽出、および抽出したレコードの出力を行うジョブを、前記第１のジョブとして特定し、
特定されたジョブの実行により出力されるレコードを用いた処理を前記第２のジョブとして特定し、
特定された前記第２のジョブを表示して、前記第２のジョブの前記期限の入力を受け付ける、
処理を実行させることを特徴とする請求項１乃至９記載のプログラム。
【請求項１１】
コンピュータが、
第１のジョブの実行中に、前記第１のジョブの実行により出力されたデータ量を監視し、
前記第１のジョブの実行により出力されたデータ量に基づいて、前記第１のジョブの実行により出力されたデータを用いた処理を行う第２のジョブの実行が、予め設定された期限までに終了できるかどうかを予測する、
ジョブ遅延検知方法。
【請求項１２】
第１のジョブの実行中に、前記第１のジョブの実行により出力されたデータ量を監視する監視手段と、
前記第１のジョブの実行により出力されたデータ量に基づいて、前記第１のジョブの実行により出力されたデータを用いた処理を行う第２のジョブの実行が、予め設定された期限までに終了できるかどうかを予測する予測手段と、
を有する情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のジョブを実行する場合のジョブ遅延検知方法、情報処理装置、およびプログラムに関する。
【背景技術】
【０００２】
コンピュータシステムで実行する処理の中には、実行可能な期間が制限された処理がある。例えばバッチ業務について、前日のオンラインの業務終了後から、翌日のオンライン業務開始（デッドラインと呼ぶ）までが、実行可能な期間として指定されることがある。バッチ業務は、例えば複数のジョブを所定の順番で実行することで達成される。そこで、コンピュータシステムでは、指定された期間内に、バッチ業務に含まれるすべてのジョブが実行できるように、各ジョブの実行開始タイミングがスケジューリングされる。
【０００３】
ただし、ジョブの実行時間が予定通りとならないこともある。そこで多くの運用現場では、オペレータがバッチ業務の遅延監視をしている。
例えば以下の手順で遅延監視が行われる。
１．システムの管理者が、過去の実行履歴データ（稼働実績）を元に、クリティカルパスを導出し、クリティカルパス上のジョブの実行状況を監視する。クリティカルパスとは、ジョブの実行の前後関係に関する制約を有するジョブ群（ジョブネット）のうち、実行の終了時刻が最後となるジョブが実行させるまでの、ジョブの実行順を示す情報である。クリティカルパスに含まれるジョブの実行が遅延すると、ジョブネット全体の処理完了時刻が遅れることとなる。そこで管理者は、クリティカルパス上の任意のジョブを監視対象ジョブとして選定する。例えば、長時間走行するジョブや、実行時間が大きく変動する可能性が高いジョブが、管理対象ジョブとして選定される。
２．管理者は、監視対象ジョブを、遅延判断基準となる終了予測時間などと共に、監視対象としてシステムに定義する。
３．システムでは、終了予測時間になっても監視対象ジョブの実行が終了しない場合にアラームを出力する。
【０００４】
なおバッチ処理で扱われるデータ量が変動した場合や、バッチ処理システムにおいて障害が発生した場合でも、バッチジョブを所定の時刻までに完了させる技術も考えられている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１２−１２８７７０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかし、終了予定時刻になるのを待って、その時点で管理対象ジョブが終了しない場合に遅延を検知していたのでは、検知時期が遅すぎ、遅延に対する対処が困難となる場合がある。例えば、早い段階でジョブの遅延の発生を予見できれば、重要度の低いジョブの実行を翌日に回すことで、バッチ業務の終了時刻を守ることが可能な場合がある。他方、オンライン業務の開始間近になって、ジョブの遅延を検知しても、未処理のジョブの中に翌日に回せるジョブが残っていない可能性がある。このような場合、実行可能期間内にバッチ業務を完了できなくなってしまう。
【０００７】
１つの側面では、本件は、ジョブの実行の遅延の発生を早期に予測することを目的とする。
【課題を解決するための手段】
【０００８】
１つの案では、コンピュータに、第１のジョブの実行中に、第１のジョブの実行により出力されたデータ量を監視し、第１のジョブの実行により出力されたデータ量に基づいて、第１のジョブの実行により出力されたデータを用いた処理を行う第２のジョブの実行が、予め設定された期限までに終了できるかどうかを予測する、処理を実行させるプログラムが提供される。
【発明の効果】
【０００９】
１態様によれば、ジョブの実行の遅延の発生を早期に予測できる。
【図面の簡単な説明】
【００１０】
【図１】第１の実施の形態に係る情報処理装置の機能構成例を示す図である。
【図２】第２の実施の形態のシステム構成の一例を示す図である。
【図３】バッチ業務の一例を示す図である。
【図４】本運用時の監視処理を示す図である。
【図５】サーバのハードウェアの一構成例を示す図である。
【図６】テスト環境で動作するサーバの機能を示すブロック図である。
【図７】ジョブ定義情報の一例を示す図である。
【図８】稼働実績管理表の一例を示す図である。
【図９】相関関係表の一例を示す図である。
【図１０】実行時間情報リストの一例を示す図である。
【図１１】テスト運用されるサーバにおける処理手順の一例を示すフローチャートである。
【図１２】抽出ジョブの仕様／特性の一例を示す図である。
【図１３】抽出ジョブ特定処理の概要を示す図である。
【図１４】テスト運用の処理手順の一例を示すフローチャートである。
【図１５】抽出ジョブの処理手順の一例を示すフローチャートである。
【図１６】読み込み解析処理の手順の一例を示すフローチャートである。
【図１７】読み込み処理管理テーブルの一例を示す図である。
【図１８】書き込み解析処理の手順の一例を示すフローチャートである。
【図１９】ファイルオフセット設定解析処理の手順の一例を示すフローチャートである。
【図２０】ファイルクローズ設定解析処理の手順の一例を示すフローチャートである。
【図２１】相関関係式導出処理の手順の一例を示すフローチャートである。
【図２２】更新された稼働実績管理表の一例を示す図である。
【図２３】相関関係式が設定されたジョブ定義情報の一例を示す図である。
【図２４】加工ジョブ探索処理の手順の一例を示すフローチャートである。
【図２５】管理ＤＢの情報転送の一例を示す図である。
【図２６】運用環境で動作するサーバの機能を示す図である。
【図２７】本運用の処理手順の一例を示すフローチャートである。
【図２８】監視対象ジョブ設定処理の手順の一例を示すフローチャートである。
【図２９】ソートされた実行時間情報リストの一例を示す図である。
【図３０】監視対象候補一覧画面の一例を示す図である。
【図３１】終了予定時刻を入力した監視対象候補一覧画面の例を示す図である。
【図３２】監視対象ジョブリストの一例を示す図である。
【図３３】遅延予測処理の手順の一例を示すフローチャートである。
【図３４】遅延予測処理中の監視対象ジョブリストの一例を示す図である。
【図３５】アラーム出力時の監視対象ジョブリストの一例を示す図である。
【図３６】アラーム表示画面の一例を示す図である。
【発明を実施するための形態】
【００１１】
以下、本実施の形態について図面を参照して説明する。なお各実施の形態は、矛盾のない範囲で複数の実施の形態を組み合わせて実施することができる。
〔第１の実施の形態〕
図１は、第１の実施の形態に係る情報処理装置の機能構成例を示す図である。第１の実施の形態に係る情報処理装置１０は、特定手段１１、期限設定手段１２、監視手段１３、および予測手段１４を有している。
【００１２】
特定手段１１は、実行予定の複数のジョブ１ａ，１ｂ，・・・の中から、入力ファイルからの抽出条件に合致するレコードの抽出、および抽出したレコードの出力を行うジョブ（以下、抽出ジョブと呼ぶ）を、第１のジョブとして特定する。例えば特定手段１１は、複数のジョブ１ａ，１ｂ，・・・のテスト運用時の動作に基づいて、第１のジョブを特定する。
【００１３】
テスト運用では、予めジョブネットなどで示される順番でジョブが実行される。例えば最初に入力ファイル２ａから複数のレコードを読み込んで、抽出条件に合致するレコードを出力ファイル３ａに書き出すジョブ１ａが実行される。次に出力ファイル３ａに書き出されたレコードを読み出し、各レコードを加工するジョブ１ｂが実行される。特定手段１１は、ジョブ１ａとジョブ１ｂとで実行された処理を解析し、ジョブ１ａがレコードの抽出処理を行う抽出ジョブであると認識する。そして特定手段１１は、例えば第１のジョブの識別情報「ジョブ＃１」を期限設定手段１２と監視手段１３に通知する。
【００１４】
期限設定手段１２は、第１のジョブの実行により出力されたデータを用いた処理を行う第２のジョブの実行終了の期限を設定する。図１の例では、ジョブ１ａが第１のジョブであり、ジョブ１ｂが第２のジョブとなる。
【００１５】
例えば期限設定手段１２は、第２のジョブをモニタに表示して、ユーザからの第２のジョブの期限の入力を受け付ける。また期限設定手段１２は、テスト運用の実績により、第２のジョブの平均実行時間を求め、その平均実行時間に基づいて期限を設定してもよい。第２のジョブの実行開始から、例えば平均実行時間に１以上の係数を乗算して得られる時間経過後の時間を、期限とすることができる。期限設定手段１２は、設定した期限を、予測手段１４に通知する。
【００１６】
監視手段１３は、第１のジョブの実行中に、第１のジョブの実行により出力されたデータ量（出力データ量）を監視する。例えば監視手段１３は、複数のジョブ１ａ，１ｂ，・・・の本運用での実行が開始されると、第１のジョブとして特定されたジョブ１ａの実行による出力データ量を定期的に計測する。
【００１７】
図１の例では、第１のジョブとして特定されたジョブ１ａが実行されると、入力ファイル２ｂ内のレコードが読み出され、抽出条件に合致するレコードが出力ファイル３ｂに書き出される。そこで監視手段１３は、例えば出力ファイル３ｂのサイズを、ジョブ１ａの出力データ量とする。監視手段１３は、ジョブ１ａの出力データ量を、予測手段１４に通知する。
【００１８】
予測手段１４は、第１のジョブの実行により出力されたデータ量に基づいて、第１のジョブの実行により出力されたデータを用いた処理を行う第２のジョブの実行が、予め設定された期限までに終了できるかどうかを予測する。例えば予測手段１４は、第１のジョブの実行により出力されたデータ量と、期限までに第２のジョブの実行により処理を施すことが可能なデータ量とを比較することで、第２のジョブの実行が、予め設定された期限までに終了できるかどうかを予測する。期限までに処理可能なデータ量は、例えば第２のジョブの開示時刻と期限との差分時間に、定数「α」（αは正の実数）を乗算して算出できる。αは、単位時間当たりに処理可能なデータ量である。αの値は、例えばテスト運用時に計測しておくことができる。第２の処理の開始時刻は、例えば現在の時刻と、第１のジョブの残りの処理時間から予測できる。第１のジョブの残りの処理時間は、例えば入力ファイル２ｂ内の未処理のレコード数を、単位時間値に処理可能なレコード数で除算することで計算できる。なお第１のジョブの処理時間が第２のジョブの処理時間に比べ極めて短いことが分かっている場合、現在の時刻を、第２のジョブの開始時刻としてもよい。
【００１９】
また予測手段１４は、第１のジョブの実行により出力されたデータ量に基づいて、第２のジョブの実行時間を予測することもできる。この場合、予測手段１４は、予測された実行時間に基づいて、予め設定された期限までに終了できるかどうかを予測する。
【００２０】
さらに、予測手段１４は、例えば第１のジョブの実行により出力されたデータ量が、期限までに第２のジョブの実行により処理を施すことが可能なデータ量を超えた時点で、アラーム１５を出力する。アラーム１５は、モニタに表示される。
【００２１】
このような情報処理装置１０によれば、複数のジョブ１ａ，１ｂのテスト運用時に、特定手段１１により第１のジョブが特定される。次に期限設定手段１２により、第１のジョブの出力ファイルを使用する第２のジョブの実行終了の期限が設定される。そして複数のジョブ１ａ，１ｂの本運用が開始されると、監視手段１３により、ジョブ１ａの出力データ量が監視される。そして予測手段１４により、出力データ量に基づいて、ジョブ１ｂの実行が期限内に終了できるかどうかが予測される。期限内に終了できないと予測された場合、予測手段１４によりアラーム１５が出力される。
【００２２】
これにより、第２のジョブの実行を期限までに終了できない見込みであることを、第２のジョブに先行して実行される第１のジョブの実行途中で、ユーザに通知できる。すなわち、期限になっても第２のジョブが終了していないことを確認してジョブの遅延を検知する場合に比べ、早期にジョブの遅延を予測検知することができる。ジョブの遅延の発生を、事前に検知できれば、その後の対応が容易となる。例えばバッチ業務のようにデッドラインが決まっている場合、優先度の低いジョブの実行を翌日に移行するといった対処を行い、途中のジョブが遅延してもデッドラインまでにバッチ業務が終了できるようにすることができる。
【００２３】
ところで、抽出ジョブを第１のジョブとする場合、抽出ジョブを精度良く見つけ出すことが重要となる。
抽出ジョブには、入力ファイル内のすべてのレコードを、所定量ずつ読み込むという特徴がある。そこで特定手段１１は、例えば、ジョブを実行した場合に、入力ファイル内のすべてのレコードを、所定量ずつ読み込むか否かに基づいて、該ジョブを第１のジョブとして特定するかどうかを判断することができる。
【００２４】
また抽出ジョブには、入力ファイル内の複数のレコードのうち、抽出条件に適合するレコードを、加工せずに出力するという特徴もある。そこで特定手段１１は、例えば、ジョブを実行した場合に、入力ファイル内の複数のレコードのうち、抽出条件に適合するレコードを、加工せずに出力するか否かに基づいて、該ジョブを第１のジョブとして特定するかどうかを判断することができる。
【００２５】
また抽出ジョブには、複数のファイルにデータ出力を行った場合に、複数のファイルそれぞれの識別情報が、抽出条件を定義するファイルで指定されているという特徴がある。そこで特定手段１１は、例えば、ジョブの実行により、複数のファイルにデータ出力が行われた場合に、抽出条件を定義するファイルを参照する。そして特定手段１１は、複数のファイルそれぞれの識別情報が、抽出条件を定義するファイルで指定されているか否かに基づいて、そのジョブを第１のジョブとして特定するかどうかを判断することができる。
【００２６】
さらに抽出ジョブには、抽出条件がファイルに定義されている場合、そのファイルは１回の読み込み処理で読み込まれるという特徴がある。そこで、特定手段１１は、ジョブを実行した場合に、抽出条件を定義するファイルが１回の読み込み処理で読み込まれたか否かに基づいて、該ジョブを第１のジョブとして特定するかどうかを判断することができる。
【００２７】
なお特定手段１１は、上記の抽出ジョブの特徴のうちの複数の特徴を組み合わせて、第１のジョブを特定してもよい。
以上のようにして、第１の実施の形態によれば、長時間化するジョブが実行開始する前の段階での遅延予測を実現することができる。すなわち、加工処理が長時間化するかどうかは、先行ジョブである抽出処理の結果による。抽出処理結果の抽出データの大きさが大きいほど、以降の処理の実行時間が長くなる。よって、抽出処理を行うジョブを検出し、その出力データ量に着目することで、長時間化するジョブの実行開始前に遅延予測が可能となる。
【００２８】
なお情報処理装置１０は、例えばプロセッサやメモリを有するコンピュータである。その場合、特定手段１１、期限設定手段１２、監視手段１３、および予測手段１４は、例えば情報処理装置１０が有するプロセッサが、メモリに格納されたプログラムを実行することで実現することができる。また、図１に示した各要素間を接続する線は通信経路の一部を示すものであり、図示した通信経路以外の通信経路も設定可能である。
【００２９】
〔第２の実施の形態〕
次に第２の実施の形態について説明する。第２の実施の形態は、テスト環境のサーバにおいて評価関数式などの、ジョブの遅延検出に利用する情報を生成し、運用環境のサーバで、その情報に基づいてバッチ業務中のジョブの遅延を検出するものである。
【００３０】
図２は、第２の実施の形態のシステム構成の一例を示す図である。ネットワーク２０を介して、複数のサーバ１００，２００と端末装置３１，３２，・・・とが接続されている。サーバ１００は、運用環境にあるコンピュータであり、オンラインまたはバッチの業務を実行する。サーバ２００は、テスト環境にあるコンピュータであり、オンラインまたはバッチの業務のテストを実施する。
【００３１】
このようなシステムを用いて、例えば、日中はオンライン処理がサーバ１００で実行され、夜間、サーバ１００でバッチ業務が実行される。バッチ業務は、例えばオンライン処理で蓄積された各種データを一括処理するものである。バッチ業務は、複数のジョブの組み合わせによって実現される。実行される各ジョブは、何らかの入力ファイルからデータを読み込み、データに対する処理を実施する。大多数のジョブは、後続のジョブへデータを受け渡すために、出力ファイルに書き込む処理を行っている。これらのジョブの組み合わせで、目的とするデータが最終的に出力される。例えば売上マスターデータベースに当日分の科目別売上が格納される。
【００３２】
このようなジョブ管理分野において、以下の環境変化が起こっている。
＜処理対象データが巨大化し、長時間実行するジョブが増加＞
例えば、経営活動を支えるＩＣＴ（Information and Communication Technology）システム内のバッチ業務において、基幹業務処理以外の情報系処理が増加している。基幹業務処理とは、例えば、ＰＯＳ（Point Of Sales system）データ（店舗売上データ）から在庫引き当てし、不足在庫を発注するなどの処理である。情報系処理とは、例えば、過去分を含むＰＯＳデータの売上推移やブログなど口コミ情報など多様・多量の情報を分析し、売れ筋商品を予測するなどの処理である。
【００３３】
基幹業務処理のデータ量に比べ、情報系処理は扱うデータ量が桁違いに大きい。そのため、情報系処理のデータをバッチ業務において処理しようとすると、基幹業務処理のデータを処理するジョブに比べて、ジョブの実行時間が桁違いに長くなる。
【００３４】
＜バッチジョブとして動作するアプリケーションソフトウェア（以下「アプリケーション」と呼ぶ）のリリース間隔短期化＞
情報系処理のバッチ処理で実行されるアプリケーションは、基幹系と異なりライフサイクルが非常に短い。例えば情報系処理では、新しいデータ種別を分析の入力として追加するなど、高い頻度で改変される。また、開発環境やＦＷ（フレームワーク）の進化により、コーディング量も減少している。そのため、アプリケーションのリリース間隔が短期化している。例えば、更新されたアプリケーションが毎週リリースされることさえある。
【００３５】
＜システムに求められる信頼性の向上＞
銀行業務であれば、外的要因によりデータ量が一時的に増大することがある。例えば、災害時に、義援金の振り込みが殺到すると、想定を遥かに超えたデータ入力が行われる。その結果、バッチ業務が遅延し、オンライン業務が停止する自体が想定される。特に銀行システムのように社会基盤を支えているシステムにおいては、想定を遥かに超えた突発的なデータ量増加であっても、問題なく処理できることが重要となる。
【００３６】
ここで、監視対象として指定したジョブの終了予定時刻を監視しても、終了予定時刻に達するまでは、ジョブの遅延を検知できない。例えば監視対象ジョブの実行に通常でも４時間かかる場合、監視対象ジョブの実行を開始してから４時間経過しないと、遅延の有無を判断できない。処理対象のデータ量の増加により、正常時の監視対象ジョブの実行時間が長くなればなるほど、遅延の有無を検知する時刻も遅くなる。
【００３７】
しかも、アプリケーションのリリース間隔が短期化することで、監視対象ジョブの通常動作時の実行時間の正確な見積もりも困難となる。例えばアプリケーションに対して、分析対象データの追加や分析ロジック変更などの改修が施されると、最新のリリース日以前の稼働実績データからは、実行時間を正確に見積もることはできない。監視対象ジョブの通常動作時の実行時間が正確に見積もれない場合、実行時間を長めに取って終了予定時刻を決めることとなる。その結果、遅延の有無の検知がさらに遅れることとなる。
【００３８】
ジョブの実行に遅延が発生したとき、その遅延の検知が遅れると、バッチ業務が実行可能な期間内にバッチ業務が終了せず、オンライン業務が開始できない可能性がある。すなわちシステムの信頼性が低下する。
【００３９】
ここで、バッチ業務におけるジョブ実行の遅延原因の１つに、ジョブで処理するデータ量の増大がある。ただしバッチ業務中に実行されるジョブには、データ量の増大の影響で処理が長期化するジョブと、そうでないジョブとがある。
【００４０】
図３は、バッチ業務の一例を示す図である。まずサーバ１００は、入力ファイル４１からのデータの抽出処理を行う抽出ジョブ４２を実行する。例えば抽出ジョブ４２が実行されることで、入力ファイル４１から、所定の抽出条件に合致するデータが抽出される。サーバ１００は、抽出したデータ（抽出データ）を、ファイル（抽出データファイル４３）へ出力する。
【００４１】
データの抽出が終了すると、サーバ１００は、抽出データファイル４３内のデータの加工処理を行う加工ジョブ４４を実行する。例えば加工ジョブ４４が実行されることで、データ形式変換・データ結合・データ間照会・ソート処理・データ分析などが行われる。サーバ１００は、加工したデータを、加工済みデータファイル４５に出力する。
【００４２】
データの加工が終了すると、サーバ１００は、加工済みデータの集計処理を行う集計ジョブ４６を実行する。サーバ１００は、集計したデータを、集計結果ファイル４７に出力する。
【００４３】
このような手順で業務が行われるとき、データの抽出処理は、業務全体から比較すると、短時間で実行できる。他方、加工処理や集計処理は、処理時間がデータ量に比例する傾向がある。そのため、抽出データファイル４３のサイズが増加するほど、加工処理や集計処理の処理時間が長時間化する。
【００４４】
第２の実施の形態では、バッチ業務が稼働している環境に蓄積された稼働実績データに頼らない手法によって、突発的な処理対象データ増加時でもジョブ実行時間を予測できるようにする。すなわち第２の実施の形態に係るシステムでは、バッチ業務が本運用に入る前のテスト運用の段階で、監視対象ジョブを選出し、監視対象ジョブの入力データサイズと実行時間の相関関係を導出する。そして本システムでは、導出された相関関係を用いて、バッチ業務の本運用時の遅延検出を行う。
【００４５】
ジョブの早期遅延検知を実現するまでの処理の流れを以下に示す。
＜テスト運用時＞
［第１工程］サーバ２００が、全ジョブの中から抽出ジョブを自動検知すると共に、全ジョブの稼働実績データを採取する。
【００４６】
＜本運用前の準備＞
［第２工程］サーバ２００が、抽出ジョブによる抽出データのサイズと後続の加工処理を行うジョブ（加工ジョブ）の実行時間の関係を分析し、加工ジョブの属性情報として、相関関係式を記憶する。
［第３工程］サーバ１００が、加工ジョブを「監視対象候補」として表示する。その際、サーバ１００は、設定の優先順位が分かるよう、実行時間の長いものから一覧表示する。運用に従事する管理者が、監視対象候補の終了予定時刻を、サーバ１００内に設定する。
【００４７】
＜本運用時＞
［第４工程］サーバ１００が、抽出ジョブからの抽出データサイズを監視する。
以上のような構成で、ジョブ遅延の早期の予測検知が可能となる。なお、第２工程を運用環境のサーバ１００で行ってもよい。また第３工程をテスト環境のサーバ２００で行ってもよい。
【００４８】
図４は、本運用時の監視処理を示す図である。サーバ１００は、抽出ジョブが実行中の段階で、抽出データを入力とする加工ジョブの終了予定時刻と現在の監視時点時刻の差分の時間から、所定の時間内に処理可能なデータサイズ（加工可能データサイズ）を、相関関係式を使って算出する。そしてサーバ１００は、抽出データサイズが、加工可能データサイズより大きくなった時点で、遅延検知アラームを上げる。
【００４９】
これにより、抽出データの大きさによっては、抽出ジョブの実行中に遅延を早期検知することができるようになる。すなわち、実際に加工ジョブ４４が終了予定時刻までに完了しないことを検知してアラームを上げる場合に比べ、アラームの出力タイミングを早めることができる。その結果、バッチ業務実行可能期間が終了するまでに余裕を持って遅延を検知することができ、バッチ業務実行可能期間内にバッチ業務を終了させるための対策を、余裕を持って実行することができる。
【００５０】
以下、このような遅延検知を実現するためのシステムの詳細を説明する。
図５は、サーバのハードウェアの一構成例を示す図である。サーバ１００は、プロセッサ１０１によって装置全体が制御されている。プロセッサ１０１には、バス１０９を介してメモリ１０２と複数の周辺機器が接続されている。プロセッサ１０１は、マルチプロセッサであってもよい。プロセッサ１０１は、例えばＣＰＵ（Central Processing Unit）、ＭＰＵ（Micro Processing Unit）、またはＤＳＰ（Digital Signal Processor）である。プロセッサ１０１の機能の少なくとも一部を、ＡＳＩＣ（Application Specific Integrated Circuit）、ＰＬＤ（Programmable Logic Device）などの電子回路で実現してもよい。
【００５１】
メモリ１０２は、サーバ１００の主記憶装置として使用される。メモリ１０２には、プロセッサ１０１に実行させるＯＳ（Operating System）のプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、メモリ１０２には、プロセッサ１０１による処理に必要な各種データが格納される。メモリ１０２としては、例えばＲＡＭ（Random Access Memory）などの揮発性の半導体記憶装置が使用される。
【００５２】
バス１０９に接続されている周辺機器としては、ＨＤＤ（Hard Disk Drive）１０３、グラフィック処理装置１０４、入力インタフェース１０５、光学ドライブ装置１０６、機器接続インタフェース１０７およびネットワークインタフェース１０８がある。
【００５３】
ＨＤＤ１０３は、内蔵したディスクに対して、磁気的にデータの書き込みおよび読み出しを行う。ＨＤＤ１０３は、サーバ１００の補助記憶装置として使用される。ＨＤＤ１０３には、ＯＳのプログラム、アプリケーションプログラム、および各種データが格納される。なお、補助記憶装置としては、フラッシュメモリなどの不揮発性の半導体記憶装置を使用することもできる。
【００５４】
グラフィック処理装置１０４には、モニタ２１が接続されている。グラフィック処理装置１０４は、プロセッサ１０１からの命令に従って、画像をモニタ２１の画面に表示させる。モニタ２１としては、ＣＲＴ（Cathode Ray Tube）を用いた表示装置や液晶表示装置などがある。
【００５５】
入力インタフェース１０５には、キーボード２２とマウス２３とが接続されている。入力インタフェース１０５は、キーボード２２やマウス２３から送られてくる信号をプロセッサ１０１に送信する。なお、マウス２３は、ポインティングデバイスの一例であり、他のポインティングデバイスを使用することもできる。他のポインティングデバイスとしては、タッチパネル、タブレット、タッチパッド、トラックボールなどがある。
【００５６】
光学ドライブ装置１０６は、レーザ光などを利用して、光ディスク２４に記録されたデータの読み取りを行う。光ディスク２４は、光の反射によって読み取り可能なようにデータが記録された可搬型の記録媒体である。光ディスク２４には、ＤＶＤ（Digital Versatile Disc）、ＤＶＤ−ＲＡＭ、ＣＤ−ＲＯＭ（Compact Disc Read Only Memory）、ＣＤ−Ｒ（Recordable）／ＲＷ（ReWritable）などがある。
【００５７】
機器接続インタフェース１０７は、サーバ１００に周辺機器を接続するための通信インタフェースである。例えば機器接続インタフェース１０７には、メモリ装置２５やメモリリーダライタ２６を接続することができる。メモリ装置２５は、機器接続インタフェース１０７との通信機能を搭載した記録媒体である。メモリリーダライタ２６は、メモリカード２７へのデータの書き込み、またはメモリカード２７からのデータの読み出しを行う装置である。メモリカード２７は、カード型の記録媒体である。
【００５８】
ネットワークインタフェース１０８は、ネットワーク２０に接続されている。ネットワークインタフェース１０８は、ネットワーク２０を介して、他のコンピュータまたは通信機器との間でデータの送受信を行う。
【００５９】
以上のようなハードウェア構成によって、第２の実施の形態の処理機能を実現することができる。なおサーバ２００も、サーバ１００と同様のハードウェアで実現することができる。また、第１の実施の形態に示した情報処理装置１０も、図５に示したサーバ１００と同様のハードウェアにより実現することができる。
【００６０】
サーバ１００，２００は、例えばコンピュータ読み取り可能な記録媒体に記録されたプログラムを実行することにより、第２の実施の形態の処理機能を実現する。サーバ１００，２００に実行させる処理内容を記述したプログラムは、様々な記録媒体に記録しておくことができる。例えば、サーバ１００，２００に実行させるプログラムをＨＤＤに格納しておくことができる。プロセッサは、ＨＤＤ内のプログラムの少なくとも一部をメモリにロードし、プログラムを実行する。またサーバ１００，２００に実行させるプログラムを、光ディスク、メモリ装置、メモリカードなどの可搬型記録媒体に記録しておくこともできる。可搬型記録媒体に格納されたプログラムは、例えばプロセッサからの制御により、ＨＤＤにインストールされた後、実行可能となる。またプロセッサが、可搬型記録媒体から直接プログラムを読み出して実行することもできる。
【００６１】
次に、テスト環境で動作するサーバ２００で実行される処理について詳細に説明する。
図６は、テスト環境で動作するサーバの機能を示すブロック図である。サーバ２００は、管理ＤＢ２１０、ジョブ管理部２２０、アプリケーション記憶部２３０、業務データ記憶部２４０、アプリケーション実行部２５０を有する。
【００６２】
管理ＤＢ２１０は、遅延検出に利用する情報を記憶する。例えばメモリやＨＤＤの記憶領域の一部が、管理ＤＢ２１０として使用される。管理ＤＢ２１０には、ジョブ定義情報２１１、稼働実績管理表２１２、相関関係表２１３、および実行時間情報リスト２１４が格納される。
【００６３】
ジョブ定義情報２１１は、バッチ業務で実行するジョブに関する定義情報である。例えばジョブが抽出ジョブか否かに関する情報が、ジョブ定義情報２１１に設定される。
稼働実績管理表２１２は、テスト運用によるジョブの稼働実績が登録されたデータテーブルである。稼働実績としては、例えば、実行時間や入出力されたファイルのサイズが登録される。
【００６４】
相関関係表２１３は、相関関係を有する抽出ジョブと加工ジョブとの組み合わせを示すデータテーブルである。
実行時間情報リスト２１４は、監視対象ジョブとして指定されたジョブの、テスト運用時の実行時間を示す情報である。
【００６５】
ジョブ管理部２２０は、バッチ業務のテスト運用時にジョブを制御する。そのためにジョブ管理部２２０は、ジョブ実行制御部２２１、抽出ジョブ特定部２２２、および相関関係解析部２２３を有する。ジョブ実行制御部２２１は、バッチ業務におけるジョブの実行をアプリケーション実行部２５０に指示する。抽出ジョブ特定部２２２は、ジョブ実行時の動作に基づいて、バッチ業務で実行されるジョブの中から、抽出ジョブを特定する。相関関係解析部２２３は、ジョブの稼働実績に基づいて、抽出ジョブと加工ジョブとの間の相関関係を解析する。
【００６６】
アプリケーション記憶部２３０は、ジョブの実行に使用される複数のアプリケーションソフトウェアを記憶する。アプリケーションソフトウェアには、処理手順を記述したプログラムや、プログラムに従った処理の実行に使用されるデータが含まれる。
【００６７】
業務データ記憶部２４０は、バッチ業務の実行に用いられるデータを記憶する。例えば、バッチ業務で処理する入力ファイルや、入力ファイルからデータを抽出する条件が設定された抽出条件ファイルが、業務データ記憶部２４０に記憶される。またバッチ業務中のジョブを実行することで生成されたデータも、業務データ記憶部２４０で記憶される。
【００６８】
アプリケーション実行部２５０は、ジョブ管理部２２０からの指示に従って、アプリケーション記憶部２３０内のアプリケーションに基づくジョブを実行する。例えばアプリケーション実行部２５０は、業務データ記憶部２４０内のファイルを読み出し、そのファイルを用いたジョブを実行する。そしてアプリケーション実行部２５０は、ジョブの実行結果を、業務データ記憶部２４０内のファイルに書き込む。
【００６９】
次に管理ＤＢ２１０に格納されるデータについて詳細に説明する。
図７は、ジョブ定義情報の一例を示す図である。ジョブ定義情報２１１には、ジョブネット名、ジョブ名、入力ファイル、出力ファイル、および抽出ジョブ判定フラグの欄が設けられている。
【００７０】
ジョブネット名の欄には、バッチ業務で実行されるジョブが属するジョブネットの名称が設定される。ジョブ名の欄には、バッチ業務で実行されるジョブの名称が設定される。入力ファイルの欄には、ジョブの実行時に使用するファイルの識別情報が設定される。出力ファイルの欄には、ジョブの実行結果を出力するファイルの識別情報が設定される。抽出ジョブ判定フラグの欄には、対応するジョブが抽出ジョブか否かを示すフラグ（抽出ジョブ判定フラグ）が設定される。例えば、抽出ジョブであれば、抽出ジョブ判定フラグには「ＯＮ」が設定される。抽出ジョブでなければ、抽出ジョブ判定フラグには「ＯＦＦ」が設定される。
【００７１】
図８は、稼働実績管理表の一例を示す図である。稼働実績管理表２１２には、ジョブネット名、ジョブ名、実行時間、入力ファイル、入力ファイルサイズ、出力ファイル、および出力ファイルサイズの欄が設けられている。
【００７２】
ジョブネット名の欄には、テスト運用で実行されたジョブが属するジョブネットの名称が設定される。ジョブ名の欄には、テスト運用で実行されたジョブの名称が設定される。実行時間の欄には、ジョブが実行された時間が設定される。入力ファイルの欄には、ジョブの実行の際に読み出したファイルの識別情報が設定される。入力ファイルサイズの欄には、ジョブの実行の際に読み出したファイルのサイズ（データ量）が設定される。出力ファイルの欄には、ジョブの実行結果を出力したファイルの識別情報が設定される。出力ファイルサイズの欄には、ジョブの実行結果を出力したファイルのサイズ（データ量）が設定される。
【００７３】
稼働実績管理表２１２には、ジョブが実行されるごとに、そのジョブに関する稼働実績を示すレコードが登録される。図８の例では、ジョブ名「job001」のジョブが３回実行されており、３回分の稼働実績が登録されている。
【００７４】
相関関係表２１３は、ジョブ定義情報２１１に基づいて作成される。相関関係表２１３を作成する場合、相関関係解析部２２３は、ジョブ定義情報２１１から、抽出ジョブ判定フラグが「ＯＮ」になっているジョブを取得する。取得されたジョブは、「抽出ジョブ」とみなされる。相関関係解析部２２３は、抽出ジョブの「出力ファイル」（“抽出ファイル”と呼ぶ）を「入力ファイル」としている他のジョブを探す。該当する他のジョブは、「加工ジョブ」とみなされる。この結果に基づいて、相関関係解析部２２３は、図９に示すような相関関係表２１３を作成する。
【００７５】
図９は、相関関係表の一例を示す図である。相関関係表２１３には、抽出ジョブ、抽出ファイル、および加工ジョブの欄が設けられている。
抽出ジョブの欄には、抽出ジョブが属するジョブネットの名称（ジョブネット名）と、抽出ジョブの名称（ジョブ名）とが設定される。抽出ファイルの欄には、抽出ジョブで抽出されたデータが格納されるファイル（抽出ファイル）の識別情報が設定される。加工ジョブの欄には、抽出ファイルを入力ファイルとする加工ジョブが属するジョブネットの名称（ジョブネット名）と、抽出ジョブの名称（ジョブ名）とが設定される。このような相関関係表２１３により、抽出ジョブと加工ジョブとの実行順の前後関係が明らかになる。
【００７６】
図１０は、実行時間情報リストの一例を示す図である。実行時間情報リスト２１４には、ジョブネット名、ジョブ名、平均実行時間、最短実行時間、および最大実行時間の欄が設けられている。
【００７７】
ジョブネット名の欄には、テスト運用により実行されたジョブが属するジョブネットの名称が設定される。ジョブ名の欄には、テスト運用により実行されたジョブの名称が設定される。平均実行時間の欄には、ジョブの平均実行時間が設定される。最短実行時間の欄には、ジョブの実行時間の最短値が設定される。最大実行時間の欄には、ジョブの実行時間の最大値が設定される。
【００７８】
以上のような構成のサーバ２００により、バッチ業務のテスト運用が行われる。管理ＤＢ２１０に各種データが登録される。テスト運用は、例えば１以上のジョブネットを含むバッチ業務の情報の入力に応じて実行される。ジョブネットには、ジョブの実行順、各ジョブの実行に使用するアプリケーション、各ジョブの入力ファイルと出力ファイルなどが定義されている。
【００７９】
図１１は、テスト運用されるサーバにおける処理手順の一例を示すフローチャートである。
［ステップＳ１０１］ジョブ管理部２２０は、バッチ業務として指定されたジョブネットの中から、未処理のジョブネットの１つを選択する。
【００８０】
［ステップＳ１０２］ジョブ管理部２２０は、稼働実績管理表２１２内の稼働実績データを消去する。
［ステップＳ１０３］ジョブ管理部２２０は、選択したジョブネットのテスト運用を開始する。バッチ業務のテスト運用の実行により、ジョブ定義情報２１１や稼働実績管理表２１２が作成される。この処理の詳細は後述する（図１４〜図２０参照）。
【００８１】
［ステップＳ１０４］ジョブ管理部２２０は、テスト運用を、予め指定された所定回数繰り返したか否かを判断する。所定回数繰り返した場合、処理がステップＳ１０６に進められる。所定回数繰り返していない場合、処理がステップＳ１０５に進められる。
【００８２】
［ステップＳ１０５］ジョブ管理部２２０は、入力データ量を変更し、処理をステップＳ１０３に進める。例えば管理者は、サーバ２００に、データ量の異なる複数の入力データを格納しておく。ジョブ管理部２２０は、１回のテスト運用が終了すると、テスト運用に使用する入力データを変更し、再度テスト運用を行う。
【００８３】
［ステップＳ１０６］ジョブ管理部２２０は、相関関係式を導出する。この処理の詳細は後述する（図２１参照）。
［ステップＳ１０７］ジョブ管理部２２０は、バッチ業務の未処理のジョブネットがあるか否かを判断する。未処理のジョブネットがあれば、処理がステップＳ１０１に進められる。すべてのジョブネットについて処理が終了していれば、処理が終了する。
【００８４】
以下、図１１の示す各ステップの処理について詳細に説明する。
まず、テスト運用時の処理について説明する。バッチ業務のテスト運用時、実際にジョブが起動され、指定されたアプリケーションに基づいてジョブが順次実行される。そしてジョブの実行中にＯＳに対して発行される処理要求の一部が分析され、実行しているジョブが抽出ジョブか否かが自動識別される。
【００８５】
次に、抽出ジョブの特定方法について詳細に説明する。
抽出ジョブか否かの判断は、実行しているジョブが、抽出ジョブとしての仕様または特性を有しているか否かによって判断される。抽出ジョブの特性として、以下の４つが挙げられる。
［特性ａ］抽出ジョブの実行時には、入力ファイルが最初から最後まで、レコード単位、もしくは、ある一定のサイズで、ファイルの最初から順番に読み込まれる。
［特性ｂ］抽出ジョブの実行時には、レコードのあるカラムの値が、抽出アプリケーションに指定された抽出条件に一致した場合に、該当のレコードが出力ファイルへ、レコード単位もしくは、ある一定のサイズで、順番に書き込まれる。この際、レコードの加工は行われない。
［特性ｃ］抽出ジョブの実行時には、１つの出力ファイル固定ではなく、抽出条件に従って、複数の出力ファイルにデータが振り分けられる場合がある。複数の出力ファイルが存在する場合、抽出条件と出力ファイルの関係が、抽出条件定義ファイルに定義されている。
［特性ｄ］抽出条件定義ファイルの読み込みは、一回の読み込み処理で行われ、メモリへ展開される。
【００８６】
図１２は、抽出ジョブの仕様／特性の一例を示す図である。ジョブ実行制御部２２１が、バッチ業務として指定されたアプリケーションの実行指示を出力する。するとアプリケーション実行部２５０により、指定されたアプリケーションが実行される。例えばアプリケーション実行部２５０は、アプリケーション記憶部２３０からアプリケーションのプログラムを読み出し、そのプログラムに従った処理を実行する。
【００８７】
アプリケーション実行部２５０が実行するアプリケーションが、抽出ジョブの処理内容が定義されたアプリケーションであれば、アプリケーション実行部２５０は、まず抽出条件ファイル２４１をメモリに読み込む。この場合、アプリケーション実行部２５０は、ＯＳ２６０に対して、抽出条件ファイル２４１を指定した読み込み処理の呼び出しを行う。するとＯＳ２６０が抽出条件ファイル２４１の読み込み処理を実行する。ＯＳ２６０によって読み込まれた抽出条件ファイル２４１は、アプリケーション実行部２５０が管理するメモリ内の領域に格納される。
【００８８】
アプリケーション実行部２５０は、抽出条件ファイル２４１に定義されている抽出条件に従って、入力ファイル２４２からデータを抽出する。例えばアプリケーション実行部２５０は、ＯＳ２６０に対して、入力ファイル２４２を指定した読み込み処理の呼び出しを行う。するとＯＳ２６０が入力ファイル２４２内のデータの読み込み処理を実行する。ＯＳ２６０によって読み込まれたデータは、アプリケーション実行部２５０が管理するメモリ内の領域に格納される。
【００８９】
アプリケーション実行部２５０は、メモリに格納された入力ファイル２４２内の個々のデータについて、抽出条件に合致するか否かを判断する。抽出条件に合致するデータがある場合、アプリケーション実行部２５０は、そのデータを出力ファイル２４３，２４４に書き込む。例えばアプリケーション実行部２５０は、ＯＳ２６０に対して、いずれかの出力ファイルを指定した書き込み処理の呼び出しを行う。するとＯＳ２６０が指定された出力ファイルへのデータの書き込み処理を実行する。
【００９０】
データの読み込みとデータの書き込みは、入力ファイル２４２内のすべてのデータが読み込まれるまで、繰り返し実行される。
図１２に示すような処理過程におけるアプリケーション実行部２５０からＯＳ２６０への指示を、抽出ジョブ特定部２２２が監視する。例えば、アプリケーション実行部２５０から、データの読み出しまたは書き込みの呼び出しイベントが発生すると、呼び出し対象の関数の実行前に、データの読み出しまたは書き込みの内容を取得する割り込み処理（トラップ処理）が実行されるようにする。そしてジョブ実行中のトラップ処理によって取得した情報を解析することで、そのとき実行されているジョブが抽出ジョブか否かが判断される。
【００９１】
図１３は、抽出ジョブ特定処理の概要を示す図である。例えばジョブ実行制御部２２１からの指示に従って、アプリケーション実行部２５０が、アプリケーションを用いてジョブを実行する。ジョブの実行中にアプリケーション実行部２５０は、ＯＳ２６０に対して読み込み処理呼び出し、書き込み処理呼び出し、またはクローズ処理呼び出しを行うことがある。アプリケーション実行部２５０からの呼び出し処理は、抽出ジョブ特定部２２２によるトラップ処理によって、処理の内容を示す情報が取得される。
【００９２】
なおＯＳ２６０では、読み込み処理が呼び出されると読み込み処理を実行し、書き込み処理が呼び出されると書き込み処理を実行し、クローズ処理が呼び出されるとクローズ処理を実行する。なおクローズ処理は、使用していたファイルを未使用の状態にする処理である。
【００９３】
抽出ジョブ特定部２２２は、トラップ処理によって取得した情報の解析処理を行う。例えば抽出ジョブ特定部２２２は、読み込み処理呼び出しに関する情報に基づいて、読み込みデータの解析を行う。抽出ジョブ特定部２２２は、書き込み処理呼び出しに関する情報に基づいて、書き込みデータの解析を行う。また抽出ジョブ特定部２２２は、クローズ処理呼び出しに関する情報に基づいて、at-endの有無の確認を行う。さらに抽出ジョブ特定部２２２は、ファイルオフセットの設定処理の呼び出しの有無の確認も行う。
【００９４】
前述のように、抽出ジョブは４つの特性ａ〜ｄを有している。これらの特性を有しているか否かの判断は、以下のようにして行われる。なお特性ａと特性ｄについては、共通の特定処理によって、その特性を有しているかどうかが特定される。
【００９５】
＜特性ａ／ｄの特定処理＞
［特性ａ／ｄ特定処理１］
抽出ジョブ特定部２２２は、ジョブとして実行するアプリケーションの読み込み処理／ファイルオフセット設定処理／クローズ処理をトラップし、読み込みデータの分析処理を経由するよう共用ライブラリの関係を変更する。その後、抽出ジョブ特定部２２２は、アプリケーション実行部２５０に、アプリケーションの実行を指示する。するとアプリケーション実行部２５０は、アプリケーションに従ってジョブを実行する。
［特性ａ／ｄ特定処理２］
抽出ジョブ特定部２２２は、読み込み処理で読み込むファイルの種別（入力ファイル、抽出条件ファイル）を区別する。例えば抽出ジョブ特定部２２２は、以下の判断により、入力ファイルなのか、抽出条件ファイルであるかを切り分ける。
・入力ファイル：読み込み処理で指定されたデータサイズ＜読み込み対象のファイルのサイズ
・抽出条件ファイル：読み込み処理で指定されたデータサイズ≧読み込み対象のファイルのファイルサイズ
すなわち、入力ファイルの場合にはファイルサイズが大きくなり、ファイルの読み込み処理は複数回に分けて行われる。そのため、読み込み処理で指定されたデータサイズが、読み込み対象のファイルのサイズに満たなければ、読み込み対象のファイルが入力ファイルであると判定できる。他方、抽出条件ファイルは、ファイルサイズはあまり大きくならず、１回の読み込み処理によって読み込むことができる。そのため、読み込み処理で指定されたデータサイズが、読み込み対象のファイルのサイズ以上であれば、読み込み対象のファイルが抽出条件ファイルであると判定できる。
【００９６】
この特定処理は、後述する「特性ｃ特定処理１」との組み合わせによって、抽出ジョブを特定するものである。なお抽出ジョブが、１つの入力ファイルに対して１つの出力ファイルに抽出結果を出力するタイプのジョブであり、ファイル名や抽出条件（文字列）はパラメータとして指定する仕様であることが分かっている場合、「特性ａ／ｄ特定処理２」は行わなくてもよい。他方、抽出ジョブにおける抽出条件が複数存在し、抽出条件ごとに出力ファイルを分割する場合、抽出条件と出力ファイル名の定義情報をファイルでアプリケーションに受け渡すのが一般的である。実行される抽出ジョブがこのようなタイプであることが分かっている場合、「特性ａ／ｄ特定処理２」を実行することで、抽出ジョブの判定精度を向上させることができる。
【００９７】
「特性ａ／ｄ特定処理２」を実施しない場合、「抽出条件ファイル」と「入力ファイル」それぞれを特定できない。このため、複数の入力ファイルを元に、マージ処理やソート処理を行う（加工は一切しない）アプリケーションによるジョブを、誤って抽出ジョブと判断してしまう場合があり得る。「特性ａ／ｄ特定処理２」の実施により、このような誤った判断が抑止され、抽出ジョブの判定精度が向上する。
［特性ａ／ｄ特定処理３］
抽出ジョブ特定部２２２は、ファイルオフセット設定処理が入力ファイルに対して呼び出された場合に、ランダムアクセスしているため、抽出アプリケーションではないと判断する。この「特性ａ／ｄ特定処理３」は、特定対象アプリケーションが抽出アプリケーションであるか否かを直接的に判定している。「特性ａ／ｄ特定処理３」を実行することで、抽出ジョブの判定精度が向上する。
【００９８】
「特性ａ／ｄ特定処理３」を実施しない場合、入力ファイルの各レコードを順次読み込んで、すべてのレコードに対して処理しているのか、あるいか一部のレコードしか読み込んでいないのかについて判断できない。このため、何らかの加工が施されたデータファイルとして、複数の種別のレコードが混在するファイルを入力として、マージ処理やソート処理を行うジョブを、誤って抽出ジョブと判断してしまう場合があり得る。複数の種別のレコードが混在するファイルは、ファイル内に、種別の異なるレコードＡ、レコードＢが混在し、レコードＡに対して複数のレコードＢが属し、レコードＡからは、各レコードＢへポイントされている構造となっている。このファイルを入力ファイルとするジョブでは、ファイルのＥＯＦ（End Of File）に到達するまでレコードＡを読み込みながら、各レコードＡがポイントする複数のレコードＢの内、必要な情報を保持するレコードＢに対してのみ処理が行われる。この場合、ファイルのＥＯＦまで読み込みが行われており、例えば入力ファイルを最後まで読み込んだかどうかの判定処理だけでは、正しく抽出ジョブか否かの判定ができない。「特性ａ／ｄ特定処理３」の実施により、このような誤った判断が抑止され、抽出ジョブの判定精度が向上する。
［特性ａ／ｄ特定処理４］
抽出ジョブ特定部２２２は、入力ファイルに対して、ファイルの途中で読み込みを終了した場合（読み込み処理がat-end未検出）には、抽出ジョブではないものと判断する。
【００９９】
「特性ａ／ｄ特定処理４」は、実行しているジョブが抽出ジョブであるか否かを直接的に判定している処理である。
「特性ａ／ｄ特定処理４」を実施しない場合、入力ファイルを終端まで処理しているのか否かを判断できない。このため、入力ファイルの先頭から順次レコードを読み込み、何らかの目的で情報を１件だけ取り出して読み込みを終了するジョブを、誤って抽出ジョブと判断してしまう場合がある。入力ファイルから情報を１件だけ取り出して読み込みを終了するジョブとしては、例えば、注文番号や伝票番号など業務データに対して割り当てられた一意に識別可能な番号をキーワードに、該当データを取り出すジョブがある。このようなジョブは常に１件のデータしか取り出さず、取り出したデータを加工するジョブの処理時間への影響が少ない。そのため入力ファイルから情報を１件だけ取り出して読み込みを終了するジョブについては、ジョブの処理の遅延検知の観点からは、抽出ジョブではないと判定するのが適切である。
【０１００】
＜特性ｂの特定処理＞
［特性ｂ特定処理１］
抽出ジョブ特定部２２２は、ジョブとして実行するアプリケーションの書き込み処理／ファイルオフセット設定処理をトラップし、書き込みデータの分析処理を経由するよう共用ライブラリの関係を変更する。その後、抽出ジョブ特定部２２２は、アプリケーション実行部２５０に、アプリケーションの実行を指示する。するとアプリケーション実行部２５０は、アプリケーションに従ってジョブを実行する。なお、この処理は「特性ａ／ｄ特定処理１」でも実施される処理であり、特性ａ／ｄの特定処理としてすでに実行されていれば、実行せずにすむ。
［特性ｂ特定処理２］
抽出ジョブ特定部２２２は、書き込み処理が呼び出されるまで、「特性ａ／ｄの特定処理」で読み込んだ入力ファイルのデータをメモリ上に保持する。そのうえで、書き込み処理が呼び出された場合、抽出ジョブ特定部２２２は、書き込みデータをレコード単位（例えば改行コードをレコードの区切りと認識）に分割する。そして抽出ジョブ特定部２２２は、レコード単位に分割したデータが、メモリ上に保持したデータ内に完全一致する形で存在するか否かを確認する。存在しない場合、抽出ジョブではないと判断する。
【０１０１】
「特性ｂ特定処理２」では、実行しているジョブが抽出ジョブであるか否かを直接的に判定している処理である。
「特性ｂ特定処理２」を実施しない場合、入力データに対して加工処理を実施したか否かを判断できない。このため、入力ファイルの先頭から順次レコードを読み込み、集計やデータ変換など何らかの加工処理を実施して出力ファイルに順次書き出すジョブを抽出ジョブと判断してしまう可能性がある。従って、「特性ｂ特定処理２」を実施することで、抽出ジョブの判定精度が向上する。
［特性ｂ特定処理３］
出力ファイルに対してファイルオフセット設定処理が呼び出された場合には、ランダムアクセスをしていると考えられる。そこで、出力ファイルに対してファイルオフセット設定処理が呼び出された場合、抽出ジョブ特定部２２２は、抽出ジョブではないと判断する。「特性ｂ特定処理３」は、特定対象のジョブが抽出ジョブであるか否かを直接的に判定している処理である。
【０１０２】
「特性ｂ特定処理３」を実施しない場合、出力ファイルに処理案件ごとに順次書き込んでいるか否かを判断できない。例えば、入力ファイルの先頭から順次レコードを読み込み、特定のデータ項目（列）のみを出力ファイルに書き込みながら、入力ファイル中の補正レコードを検知すると出力ファイルに出力済みのレコードに対して上書きするようなジョブがある。「特性ｂ特定処理３」を実施しないと、このようなジョブを抽出ジョブと判断してしまう可能性がある。従って、「特性ｂ特定処理３」を実施することで、抽出ジョブの判定精度が向上する。
【０１０３】
＜特性ｃの特定処理＞
抽出ジョブ特定部２２２は、「特性ａ／ｄの特定処理」において抽出条件ファイルと判断したファイルについて、読み込み処理で読み出したデータに、書き込み処理に指定したファイル名が含まれるか否かを確認する。含まれない場合には、抽出ジョブ特定部２２２は、実行しているジョブは抽出ジョブではないと判断する。この特性ｃの特定処理は、「特性ａ／ｄ特定処置２」と合わせて実行することで、抽出ジョブかどうかの判定が可能となる。
【０１０４】
以上が、抽出ジョブに関する特性ａ〜ｄに基づく抽出ジョブの特性処理である。抽出ジョブ特定部２２２は、特定処理すべてにおいて、「抽出ジョブではない」と判断されなかった場合、当該ジョブを「抽出ジョブ」と判断し、ジョブ定義情報２１１（図７参照）に、抽出ジョブであることを設定する。例えば抽出ジョブ特定部２２２は、「抽出ジョブ」と判定したジョブの抽出ジョブ判定フラグを「ＯＮ」にし、それ以外のジョブの抽出ジョブ判定フラグを「ＯＦＦ」にする。
【０１０５】
このようにして、テスト運用によって実行されたジョブが、抽出ジョブか否かが判定される。なお、上記の判定に用いられた複数の特定処理のうち、一部の特定処理を行わなくても抽出ジョブかどうかの判定は可能である。ただし、多くの特定処理を実施するほど、精度の高い判定結果を得ることができる。
【０１０６】
相関関係解析部２２３は、抽出ジョブ特定部２２２による抽出ジョブか否かの判定処理と並行して、全ジョブの実行時間、入力ファイルサイズ、出力ファイルサイズを稼働実績管理表に記録する。記録するタイミングは以下の通りである。
・入力ファイルサイズ：ジョブ開始時
・出力ファイルサイズ：ジョブ終了時
・実行時間          ：ジョブ終了時
テスト運用は、例えば、異なる複数の条件で複数回実施される。例えば大量データ時の負荷テスト（性能テスト）などが実施される。テストが実施された回数分、稼働実績管理表２１２に稼働実績データを記録する。テストが３回実施された場合、図８に示すように、１つのジョブに対して３回分の稼働実績データが稼働実績管理表２１２に記録される。
【０１０７】
なお相関関係解析部２２３は、ジョブ開始時には、毎回、実行するアプリケーションが更新されていないかをチェックする。更新されていた場合は、相関関係解析部２２３は、そのアプリケーションに基づいて実行されるジョブの稼働実績データを、稼働実績管理表２１２からクリアする。これにより、複数世代のアプリケーションが実行された際の稼働実績データが混在しないようにすることができる。なおアプリケーションが更新されたかどうかは、例えば、アプリケーションを示す実行ファイルの日付、サイズ、あるいはＦＰ（FingerPrint）などの変更の有無により判断することができる。ＦＰとは、情報が改ざんされていないことを証明するデータであり、例えばプログラムをハッシュ関数にかけて得られるハッシュ値である。
【０１０８】
次に図１４〜図１９を参照して、テスト運用の処理手順について説明する。なおテスト運用前に、ジョブ実行制御部２２１には、バッチ業務における処理のジョブネット（各ジョブの実行に用いられるアプリケーションの情報を含む）が入力される。
【０１０９】
図１４は、テスト運用の処理手順の一例を示すフローチャートである。
［ステップＳ１１１］ジョブ実行制御部２２１は、ジョブ定義情報２１１を作成する。例えばジョブ実行制御部２２１は、バッチ業務の内容を示すジョブネットの情報に基づいて、ジョブネットに含まれるジョブのジョブ名、入力ファイル、出力ファイルを抽出し、ジョブ定義情報２１１を作成する。ジョブ実行制御部２２１は、作成したジョブ定義情報２１１を、管理ＤＢ２１０に格納する。
【０１１０】
［ステップＳ１１２］抽出ジョブ特定部２２２は、ＯＳ２６０に対する処理の呼び出しに関するライブラリを、トラップ処理を組み込んだライブラリに置き換える。
［ステップＳ１１３］ジョブ実行制御部２２１は、ジョブネットに示される実行順に沿って、次に実行するジョブの実行開始を、アプリケーション実行部２５０に指示する。するとアプリケーション実行部２５０により、実行するジョブに対応するアプリケーションに基づいてジョブの実行が開始される。
【０１１１】
［ステップＳ１１４］相関関係解析部２２３は、アプリケーション実行部２５０が実行を開始したジョブの入力ファイルサイズを、稼働実績管理表２１２に記録する。例えば相関関係解析部２２３は、稼働実績管理表２１２に対する新たなレコードとして、実行を開始したジョブのジョブネット名、ジョブ名、入力ファイル（入力ファイルの識別情報）、および入力ファイルサイズを登録する。
【０１１２】
［ステップＳ１１５］抽出ジョブ特定部２２２は、アプリケーション実行部２５０からＯＳ２６０への処理の呼び出しがあるか否かを判断する。抽出ジョブ特定部２２２は、処理の呼び出しがあれば呼び出される処理を判断する。読み込み処理が呼び出された場合、処理がステップＳ１１６に進められる。書き込み処理が呼び出された場合、処理がステップＳ１１７に進められる。ファイルオフセット設定処理が呼び出された場合、処理がステップＳ１１８に進められる。ファイルクローズ処理が呼び出された場合、処理がステップＳ１１９に進められる。処理の呼び出しがなければ、処理がステップＳ１２０に進められる。なお、読み込み処理、書き込み処理、ファイルオフセット設定処理、ファイルクローズ処理以外の処理の呼び出しがあった場合も、処理の呼び出しがない場合と同様に、処理がステップＳ１２０に進められる。
【０１１３】
［ステップＳ１１６］抽出ジョブ特定部２２２は、読み込み解析処理を実行する。この処理の詳細は後述する（図１６参照）。読み込み解析処理が終了すると、処理がステップＳ１２０に進められる。
【０１１４】
［ステップＳ１１７］抽出ジョブ特定部２２２は、書き込み解析処理を実行する。この処理の詳細は後述する（図１８参照）。書き込み解析処理が終了すると、処理がステップＳ１２０に進められる。
【０１１５】
［ステップＳ１１８］抽出ジョブ特定部２２２は、ファイルオフセット設定解析処理を実行する。この処理の詳細は後述する（図１９参照）。ファイルオフセット設定解析処理が終了すると、処理がステップＳ１２０に進められる。
【０１１６】
［ステップＳ１１９］抽出ジョブ特定部２２２は、ファイルクローズ解析処理を実行する。この処理の詳細は後述する（図２０参照）。ファイルクローズ解析処理が終了すると、処理がステップＳ１２０に進められる。
【０１１７】
［ステップＳ１２０］ジョブ実行制御部２２１は、実行中のジョブが終了したか否かを判断する。ジョブが終了した場合、処理がステップＳ１２１に進められる。ジョブが終了していなければ処理がステップＳ１１５に進められる。
【０１１８】
［ステップＳ１２１］相関関係解析部２２３は、ジョブの実行が終了すると、終了したジョブの出力ファイルサイズと実行時間とを、稼働実績管理表２１２に記録する。例えば相関関係解析部２２３は、稼働実績管理表２１２内にステップＳ１１４で登録したレコードに、出力ファイル、出力ファイルサイズ（出力ファイルの識別情報）、および実行時間を登録する。
【０１１９】
［ステップＳ１２２］ジョブ実行制御部２２１は、バッチ業務が終了したか否かを判断する。バッチ業務が終了した場合、処理がステップＳ１２３に進められる。バッチ業務が終了していない場合、処理がステップＳ１１３に進められ、ジョブネット上で次に実行するジョブの実行開始が指示される。
【０１２０】
［ステップＳ１２３］抽出ジョブ特定部２２２は、ステップＳ１１２で置き換えたライブラリを元に戻す。
［ステップＳ１２４］抽出ジョブ特定部２２２は、「抽出ジョブではない」と判定されていないジョブを「抽出ジョブ」と判定し、ジョブ定義情報２１１に設定する。例えば抽出ジョブ特定部２２２は、ジョブ定義情報２１１において、抽出ジョブ判定フラグが未設定のジョブに、抽出ジョブ判定フラグ「ＯＦＦ」を設定する。
【０１２１】
このようにしてテスト運用による抽出ジョブの判定や稼働実績の収集が行われる。ここで、テスト運用によって実行されたジョブが抽出ジョブであった場合の典型的な処理手順について説明する。
【０１２２】
図１５は、抽出ジョブの処理手順の一例を示すフローチャートである。なお、以下の処理は、抽出ジョブの処理内容が記述されたアプリケーションに基づいて、アプリケーション実行部２５０によって実行される。
【０１２３】
［ステップＳ１３１］アプリケーション実行部２５０は、実行するジョブの抽出条件ファイル２４１のオープン処理を行う。例えばアプリケーション実行部２５０は、ＯＳ２６０に対して、抽出条件ファイル２４１のオープン処理の呼び出しを行う。オープン処理の呼び出しに応じて、ＯＳ２６０は、アプリケーション実行部２５０から抽出条件ファイル２４１へのアクセスを許可し、抽出条件ファイル２４１の状態を使用中にする。
【０１２４】
［ステップＳ１３２］アプリケーション実行部２５０は、抽出条件ファイル２４１の読み込み処理を行う。例えばアプリケーション実行部２５０は、ＨＤＤ内の抽出条件ファイル２４１に示される抽出条件をメモリに格納する。
【０１２５】
［ステップＳ１３３］アプリケーション実行部２５０は、抽出条件ファイル２４１のクローズ処理を行う。例えばアプリケーション実行部２５０は、ＯＳ２６０に対して、抽出条件ファイル２４１のクローズ処理の呼び出しを行う。クローズ処理の呼び出しに応じて、ＯＳ２６０は、抽出条件ファイル２４１を不使用状態にする。
【０１２６】
［ステップＳ１３４］アプリケーション実行部２５０は、実行するジョブの入力ファイル２４２のオープン処理を行う。例えばアプリケーション実行部２５０は、ＯＳ２６０に対して、入力ファイル２４２のオープン処理の呼び出しを行う。オープン処理の呼び出しに応じて、ＯＳ２６０は、アプリケーション実行部２５０から入力ファイル２４２へのアクセスを許可し、入力ファイル２４２の状態を使用中にする。
【０１２７】
［ステップＳ１３５］アプリケーション実行部２５０は、実行するジョブの出力ファイル２４３のオープン処理を行う。例えばアプリケーション実行部２５０は、ＯＳ２６０に対して、出力ファイル２４３のオープン処理の呼び出しを行う。オープン処理の呼び出しに応じて、ＯＳ２６０は、アプリケーション実行部２５０から出力ファイル２４３へのアクセスを許可し、出力ファイル２４３の状態を使用中にする。
【０１２８】
［ステップＳ１３６］アプリケーション実行部２５０は、入力ファイル２４２の先頭から順にレコードを、１レコードずつ読み込む。
［ステップＳ１３７］アプリケーション実行部２５０は、読み込んだレコードが、ファイルの終端を示す識別子（例えば「at-end」）か否かを判断する。読み込んだレコードがファイルの終端を示す識別子であれば、処理がステップＳ１４１に進められる。読み込んだレコードがファイルの終端を示す識別子でなければ、処理がステップＳ１３８に進められる。
【０１２９】
［ステップＳ１３８］アプリケーション実行部２５０は、読み込んだレコードが、ステップＳ１３２で読み込んだ抽出条件に合致するか否かを判断する。抽出条件に合致する場合、処理がステップＳ１３９に進められる。抽出条件に合致しない場合、処理がステップＳ１３６に進められる。
【０１３０】
［ステップＳ１３９］アプリケーション実行部２５０は、読み込んだ１レコードを、出力ファイル２４３，２４４に書き込む。
［ステップＳ１４０］アプリケーション実行部２５０は、入力ファイル２４２を最後まで読み込んだか否かを判断する。最後まで読み込んだ場合、処理がステップＳ１４１に進められる。最後まで読み込まれていなければ、処理がステップＳ１３６に進められる。
【０１３１】
［ステップＳ１４１］アプリケーション実行部２５０は、入力ファイル２４２のクローズ処理を行う。例えばアプリケーション実行部２５０は、ＯＳ２６０に対して、入力ファイル２４２のクローズ処理の呼び出しを行う。クローズ処理の呼び出しに応じて、ＯＳ２６０は、入力ファイル２４２の状態を不使用にする。
【０１３２】
［ステップＳ１４２］アプリケーション実行部２５０は、出力ファイル２４３，２４４のクローズ処理を行う。例えばアプリケーション実行部２５０は、ＯＳ２６０に対して、出力ファイル２４３，２４４のクローズ処理の呼び出しを行う。クローズ処理の呼び出しに応じて、ＯＳ２６０は、出力ファイル２４３，２４４の状態を不使用にする。
【０１３３】
抽出ジョブ特定部２２２は、図１５に示したような処理が実行されたかどうかによって、実行されたジョブが抽出ジョブかどうかを判定する。
図１５のステップＳ１３３，Ｓ１３６に示した抽出条件ファイル２４１または入力ファイル２４２の読み込み時には、抽出ジョブ特定部２２２で以下のような処理が行われる。
【０１３４】
図１６は、読み込み解析処理の手順の一例を示すフローチャートである。
［ステップＳ１５１］抽出ジョブ特定部２２２は、アプリケーション実行部２５０からＯＳ２６０への、読み込み処理の呼び出しの内容を取得する。
【０１３５】
［ステップＳ１５２］抽出ジョブ特定部２２２は、読み込み処理の対象として指定されたファイルが、読み込み処理管理テーブルに設定されているか否かを判断する。読み込み処理管理テーブルは、ファイルの読み込み処理の内容を管理するデータテーブルである。読み込み処理管理テーブルは、抽出ジョブ特定部２２２によって生成され、メモリに格納される。
【０１３６】
図１７は、読み込み処理管理テーブルの一例を示す図である。読み込み処理管理テーブル２２４には、ファイル、種別、および読み込みデータの欄が設けられている。
ファイルの欄には、読み込まれたファイルの識別情報（例えばディレクトリ名＋ファイル名）が設定される。種別の欄には、読み込まれたファイルの種別が設定される。ファイルの種別には、入力ファイルと抽出条件ファイルとがある。読み込みデータの欄には、読み込まれたファイル内のデータが設定される。抽出条件ファイルが読み込まれた場合、読み込みデータの欄には、抽出条件や、出力ファイルの識別情報（ディレクトリ名＋ファイル名）が設定される。
【０１３７】
図１６の説明に戻り、ステップＳ１５２において、読み込み処理対象のファイルが読み込み処理管理テーブル２２４に設定されていると判断された場合、処理がステップＳ１５６に進められる。読み込み処理対象のファイルが読み込み処理管理テーブル２２４に設定されていないと判断された場合、処理がステップＳ１５３に進められる。
【０１３８】
［ステップＳ１５３］抽出ジョブ特定部２２２は、読み込み処理で指定されたデータサイズが、読み込み対象のファイルのサイズ（ファイルサイズ）より小さいか否かを判断する。指定されたデータサイズがファイルサイズに満たない場合、処理がステップＳ１５４に進められる。指定されたデータサイズがファイルサイズ以上であれば、処理がステップＳ１５５に進められる。
【０１３９】
［ステップＳ１５４］抽出ジョブ特定部２２２は、読み込み処理で指定されたデータサイズがファイルサイズに満たない場合、読み込まれたファイルの種別を「入力ファイル」として、読み込み処理管理テーブル２２４に新たなレコードを登録する。その後、処理がステップＳ１５６に進められる。
【０１４０】
［ステップＳ１５５］抽出ジョブ特定部２２２は、読み込み処理で指定されたデータサイズがファイルサイズ以上の場合、読み込まれたファイルの種別を「抽出条件ファイル」として、読み込み処理管理テーブル２２４に新たなレコードを登録する。
【０１４１】
［ステップＳ１５６］抽出ジョブ特定部２２２は、ＯＳ２６０から読み込まれたファイル内のデータから、ファイルの終端を示す識別子（例えば「at-end」）を検出したか否かを判断する。ファイルの終端を示す識別子を検出した場合、処理がステップＳ１５８に進められる。ファイルの終端を示す識別子を検出していなければ、処理がステップＳ１５７に進められる。
【０１４２】
［ステップＳ１５７］抽出ジョブ特定部２２２は、読み込まれたデータに、ファイルの終端を示す識別子が含まれていなければ、読み込まれたデータ（レコード）を、読み込み処理管理テーブル２２４に設定する。その後、読み込み解析処理が終了する。
【０１４３】
［ステップＳ１５８］抽出ジョブ特定部２２２は、読み込まれたデータに、ファイルの終端を示す識別子が含まれていれば、at-end検知フラグを「ＯＮ」に設定する。なおat-end検知フラグの初期状態は「ＯＦＦ」である。その後、読み込み解析処理が終了する。
【０１４４】
次に、書き込み解析処理について詳細に説明する。
図１８は、書き込み解析処理の手順の一例を示すフローチャートである。
［ステップＳ１６１］抽出ジョブ特定部２２２は、アプリケーション実行部２５０からＯＳ２６０への、書き込み処理の呼び出しの内容を取得する。
【０１４５】
［ステップＳ１６２］抽出ジョブ特定部２２２は、書き込み処理対象として指定されたファイルが、読み込み処理管理テーブル２２４に設定されているか否かを判断する。書き込み処理対象のファイルが読み込み処理管理テーブル２２４に設定されている場合、処理がステップＳ１６３に進められる。書き込み処理対象のファイルが読み込み処理管理テーブル２２４に設定されていないと判断された場合、処理がステップＳ１６４に進められる。
【０１４６】
［ステップＳ１６３］抽出ジョブ特定部２２２は、書き込みデータが読み込みデータと一致するか否かを判断する。例えば抽出ジョブ特定部２２２は、書き込み処理の呼び出しで書き込み対象とされるデータと、読み込み処理管理テーブル２２４内に書き込み対象のファイルに対応付けて登録されているデータとを比較する。抽出ジョブ特定部２２２は、比較の結果、データが一致していれば、書き込みデータと読み込みデータとが一致すると判断する。書き込みデータが読み込みデータと一致していれば、書き込み解析処理を終了する。書き込みデータが読み込みデータと一致していなければ、処理がステップＳ１６４に進められる。
【０１４７】
［ステップＳ１６４］抽出ジョブ特定部２２２は、書き込みデータが読み込みデータと不一致の場合、現在実行中のジョブを、抽出ジョブではなない（非抽出ジョブ）として記録する。例えば抽出ジョブ特定部２２２は、ジョブ定義情報２１１における、現在実行中のジョブの抽出ジョブ判定フラグに、抽出ジョブではないことを示す値「ＯＦＦ」を設定する。その後、書き込み解析処理が終了する。
【０１４８】
次に、ファイルオフセット設定解析処理について詳細に説明する。
図１９は、ファイルオフセット設定解析処理の手順の一例を示すフローチャートである。
【０１４９】
［ステップＳ１７１］抽出ジョブ特定部２２２は、アプリケーション実行部２５０からＯＳ２６０への、ファイルオフセット設定処理の呼び出しの内容を取得する。
［ステップＳ１７２］抽出ジョブ特定部２２２は、現在実行中のジョブを、抽出ジョブではない（非抽出ジョブ）として記録する。例えば抽出ジョブ特定部２２２は、ジョブ定義情報２１１における、現在実行中のジョブの抽出ジョブ判定フラグに、抽出ジョブではないことを示す値「ＯＦＦ」を設定する。その後、ファイルオフセット設定解析処理が終了する。
【０１５０】
次に、ファイルクローズ設定解析処理について詳細に説明する。
図２０は、ファイルクローズ設定解析処理の手順の一例を示すフローチャートである。
［ステップＳ１８１］抽出ジョブ特定部２２２は、アプリケーション実行部２５０からＯＳ２６０への、ファイルクローズ処理の呼び出しの内容を取得する。
【０１５１】
［ステップＳ１８２］抽出ジョブ特定部２２２は、現在実行中のジョブについて、at-end検知フラグが「ＯＦＦ」か否かを判断する。at-end検知フラグが「ＯＦＦ」であれば、処理がステップＳ１８３に進められる。at-end検知フラグが「ＯＮ」であれば、ファイルクローズ解析処理が終了する。
【０１５２】
［ステップＳ１８３］抽出ジョブ特定部２２２は、at-end検知フラグが「ＯＦＦ」の場合、現在実行中のジョブを、抽出ジョブではなない（非抽出ジョブ）として記録する。例えば抽出ジョブ特定部２２２は、ジョブ定義情報２１１における、現在実行中のジョブの抽出ジョブ判定フラグに、抽出ジョブではないことを示す値「ＯＦＦ」を設定する。その後、ファイルクローズ解析処理が終了する。
【０１５３】
以上のようにして、テスト運用中に実行されたジョブそれぞれについて、抽出ジョブか否かの判定が行われると共に、各ジョブの稼働実績データが記録される。相関関係解析部２２３では、抽出ジョブの判定結果と稼働実績データとに基づいて、抽出ジョブと加工ジョブとの間の相関関係が解析され、相関関係式が導出される。
【０１５４】
図２１は、相関関係式導出処理の手順の一例を示すフローチャートである。
［ステップＳ２０１］相関関係解析部２２３は、ジョブ定義情報２１１から、未選択のジョブを１件選択する。
【０１５５】
［ステップＳ２０２］相関関係解析部２２３は、取得したジョブの抽出ジョブ判定フラグが「ＯＮ」か否かを判断する。抽出ジョブ判定フラグが「ＯＮ」であれば、処理がステップＳ２０３に進められる。抽出ジョブ判定フラグが「ＯＦＦ」であれば、処理がステップＳ２１５に進められる。
【０１５６】
［ステップＳ２０３］相関関係解析部２２３は、抽出ジョブ判定フラグが「ＯＮ」であれば、選択したジョブを抽出ジョブとみなし、その抽出ジョブの情報を相関関係表２１３に格納する。例えば相関関係解析部２２３は、抽出ジョブのジョブネット名とジョブ名をジョブ定義情報２１１から取得し、相関関係表２１３に登録する。さらに相関関係解析部２２３は、抽出ジョブの出力ファイルの識別情報をジョブ定義情報２１１から取得し、取得した出力ファイルの識別情報を、抽出ジョブの抽出ファイルとして相関関係表２１３に登録する。
【０１５７】
［ステップＳ２０４］相関関係解析部２２３は、選択したジョブ（抽出ジョブ）に対応する加工ジョブ探索処理を実行する。この探索処理では、１または複数の加工ジョブが検出される。この処理の詳細は、後述する（図２４参照）。
【０１５８】
［ステップＳ２０５］相関関係解析部２２３は、ステップＳ２０４で検出された加工ジョブのうちの未処理の加工ジョブの１つを、相関関係表２１３に記録する。例えば相関関係解析部２２３は、加工ジョブのジョブネット名とジョブ名をジョブ定義情報２１１から取得し、選択したジョブ（抽出ジョブ）に対応付けて、相関関係表２１３に登録する。
【０１５９】
［ステップＳ２０６］相関関係解析部２２３は、稼働実績管理表２１２から、ステップＳ２０４の探索で見つけ出された加工ジョブの実行時間を抽出する。
［ステップＳ２０７］相関関係解析部２２３は、加工ジョブの実行時間の統計値を、実行時間情報リスト２１４に登録する。例えば相関関係解析部２２３は、稼働実績管理表２１２に基づいて、加工ジョブの平均実行時間、最短実行時間、および最大実行時間を求める。平均実行時間は「実行時間の合計÷テスト回数」である。最短実行時間は、全実行時間の内、最も小さい値である。最大実行時間は、全実行時間の内、最も大きい値である。そして相関関係解析部２２３は、まず加工ジョブのジョブネット名、ジョブ名、平均実行時間、最短実行時間、最大実行時間の組を新たなレコードとして、実行時間情報リスト２１４に登録する。
【０１６０】
［ステップＳ２０８］相関関係解析部２２３は、稼働実績管理表２１２内の加工ジョブに関するすべての稼働実績データから、実行時間と入力ファイルサイズとの組を取得する。
【０１６１】
［ステップＳ２０９］相関関係解析部２２３は、加工ジョブの入力ファイルサイズ比率を求める。例えば相関関係解析部２２３は、加工ジョブの稼働実績データに示される入力ファイルサイズのうち、値が最も小さい入力ファイルサイズを基準ファイルサイズとする。次に相関関係解析部２２３は、加工ジョブの稼働実績データに示されるすべての入力ファイルサイズについて、入力ファイルサイズ比率「入力ファイルサイズ／基準ファイルサイズ」を計算する。そして相関関係解析部２２３は、計算した入力ファイルサイズ比率を、稼働実績管理表２１２に設定する。
【０１６２】
［ステップＳ２１０］相関関係解析部２２３は、加工ジョブの実行時間比率を求める。例えば相関関係解析部２２３は、加工ジョブの稼働実績データに示される実行時間のうち、値が最も小さい実行時間を基準実行時間とする。次に相関関係解析部２２３は、加工ジョブの稼働実績データに示されるすべての実行時間について、実行時間比率「実行時間／基準実行時間」を計算する。そして相関関係解析部２２３は、計算した実行時間比率を、稼働実績管理表２１２に設定する。
【０１６３】
［ステップＳ２１１］相関関係解析部２２３は、相関値を求める。例えば相関関係解析部２２３は、加工ジョブの稼働実績データごとに、その稼働実績データから求められた入力ファイルサイズ比率と実行時間比率との相関値「実行時間比率／入力ファイルサイズ比率」を求める。そして相関関係解析部２２３は、計算した相関値を、稼働実績管理表２１２に設定する。この相関値は、入力ファイルサイズの増加量に対する、実行時間の増加量を表している。
【０１６４】
［ステップＳ２１２］相関関係解析部２２３は、加工ジョブの相関値の平均値を計算する。そして相関関係解析部２２３は、相関値の平均値を稼働実績管理表２１２に設定する。
【０１６５】
ステップＳ２０９〜Ｓ２１２の処理により、稼働実績管理表２１２が更新される。
図２２は、更新された稼働実績管理表の一例を示す図である。図２２に示すように、図８に示した稼働実績管理表２１２に対して、入力ファイルサイズ比率、実行時間比率、および相関値の欄が追加されている。入力ファイルサイズ比率は、稼働実績データに示される入力ファイルサイズの基準ファイルサイズに対する比率である。実行時間比率は、稼働実績データに示される実行時間の基準実行時間に対する比率である。相関値は、実行時間比率を入力ファイルサイズ比率で除算した値である。また相関値の欄には、稼働実績データとは別に、相関値の平均値（平均相関値）が設定されている。
【０１６６】
以下、図２１の説明に戻る。
［ステップＳ２１３］相関関係解析部２２３は、加工ジョブが指定された時間内に処理可能な入力ファイルのサイズを求めるための相関関係式を作成する。例えば相関関係解析部２２３は、基準実行時間、基準ファイルサイズ、平均相関値を用いて、相関関係式を作成する。相関関係式は、加工ジョブを実行可能な時間を「&time（変数）」とし、&timeを基準実行時間と平均相関値とで除算した結果に、基準ファイルサイズを乗算する式である。具体的には以下の通りである。
相関関係式「&time／基準実行時間／平均相関値×基準ファイルサイズ」
例えば、図２２の例であれば、相関関係式は「&time／611秒／1.043838×1.33GB」となる。運用時に加工ジョブの実行に当てられる時間を「&time」に代入して、相関関係式を計算すると、その時間で処理可能な入力データ量が算出できる。また、相関関係式の計算結果が抽出ジョブの出力データ量となるような「&time」の値を逆算することもできる。このとき得られた「&time」は、出力データ量を加工ジョブが処理するのに要する時間（実行予測時間）を表している。相関関係解析部２２３は、作成した相関関係式を、ジョブ定義情報２１１に設定する。
【０１６７】
図２３は、相関関係式が設定されたジョブ定義情報の一例を示す図である。図２３に示すように、抽出ジョブ判定フラグが「ＯＮ」のジョブに対応付けて、相関関係式が設定される。
【０１６８】
以下、図２１の説明に戻る。
［ステップＳ２１４］相関関係解析部２２３は、すべての加工ジョブを処理したか否かを判断する。すべての加工ジョブを処理した場合、処理がステップＳ２１５に進められる。未処理の加工ジョブがある場合、処理がステップＳ２０５に進められる。
【０１６９】
［ステップＳ２１５］相関関係解析部２２３は、ジョブ定義情報２１１に登録されているすべてのジョブについて処理したか否かを判断する。未処理のジョブがあれば、処理がステップＳ２０１に進められる。すべてのジョブの処理が完了していれば、相関関係式導出処理が終了する。
【０１７０】
このような手順で、抽出ジョブと加工ジョブとの間の相関関係式が導出される。なお、加工ジョブの探索手順は以下の通りである。
図２４は、加工ジョブ探索処理の手順の一例を示すフローチャートである。
【０１７１】
［ステップＳ２２１］相関関係解析部２２３は、抽出ジョブのすべての出力ファイルを取得する。例えば相関関係解析部２２３は、ジョブ定義情報２１１を参照し、抽出ジョブの出力ファイルの識別情報を取得する。
【０１７２】
［ステップＳ２２２］相関関係解析部２２３は、ジョブ定義情報２１１からジョブの情報を１レコード取得する。
［ステップＳ２２３］相関関係解析部２２３は、抽出ジョブの出力ファイルの識別情報が、取得したレコードの入力ファイルの識別情報と一致するか否かを判断する。一致する場合、処理がステップＳ２２４に進められる。一致しない場合、処理がステップＳ２２５に進められる。
【０１７３】
［ステップＳ２２４］相関関係解析部２２３は、取得したレコードに示されるジョブを、加工ジョブであると認識する。
［ステップＳ２２５］相関関係解析部２２３は、ジョブ定義情報２１１に登録されているすべてのジョブについて処理したか否かを判断する。すべてのジョブについて処理が終了した場合、加工ジョブ探索処理が終了する。未処理のジョブがあれば、処理がステップＳ２２２に進められる。
【０１７４】
以上のようにして、テスト環境のサーバ２００において、抽出ジョブが特定され、さらに抽出ジョブと加工ジョブとの間の相関関係を示す相関関係式が求められる。求められた情報を用いて、バッチ業務の運用時のジョブ遅延検知が行われる。例えば、管理者は、テスト環境のサーバ２００に保持している管理ＤＢ２１０の情報を、運用環境のサーバ１００に転送する。
【０１７５】
図２５は、管理ＤＢの情報転送の一例を示す図である。テスト環境のサーバ２００では、管理ＤＢ２１０内の情報をエキスポートし、運用環境のサーバ１００に送信する。運用環境のサーバ１００では、受信した情報を管理ＤＢ１１０にインポートする。サーバ１００では、バッチ業務のジョブを実行する際に管理ＤＢ１１０に保存された情報を参照することで、ジョブの遅延検知を行うことができる。
【０１７６】
次に、運用環境のサーバ１００で実行される処理について詳細に説明する。
図２６は、運用環境で動作するサーバの機能を示す図である。サーバ１００は、管理ＤＢ１１０、ジョブ管理部１２０、アプリケーション記憶部１３０、業務データ記憶部１４０、およびアプリケーション実行部１５０を有している。
【０１７７】
管理ＤＢ１１０は、ジョブ定義情報１１１、稼働実績管理表１１２、相関関係表１１３、実行時間情報リスト１１４、および監視対象ジョブリスト１１５を格納する。ジョブ定義情報１１１の内容は、図２３に示したジョブ定義情報２１１と同様である。稼働実績管理表１１２の内容は、図２２に示した稼働実績管理表２１２と同様である。相関関係表１１３の内容は、図９に示した相関関係表２１３と同様である。実行時間情報リスト１１４の内容は、図１０に示した実行時間情報リスト２１４と同様である。監視対象ジョブリスト１１５は、遅延監視の対象とするジョブ（監視対象ジョブ）のリストである。
【０１７８】
ジョブ管理部１２０は、予め指定されたバッチ業務のジョブの実行、および遅延検知を行う。そのためにジョブ管理部１２０は、監視対象ジョブ設定部１２１、ジョブ実行制御部１２２、および遅延予測部１２３を有する。
【０１７９】
監視対象ジョブ設定部１２１は、遅延監視の対象とするジョブの設定、およびそのジョブの終了予定時刻の設定を行う。例えば監視対象ジョブ設定部１２１は、管理者が使用する端末装置３１に実行時間情報リスト１１４を送信し、加工ジョブに対する終了予定時刻の入力を受け付ける。監視対象ジョブ設定部１２１は、終了予定時刻が入力された加工ジョブを、監視対象ジョブとする。そして監視対象ジョブ設定部１２１は、監視対象ジョブリスト１１５を生成し、管理ＤＢ１１０に格納する。
【０１８０】
ジョブ実行制御部１２２は、運用中のバッチ業務におけるジョブを、ジョブネットに従った順番で実行する。なおバッチ業務のジョブネットは、予めサーバ１００に設定されている。
【０１８１】
遅延予測部１２３は、バッチ業務におけるジョブの実行中に、ジョブの遅延の発生を予測する。例えば遅延予測部１２３は、監視対象ジョブの前に実行される抽出ジョブの出力ファイルのデータ量に基づいて、監視対象ジョブに設定された終了予定時刻までに監視対象ジョブの実行を終了できるか否かを予測する。そして遅延予測部１２３は、終了予定時刻までに監視対象ジョブを終了できないと予測した場合に、アラームメッセージを出力する。
【０１８２】
アプリケーション記憶部１３０、業務データ記憶部１４０、およびアプリケーション実行部１５０は、それぞれ図６に示したテスト環境のサーバ２００における同名の要素と同じ機能を有している。
【０１８３】
次に、運用環境で動作するサーバ１００における処理手順について説明する。
図２７は、本運用の処理手順の一例を示すフローチャートである。
［ステップＳ３０１］監視対象ジョブ設定部１２１は、監視対象ジョブ設定処理を行う。この処理の詳細は後述する（図２８参照）。
【０１８４】
［ステップＳ３０２］ジョブ実行制御部１２２は、バッチ業務の開始時刻になったか否かを判断する。なおバッチ業務の開始時刻は予め設定されている。開始時刻になった場合、処理がステップＳ３０３に進められる。開始時刻になっていなければ、ステップＳ３０２の処理が繰り返される。
【０１８５】
［ステップＳ３０３］ジョブ実行制御部１２２は、バッチ業務の開始時刻になると、アプリケーション実行部１５０に対して、ジョブネットに示される順にジョブの実行を指示する。この指示により、アプリケーション実行部１５０がジョブを実行する。
【０１８６】
［ステップＳ３０４］遅延予測部１２３は、遅延予測処理を行う。遅延予測処理は、ジョブの実行が開始されると、実行中のジョブの実行状況に基づき、次に実行されるジョブに遅延が発生するかどうかを予測する処理である。遅延予測処理の詳細は後述する（図３３参照）。
【０１８７】
なお第２の実施の形態では、実行しているジョブが抽出ジョブであれば、アラームを出力する場合を除き、ジョブが終了するまで遅延予測処理が実行される。遅延予測処理でアラームが出力されると、ジョブの実行の終了を待たずに、遅延予測処理が終了する。また、実行しているジョブが抽出ジョブでなければ、ジョブの実行終了を待たずに、遅延予測処理が終了する。
【０１８８】
［ステップＳ３０５］ジョブ実行制御部１２２は、ジョブの実行が終了したか否かを判断する。例えばアプリケーション実行部１５０からジョブ実行終了の応答が返されたとき、ジョブの実行が終了したものと判断する。ジョブの実行が終了した場合、処理がステップＳ３０６に進められる。ジョブの実行が終了していなければ、ジョブ実行制御部１２２はステップＳ３０５を繰り返し、ジョブの終了を待つ。
【０１８９】
［ステップＳ３０６］ジョブ実行制御部１２２は、バッチ業務が終了したか否かを判断する。例えばジョブ実行制御部１２２は、ジョブネットにおける最後のジョブの実行が終了した場合、バッチ業務が終了したと判断する。バッチ業務が終了した場合、処理が終了する。バッチ業務における未実行のジョブがあれば、処理がステップＳ３０３に進められ、次のジョブが実行される。
【０１９０】
このような手順でバッチ業務が実行される。
次に監視対象ジョブ設定処理について詳細に説明する。
図２８は、監視対象ジョブ設定処理の手順の一例を示すフローチャートである。
【０１９１】
［ステップＳ３１１］監視対象ジョブ設定部１２１は、実行時間情報リスト１１４の監視対象候補を、最大実行時間でソートする。
［ステップＳ３１２］監視対象ジョブ設定部１２１は、ユーザ（例えばシステムの管理者）が使用する端末装置３１に監視対象候補一覧画面を表示する。
【０１９２】
［ステップＳ３１３］監視対象ジョブ設定部１２１は、端末装置３１を介して、ユーザからの監視対象ジョブの指定、および監視対象ジョブの終了予定時刻の入力を受け付ける。
【０１９３】
［ステップＳ３１４］監視対象ジョブ設定部１２１は、入力された終了予定時刻を、ジョブ定義情報１１１に格納する。
［ステップＳ３１５］監視対象ジョブ設定部１２１は、監視対象ジョブリスト１１５を作成する。例えば監視対象ジョブ設定部１２１は、相関関係表１１３に設定されたレコードをコピーする。そして監視対象ジョブ設定部１２１は、コピーしたレコードに、ジョブ定義情報１１１に示される監視対象ジョブの終了予定時刻と相関関係式とを追加し、監視対象ジョブリストとする。
【０１９４】
このようにして監視対象ジョブリストが生成される。例えば、ステップＳ３１１のソート処理により、図２９に実行時間情報リスト１１４のレコードがソートされる。
図２９は、ソートされた実行時間情報リストの一例を示す図である。図２９に示すように、実行時間情報リスト１１４内のレコードが、最大実行時間の値が大きいほど上位に並べ替えられている。最大実行時間が同じ値のレコードが複数ある場合、例えば平均実行時間の値が大きいほど上位に並べ替えられる。
【０１９５】
ソート後の実行時間情報リスト１１４に基づいて、端末装置３１に監視対象候補一覧画面が表示される。
図３０は、監視対象候補一覧画面の一例を示す図である。監視対象候補一覧画面５０には、監視対象候補表示部５１と設定ボタン５２とが設けられている。
【０１９６】
監視対象候補表示部５１には、実行時間情報リスト１１４の内容が表示されている。すなわち、監視対象候補表示部５１には、加工ジョブの一覧が、最大実行時間の値が大きい順に表示されている。監視対象候補表示部５１に示された加工ジョブが、監視対象候補である。
【０１９７】
また監視対象候補表示部５１には、加工ジョブごとに、終了予定時刻の設定欄が設けられている。ユーザは、監視対象とする加工ジョブに対して終了予定時刻を入力することができる。
【０１９８】
図３１は、終了予定時刻を入力した監視対象候補一覧画面の例を示す図である。終了予定時刻を入力後、ユーザは設定ボタン５２を押下する。
設定ボタン５２は、入力された終了予定時刻の設定をサーバ１００に指示するためのボタンである。設定ボタン５２が押下されると、端末装置３１からサーバ１００に、監視対象とする加工ジョブの終了予定時刻が送信される。
【０１９９】
サーバ１００では、送信された終了予定時刻に基づいて、監視対象ジョブリスト１１５が生成される。
図３２は、監視対象ジョブリストの一例を示す図である。監視対象ジョブリスト１１５は、例えば相関関係表１１３に終了予定時刻と相関関係式との欄を追加したデータ構造となっている。終了予定時刻の欄には、監視対象ジョブの終了予定時刻が設定される。相関関係式の欄には、監視対象ジョブの相関関係式が設定される。
【０２００】
このような監視対象ジョブリスト１１５が作成された後、バッチ業務の開始時刻になると、ジョブネットに示される順でジョブが実行されると共に、遅延予測処理が行われる。
図３３は、遅延予測処理の手順の一例を示すフローチャートである。
【０２０１】
［ステップＳ３２１］遅延予測部１２３は、ジョブ定義情報１１１を参照し、実行対象のジョブの抽出ジョブ判定フラグが「ＯＮ」か否かを判断する。抽出ジョブ判定フラグが「ＯＮ」であれば、処理がステップＳ３２２に進められる。抽出ジョブ判定フラグが「ＯＦＦ」であれば、遅延予測処理が終了する。
【０２０２】
［ステップＳ３２２］遅延予測部１２３は、実行しているジョブ（抽出ジョブ）が抽出したデータサイズを取得し、そのデータサイズを、実行している抽出ジョブに対応付けて監視対象ジョブリスト１１５に格納する。
【０２０３】
［ステップＳ３２３］遅延予測部１２３は、監視対象ジョブリスト１１５を参照し、実行している抽出ジョブに対応付けて、その抽出ジョブの次に実行する加工ジョブ（監視対象ジョブ）の終了予定時刻が設定されているか否かを判断する。終了予定時刻が設定されていれば、処理がステップＳ３２４に進められる。終了時刻が設定されていなければ、処理がステップＳ３３０に進められる。
【０２０４】
［ステップＳ３２４］遅延予測部１２３は、終了時刻が設定されている場合、終了予定時刻までの差分時間を算出する。例えば遅延予測部１２３は、監視対象ジョブリスト１１５に示されている終了予定時刻から現在の時刻を減算し、差分時間とする。
【０２０５】
［ステップＳ３２５］遅延予測部１２３は、実行している抽出ジョブの相関関係式を演算する。例えば遅延予測部１２３は、相関関係式を監視対象ジョブリスト１１５から取得する。そして遅延予測部１２３は、相関関係式の「&time」に差分時間を代入して、演算する。演算により、差分時間内で加工ジョブが処理可能なデータ量が得られる。
【０２０６】
［ステップＳ３２６］遅延予測部１２３は、相関関係式の演算結果を、データサイズの上限値として、監視対象ジョブリスト１１５に格納する。
［ステップＳ３２７］遅延予測部１２３は、抽出データサイズが上限値より大きいか否かを判断する。抽出データサイズが上限値より大きい場合、処理がステップＳ３３３に進められる。抽出データサイズが上限値以下であれば、処理がステップＳ３２８に進められる。
【０２０７】
［ステップＳ３２８］遅延予測部１２３は、ジョブが終了したか否かを判断する。ジョブが終了した場合、遅延予測処理が終了する。ジョブが終了していなければ、処理がステップＳ３２９に進められる。
【０２０８】
［ステップＳ３２９］遅延予測部１２３は、１分間だけ待機する。その後、処理がステップＳ３２２に進められ、再度、抽出データサイズが取得される。
［ステップＳ３３０］実行している抽出ジョブに終了予定時刻が設定されていない場合、遅延予測部１２３は、実行時間情報リスト１１４から、その抽出ジョブに対応する加工ジョブの最大実行時間を取得する。
【０２０９】
［ステップＳ３３１］遅延予測部１２３は、加工ジョブの実行予測時間を、相関関係式に基づいて算出する。例えば遅延予測部１２３は、相関関係式の計算結果が、ステップＳ３２２で取得した抽出データサイズとなるような、変数「&time」の値を求める。得られた値が、実行予測時間となる。例えば相関関係式が「&time／611／1.043838×1.33GB」であれば、「入力ファイルサイズ／1.33GB×611秒×1.043838」の計算結果が、実行予測時間となる。
【０２１０】
［ステップＳ３３２］遅延予測部１２３は、実行予測時間が最大実行時間の１０倍よりも大きいか否かを判断する。実行予測時間が最大実行時間の１０倍より大きければ、処理がステップＳ３３３に進められる。実行予測時間が最大実行時間の１０倍以下であれば、処理がステップＳ３２８に進められる。
【０２１１】
［ステップＳ３３３］遅延予測部１２３は、終了予定時刻が設定されている場合において、抽出データサイズが上限値より大きければ、加工ジョブが遅延するものと予測し、アラームを出力する。また遅延予測部１２３は、終了予定時刻が設定されていない場合において、実行予測時間が最大実行時間の１０倍より大きければ、加工ジョブが遅延するものと予測し、アラームを出力する。その後、遅延予測処理が終了する。
【０２１２】
このようにして、遅延予測が行われる。なお図３３に示すように、第２の実施の形態では、終了予定時刻が設定されていない監視対象ジョブが存在することを許容している。これは、監視対象候補一覧画面５０には、抽出ジョブの出力ファイルを入力とするジョブすべてが一覧表示されるので、監視対象として重要ではないジョブも含め、大量のジョブが表示される可能性があるためである。監視対象として重要ではないジョブは、例えば、最大実行時間や平均実行時間が非常に短いジョブである。大量のジョブが一覧表示されたときに、すべてのジョブに対して終了予定時刻を登録するのは現実的ではない。そこで、例えば入力ファイルが大きくなってもジョブの実行時間があまり長くならないことが分かっている監視対象ジョブについては、終了予定時刻を設定しなくてもよい。
【０２１３】
図３４は、遅延予測処理中の監視対象ジョブリストの一例を示す図である。遅延予測処理が実施されると、監視対象ジョブリスト１１５には、抽出データサイズとデータサイズの上限値との欄が追加される。抽出データサイズの欄には、抽出ジョブで抽出したデータ量が設定される。データサイズの上限値の欄には、終了予測時刻までに加工ジョブで処理できるデータ量の上限値が設定される。
【０２１４】
抽出データサイズは、抽出ジョブの処理が進行するのに従って増加する。他方、データサイズの上限値は、抽出ジョブの処理が進行するのに従って減少する（終了予定時刻までの残り時間が減るため）。抽出データサイズがデータサイズの上限値以下の間に、抽出ジョブが終了すれば、アラームは出力されない。
【０２１５】
しかし、抽出ジョブによって想定以上のデータ量の抽出が行われると、抽出データサイズがデータサイズの上限値を上回る場合がある。
図３５は、アラーム出力時の監視対象ジョブリストの一例を示す図である。図３５の例では、ジョブ名「job001」の抽出ジョブについて、抽出データサイズが、データサイズの上限値より大きくなっている。
【０２１６】
このような状況が確認されると、遅延予測部１２３によってアラームが出力される。出力されるアラームは、例えばユーザが使用する端末装置３１の画面に表示される。
図３６は、アラーム表示画面の一例を示す図である。アラーム表示画面６０には、検知時刻、遅延が発生するジョブネット名、実行ジョブ名、監視対象ジョブ名、監視対象ジョブ実行予測時間、監視対象ジョブ実行終了見込み時刻、監視対象ジョブの状態が含まれる。
【０２１７】
検知時刻は、遅延が発生するとの予測を検知した時刻である。ジョブネット名は、遅延の発生が見込まれるジョブが属するジョブネットの名称である。実行ジョブ名は、実行中のジョブ（遅延の発生が見込まれるジョブに先行して実行されている抽出ジョブ）の名称である。監視対象ジョブ名は、遅延の発生が見込まれるジョブの名称である。監視対象ジョブ実行予測時間は、遅延の発生が見込まれるジョブの実行に要する時間の予測値である。監視対象ジョブ実行終了見込み時刻は、遅延の発生が見込まれるジョブの実行終了時刻の予測値である。監視対象ジョブの状態は、遅延の発生が見込まれるジョブの現在の状態である。例えば、先行するジョブの実行中であれば、遅延の発生が見込まれるジョブの状態は「実行待ち」となる。
【０２１８】
またアラーム表示画面６０には、例えばジョブの実行遅延が予測されることに加え、対処を促すメッセージが表示される。さらに、アラーム表示画面６０には、実行中のジョブや、遅延の発生が見込まれるジョブの後続ジョブ一覧が表示される。実行中のジョブの後続ジョブ一覧には、例えば実行中のジョブの抽出ファイルを用いて、遅延の発生が見込まれるジョブと並列で実行する他のジョブがあった場合に、そのジョブが表示される。遅延の発生が見込まれるジョブの後続ジョブ一覧には、例えば遅延の発生が見込まれるジョブの後に順次実行されるジョブが、実行順に並べて所定数表示される。
【０２１９】
このようなアラーム表示画面をユーザが確認することで、ジョブの実行遅延の発生をユーザが認識し、バッチ業務の実行可能期間内にジョブネットのジョブを終了させるための対策を採ることができる。例えば、遅延の発生が見込まれるジョブの後続ジョブの中に、翌日に実行してもよいジョブがあれば、そのジョブを本日の実行対象から除外することができる。
【０２２０】
以上説明したように、第２の実施の形態によれば、バッチ業務の遅延を早期に検知し、早い段階で遅延検知が可能となり、翌日オンライン停止など業務影響を抑止できる。そのため、大きなデータに対する長時間走行ジョブを実行開始前に遅延を予測検知できる。また突発的なデータ量増加があっても、早期に遅延を予測検知できる。
【０２２１】
また、第２の実施の形態では、監視対象とするジョブ（抽出ジョブの抽出ファイルを使用する加工ジョブ）を自動検出できる。そのため、人手で稼働実績を分析するようなユーザの手間を省くことができると共に、監視対象として適切なジョブについて、遅延監視を行うことができる。
【０２２２】
しかも、第２の実施の形態では、抽出ジョブの複数の特性について満足しているかどうか評価し、抽出ジョブであるかどうかを判定している。そのため、抽出ジョブを高精度に特定することができる。
【０２２３】
さらに第２の実施の形態では、ファイル受渡しをするジョブの組すべてについて相関関係を導出するのではなく、抽出ジョブと、その抽出ジョブが出力したファイルを入力とする加工ジョブとの組についてのみ相関関係を導出している。これにより、相関関係導出の処理負荷を低減できる。ここで、相関関係の導出に利用する稼働履歴データは、これから本運用環境へリリースする最新アプリケーションに基づくジョブに限定して採取することで、相関関係の精度を落とさないようにすることができる。
【０２２４】
また、監視対象を抽出ジョブに限定したことで、闇雲にすべてのジョブの出力ファイルサイズから遅延の発生を予測する場合に比べ、リソース（ＣＰＵやメモリ）の消費を抑止することができる。
【０２２５】
なお第２の実施の形態ではテスト環境のサーバ２００と運用環境のサーバ１００とを別で設けているが、１つのサーバにテスト環境と運用環境とを実装してもよい。
以上、実施の形態を例示したが、実施の形態で示した各部の構成は同様の機能を有する他のものに置換することができる。また、他の任意の構成物や工程が付加されてもよい。さらに、前述した実施の形態のうちの任意の２以上の構成（特徴）を組み合わせたものであってもよい。
【符号の説明】
【０２２６】
１ａ，１ｂ，・・・  ジョブ
２ａ，２ｂ  入力ファイル
３ａ，３ｂ  出力ファイル
１０  情報処理装置
１１  特定手段
１２  期限設定手段
１３  監視手段
１４  予測手段
１５  アラーム
【図１】
2015026197.tif 000003
【図２】
2015026197.tif 000004
【図３】
2015026197.tif 000005
【図４】
2015026197.tif 000006
【図５】
2015026197.tif 000007
【図６】
2015026197.tif 000008
【図７】
2015026197.tif 000009
【図８】
2015026197.tif 000010
【図９】
2015026197.tif 000011
【図１０】
2015026197.tif 000012
【図１１】
2015026197.tif 000013
【図１２】
2015026197.tif 000014
【図１３】
2015026197.tif 000015
【図１４】
2015026197.tif 000016
【図１５】
2015026197.tif 000017
【図１６】
2015026197.tif 000018
【図１７】
2015026197.tif 000019
【図１８】
2015026197.tif 000020
【図１９】
2015026197.tif 000021
【図２０】
2015026197.tif 000022
【図２１】
2015026197.tif 000023
【図２２】
2015026197.tif 000024
【図２３】
2015026197.tif 000025
【図２４】
2015026197.tif 000026
【図２５】
2015026197.tif 000027
【図２６】
2015026197.tif 000028
【図２７】
2015026197.tif 000029
【図２８】
2015026197.tif 000030
【図２９】
2015026197.tif 000031
【図３０】
2015026197.tif 000032
【図３１】
2015026197.tif 000033
【図３２】
2015026197.tif 000034
【図３３】
2015026197.tif 000035
【図３４】
2015026197.tif 000036
【図３５】
2015026197.tif 000037
【図３６】
2015026197.tif 000038