(57)【要約】【課題】他のジョブと並列実行可能な特性を有するデータ加工ジョブを判別する。【解決手段】加工ジョブ判別部１３が、所定の処理を実行するジョブがデータを読み込む入力ファイル、前記入力ファイルに含まれる入力データ、ジョブがデータを書き込む出力ファイル、出力ファイルに含まれる出力データ、及び出力ファイルへのアクセス方式を含む入出力情報を取得する。加工ジョブ判別部１３は、入力ファイルの数と出力ファイルの数との関係、入力データの数と出力データの数との関係、入力データと出力データとの関係、及び出力ファイルへのアクセス方式が示すパターンが、処理結果が処理単位に依存しない処理を実行した場合のパターンとして予め定めたパターンと一致するジョブを、データ加工ジョブと判別する。【選択図】図２８
2015185027.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータに、
所定の処理を実行するジョブがデータを読み込む入力ファイル、前記入力ファイルに含まれる入力データ、前記ジョブがデータを書き込む出力ファイル、前記出力ファイルに含まれる出力データ、及び前記出力ファイルへのアクセス方式を含む入出力情報を取得し、
前記入力ファイルの数と前記出力ファイルの数との関係、前記入力データの数と前記出力データの数との関係、前記入力データと前記出力データとの関係、及び前記出力ファイルへのアクセス方式が示すパターンが、処理結果が処理単位に依存しない処理を実行した場合のパターンとして予め定めたパターンと一致するジョブを、データ加工ジョブと判別する
処理を実行させるジョブ判別方法。
【請求項２】
前記処理結果が処理単位に依存しない処理を、入力データの各々のデータ形式を変換する処理、入力データをソートする処理、複数の入力ファイルに含まれる入力データをそのまま１つの出力ファイルに結合する処理、複数の入力ファイルに含まれる入力データのソートまたはマージを行って、１つの出力ファイルに結合する処理、及び、マスタである１つの入力ファイルに対して、他の入力ファイルの入力データを反映させる処理の少なくとも一つとした請求項１記載のジョブ判別方法。
【請求項３】
前記コンピュータに、
先行ジョブの出力データを後続ジョブの入力データとするバッチ処理に含まれる複数のジョブの各々について、前記入力ファイルへのアクセス方式をさらに含む前記入出力情報を取得し、
先行ジョブの出力ファイルへのアクセス方式がシーケンシャルで、後続ジョブの入力ファイルへのアクセス方式がシーケンシャルで、かつ前記後続ジョブがデータ加工ジョブと判別されたジョブの場合に、前記先行ジョブと前記後続ジョブとを並列に実行させる
ことをさらに含む処理を実行させる請求項１または請求項２記載のジョブ判別方法。
【請求項４】
前記コンピュータに、
前記バッチ処理における少なくとも１つのジョブに要する時間を予測し、予測した時間と、予め定めた目標時間とに基づいて、前記バッチ処理に遅延が生じるか否かを検知することを含む処理をさらに実行させ、
遅延が検知された場合に、前記先行ジョブと前記後続ジョブとを並列に実行させる
請求項３記載のジョブ判別方法。
【請求項５】
所定の処理を実行するジョブがデータを読み込む入力ファイル、前記入力ファイルに含まれる入力データ、前記ジョブがデータを書き込む出力ファイル、前記出力ファイルに含まれる出力データ、及び前記出力ファイルへのアクセス方式を含む入出力情報を取得する取得部と、
前記入力ファイルの数と前記出力ファイルの数との関係、前記入力データの数と前記出力データの数との関係、前記入力データと前記出力データとの関係、及び前記出力ファイルへのアクセス方式が示すパターンが、処理結果が処理単位に依存しない処理を実行した場合のパターンとして予め定めたパターンと一致するジョブを、データ加工ジョブと判別する判別部と、
を含むジョブ判別装置。
【請求項６】
コンピュータに、
所定の処理を実行するジョブがデータを読み込む入力ファイル、前記入力ファイルに含まれる入力データ、前記ジョブがデータを書き込む出力ファイル、前記出力ファイルに含まれる出力データ、及び前記出力ファイルへのアクセス方式を含む入出力情報を取得し、
前記入力ファイルの数と前記出力ファイルの数との関係、前記入力データの数と前記出力データの数との関係、前記入力データと前記出力データとの関係、及び前記出力ファイルへのアクセス方式が示すパターンが、処理結果が処理単位に依存しない処理を実行した場合のパターンとして予め定めたパターンと一致するジョブを、データ加工ジョブと判別する
ことを含む処理を実行させるためのジョブ判別プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ジョブ判別プログラム、ジョブ判別装置、及びジョブ判別方法に関する。
【背景技術】
【０００２】
従来、あるジョブ内の元々逐次実行されていた複数のジョブステップを並列に実行するためのジョブ制御文を自動的に生成する技術が提案されている。この技術では、例えば、ジョブ実行履歴ファイルからジョブ実行情報、ジョブステップ実行情報、及びデータアクセス情報を抽出し、ジョブ、ジョブステップ、及びデータアクセス情報の関係を定義する。そして、入出力処理を行うジョブステップと該ジョブステップより先に実行されるジョブステップとの対応を示すジョブステップネットワーク情報を作成している。また、この技術では、各ジョブのデータアクセス情報から、先行ジョブが出力ファイルに対してシーケンシャルにアクセスを行っているか否かと、後続ジョブが入力ファイルに対してシーケンシャルにアクセスを行っているか否かを観測している。そして、どちらのジョブも各々のファイルに対してシーケンシャルにアクセスを行っている場合に、並列実行が可能であると判断している。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開平１０−２１４１９５
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、ジョブの処理によっては、並列実行させることにより、その結果に問題が生じる場合があり、業務として問題のある結果になるケースが存在する。例えば、後続ジョブの処理が集計処理の場合には、先行ジョブと並列実行することにより、後続ジョブである集計結果に誤りが生じてしまう。従来技術のように、入出力ファイルに対するアクセスがシーケンシャルか否かを判断するだけでは、上記のように、並列実行した場合に問題が生じる集計処理のようなジョブも、並列実行の対象として判断される場合がある。
【０００５】
一つの側面として、本発明は、他のジョブと並列実行可能な特性を有するデータ加工ジョブを判別することを目的とする。
【課題を解決するための手段】
【０００６】
一つの態様では、所定の処理を実行するジョブの入出力情報を取得する。入出力情報は、前記ジョブがデータを読み込む入力ファイル、前記入力ファイルに含まれる入力データ、前記ジョブがデータを書き込む出力ファイル、前記出力ファイルに含まれる出力データ、及び前記出力ファイルへのアクセス方式を含む。そして、前記入出力情報から、前記入力ファイルの数と前記出力ファイルの数との関係、前記入力データの数と前記出力データの数との関係、前記入力データと前記出力データとの関係、及び前記出力ファイルへのアクセス方式が示すパターンを得る。入出力情報から得たパターンが、処理結果が処理単位に依存しない処理を実行した場合のパターンとして予め定めたパターンと一致するジョブを、データ加工ジョブと判別する。
【発明の効果】
【０００７】
一つの側面として、他のジョブと並列実行可能な特性を有するデータ加工ジョブを判別することができる、という効果を有する。
【図面の簡単な説明】
【０００８】
【図１】バッチ処理の概略を示す図である。
【図２】バッチ処理における待機時間を説明するための図である。
【図３】先行ジョブの出力データと後続ジョブの処理開始との関係を示す図である。
【図４】集計処理の処理単位を説明するための図である。
【図５】集計処理の処理単位を説明するための図である。
【図６】集計処理を並列実行した場合の集計結果を説明するための図である。
【図７】本実施形態に係るジョブ判別装置の概略構成を示す機能ブロック図である。
【図８】本実施形態に係るジョブ判別装置が搭載されたサーバがテスト環境で動作する際に機能する機能部を示す概略図である。
【図９】本実施形態に係るジョブ判別装置が搭載されたサーバが本運用の準備環境で動作する際に機能する機能部を示す概略図である。
【図１０】本実施形態に係るジョブ判別装置が搭載されたサーバが本運用環境で動作する際に機能する機能部を示す概略図である。
【図１１】ジョブ定義ファイルの一例を示す図である。
【図１２】稼働実績管理表の一例を示す図である。
【図１３】抽出ジョブと後続ジョブとの相関関係表の一例を示す図である。
【図１４】監視対象ジョブの実行時間表の一例を示す図である。
【図１５】平均相関値を稼働実績管理表と共に表した一例を示す図である。
【図１６】監視対象候補一覧画面の一例を示す図である。
【図１７】監視対象ジョブリストの一例を示す図である。
【図１８】抽出ジョブの概略を示す図である。
【図１９】トラップ処理を説明するための図である。
【図２０】読込処理管理表の一例を示す図である。
【図２１】書込処理管理表の一例を示す図である。
【図２２】ファイルオフセット処理管理表の一例を示す図である。
【図２３】本実施形態に係るジョブ判別装置として機能するコンピュータの概略構成を示すブロック図である。
【図２４】テスト運用処理の一例を示すフローチャートである。
【図２５】アプリケーション実行時処理の一例を示すフローチャートである。
【図２６】読込データ解析処理の一例を示すフローチャートである。
【図２７】書込データ解析処理の一例を示すフローチャートである。
【図２８】加工ジョブ判別処理の一例を示すフローチャートである。
【図２９】本運用準備処理の一例を示すフローチャートである。
【図３０】本運用処理の一例を示すフローチャートである。
【図３１】本実施形態の効果を説明するための図である。
【図３２】本実施形態の効果を説明するための図である。
【発明を実施するための形態】
【０００９】
以下、図面を参照して開示の技術に係る実施形態の一例を詳細に説明する。
【００１０】
まず、本実施形態で判別の対象とするジョブを明確にするため、バッチ処理に関する問題点を説明する。
【００１１】
バッチ処理は、基本的にオンライン処理で蓄積された各種データを一括で処理するものである。図１に示すバッチ処理Ａのように、バッチ処理では、データの抽出処理を実行するジョブ、データの加工処理を実行するジョブ、及びデータの集計処理を実行するジョブがこの順序で実行される場合が多い。以下では、データの抽出処理を実行するジョブを「抽出ジョブ」、データの加工処理を実行するジョブを「加工ジョブ（開示の技術のデータ加工ジョブ）」、及びデータの集計処理を実行するジョブを「集計ジョブ」という。また、図１に示すバッチ処理Ｂのように、加工ジョブがなく、抽出ジョブの出力データを集計ジョブの入力データとするようなバッチ処理もある。
【００１２】
ここで、図２に示すように、バッチ処理では、１つ前のジョブが終わってから次のジョブが始まる。そのため、扱うデータが多くなるほど各処理を実行するジョブでの処理時間が増え、後続の処理を実行するジョブの待機時間が増える。これにより、バッチ処理全体の終了予定時刻に遅延が生じてしまう場合がある。
【００１３】
従来、このようなバッチ処理における遅延を検知し、運用管理者へ遅延を通知すると共に、バッチ処理において実行されるジョブの再スケジュールを促すことが行われている。しかし、ＱＣＤ（Quality、Cost、Delivery）の観点や、昨今の管理対象システムの巨大化などを考慮すると、遅延監視だけではなく、運用管理者が行っている遅延の回避も自動的に行われることが望ましい。
【００１４】
そこで、従来技術のように、逐次的に処理されるジョブを並列に実行することで、バッチ処理全体にかかる時間を短縮することが考えられる。例えば、図３に示すように、先行ジョブの処理結果である出力データを分割して後続ジョブへ転送することで、先行ジョブの終了を待たずに後続ジョブの処理を開始することができる。すなわち、先行ジョブと後続ジョブとの並列実行が可能となる。
【００１５】
ここで、例えば図１に示すバッチ処理Ａにおいて、先行ジョブである抽出ジョブと、後続ジョブである加工ジョブとを並列実行する場合を考える。この場合、加工ジョブにおいて、抽出ジョブから転送された分割された出力データを用いて処理を開始しても、加工ジョブの特性上問題なく目的の処理を実行することができる。
【００１６】
しかし、例えば図１に示すバッチ処理Ｂのように、後続ジョブが集計ジョブであった場合に問題が発生する。図４に示すように、集計ジョブには、集計に必要なデータの単位が存在し、その単位毎に集計を行うことで集計結果が妥当な結果となる。ところが、図５に示すように、この入力データをレコード単位に分割し、その単位毎に集計処理を行うと、集計対象である集計単位が崩れてしまうため、集計処理が正しく行えない場合が存在する。
【００１７】
以上の理由から、図６に示すように、抽出ジョブと集計ジョブとを逐次的に実行した場合と並列に実行した場合とで、集計結果が異なってしまう場合がある。そのため、抽出ジョブと集計ジョブとを並列に実行することは避けなければならない。
【００１８】
従来技術のように、先行ジョブの出力ファイルに対するアクセス、及び後続ジョブの入力ファイルに対するアクセスがシーケンシャルか否かを判断したとしても、後続ジョブがどういった処理を行っているかの判断を行わない場合を考える。この場合には、図１に示すバッチ処理Ｂについても、抽出ジョブと集計ジョブとを並列実行が可能と判断してしまい、誤った集計結果が出力され、業務として問題のある結果となる場合がある。
【００１９】
従って、並列実行が可能なジョブを判別するためには、先行ジョブの出力ファイルに対するアクセス、及び後続ジョブの入力ファイルに対するアクセスがシーケンシャルか否かを判別する。それに加えて、後続ジョブが集計ジョブではなく、処理結果が処理単位に依存しない加工ジョブであることを判別すればよい。
【００２０】
ここで、アプリケーションに含まれる加工ジョブは、並列実行されることを意識せずに開発されているのが一般的であり、加工ジョブの中身も様々な加工処理を実行するものが存在する。これらの中から並列実行しても処理結果が正しく得られるジョブを外観から観察可能な情報（入力ファイル及び出力ファイルへのアクセスパターン）のみで特定することはできない。
【００２１】
そこで、本実施形態では、加工ジョブの処理特徴を鑑みた詳細なファイルアクセスパターンを分析し、並列実行の可否を判断することで、並列実行可能なジョブを判別する。
【００２２】
次に、本実施形態に係るジョブ判別装置について詳述する。本実施形態に係るジョブ判別装置では、抽出ジョブにおいてバッチ処理全体の遅延が検知された際に、抽出ジョブの後続ジョブが並列実行可能な加工ジョブか否かの判別を行う。そして、並列実行可能な加工ジョブと判別された場合に、抽出ジョブと加工ジョブとを並列実行させて、バッチ処理全体の遅延を回避する。
【００２３】
図７に示すように、本実施形態に係るジョブ判別装置１０は、管理表作成部１１と、抽出ジョブ判別部１２と、加工ジョブ判別部１３と、遅延検知部１４と、並列実行部１５とを含む。管理表作成部１１は、図８及び図９に示すように、ジョブ判別装置１０が搭載されたサーバがテスト環境で動作する際、及び本運用の準備環境で動作する際に機能する機能部である。抽出ジョブ判別部１２及び加工ジョブ判別部１３は、図８に示すように、ジョブ判別装置１０が搭載されたサーバがテスト環境で動作する際に機能する機能部である。遅延検知部１４及び並列実行部１５は、図１０に示すように、ジョブ判別装置１０が搭載されたサーバが本運用環境で動作する際に機能する機能部である。以下、図８〜図１０を参照して、各機能部について詳述する。
【００２４】
図８に示すように、サーバにおいて、ユーザアプリケーションとして登録されているアプリケーション実行本体が、アプリケーションのテスト運用を行うテスト環境において、ジョブ管理部の管理下で実行される。本実施形態で実行されるアプリケーションは、バッチ処理により複数のジョブを逐次的に実行するアプリケーションである。
【００２５】
管理表作成部１１は、テスト運用時おいて、ユーザアプリケーションとして登録されたアプリケーション実行実体から、アプリケーションで実行されるジョブネット名、ジョブ名、ジョブ毎の入力ファイル、及び出力ファイルを取得する。なお、ジョブは、ジョブネットを構成する１つ１つのバッチファイル、シェルスクリプト、コマンドなどであり、ジョブネットは、関連するジョブの集合体である。そして、管理表作成部１１は、例えば図１１に示すようなジョブ定義ファイル２１を作成し、管理データベース（ＤＢ）に記憶する。ジョブ定義ファイル２１には、後述する抽出ジョブ判定フラグ及び加工ジョブ判定フラグのカラムも設けておく。
【００２６】
なお、アプリケーションの実行開始時には、各ジョブの抽出ジョブ判定フラグ及び加工ジョブ判定フラグの各々は、全てＯＦＦに設定しておく。後述する抽出ジョブ判別部１２及び加工ジョブ判別部１３により、抽出ジョブまたは加工ジョブと判別されたジョブについては、抽出ジョブ判別部１２及び加工ジョブ判別部１３により、抽出ジョブ判定フラグまたは加工ジョブ判定フラグがＯＮに設定される。
【００２７】
また、管理表作成部１１は、テスト運用時におけるアプリケーションの実行時に、各ジョブについて、実行時間と、入力ファイルのファイル名及びサイズと、出力ファイルのファイル名及びサイズとを記録する。そして、管理表作成部１１は、例えば図１２に示すような稼働実績管理表２２を作成し、管理ＤＢに記憶する。各情報を記録するタイミングは、入力ファイルのファイル名及びサイズについてはジョブ開始時、出力ファイルのファイル名及びサイズについてはジョブ終了時、並びに実行時間についてはジョブ終了時である。テスト運用では、通常幾つかのバリエーションで複数回アプリケーションを実行し、大量データ時などの負荷テスト（性能テスト）も実施される。従って、管理表作成部１１は、テストが実施された回数分の稼働実績データを記録した稼働実績管理表２２を作成する。
【００２８】
また、管理表作成部１１は、ジョブ定義ファイル２１から、抽出ジョブ判定フラグがＯＮに設定されている抽出ジョブを取得する。また、管理表作成部１１は、ジョブ定義ファイル２１から、取得した抽出ジョブの出力ファイル（以下、「抽出ファイル」という）を「入力ファイル」とする後続ジョブを取得する。そして、管理表作成部１１は、取得した情報から、例えば図１３に示すような、抽出ジョブと後続ジョブとの相関関係表２３を作成し、管理ＤＢに記憶する。
【００２９】
また、管理表作成部１１は、各ジョブについて、稼働実績管理表２２から実行時間の情報を抽出し、平均実行時間、最短実行時間、及び最大実行時間を算出する。そして、管理表作成部１１は、例えば図１４に示すような監視対象ジョブの実行時間表２４を作成し、管理ＤＢに記憶する。なお、平均実行時間は、実行時間の合計÷テスト回数の結果、最短実行時間は、全実行時間の内、最も小さい値、及び最大実行時間は、全実行時間の内、最も大きい値である。
【００３０】
また、管理表作成部１１は、稼働実績管理表２２から、各ジョブについての入力ファイルのサイズとジョブの実行時間との相関関係式を以下の手順で生成する。
【００３１】
（１）入力ファイルのサイズが一番小さいジョブを基準ジョブとする。
（２）基準ジョブと他のジョブとの入力ファイルのサイズの比率（比率（サイズ））を求める。
（３）基準ジョブと他のジョブとの実行時間の比率（比率（時間））を求める。
（４）基準ジョブ以外のジョブの比率（時間）÷比率（サイズ）を、相関値として求める。
（５）相関値の平均値（平均相関値）を求める。
【００３２】
図１５に、管理表作成部１１で求めた比率（サイズ）、比率（時間）、相関値、及び平均相関値を稼働実績管理表２２と共に表した一例を示す。そして、管理表作成部１１は、以下の相関関係式を定義する。
相関関係式：＆ｔｉｍｅ（変数）÷基準ジョブの実行時間÷平均相関値
×基準ジョブの入力ファイルのサイズ
この相関関係式は、＆ｔｉｍｅ（変数）に、後続ジョブを実行できる時間（終了予定時刻までの時間）を代入して計算すると、その時間で後続ジョブにより処理可能な入力ファイルのサイズが算出される計算式である。管理表作成部１１は、求めた相関関係式を、ジョブ定義ファイル２１に記憶する。
【００３３】
また、管理表作成部１１は、テスト運用時に作成した監視対象ジョブの実行時間表２４の最大実行時間が大きい順にソートし、例えば図１６に示すような監視対象候補一覧を作成する。なお、最大実行時間が同一のジョブについては、平均実行時間または最短実行時間も用いてソートしてもよい。監視対象候補一覧には、終了予定時刻を記録可能なカラムも設ける。そして、管理表作成部１１は、図９に示すように、クライアント装置に監視対象候補一覧画面を表示させ、クライアントから各ジョブの終了予定時刻を受け付ける。管理表作成部１１は、例えば図１７に示すように、受け付けたジョブ毎の終了予定時刻を、テスト運用時に作成した相関関係表２３の後続ジョブに対応付けて記録する。終了予定時刻が記録された後続ジョブの先行ジョブが、遅延検知の監視対象のジョブとなる。すなわち、終了予定時刻が追加された相関関係表２３が、監視対象ジョブリスト２５となる。
【００３４】
抽出ジョブ判別部１２は、テスト運用時において、アプリケーションが実行される中で、各ジョブがアクセスする入力ファイル及び出力ファイルを監視し、各ジョブの特性から、抽出ジョブを判別する。抽出ジョブの一般的な特性を、図１８及び下記に示す。
【００３５】
（１）入力ファイルを最初から最後までレコード単位、または一定のサイズで、ファイルの最初から順番に読み込みを行う（シーケンシャルな読み込み）。
（２）レコードのあるカラムの値が、抽出ジョブに指定された抽出条件に一致した場合に、該当のレコードを出力ファイルへレコード単位、または一定のサイズで、各レコードに対して加工を行うことなく、順番に書き込みを行う（シーケンシャルな書き込み）。
（３）出力ファイルは１つに固定ではなく、抽出条件に従って、複数の出力ファイルの関係が抽出条件ファイルに定義されている。
【００３６】
抽出ジョブ判別部１２は、上記特性を有するジョブを判別するため、図１９に示すように、各ジョブにおける入力ファイルからの読込処理、出力ファイルへの書込処理、及びファイルオフセット設定処理をトラップし、トラップした情報を解析する。なお、ファイルオフセット設定処理は、入力ファイルからの読み込みがランダムに行われる場合、及び出力ファイルへの書き込みがランダムに行われる場合に呼び出される設定である。トラップ処理は、ＯＳ（Operation System）の機能により実現可能である。
【００３７】
具体的には、抽出ジョブ判別部１２は、読込処理及び書込処理が、各々読込データ解析及び書込データ解析を経由するように、ライブラリを置き換える。また、抽出ジョブ判別部１２は、ファイルオフセット設定処理が呼び出されたか否かを確認するため、ファイルオフセット設定処理の呼び出しが、ファイルオフセット設定処理呼出確認を経由するように、ライブラリを置き換える。ライブラリ置き換え後に、ジョブを実行することにより、読込処理、書込処理、及びファイルオフセット設定処理をトラップすることができる。なお、トラップ処理の設定は、後述する加工ジョブ判別部１３が行ってもよい。
【００３８】
抽出ジョブ判別部１２は、上記の読込データ解析結果、書込データ解析結果、及びファイルオフセット設定処理呼出の確認結果に基づいて、抽出ジョブを判別する。なお、読込データ解析結果には、抽出条件ファイルの読込処理に対する解析結果も含まれるため、上記抽出ジョブの特性（２）及び（３）についても判定可能である。抽出ジョブ判別部１２は、抽出ジョブであると判別したジョブについて、管理表作成部１１で作成されたジョブ定義ファイル２１の抽出ジョブ判別フラグをＯＮに設定する。
【００３９】
加工ジョブ判別部１３は、テスト運用時に実行される各ジョブが、処理結果が処理単位に依存しない加工処理を行う加工ジョブか否かを判別する。本実施形態では、加工ジョブとして、以下の加工ジョブを判別する。
【００４０】
（１）データ形式変換処理
（２）ソート処理
（３）データ結合処理（集約処理）
（４）データ間照会処理（マージ処理）
（５）マスタ反映処理
【００４１】
（１）データ形式変換処理とは、入力データの各々のデータ形式を変換する処理である。（２）ソート処理とは、入力データをソートする処理である。（３）データ結合処理（集約処理）は、複数の入力ファイルをそのまま１つの出力ファイルに結合する処理である。（４）データ間照会処理（マージ処理）は、複数の入力ファイルに含まれる入力データのソートまたはマージを行って、１つの出力ファイルに結合する処理である。（５）マスタ反映処理は、マスタである１つの入力ファイルに対して、他の入力ファイルのデータを反映させる処理である。
【００４２】
加工ジョブ判別部１３は、ジョブ毎に、入力ファイルと出力ファイルとの関係を把握可能な情報を、抽出ジョブ判別部１２と同様のトラップ処理により取得する。具体的には、加工ジョブ判別部１３は、読込処理からトラップしたファイル名、ファイルの種別「入力ファイル」、及び読み込んだ各レコードのデータ（読込データ）を取得する。そして、加工ジョブ判別部１３は、取得した情報から、例えば図２０に示すような読込処理管理表２６を作成し、管理ＤＢに記憶する。同様に、加工ジョブ判別部１３は、書込処理からトラップしたファイル名、ファイルの種別「出力ファイル」、及び書き込んだ各レコードのデータ（書込データ）を取得する。そして、加工ジョブ判別部１３は、取得した情報から、例えば図２１に示すような書込処理管理表２７を作成し、管理ＤＢに記憶する。
【００４３】
さらに、加工ジョブ判別部１３は、ファイルオフセット設定処理からトラップしたファイルオフセットの情報を取得する。そして、加工ジョブ判別部１３は、取得した情報から、例えば図２２に示すようなファイルオフセット処理管理表２８を作成し、管理ＤＢに記憶する。ファイルオフセット処理管理表２８は、各ジョブにおけるデータの読込時、及び書込時にファイルオフセット設定処理が呼び出されたか否かを示す判定フラグを記録するための管理表である。加工ジョブ判別部１３は、読込時または書込時にファイルオフセット設定処理が呼び出されたジョブについて、読込ファイルオフセット判定フラグまたは書込ファイルオフセット判定フラグをＯＮに設定する。
【００４４】
加工ジョブ判別部１３は、入力ファイルの先頭レコードから最後のレコードまで読み込んでいないジョブを加工ジョブの判別から除外する。加工ジョブや集計ジョブでは、入力ファイルの途中までしか読み込まないという場合は無いためである。以下、上記（１）〜（５）の加工ジョブについての判別条件について説明する。
【００４５】
加工ジョブ判別部１３は、以下の条件を満たすジョブを、（１）データ形式変換処理を実行する加工ジョブとして判別する。
・入力ファイル数と出力ファイル数とが１つずつ
・入力レコード数と出力レコード数とが一致
・入力レコードと出力レコードとが１対１で対応していないレコードが存在する
なお、入力レコードと出力レコードとが１対１で対応するとは、入力レコードの各々と出力レコードの各々とが、レコードの記録順を除いて一致することである。
【００４６】
また、加工ジョブ判別部１３は、以下の条件を満たすジョブを、（２）ソート処理を実行する加工ジョブとして判別する。
・入力ファイル数と出力ファイル数とが１つずつ
・入力レコードと出力レコードとが１対１で対応
・入力レコード数と出力レコード数とが一致
【００４７】
また、加工ジョブ判別部１３は、以下の条件を満たすジョブを、（３）データ結合処理を実行する加工ジョブであると判別する。
・入力ファイルが複数、出力ファイルが１ファイル
・入力レコード数と出力レコード数とが一致
・書込処理がシーケンシャル
【００４８】
また、加工ジョブ判別部１３は、以下の条件を満たすジョブを、（４）データ間照会処理を実行する加工ジョブであると判別する。
・入力ファイルが複数、出力ファイルが１ファイル
・入力レコード数と出力レコード数とが一致
・書込処理がランダムアクセス。
または、
・入力ファイルが複数、出力ファイルが１ファイル
・入力レコード数より出力レコード数が多い
・入力ファイルと出力ファイルとが一致しない
・入力ファイルのいずれかのレコード数と、出力ファイルのレコード数とが一致
【００４９】
また、加工ジョブ判別部１３は、以下の条件を満たすジョブを、（５）マスタ反映処理を実行する加工ジョブであると判別する。
・入力ファイルが複数、出力ファイルが１ファイル
・入力レコード数が出力レコード数より多い
・入力ファイルのいずれかと出力ファイルとが一致
【００５０】
加工ジョブ判別部１３は、加工ジョブであると判別したジョブについて、管理ＤＢに記憶されたジョブ定義ファイル２１の加工ジョブ判定フラグをＯＮにする。
【００５１】
遅延検知部１４は、本運用時において実行されるアプリケーションの各ジョブについて、監視対象ジョブリスト２５に監視対象ジョブとして定められた抽出ジョブか否かを判定する。遅延検知部１４は、実行中のジョブが、監視対象ジョブとして定められた抽出ジョブの場合には、その抽出ジョブの出力ファイルを監視する。そして、遅延検知部１４は、出力ファイル（抽出ファイル）のサイズ、すなわち、監視時点での抽出ジョブの出力データ（以下、「抽出データ」という）のサイズを、所定間隔（例えば１分間隔）で取得する。
【００５２】
遅延検知部１４は、現在時刻と監視対象ジョブの後続ジョブの終了予定時刻との差分時間を計算し、相関関係式の「＆ｔｉｍｅ」に代入し、後続ジョブが終了予定時刻までに処理可能な入力ファイルのサイズを算出する。そして、遅延検知部１４は、監視中の出力ファイルから取得した抽出データのサイズが、算出した差分時間内に処理可能な入力ファイルのサイズを超える場合に、遅延検知アラームを上げる。
【００５３】
並列実行部１５は、遅延検知部１４により遅延検知アラームが上げられると、遅延が検知された抽出ジョブの後続ジョブを相関関係表２３から取得する。また、並列実行部１５は、ジョブ定義ファイル２１の加工ジョブ判定フラグを参照して、取得した後続ジョブが、加工ジョブ判別部１３で加工ジョブと判別されたジョブか否かを判定する。また、並列実行部１５は、ファイルオフセット処理管理表２８の読込ファイルオフセット判定フラグを参照し、後続ジョブの読込処理がシーケンシャルか否かを判定する。そして、並列実行部１５は、後続ジョブが、加工ジョブ判別部１３で加工ジョブと判別され、かつ読込処理がシーケンシャルの場合に、その後続ジョブを、現在先行して実行されている抽出ジョブと並列に実行するように、アプリケーションに指示を出力する。
【００５４】
ジョブ判別装置１０は、例えば図２３に示すコンピュータ４０で実現することができる。コンピュータ４０はＣＰＵ４２、メモリ４４、不揮発性の記憶部４６、入出力インターフェース（Ｉ／Ｆ）４７、及びネットワークＩ／Ｆ４８を備えている。ＣＰＵ４２、メモリ４４、記憶部４６、入出力Ｉ／Ｆ４７、及びネットワークＩ／Ｆ４８は、バス４９を介して互いに接続されている。
【００５５】
記憶部４６はＨＤＤ（Hard Disk Drive）やフラッシュメモリ等によって実現できる。記憶媒体としての記憶部４６には、コンピュータ４０をジョブ判別装置１０として機能させるためのジョブ判別プログラム５０が記憶されている。また、記憶部４６には、管理ＤＢに記憶された各表を示すデータが記憶される管理ＤＢ記憶領域６０を有する。
【００５６】
ＣＰＵ４２は、ジョブ判別プログラム５０を記憶部４６から読み出してメモリ４４に展開し、ジョブ判別プログラム５０が有するプロセスを順次実行する。また、ＣＰＵ４２は、記憶部４６の管理ＤＢ記憶領域６０に記憶されたデータを読み出してメモリ４４に展開することにより、各表を作成する。
【００５７】
ジョブ判別プログラム５０は、管理表作成プロセス５１と、抽出ジョブ判別プロセス５２と、加工ジョブ判別プロセス５３と、遅延検知プロセス５４と、並列実行プロセス５５とを有する。ＣＰＵ４２は、管理表作成プロセス５１を実行することで、図７に示す管理表作成部１１として動作する。また、ＣＰＵ４２は、抽出ジョブ判別プロセス５２を実行することで、図７に示す抽出ジョブ判別部１２として動作する。また、ＣＰＵ４２は、加工ジョブ判別プロセス５３を実行することで、図７に示す加工ジョブ判別部１３として動作する。また、ＣＰＵ４２は、遅延検知プロセス５４を実行することで、図７に示す遅延検知部１４として動作する。また、ＣＰＵ４２は、並列実行プロセス５５を実行することで、図７に示す並列実行部１５として動作する。これにより、ジョブ判別プログラム５０を実行したコンピュータ４０が、ジョブ判別装置１０として機能することになる。
【００５８】
なお、ジョブ判別装置１０は、例えば半導体集積回路、より詳しくはＡＳＩＣ（Application Specific Integrated Circuit）等で実現することも可能である。
【００５９】
次に、本実施形態に係るジョブ判別装置１０の作用について説明する。本実施形態では、テスト運用モード、本運用の準備モード、及び本運用モードの３つのモードがあり、クライアント装置からの設定により、実行するモードが設定される。クライアント装置からテスト運用モードが設定されると、ジョブ判別装置１０により、図２４に示すテスト運用処理が実行される。クライアント装置から本運用の準備用モードが設定されると、ジョブ判別装置１０により、図２９に示す本運用準備処理が実行される。クライアント装置から本運用モードが設定されると、ジョブ判別装置１０により、図３０に示す本運用処理が実行される。
【００６０】
図２４に示すテスト運用処理のステップＳ１０で、管理表作成部１１が、ユーザアプリケーションとして登録されたアプリケーション実行実体から、アプリケーションで実行されるジョブネット名、ジョブ名、ジョブ毎の入力ファイル、及び出力ファイルを取得する。そして、管理表作成部１１は、例えば図１１に示すようなジョブ定義ファイル２１を作成し、管理ＤＢに記憶する。
【００６１】
次に、ステップＳ１２で、加工ジョブ判別部１３が、各ジョブにおける入力ファイルからの読込処理、及び出力ファイルへの書込処理が、各々読込データ解析及び書込データ解析を経由するように、ライブラリを置き換える。また、加工ジョブ判別部１３は、ファイルオフセット設定処理が呼び出されたか否かを確認するため、ファイルオフセット設定処理が、ファイルオフセット設定処理呼出確認を経由するように、ライブラリを置き換える。加工ジョブ判別部１３は、ライブラリ置き換え後、アプリケーションに実行指示を出力する。なお、本ステップの処理は、抽出ジョブ判別部１２が行ってもよい。
【００６２】
次に、ステップＳ１４で、アプリケーションが実行されている際に、詳細を図２５に示すアプリケーション実行時処理が実行される。なお、アプリケーション実行時処理は、ジョブ毎に実行される。
【００６３】
図２５に示すアプリケーション実行時処理のステップＳ１４０で、詳細を図２６に示す読込データ解析処理が実行される。読込データ解析処理のステップＳ１４１で、加工ジョブ判別部１３が、ＯＳにより入力ファイルから１レコードを読み込む読込処理をトラップする。また、本ステップが各ジョブの開始時の場合には、管理表作成部１１が、入力ファイルのファイル名及びサイズを稼働実績管理表２２に記録する。
【００６４】
次に、ステップＳ１４２で、加工ジョブ判別部１３が、上記ステップＳ１４１のトラップ処理で、最終レコードまで読み込みを完了していることを示す「ａｔ  ｅｎｄ」を検出したか否かを判定する。「ａｔ  ｅｎｄ」が検出された場合には、読込データ解析処理は終了し、処理はアプリケーション実行時処理へリターンする。一方、「ａｔ  ｅｎｄ」が検出されない場合には、処理はステップＳ１４３へ移行する。
【００６５】
ステップＳ１４３では、加工ジョブ判別部１３が、ＯＳによりファイルオフセット設定処理が呼び出されたか否かを判定する。ファイルオフセット設定処理が呼び出された場合には、処理はステップＳ１４４へ移行し、呼び出されていない場合には、処理はステップＳ１４５へ移行する。
【００６６】
ステップＳ１４４では、加工ジョブ判別部１３が、ファイルオフセット処理管理表２８の該当の入力ファイルに対応する読込ファイルオフセット判定フラグをＯＮに設定する。
【００６７】
次に、ステップＳ１４５で、加工ジョブ判別部１３が、ＯＳの読込処理の読込先である入力ファイルが読込処理管理表２６に既に登録されているか否かを判定する。未登録の場合には、処理はステップＳ１４６へ移行する。ステップＳ１４６では、加工ジョブ判別部１３が、上記ステップＳ１４１でトラップした情報に基づいて、読込処理管理表２６に、入力ファイルのファイル名、及びファイルの種別として「入力ファイル」を記録し、処理はステップＳ１４７へ移行する。一方、入力ファイルが読込処理管理表２６に既に登録されている場合には、そのまま処理はステップＳ１４７へ移行する。
【００６８】
ステップＳ１４７では、加工ジョブ判別部１３が、読込処理管理表２６における該当の入力ファイルに対応する読込データ欄に、上記ステップＳ１４１でトラップしたレコードのデータを記録する。そして、読込データ解析処理は終了し、処理はアプリケーション実行時処理へリターンする。
【００６９】
次に、図２５に示すアプリケーション実行時処理のステップＳ１５０で、加工ジョブ判別部１３が、入力ファイルの全データの読込が終了したか否かを判定する。読込解析処理において「ａｔ  ｅｎｄ」が検出されて、処理が本ステップへ移行した場合には肯定判定され、「ａｔ  ｅｎｄ」が検出されることなく、処理が本ステップへ移行した場合には否定判定される。肯定判定の場合には、アプリケーション実行時処理を終了し、処理はテスト運用処理へリターンする。否定判定の場合には、処理はステップＳ１６０へ移行する。
【００７０】
ステップＳ１６０では、アプリケーションの実行により読み出されたデータに対する処理が行われる期間待機する。次に、ステップＳ１７０で、詳細を図２７に示す書込データ解析処理が実行される。なお、書込データ解析処理について、図２６に示す読込データ解析処理と相違する点を中心に説明し、読込データ解析処理と同様の部分については、詳細な説明を省略する。
【００７１】
書込データ解析処理のステップＳ１７１で、加工ジョブ判別部１３が、ＯＳにより出力ファイルへ１レコードを書き込む書込処理をトラップする。また、本ステップが各ジョブの終了時の場合には、管理表作成部１１が、出力ファイルのファイル名及びサイズ、並びにジョブの実行時間を稼働実績管理表２２に記録する。
【００７２】
次に、ステップＳ１７３で、加工ジョブ判別部１３が、ＯＳのファイルオフセット設定処理が呼び出されたか否かを判定する。ファイルオフセット設定処理が呼び出された場合には、処理はステップＳ１７４へ移行し、加工ジョブ判別部１３が、ファイルオフセット処理管理表２８の書込ファイルオフセット判定フラグをＯＮに設定する。ファイルオフセット設定処理が呼び出されていない場合には、処理はステップＳ１７５へ移行する。
【００７３】
ステップＳ１７５では、加工ジョブ判別部１３が、ＯＳの書込処理の書込先である出力ファイルが書込処理管理表２７に既に登録されているか否かを判定する。既登録の場合には、処理はステップＳ１７７へ移行する。未登録の場合には、処理はステップＳ１７６へ移行し、加工ジョブ判別部１３が、書込処理管理表２７に、出力ファイルのファイル名、及びファイルの種別「出力ファイル」を記録し、処理はステップＳ１７７へ移行する。
【００７４】
ステップＳ１７７では、加工ジョブ判別部１３が、書込処理管理表２７における該当の出力ファイルに対応する読込データ欄に、上記ステップＳ１７１でトラップしたレコードのデータを記録する。
【００７５】
アプリケーション実行時処理へリターンすると、処理はステップＳ１４０へ戻る。ステップＳ１５０で肯定判定されると、アプリケーション実行時処理を終了し、処理はテスト運用処理へリターンする。
【００７６】
次に、図２４に示すテスト運用処理のステップＳ１８で、抽出ジョブ判別部１２が、読込データ解析結果、書込データ解析結果、及びファイルオフセット設定処理呼出の確認結果に基づいて、ジョブ毎に抽出ジョブか否かを判別する。抽出ジョブ判別部１２は、抽出ジョブであると判別したジョブについて、管理表作成部１１で作成されたジョブ定義ファイル２１の抽出ジョブ判別フラグをＯＮに設定する。
【００７７】
次に、ステップＳ２０で、加工ジョブ判別部１３が、詳細を図２８に示す加工ジョブ判別処理を実行する。加工ジョブ判別処理は、ジョブ定義ファイル２１に記録された各ジョブを１つずつ判別対象ジョブに設定して実行される。なお、抽出ジョブ判定フラグがＯＮに設定されているジョブについては、判別対象ジョブから除外してもよい。
【００７８】
加工ジョブ判別処理のステップＳ２００で、加工ジョブ判別部１３が、ジョブ定義ファイル２１の判別対象ジョブに対応した出力ファイル欄を参照して、出力ファイルの数が１つか否かを判定する。出力ファイルが１つの場合には、処理はステップＳ２０２へ移行し、出力ファイルが複数の場合には、判別対象ジョブは加工ジョブではないため、加工ジョブ判別処理を終了し、テスト運用処理へリターンする。
【００７９】
ステップＳ２０２では、加工ジョブ判別部１３が、ジョブ定義ファイル２１の判別対象ジョブに対応した入力ファイル欄を参照して、入力ファイルの数が１つか否かを判定する。入力ファイルが１つの場合には、処理はステップＳ２０４へ移行し、入力ファイルが複数の場合には、処理はステップＳ２１４へ移行する。
【００８０】
ステップＳ２０４では、加工ジョブ判別部１３が、読込処理管理表２６を参照して、判別対象ジョブの入力ファイルに対応した読込データ欄に記録されているレコード（入力レコード）の数を取得する。同様に、加工ジョブ判別部１３が、書込処理管理表２７を参照して、判別対象ジョブの出力ファイルに対応した書込データ欄に記録されているレコード（出力レコード）の数を取得する。そして、加工ジョブ判別部１３は、入力レコード数と出力レコード数とが一致するか否かを判定する。一致する場合には、処理はステップＳ２０６へ移行し、一致しない場合には、判別対象ジョブは加工ジョブではないため、加工ジョブ判別処理を終了し、テスト運用処理へリターンする。
【００８１】
ステップＳ２０６では、加工ジョブ判別部１３が、入力レコードと出力レコードとが１対１で対応しているか否かを判定する。１対１で対応している場合には、処理はステップＳ２１０へ移行し、加工ジョブ判別部１３が、判別対象ジョブを、ソート処理を実行する加工ジョブであると判別する。一方、入力レコードと出力レコードとが１対１で対応していないレコードが存在する場合には、処理はステップＳ２１２へ移行し、加工ジョブ判別部１３が、判別対象ジョブを、データ形式変換処理を実行する加工ジョブであると判別する。
【００８２】
一方、入力ファイルが複数存在し、ステップＳ２１４へ移行した場合には、加工ジョブ判別部１３が、上記ステップＳ２０４と同様に、入出力のレコード数が一致するか否かを判定する。一致する場合には、処理はステップＳ２１６へ移行し、一致しない場合には、処理はステップＳ２２２へ移行する。
【００８３】
ステップＳ２１６では、加工ジョブ判別部１３が、ファイルオフセット処理管理表２８の判別対象ジョブの書込ファイルオフセット判定フラグがＯＦＦか否かを判定する。ＯＦＦの場合には、処理はステップＳ２１８へ移行し、加工ジョブ判別部１３が、判別対象ジョブを、データ結合処理を実行する加工ジョブであると判別する。一方、書込ファイルオフセット判定フラグがＯＮの場合には、処理はステップＳ２２０へ移行し、加工ジョブ判別部１３が、判別対象ジョブを、データ間照会処理を実行する加工ジョブであると判別する。
【００８４】
一方、複数の入力ファイルの入力レコード数と１つの出力ファイルの出力レコード数とが一致せず、処理がステップＳ２２２へ移行した場合には、加工ジョブ判別部１３が、入力レコード数が出力レコード数より多いか否かを判別する。入力レコード数の方が多い場合には、ステップＳ２２４へ移行する。出力レコード数の方が多い場合には、判別対象ジョブは加工ジョブではないため、加工ジョブ判別処理を終了し、テスト運用処理へリターンする。
【００８５】
ステップＳ２２４では、加工ジョブ判別部１３が、入力ファイルのいずれかと出力ファイルとが一致するか否かを判定する。一致する場合には、処理はステップＳ２２６へ移行し、加工ジョブ判別部１３が、判別対象ジョブを、マスタ反映処理を実行する加工ジョブであると判別する。一方、入力ファイルのいずれとも出力ファイルと一致しない場合には、処理はステップＳ２２８へ移行する。
【００８６】
ステップＳ２２８では、加工ジョブ判別部１３が、入力ファイルのいずれかのレコード数と、出力ファイルのレコード数とが一致するか否かを判定する。一致する場合には、処理はステップＳ２２０へ移行し、加工ジョブ判別部１３が、判別対象ジョブを、データ間照会処理を実行する加工ジョブであると判別する。一方、入力ファイルのいずれのレコード数も、出力ファイルのレコード数と一致しない場合には、判別対象ジョブは加工ジョブではないため、加工ジョブ判別処理を終了し、テスト運用処理へリターンする。
【００８７】
上記ステップＳ２１０、Ｓ２１２、Ｓ２１８、Ｓ２２０、またはＳ２２６で、加工ジョブと判別されたジョブについて、ステップＳ２３０で、加工ジョブ判別部１３が、ジョブ定義ファイル２１の加工ジョブ判定フラグをＯＮに設定する。そして、加工ジョブ判別処理を終了し、テスト運用処理へリターンする。
【００８８】
次に、図２４に示すテスト運用処理のステップＳ２２で、加工ジョブ判別部１３が、上記ステップＳ１２で置き換えたライブラリを元に戻す。
【００８９】
次に、ステップＳ２４で、管理表作成部１１が、ジョブ定義ファイル２１から、抽出ジョブ判定フラグがＯＮに設定されている抽出ジョブを取得する。また、管理表作成部１１は、ジョブ定義ファイル２１から、取得した抽出ジョブの出力ファイルを「入力ファイル」とする後続ジョブを取得する。そして、管理表作成部１１は、取得した情報から、例えば図１３に示すような、抽出ジョブと後続ジョブとの相関関係表２３を作成し、管理ＤＢに記憶する。
【００９０】
次に、ステップＳ２６で、管理表作成部１１が、各ジョブについて、稼働実績管理表２２から実行時間の情報を抽出し、平均実行時間、最短実行時間、及び最大実行時間を算出する。そして、管理表作成部１１は、例えば図１４に示すような監視対象ジョブの実行時間表２４を作成し、管理ＤＢに記憶する。
【００９１】
次に、ステップＳ２８で、管理表作成部１１が、稼働実績管理表２２から、各ジョブについての入力ファイルのサイズとジョブの実行時間との相関関係式を定義し、ジョブ定義ファイル２１に記憶する。
【００９２】
次に、ステップＳ３０で、管理表作成部１１が、管理ＤＢに記憶された各表を示すデータをエクスポートして、テスト運用処理は終了する。
【００９３】
次に、図２９に示す本運用準備処理について説明する。ステップＳ３２で、管理表作成部１１が、テスト運用処理でエクスポートされたデータを、本運用環境にインポートする。
【００９４】
次に、ステップＳ３４で、管理表作成部１１が、テスト運用時に作成した監視対象ジョブの実行時間表２４の最大実行時間が大きい順にソートし、例えば図１６に示すような監視対象候補一覧を作成する。監視対象候補一覧には、終了予定時刻を記録可能なカラムも設ける。そして、管理表作成部１１は、図９に示すように、クライアント装置に監視対象候補一覧画面を表示させ、クライアントから各ジョブの終了予定時刻を受け付ける。
【００９５】
次に、ステップＳ３６で、管理表作成部１１が、受け付けたジョブ毎の終了予定時刻を、テスト運用時に作成した相関関係表２３の後続ジョブに対応付けて記録し、監視対象ジョブリスト２５を作成する。そして、本運用準備処理は終了する。
【００９６】
次に、図３０に示す本運用処理について説明する。クライアント端末から本運用モードが設定されると、ジョブ判別装置１０を搭載したサーバでは、アプリケーションの実行が開始される。アプリケーションの実行が開始されると、本運用処理のステップＳ４０で、遅延検知部１４が、現在アプリケーションで実行されているジョブが、監視対象ジョブリスト２５に監視対象ジョブとして定められた抽出ジョブか否かを判定する。監視対象ジョブの場合には、ステップＳ４２へ移行し、監視対象ジョブではない場合には、処理はステップＳ５４へ移行する。
【００９７】
ステップＳ４２では、遅延検知部１４が、監視対象ジョブである抽出ジョブの出力ファイルを監視する。そして、遅延検知部１４は、出力ファイル（抽出ファイル）のサイズ、すなわち、監視時点での抽出ジョブの出力データ（以下、「抽出データ」という）のサイズを、所定間隔（例えば１分間隔）で取得する。
【００９８】
次に、ステップＳ４４で、遅延検知部１４が、監視対象ジョブリスト２５を参照して、現在時刻と、監視対象ジョブの後続ジョブの終了予定時刻との差分時間を計算する。そして、遅延検知部１４は、ジョブ定義ファイル２１に記憶された相関関係式の「＆ｔｉｍｅ」に、計算した差分時間を代入し、後続ジョブが終了予定時刻までに処理可能な入力ファイルのサイズを算出する。そして、遅延検知部１４は、監視中の出力ファイルから取得した抽出データのサイズが、算出した差分時間内に処理可能な入力ファイルのサイズを超えたか否かを判定することにより、遅延が検知されたか否かを判定する。遅延が検知された場合には、処理はステップＳ４６へ移行し、遅延が検知されない場合には、処理はステップＳ５４へ移行する。
【００９９】
ステップＳ４６では、遅延検知部１４が、遅延検知アラームを上げ、並列実行部１５に遅延を通知する。次に、ステップＳ４８で、並列実行部１５が、遅延が検知された抽出ジョブの後続ジョブを相関関係表２３から取得する。また、並列実行部１５は、ファイルオフセット処理管理表２８の読込ファイルオフセット判定フラグがＯＦＦか否かを判定することにより、後続ジョブの読込処理がシーケンシャルか否かを判定する。後続ジョブの読込ファイルオフセット判定フラグがＯＦＦの場合には、後続ジョブの読込処理はシーケンシャルに行われていると判定して、処理はステップＳ５０へ移行する。後続ジョブの読込ファイルオフセット判定フラグがＯＮの場合には、後続ジョブの読込処理はランダムアクセスであり、先行の抽出ジョブとは並列に実行することができないため、処理はステップＳ５４へ移行する。
【０１００】
ステップＳ５０では、並列実行部１５が、ジョブ定義ファイル２１の加工ジョブ判定フラグがＯＮか否かを判定することにより、後続ジョブが、加工ジョブ判別部１３で加工ジョブと判別されたジョブか否かを判定する。後続ジョブの加工ジョブ判定フラグがＯＮの場合には、処理はステップＳ５２へ移行する。後続ジョブの加工ジョブ判定フラグがＯＦＦの場合には、後続ジョブは先行の抽出ジョブとは並列に実行することができないため、処理はステップＳ５４へ移行する。
【０１０１】
ステップＳ５２では、並列実行部１５が、後続ジョブを、現在先行して実行されている抽出ジョブと並列に実行するように、アプリケーションに指示を出力する。
【０１０２】
次に、ステップＳ５４で、遅延検知部１４が、アプリケーションが終了したか否かを判定する。終了していない場合には、処理はステップＳ４０へ戻り、アプリケーションが終了した場合には、本運用処理も終了する。
【０１０３】
以上説明したように、本実施形態に係るジョブ判別装置１０によれば、ジョブの入力データと出力データとの関係に基づいて、ジョブで実行される処理が、処理結果が処理単位に依存しない処理か否かを判定する。そして、処理結果が処理単位に依存しない処理を実行するジョブを、加工ジョブであると判別する。集計ジョブの場合には、処理結果が処理単位に依存した処理が実行されるため、本実施形態では、バッチ処理における集計ジョブと加工ジョブとを明確に判別することができる。
【０１０４】
また、本実施形態に係るジョブ判別装置１０によれば、抽出ジョブの後続ジョブが、加工ジョブかつシーケンシャルな読み出しを行うジョブの場合に、後続ジョブを先行ジョブである抽出ジョブと並列に実行させる。処理結果が処理単位に依存しない処理を実行する加工ジョブは、先行のジョブと並列して実行しても、処理結果に問題が生じないためである。
【０１０５】
図３１に示すように、バッチ処理Ａは、抽出ジョブの後続ジョブが加工ジョブで、かつ、抽出ジョブの書込処理、及び加工ジョブの読出処理がシーケンシャルである。この場合には、従来技術の場合も、本実施形態の場合も、抽出ジョブと後続ジョブである加工ジョブとを並列実行可能であると判定する。一方、図３１に示すように、バッチ処理Ｂは、抽出ジョブの後続ジョブが集計ジョブで、かつ、抽出ジョブの書込処理、及び集計ジョブの読出処理がシーケンシャルである。この場合には、従来技術の場合、抽出ジョブと後続ジョブである集計ジョブとを並列実行可能であると判定してしまう。しかし、集計処理は、処理結果が処理単位に依存するため、抽出ジョブとの並列実行は不可能である。本実施形態によれば、上記のように、後続ジョブが、処理結果が処理単位に依存しない処理を実行する加工ジョブか否かも合わせて並列実行可能か否かを判定するため、処理結果に問題を生じさせること無く、ジョブの並列実行を行うことができる。
【０１０６】
また、本実施形態に係るジョブ判別装置１０では、図３２に示すように、アプリケーション実行中に遅延が検知された場合に、先行ジョブと後続ジョブとを並列に実行させるため、遅延の検知のみならず、遅延回避も自動的に行うことができる。
【０１０７】
なお、上記実施形態では、後続ジョブと並列実行させる先行ジョブが抽出ジョブである場合について説明したが、これに限定されない。（１）先行ジョブの書込処理がシーケンシャル、（２）後続ジョブの読込処理がシーケンシャル、（３）後続ジョブが本実施形態で判別された加工ジョブであれば、並列実行が可能である。本実施形態では、まず抽出ジョブを判別して、抽出ジョブを先行ジョブとしたため、上記（１）の要件は自動的に満たしている。そのため、図３０に示す本運用処理において並列実行可能か否かを判定する処理（ステップＳ４８及びＳ５０）において、（１）の要件を満たすか否かの判定を行っていない。先行ジョブが抽出ジョブとは限らない場合には、並列実行可能か否かを判定する処理に、遅延が検知されたジョブ（実行中のジョブ）の書込ファイルオフセット判定フラグを参照して、そのジョブの書込処理がシーケンシャルか否かを判定する処理も加えればよい。
【０１０８】
また、上記実施形態では、遅延が検知された場合に、並列実行可能な後続ジョブを、先行ジョブと並列に実行させる場合について説明したが、これに限定されない。実行中のジョブの後続ジョブが並列実行可能なジョブの場合には、遅延の有無に関わらず、並列実行させるようにしてもよい。
【０１０９】
また、上記実施形態では、抽出ジョブの出力データ量に基づいて遅延を検知する場合について説明したが、他の方法により遅延を検知してもよい。
【０１１０】
また、上記実施形態では、ジョブ判別プログラム５０が記憶部４６に予め記憶（インストール）されている態様を説明したが、ＣＤ−ＲＯＭやＤＶＤ−ＲＯＭ等の記憶媒体に記録された形態で提供することも可能である。
【０１１１】
以上の実施形態に関し、更に以下の付記を開示する。
【０１１２】
（付記１）
コンピュータに、
所定の処理を実行するジョブがデータを読み込む入力ファイル、前記入力ファイルに含まれる入力データ、前記ジョブがデータを書き込む出力ファイル、前記出力ファイルに含まれる出力データ、及び前記出力ファイルへのアクセス方式を含む入出力情報を取得し、
前記入力ファイルの数と前記出力ファイルの数との関係、前記入力データの数と前記出力データの数との関係、前記入力データと前記出力データとの関係、及び前記出力ファイルへのアクセス方式が示すパターンが、処理結果が処理単位に依存しない処理を実行した場合のパターンとして予め定めたパターンと一致するジョブを、データ加工ジョブと判別する
処理を実行させるジョブ判別方法。
（付記２）
前記処理結果が処理単位に依存しない処理を、入力データの各々のデータ形式を変換する処理、入力データをソートする処理、複数の入力ファイルに含まれる入力データをそのまま１つの出力ファイルに結合する処理、複数の入力ファイルに含まれる入力データのソートまたはマージを行って、１つの出力ファイルに結合する処理、及び、マスタである１つの入力ファイルに対して、他の入力ファイルの入力データを反映させる処理の少なくとも一つとした付記１記載のジョブ判別方法。
【０１１３】
（付記３）
前記コンピュータに、
先行ジョブの出力データを後続ジョブの入力データとするバッチ処理に含まれる複数のジョブの各々について、前記入力ファイルへのアクセス方式をさらに含む前記入出力情報を取得し、
先行ジョブの出力ファイルへのアクセス方式がシーケンシャルで、後続ジョブの入力ファイルへのアクセス方式がシーケンシャルで、かつ前記後続ジョブがデータ加工ジョブと判別されたジョブの場合に、前記先行ジョブと前記後続ジョブとを並列に実行させる
ことをさらに含む処理を実行させる付記１または付記２記載のジョブ判別方法。
【０１１４】
（付記４）
前記コンピュータに、
前記バッチ処理における少なくとも１つのジョブに要する時間を予測し、予測した時間と、予め定めた目標時間とに基づいて、前記バッチ処理に遅延が生じるか否かを検知することを含む処理をさらに実行させ、
遅延が検知された場合に、前記先行ジョブと前記後続ジョブとを並列に実行させる
付記３記載のジョブ判別方法。
【０１１５】
（付記５）
所定の処理を実行するジョブがデータを読み込む入力ファイル、前記入力ファイルに含まれる入力データ、前記ジョブがデータを書き込む出力ファイル、前記出力ファイルに含まれる出力データ、及び前記出力ファイルへのアクセス方式を含む入出力情報を取得する取得部と、
前記入力ファイルの数と前記出力ファイルの数との関係、前記入力データの数と前記出力データの数との関係、前記入力データと前記出力データとの関係、及び前記出力ファイルへのアクセス方式が示すパターンが、処理結果が処理単位に依存しない処理を実行した場合のパターンとして予め定めたパターンと一致するジョブを、データ加工ジョブと判別する判別部と、
を含むジョブ判別装置。
【０１１６】
（付記６）
前記処理結果が処理単位に依存しない処理を、入力データの各々のデータ形式を変換する処理、入力データをソートする処理、複数の入力ファイルに含まれる入力データをそのまま１つの出力ファイルに結合する処理、複数の入力ファイルに含まれる入力データのソートまたはマージを行って、１つの出力ファイルに結合する処理、及び、マスタである１つの入力ファイルに対して、他の入力ファイルの入力データを反映させる処理の少なくとも一つとした付記５記載のジョブ判別装置。
【０１１７】
（付記７）
前記取得部は、先行ジョブの出力データを後続ジョブの入力データとするバッチ処理に含まれる複数のジョブの各々について、前記入力ファイルへのアクセス方式をさらに含む前記入出力情報を取得し、
先行ジョブの出力ファイルへのアクセス方式がシーケンシャルで、後続ジョブの入力ファイルへのアクセス方式がシーケンシャルで、かつ前記後続ジョブが前記判別部によりデータ加工ジョブと判別されたジョブの場合に、前記先行ジョブと前記後続ジョブとを並列に実行させる並列実行部
を含む付記５または付記６記載のジョブ判別装置。
【０１１８】
（付記８）
前記バッチ処理における少なくとも１つのジョブに要する時間を予測し、予測した時間と、予め定めた目標時間とに基づいて、前記バッチ処理に遅延が生じるか否かを検知する遅延検知部を含み、
前記並列実行部は、前記遅延検知部により遅延が検知された場合に、前記先行ジョブと前記後続ジョブとを並列に実行させる
付記７記載のジョブ判別装置。
【０１１９】
（付記９）
コンピュータに、
所定の処理を実行するジョブがデータを読み込む入力ファイル、前記入力ファイルに含まれる入力データ、前記ジョブがデータを書き込む出力ファイル、前記出力ファイルに含まれる出力データ、及び前記出力ファイルへのアクセス方式を含む入出力情報を取得し、
前記入力ファイルの数と前記出力ファイルの数との関係、前記入力データの数と前記出力データの数との関係、前記入力データと前記出力データとの関係、及び前記出力ファイルへのアクセス方式が示すパターンが、処理結果が処理単位に依存しない処理を実行した場合のパターンとして予め定めたパターンと一致するジョブを、データ加工ジョブと判別する
ことを含む処理を実行させるためのジョブ判別プログラム。
【０１２０】
（付記１０）
前記処理結果が処理単位に依存しない処理を、入力データの各々のデータ形式を変換する処理、入力データをソートする処理、複数の入力ファイルに含まれる入力データをそのまま１つの出力ファイルに結合する処理、複数の入力ファイルに含まれる入力データのソートまたはマージを行って、１つの出力ファイルに結合する処理、及び、マスタである１つの入力ファイルに対して、他の入力ファイルの入力データを反映させる処理の少なくとも一つとした付記９記載のジョブ判別プログラム。
【０１２１】
（付記１１）
前記コンピュータに、
先行ジョブの出力データを後続ジョブの入力データとするバッチ処理に含まれる複数のジョブの各々について、前記入力ファイルへのアクセス方式をさらに含む前記入出力情報を取得し、
先行ジョブの出力ファイルへアクセス方式がシーケンシャルで、後続ジョブの入力ファイルへのアクセス方式がシーケンシャルで、かつ前記後続ジョブがデータ加工ジョブと判別されたジョブの場合に、前記先行ジョブと前記後続ジョブとを並列に実行させる
ことをさらに含む処理を実行させるための付記９または付記１０記載のジョブ判別プログラム。
【０１２２】
（付記１２）
前記コンピュータに、
前記バッチ処理における少なくとも１つのジョブに要する時間を予測し、予測した時間と、予め定めた目標時間とに基づいて、前記バッチ処理に遅延が生じるか否かを検知することを含む処理をさらに実行させ、
遅延が検知された場合に、前記先行ジョブと前記後続ジョブとを並列に実行させる
付記１１記載のジョブ判別方法。
【符号の説明】
【０１２３】
１０   ジョブ判別装置
１１   管理表作成部
１２   抽出ジョブ判別部
１３   加工ジョブ判別部
１４   遅延検知部
１５   並列実行部
２１   ジョブ定義ファイル
２２   稼働実績管理表
２３   相関関係表
２４   実行時間表
２５   監視対象ジョブリスト
２６   読込処理管理表
２７   書込処理管理表
２８   ファイルオフセット処理管理表
４０   コンピュータ
４２   ＣＰＵ
４４   メモリ
４６   記憶部
５０   ジョブ判別プログラム
【図１】
2015185027.tif 000003
【図２】
2015185027.tif 000004
【図３】
2015185027.tif 000005
【図４】
2015185027.tif 000006
【図５】
2015185027.tif 000007
【図６】
2015185027.tif 000008
【図７】
2015185027.tif 000009
【図８】
2015185027.tif 000010
【図９】
2015185027.tif 000011
【図１０】
2015185027.tif 000012
【図１１】
2015185027.tif 000013
【図１２】
2015185027.tif 000014
【図１３】
2015185027.tif 000015
【図１４】
2015185027.tif 000016
【図１５】
2015185027.tif 000017
【図１６】
2015185027.tif 000018
【図１７】
2015185027.tif 000019
【図１８】
2015185027.tif 000020
【図１９】
2015185027.tif 000021
【図２０】
2015185027.tif 000022
【図２１】
2015185027.tif 000023
【図２２】
2015185027.tif 000024
【図２３】
2015185027.tif 000025
【図２４】
2015185027.tif 000026
【図２５】
2015185027.tif 000027
【図２６】
2015185027.tif 000028
【図２７】
2015185027.tif 000029
【図２８】
2015185027.tif 000030
【図２９】
2015185027.tif 000031
【図３０】
2015185027.tif 000032
【図３１】
2015185027.tif 000033
【図３２】
2015185027.tif 000034