指定された日時に指定された業務プログラムを実行するジョブ管理システムにおいて、新規に追加するジョブに対してはジョブに定義した外部プログラムを実行し、既に運用中のジョブに対してはジョブに定義したプログラムではなく、過去の統計情報を利用して擬似的にプログラムを実行し、ログ出力やDBアクセスで発生するオーバーヘッドを加味したシミュレーション結果を出力する手段を備えたことを特徴とするジョブシミュレーション方法。既に運用しているジョブと新規に追加するジョブのシミュレーション結果を同時に表示し、新規にジョブを追加した時の影響範囲を確認する手段をさらに備えることを特徴とする請求項1記載のジョブシミュレーション方法。過去の実行結果とシミュレーション結果を同時に表示し、新規にジョブを追加した時の影響範囲を比較する手段をさらに備えることを特徴とする請求項1または2に記載のジョブシミュレーション方法。新規に追加するジョブネットのスケジュールについて複数組のスケジュールを保持し、これらの各スケジュールでのシミュレーション結果を出力し、それを比較、検証する手段をさらに備えることを特徴とする請求項1~3のいずれかに記載のジョブシミュレーション方法。現在時刻とシミュレーションを開始する時刻の差を考慮し、現在時刻からシミュレーションを開始する時刻までの差を補正し、シミュレーション開始予定の日時に到達していなくても、事前にシミュレーションの結果を算出する手段をさらに備えることを特徴とする請求項1~4のいずれかに記載のジョブシミュレーション方法。ジョブ管理システムを用いて業務を運用していると、業務量の増加に伴い、新たに作成したジョブを現在業務が運用している環境である本番環境に追加することがある。新たなジョブを追加するための運用方法としては、本番運用開始前に新規に作成したジョブが意図した通り実行されるか、また、ジョブに定義した外部プログラムが正常に動作するかを事前に確認するために、本番環境とは別に動作検証を行うための環境である検証環境を構築し、そこで動作検証をした後に、運用中の環境にそのジョブをコピーして本番の運用を行なうといった方法がとられることが多い。しかし、この運用方法だと検証環境で確認できることは、新たに追加したジョブが定義した通りに動くかどうかだけであり、すでに運用されているジョブのスケジュールに影響を及ぼすかどうかを確認するためには、本番環境にあるジョブの定義を検証環境上に持ってきて新たに追加するジョブと一緒に動かす必要があった。しかし、検証環境で実際の業務に使用しているジョブのプログラムをそのまま動作させることは、プログラムが2重に実行されるリスク生じるため、そのまま動かすことが出来ないことが多い。そのため、検証環境で本番環境と同じようなスケジュールでジョブを動作させるには、検証環境で実行されるジョブのプログラムを本番環境上と同じような時間だけ動作するプログラムに置き換える必要がある。しかし、本番運用のジョブ全てに対して、1つずつ手動でジョブの統計情報から実行時間を調べて、プログラムを置き換えていくのは無駄が多く、効率化という点で好ましくないものであった。そこで、先行技術にあるような手法で、すでに運用されているジョブへの影響をシミュレーションすることを考える。ただ、ジョブ管理システムはジョブの実行を行うだけではなく、その時々のジョブの状態や結果の監視を行い、状態や結果が更新されるたびにDBアクセス処理やログ出力処理を行うシステムである。そのため、同時間帯に動作するジョブが大量に存在する場合は、上記のログ出力処理やDBアクセス処理などで発生するオーバーヘッドが無視できない大きさとなり、その影響によりジョブの実行が遅延するといった問題が発生することがある。このことから、新たにジョブを追加する際は、ジョブ管理システムのオーバーヘッドも考慮してスケジューリングを行う必要があるが、既存技術の手法では、ジョブ管理システムのオーバーヘッドを考慮してシミュレーションを行っていないため、シミュレーション結果の精度が悪くなるという問題があった。本発明はこのような問題に鑑みなされたもので、その目的は、新たにジョブを追加する際に、すでに運用中のジョブのスケジュールにどのような影響を与えるのかを、ジョブ管理システムのオーバーヘッドを考慮した上で、本番環境のジョブ管理システムに影響を与えることなくシミュレーションを行うジョブシミュレーション方法を提供することにある。上記目的を達成するために、本発明のジョブシミュレーション方法は、指定された日時に指定された業務プログラムを実行するジョブ管理システムにおいて、新規に追加するジョブに対してはジョブに定義した外部プログラムを実行し、既に運用中のジョブに対してはジョブに定義したプログラムではなく、過去の統計情報を利用して擬似的にプログラムを実行し、ログ出力やDBアクセスで発生するオーバーヘッドを加味したシミュレーション結果を出力する手段を備えたことを特徴とする。また、既に運用しているジョブと新規に追加するジョブのシミュレーション結果を同時に表示し、新規にジョブを追加した時の影響範囲を確認する手段をさらに備えることを特徴とする。また、過去の実行結果とシミュレーション結果を同時に表示し、新規にジョブを追加した時の影響範囲を比較する手段をさらに備えることを特徴とする。また、新規に追加するジョブネットのスケジュールについて複数組のスケジュールを保持し、これらの各スケジュールでのシミュレーション結果を出力し、それを比較、検証する手段をさらに備えることを特徴とする。また、現在時刻とシミュレーションを開始する時刻の差を考慮し、現在時刻からシミュレーションを開始する時刻までの差を補正し、シミュレーション開始予定の日時に到達していなくても、事前にシミュレーションの結果を算出する手段をさらに備えることを特徴とする。本発明のジョブシミュレーション機能によれば、次のような効果がある。ジョブ管理システムのオーバーヘッドを加味したシミュレーション結果を出力することで、実際の運用に即した精度が高いシミュレーション結果を算出することができる。また、この結果から本番環境で実際に新規のジョブを追加する前に、既に運用されているジョブのスケジュールへの影響を確認することで、事前に負荷分散などのスケジュール調整を行うことができるなどの効果がある。以下、本発明の一実施形態について図面を用いて詳細に説明する。なお、本発明で述べるジョブとは、コンピューターが処理する仕事の単位を意味し、各種業務に対応した外部プログラムを定義できるものである。またジョブネットとは、複数のジョブをまとめてそれぞれのジョブの実行順序を定義したものである。図1は、本発明の一実施形態を示すシステム構成図である。この実施形態では、実際の業務をジョブとして管理しているジョブ管理マネージャー102がインストールされているホストマシン101Aと、新規にジョブを追加した時の影響範囲をシミュレーションするシミュレーションシステムマネージャー103がインストールされているホストマシン101Bと、ジョブ管理マネージャー102やシミュレーションシステムマネージャー103から配信されたジョブを実際に実行するジョブ実行エージェントがインストールされているホストマシンと、ジョブ管理マネージャー102やシミュレーションシステムマネージャー103に対して、データの入力と結果の出力を行うことができる端末105がネットワーク106で相互に接続されている。ここで、ホストマシンは実際の業務を運用しているマシンであり、ホストマシンは新規に追加するジョブと既に運用されているジョブに対するシミュレーションを行うためのマシンである。ここで、実際の業務を運用しているマシンを本番環境、シミュレーションを行うためのマシンを検証環境と定義する。本番環境は、1台のジョブ管理マネージャー102と3台のジョブ実行エージェントから構成される。ジョブ管理マネージャー102は管理しているジョブを各ジョブ実行エージェントに配信し、ジョブの実行を行う。ジョブの配信先は各ジョブの業務内容によって異なり、任意に指定することができる。ジョブの実行が終了したら、ジョブ実行エージェントからジョブの実行結果をジョブ管理マネージャー102へ通知する。結果の通知を受けたジョブ管理マネージャー102は該当のジョブの実行を終了させることで日々の業務を運用している。検証環境は、1台のシミュレーションシステムマネージャー103と2台のジョブ実行エージェントから構成される。シミュレーションシステムマネージャー103上では新規に登録するジョブと、すでに本番環境で運用されているジョブを管理しており、各ジョブ実行エージェントに配信して、ジョブの実行を行う。ジョブの配信先は新規に追加するジョブか、すでに運用中のジョブかで異なる。動作した実績のない新たに追加するジョブは、ジョブに定義された外部プログラムの動作検証をする必要があるため、任意のジョブ実行エージェントで実行するが、すでに動作した実績がある本番環境で運用されているジョブは、動作の検証が不必要なため、専用のジョブ実行エージェントで実行する。本番環境、検証環境ともに端末105の画面上で、データの入力や結果の出力に加え、現在のジョブの実行状態を監視することができる。図2はジョブ管理マネージャー102の構成図である。ジョブ管理マネージャー102は、ジョブネットのスケジュール情報が格納されているジョブスケジュール定義DB201と、そのジョブスケジュール定義DB201からデータを読み込み、スケジュールを算出するスケジュール算出部202と、ジョブネットやジョブの定義情報が格納されているジョブ定義DB203と、ジョブネットを開始する時にジョブ定義DB203からジョブネット配下のジョブのデータをメモリ中に読み込むジョブ定義読込部204と、ジョブネットの中でまだ実行されていないジョブの実行をジョブ実行エージェントに要求し、その結果を受け取るジョブ実行処理部205と、ジョブ実行処理部205で動作したジョブの状態や開始時刻、終了時刻、統計情報などを格納する実行結果情報DB206と、スケジュール算出部202、ジョブ定義読込部204、ジョブ実行処理部205の制御を行うジョブ実行制御部207と、ジョブスケジュール定義DB201に登録するジョブスケジュール定義がCSV形式で記載されているジョブスケジュール定義ファイル208と、ジョブ定義DB203に登録するジョブ定義がCSV形式で記載されているジョブ定義ファイル209と、ジョブスケジュール定義ファイル208やジョブ定義ファイル209のデータをジョブスケジュール定義DB201やジョブ定義DB203に格納するジョブ定義更新部210から構成される。図3はジョブ実行エージェントの構成図である。ジョブ実行エージェントは、ジョブ処理部205からジョブの実行要求を受け付け、受け付けた要求に対してジョブプロセスを生成し、生成したプロセスが正常に終了したら正常終了を、プロセスを生成する過程で異常終了したら異常終了をジョブ実行処理部205に通知するジョブ実行部301から構成される。図4はジョブスケジュール定義DB201に格納するスケジュール情報テーブル401と、ジョブスケジュール定義ファイル405のデータ構成図の一例を示す図である。スケジュール情報テーブル401のレコードは、ジョブネットで一意に特定されるジョブネット名402と、ジョブネット毎に設定した開始時刻403と処理サイクル404から構成される。各項目はジョブスケジュール定義ファイル405のデータに対して、ジョブ定義更新部210でインポート処理を行うことで、データが1行ずつレコードに格納される。ジョブスケジュール定義ファイル405は、ジョブスケジュール定義テーブル405に格納するためのデータがCSV形式で記載される。図に示した例では、JobNetAには毎日0000、JobNetBには毎月15日の1015、JobNetCには毎週木曜日の0300にジョブネットを開始するスケジュールが格納されている。図5はジョブ定義DB203に格納するジョブ定義テーブル501と、ジョブ定義ファイル507のデータ構成図の一例を示す図である。ジョブ定義テーブル501のレコードは、ジョブネットジョブで一意に特定されるジョブネットジョブ名502と、該当のジョブを含む上位のジョブネット名を示す上位ジョブネット名503と、該当のジョブの先行にあるジョブを示す先行ジョブ名504と、該当のジョブの実行先を示す実行先エージェント名505と、該当のジョブが実行する外部プログラムを示す実行プログラム506から構成される。各項目はジョブ定義ファイル507のデータに対して、ジョブ定義更新部210でインポート処理を行うことで、データが1行ずつレコード上に格納される。ジョブ定義ファイル507は、ジョブ定義テーブル501に格納するためのデータがCSV形式で記載される。図に示した例では、JobNetAの配下にJobA1、JobA2があり、JobA1は先頭のジョブで、実行先エージェント505としてホストマシン101C、実行プログラム506としてoptxxxxxxshが格納され、JobA2には先行ジョブ名504としてJobA1、実行先エージェント505としてホストマシン101E、実行プログラム506としてoptyyyyyyshが格納されている。また、JobA1の先行ジョブ名504のように設定するものがない場合は、値は設定されない。図6は実行結果情報DB206に格納する実行結果テーブル601とジョブ統計情報テーブル606のデータ構成図の一例を示す図である。実行結果テーブル601のレコードは、ジョブネットジョブで一意に特定されるジョブネットジョブ名602と、該当のジョブネットやジョブの状態603と、該当のジョブネットやジョブが開始した時刻を示す開始時刻604と該当のジョブネットやジョブが終了した時刻を示す終了時刻605から構成される。該当のジョブネットやジョブが開始されるときにジョブネットジョブ名602と状態603、開始時刻604が格納され、終了する時に状態603と終了時刻605が更新される。ジョブ統計情報テーブル606は、ジョブで一意に特定されるジョブ名607と、該当のジョブのこれまでに実行された所要時間を合計した総実行時間608と、該当のジョブのこれまでに実行した総実行回数609と、上記総実行時間608から総実行回数609を除算した平均実行時間610から構成される。ジョブの実行が終了したときに、終了時刻から開始時刻の差が総実行時間608に足され、総実行回数609が1増加され更新される。また、総実行時間、総実行回数が更新された後に、平均実行時間610が計算され更新される。図に示した例では、実行結果テーブル601のレコードには、JobA1の状態として正常終了、開始時刻として20110610000000、終了時刻として20110610010001が格納されている。また、ジョブ統計情報テーブル606には、JobA1の総実行時間608として36000、総実行回数609として10、平均実行時間610として3600が格納されている。図7はシミュレーションシステムマネージャー103の構成図である。シミュレーションシステムマネージャー103は、シミュレーション処理の実行開始を指示するシミュレーション実行指示部701と、シミュレーションを行う前の事前準備を行うシミュレーション事前処理部702と、実際にシミュレーション処理を行うジョブ実行管理部703と、シミュレーションを行うために実行されたジョブの結果を解析し、シミュレーション結果として出力し直すシミュレーション結果解析部704と、シミュレーションの対象となる本番環境のジョブスケジュール定義DB203の内容をコピーしたジョブスケジュール定義DB705と、同様に本番環境のジョブ定義DB205の内容をコピーしたジョブ定義DB706と、同様に本番環境の実行結果情報DB207の内容をコピーした実行結果情報DB707と、新たに追加するジョブネットのスケジュール情報がcsv形式で記載されているジョブスケジュールファイル708と、新たに追加するジョブネットやジョブの定義がCSV形式で記載されているジョブ定義ファイル709と、シミュレーション結果解析部704で解析した結果を出力するシミュレーション結果ファイル710と、ジョブスケジュール定義ファイル708やジョブ定義ファイル709のデータをジョブスケジュール定義DB705やジョブ定義DB706に格納するジョブ定義更新部711から構成される。なお、ジョブスケジュール定義DB705、ジョブ定義DB706、実行結果情報DB707、ジョブスケジュール定義ファイル708、ジョブ定義ファイル709のデータ構成図は、先に述べたものと同じである。図8は、シミュレーションを行う際のデータを入力する端末105上の画面のイメージ図である。データを入力後、画面下部のシミュレーション実行ボタンを押すことでシミュレーション事前処理部702に指示が送られる。入力するデータは新規に登録したいジョブネットを入力する新規追加予定ジョブネット名801と、シミュレーションを行う期間を指定するシミュレーション開始日時802、シミュレーション終了日時803から構成される。図に示した例では、新規追加予定ジョブネット名801にJobNetG、JobNetH、シミュレーション開始日時802に201106301000、シミュレーション終了日時803に201106301200が入力されている。図9はシミュレーションシステムマネージャー103がシミュレーションをする時の処理の流れを示すフローチャートである。まず図8に示したように、シミュレーションを行うためのデータの入力を行い、シミュレーション実行ボタンを押すことでシミュレーション実行の指示を行う。次にシミュレーションを行うための事前準備として、すでに動作していたジョブの統計情報をメモリに読み込むといったシミュレーション事前処理を行う。事前処理完了後、定義されている全てのジョブネットに対して、入力されたシミュレーション開始日以降のスケジュール算出を行い、実行できるジョブをジョブ実行エージェントに要求するジョブの実行制御処理を行う。その後、シミュレーションを行った実行結果を解析し、シミュレーション結果ファイルに解析結果を出力するシミュレーション結果解析処理を行い、処理を終了する。図10はシミュレーションを行う前の事前準備の処理を行うシミュレーション事前処理の概要を示すフローチャートである。シミュレーション事前処理は、ジョブ実行指示部701からシミュレーション実行の要求が通知されてから処理が開始される。まず実行結果情報DB707のジョブ統計情報テーブルを読み込み、ジョブの平均実行時間をメモリ上に読み込む。上記処理をすべてのレコードに対して繰り返す。次にシミュレーションの処理を行っているときの現在時刻とのずれを補うために、シミュレーション差分時間を算出し、メモリに書き込む。シミュレーション差分時間はシミュレーション開始日時802で設定した日時-シミュレーション実行ボタンを押してシミュレーションを開始した時刻で求めることができる。例えば、現在時刻が201106301000であり、シミュレーション開始日時802に設定した日時が201106301200としてシミュレーションを実行したとすると、シミュレーション差分時間は2時間である。この値はシミュレーションを行った結果として、ジョブネットやジョブの開始時刻604や終了時刻605をジョブ結果情報DB707に書き込む際に使用する。図11はジョブの状態遷移やジョブの実行要求をジョブ実行エージェント上のジョブ実行部301に対して通知するジョブ実行制御部703の処理の概要を示すフローチャートである。図では1つのジョブネットに対するスケジュールの算出からジョブの終了までの処理の流れを記載しているが、定義しているジョブネットが複数ある場合は、ジョブネット毎に並列して同時に処理が実行される。まず、ジョブスケジュール定義DB705を読み込み、シミュレーション開始日時802に設定した日時以降のスケジュールを作成する。作成したスケジュールがシミュレーション開始日時802からシミュレーション終了日時803までに指定した期間内にあるか判定する。期間内にない場合は、そのジョブネットはシミュレーション対象外であり、シミュレーションを行う必要がないため処理を終了する。期間内にある場合は、そのジョブネットはシミュレーション対象のため、ジョブネットが開始日時に到達するまで待機する。ただし、実際にスケジュール算出された時刻まで待機するのではなく、待機する時間はジョブネットの開始日時からシミュレーション開始日時に指定した日時を引いた時間だけ待機する。ジョブネットの開始時刻に到達したらジョブ定義DB706からジョブの定義を読み込み、実行結果情報DB707にジョブネットの状態と開始時刻を出力する。ここで、出力する時刻は現在の時刻にシミュレーション事前処理のステップ1003で求めたシミュレーション差分時間を足したものである。ここで例を用いて説明すると、シミュレーションを実行した日時が201106301000、シミュレーション開始日時802に設定した日時が201106301200、シミュレーション終了日時803に設定した日時が201106301400、スケジュール算出処理によって算出されたジョブネットの開始日時のスケジュールが201106301300の場合、算出されたスケジュールはシミュレーション実行の期間内のため、ジョブネットはシミュレーション対象である。そのため、ジョブネットの開始日時からシミュレーション開始日時802に設定した日時を引いた1時間後の201106301100に到達したらジョブネットを開始する。201106301100に到達後、この時刻のまま実行結果情報DB707にジョブネットの開始時刻を格納してしまうと、スケジュール算出した本来の開始日時である201106301300とのずれが発生する。そのため、シミュレーション差分時間として、シミュレーション開始日時802に設定した値からシミュレーションを実行した日時を引いた2時間を足すことで、時刻を201106301300に補正した後、実行結果情報DB707に開始時刻を格納する。なお、ジョブネットの開始時刻だけでなく、ジョブネットの終了時刻、ジョブの開始時刻、終了時刻を出力する際も同様に現在時刻にシミュレーション差分時間を足して、実行結果情報DB707に格納する。次にジョブネット配下にまだ実行していないジョブがあるかどうか判定する。ジョブネット配下に実行していないジョブがある場合、さらに対象のジョブネットが新規登録予定のジョブネットかどうかを判定する。対象のジョブネットが新規登録予定のジョブネットの場合、ジョブに定義されている実行プログラムを実行するため、実行結果情報DB707にジョブの状態と開始時刻を格納し、ジョブ実行部へジョブの実行要求を通知する。対象のジョブネットが新規登録予定のジョブネットでない場合、ジョブに定義された実行プログラムを実行せずに、ジョブ統計情報テーブルの平均実行時間分ジョブを擬似的に実行させるため、メモリからジョブの平均実行時間を取り出し、ジョブに定義されている外部プログラムを指定の時間処理を待機するダミープログラムに置き換え、ステップ1112、1113の処理を行い、ジョブを実行する。ジョブが実行され、ジョブ実行部301からジョブの終了が通知されたのを検知したら、実行結果情報DB707にジョブの状態と終了時刻を格納する。その後、ジョブネット配下にまだ実行していないジョブがあるかどうか再度判定を行い、ジョブネット配下で実行していないジョブがなくなるまで処理を繰り返す。ジョブネット配下のジョブに実行していないジョブがなくなった場合、ジョブネット配下のジョブが全て終了したことを意味するので、実行結果情報DB707にジョブネットの状態と終了時刻を出力し、処理を終了する。図12はジョブ実行エージェント上でジョブの実行を行うジョブ実行処理の概要を示すフローチャートである。図ではジョブ実行制御部から1つのジョブの実行要求を受け付け、ジョブを実行し、結果を要求元に通知する処理の流れを記載しているが、要求が複数ある場合は、要求毎に並列して同時に処理が実行される。まず、実行要求のあったジョブに定義されているプログラムを実行する。プログラムの終了を監視し、終了を検知したらジョブの実行が終了したことを実行要求元に通知し、通知が完了したら処理を終了する。図13はシミュレーションシステムマネージャー103の実行結果情報DB707から、シミュレーション対象のジョブネットやジョブに関する情報を解析し、シミュレーション結果ファイル710に出力するシミュレーション結果解析の処理の概要を示すフローチャートである。シミュレーション結果解析の処理は、シミュレーション対象の全てのジョブ実行制御の処理が完了した後に開始される。まず、ジョブ実行管理部で出力された実行結果情報DB707の結果情報テーブルを読み込む。次に、読み込んだ情報がシミュレーション開始日時802やシミュレーション終了日時803で指定された期間内に動作しているか判定し、期間内に動作している場合は、その内容をシミュレーション結果ファイル710に書き出す。次にシミュレーションの結果と過去の実行結果とを比較するデータを取得するために、実行結果情報DBから該当データのジョブネット、ジョブに対する最新の実行結果を実行結果情報DBから読み込み、シミュレーション結果ファイルに書き出す。読み込んだデータがシミュレーション期間内に動作していなければ、次のレコードの処理を行う。上記処理を実行結果情報DBの全てのレコードに対して繰り返し、処理が完了したら終了する。図14はシミュレーション解析処理によって出力されるシミュレーション結果ファイルの出力と画面表示の一例を示す図である。シミュレーション結果ファイルの出力イメージ1401はシミュレーション結果ファイル710に出力される内容であり、シミュレーション開始日時802やシミュレーション終了日時803で指定したシミュレーションを実行する期間と、その期間に実行された全てのジョブネットジョブのシミュレーション結果と過去の実行結果が出力される。図15に示すシミュレーション結果画面イメージ1402は、シミュレーション結果ファイルの内容を元に端末105の画面上に表示される内容で、シミュレーション期間中にジョブネット、ジョブがどの時間帯に動作したかをグラフ化して確認することができる。また同様に、シミュレーション結果画面イメージ1403は、すでに運用中のジョブが新たにジョブを追加したときの動作と、過去の実行結果をグラフ化して比較することができる。