(57)【特許請求の範囲】
【請求項１】
ジョブ制御文（ＪＣＳ：Ｊｏｂ  Ｃｏｎｔｒｏｌ  Ｓｔａｔｅｍｅｎｔｓ）を用いて実行するプログラムと、当該プログラムが使用する資源を指定し、
ファイルにアクセスし、複数のジョブステップから構成される複数のジョブが並列あるいは逐次的に実行する計算機システムにおいて、
各ジョブステップについて、実行を開始できる条件である実行開始条件を指定するパラメタをＪＣＳに設け、
ジョブが投入されると、当該ジョブを定義したＪＣＳを入力し、
前記ジョブの全ての各ジョブステップから、前記パラメタの指定内容が等しいジョブステップと前記指定のないジョブステップの数の合計の最大値を求めることで、並列に実行できるジョブステップの最大値（最大並列度）を求めるステップと、
前記最大並列度の数のプログラムが平行して実行できるための資源を確保するステップと、
前記ジョブの中で、実行開始条件を満たしたジョブステップの実行を許可するステップと、
前記全てのジョブステップの実行状況を監視し、全ての前記ジョブステップが実行を完了した時点で、確保した前記資源を解放するステップを有することを特徴とするジョブ実行制御方法。
【請求項２】
請求項１の記載のジョブ実行制御方法において、
ジョブが投入されると、当該ジョブを定義したＪＣＳを入力し、
前記ＪＣＳに定義されている各ジョブステップがアクセスするファイル識別子を参照して同一のファイルへアクセスするジョブステップのペアを求めるステップと、
前記ペアとなったジョブステップにおいて、前記ＪＣＳで定義されたジョブステップの実行順序が後となっているジョブステップの実行開始条件として、前記ペアとなったもう一方のジョブステップの実行完了後と定める実行開始条件を決定するステップと、
前記決定した実行開始条件をパラメタとして入力したＪＣＳに書き込むステップを有することを特徴とするジョブ実行制御方法。
【請求項３】
請求項１記載のジョブ実行制御方法において、
上記ジョブの実行時に該ジョブについて、
ジョブの識別子と、
ジョブステップの識別子と、
ジョブステップの開始時刻と、
アクセスした全てのファイル識別子と、
アクセスした前記全てのファイルへのアクセスが出力であったか、入力であったかを示すアクセス種別を含む履歴情報を収集するステップと、
同一ジョブ内で、
前記ファイル識別子が等しく、かつ、
前記アクセス種別が出力と入力であり、かつ、
前記アクセス種別が出力であるジョブステップの開始時刻が、前記アクセス種別が入力であるジョブステップの開始時刻より先行しているジョブステップのペアを求めるステップと、
前記アクセス種別が入力であるジョブステップの実行開始条件を、前記アクセス種別が出力であるジョブステップが完了した直後と定める実行開始条件を決定し、保存するステップと、
前記ジョブと同一のジョブが再び投入された時に、前記保存された実行開始条件をパラメタとして入力したＪＣＳに書き込むステップを有することを特徴とするジョブ実行制御方法。
【発明の詳細な説明】
【０００１】
【産業上の利用分野】
計算機システムのジョブスケジュール方法に係り、特にジョブの実行制御方法に関する。
【０００２】
【従来の技術】
計算機の利用形態の一つに、収集した売上げ情報や在庫情報などのデータを１日単位や、１週間単位、１か月単位などにまとめておいて、一括して集計するバッチ処理がある。バッチ集計処理は、いくつかの処理プログラムを実行させることにより、最終的な実行結果を得る体系となっている。
こうした実行結果を得るための論理的な仕事の単位をジョブと呼ぶ。１つのジョブの中では、複数の処理プログラムを実行させ、実行結果を得る。一つのプログラムの実行単位をジョブステップと呼ぶ。
また、こうしたバッチ処理で、実行させるプログラムや、そのプログラムでアクセスするファイルは、ジョブ制御言語（ＪＣＬ）で記述されるジョブ制御文（ＪＣＳ）で定義する。
一般的には、上段のジョブステップの実行結果を下段のジョブステップが参照し、下段のジョブステップの実行結果をさらに下段のジョブステップが参照して処理するプロセスを繰り返すことにより、最終的な実行結果を得る。
このように、複数のジョブステップから構成されているジョブの実行方法は、ＡＮＤＲＥＷ  Ｓ．  ＴＡＮＥＮＢＡＵＭ著「ＭＯＤＥＲＮ  ＯＰＥＲＡＴＩＮＧ  ＳＹＳＴＥＭＳ」（Ｐｒｅｎｔｉｃｅ−Ｈａｌｌ  Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ｅｄｉｔｉｏｎｓ、Ｐ６〜７）に記載されているように、一般的には、上段のジョブステップから１つずつ順次実行させる方法が一般的である。この場合、各ジョブの実行用に一つのアドレス空間を割当て、その空間上でジョブステップを１段ずつ実行させていた。これにより、多重のアドレス空間を生成し、管理するオペレーティングシステムでは、複数のジョブを並列に実行させることが可能であり、バッチ処理全体の処理時間短縮を臨むことができる。
【０００３】
【発明が解決しようとする課題】
近年、半導体技術等の進歩により、データ演算等をする中央処理装置（ＣＰＵ）や入出力装置の処理能力の進展が目覚ましい。また、ＣＰＵにおいては、多数のＣＰＵを配置し、各ＣＰＵにプログラムの実行を分散させ、処理の並列度を向上させることで、プログラムのスループット向上を図る分散環境の構築が図られている。
しかし、上記従来技術では、ジョブステップの実行スケジュールにおいて、ジョブステップの並列処理ができないことに問題がある。
ここで、ジョブステップ１、ジョブステップ２、およびジョブステップ３という３つのジョブステップから構成されるジョブを例に説明する。ジョブの処理構成は、ジョブステップ１とジョブステップ２の実行結果をジョブステップ３が参照するものとする。従来技術では、ジョブステップ１、ジョブステップ２、ジョブステップ３の順で、順次１段ずつジョブステップを実行させることになる。しかし、ジョブステップ１とジョブステップ２は、データの受け渡し関係が存在しないため、並列に実行することが可能である。
本発明の目的は、１つのジョブの中で、並列に実行させることができるジョブステップを並列実行させることにより、バッチ処理時間の短縮を図ることにある。
【０００４】
【課題を解決するための手段】
上記目的を達成するため、本発明では、
ジョブ制御文（ＪＣＳ）を用いて実行するプログラムと、当該プログラムが使用する資源を指定し、ファイルにアクセスし、複数のジョブステップから構成される複数のジョブが並列あるいは逐次的に実行する計算機システムにおいて、
各ジョブステップについて、実行を開始できる条件である実行開始条件を指定するパラメタをＪＣＳに設け、ジョブが投入されると、当該ジョブを定義したＪＣＳを入力し、前記ジョブの全ての各ジョブステップから、前記パラメタの指定内容が等しいジョブステップと前記指定のないジョブステップの数の合計の最大値を求めることで、並列に実行できるジョブステップの最大値（最大並列度）を求めるステップと、
前記最大並列度の数のプログラムが平行して実行できるための資源を確保するステップと、
前記ジョブの中で、実行開始条件を満たしたジョブステップの実行を許可するステップと、
前記全てのジョブステップの実行状況を監視し、全ての前記ジョブステップが実行を完了した時点で、確保した前記資源を解放するステップを有するようにしている。
また、上記の各ジョブステップの実行を開始できる条件である実行開始条件を指定するパラメタをＪＣＳから求めるために、
ジョブが投入されると、当該ジョブを定義したＪＣＳを入力し、前記ＪＣＳに定義されている各ジョブステップがアクセスするファイル識別子を参照して同一のファイルへアクセスするジョブステップのペアを求めるステップと、
前記ペアとなったジョブステップにおいて、前記ＪＣＳで定義されたジョブステップの実行順序が後となっているジョブステップの実行開始条件として、前記ペアとなったもう一方のジョブステップの実行完了後と定める実行開始条件を決定するステップと、
前記決定した実行開始条件をパラメタとして入力したＪＣＳに書き込むステップを有するようにしている。
また、上記の各ジョブステップの実行を開始できる条件である実行開始条件を指定するパラメタをジョブの実行履歴から求めるために、
ジョブの実行時に該ジョブについて、ジョブの識別子と、ジョブステップの識別子と、ジョブステップの開始時刻と、アクセスした全てのファイル識別子と、アクセスした前記全てのファイルへのアクセスが出力であったか、入力であったかを示すアクセス種別を含む履歴情報を収集するステップと、
同一ジョブ内で、前記ファイル識別子が等しく、かつ、前記アクセス種別が出力と入力であり、かつ、前記アクセス種別が出力であるジョブステップの開始時刻が、前記アクセス種別が入力であるジョブステップの開始時刻より先行しているジョブステップのペアを求めるステップと、
前記アクセス種別が入力であるジョブステップの実行開始条件を、前記アクセス種別が出力であるジョブステップが完了した直後と定める実行開始条件を決定し、保存するステップと、
前記ジョブと同一のジョブが再び投入された時に、前記保存された実行開始条件をパラメタとして入力したＪＣＳに書き込むステップを有するようにしている。
【０００５】
【作用】
ＪＣＳ解析部では、ＪＣＳに指定されたジョブステップの並列実行指定部を抽出し、あるいはＪＣＳに定義されている各ジョブステップでアクセスするファイル情報に基づき並列実行可能部を抽出し、あるいはジョブの実行履歴に基づく並列実行解析の結果と投入されたＪＣＳとをマッチングすることでジョブステップの並列実行可能部を抽出する。
ジョブ実行管理部では、ＪＣＳ解析部から通知された並列度をもとに、並列実行するために必要となるアドレス空間等の資源を確保し、ジョブステップをジョブとして各アドレス空間に割当てて実行させる。各ジョブステップの実行は、ジョブ実行管理部が管理し、実行完了後、ジョブ受付部を経由して、ユーザに実行完了が通知される。
履歴情報収集部では、ジョブの実行履歴情報をファイルのアクセス履歴情報を時系列に収集する。履歴情報解析部では、ファイルへのアクセス履歴情報をもとに、並列実行が可能なジョブステップを求める。
これにより、ジョブにおける並列実行が可能なジョブステップが抽出され、これらのジョブステップを並列実行することができる。
【０００６】
【実施例】
実施例を用いて、本発明を説明する。
第１の実施例は、複数のジョブステップから構成されるジョブにおいて、ジョブで実行させるプログラムやアクセスするファイルを定義するジョブ制御文において、各ジョブステップの開始を宣言するレコードに、ジョブステップが実行を開始できる条件を記述して、１つのジョブ内のジョブステップを並列実行させるものであり、この場合、上記レコードに事前に上記条件を記述しておくか、投入されたジョブ制御文を解析し、ファイルのアクセス順序関係に制約のないジョブステップを抽出して、各ジョブステップの開始を宣言するレコードに、ジョブステップが開始できる条件を付加する。
第２の実施例は、投入されたジョブのジョブ制御文と、以前に実行されたジョブの実行履歴とファイルへのアクセス履歴を照合して、ジョブステップが実行を開始できる条件を、ジョブ制御文に付加することで、ジョブステップを並列実行させる方法である。
【０００７】
図１は本発明の機能ブロック図である。まず、図１を用いて本発明の構成を説明する。
１００は、計算機システムを示す。１００は、演算操作を行なう中央処理装置（ＣＰＵ）（２００）とメモリ（３００）により構成される。４００は外部記憶装置を示す。４００の中には、ジョブで実行させるプログラムやアクセスするファイルを定義したジョブ制御文が格納されている。５００も外部記憶装置である。５００には、履歴情報収集部６０００によって、ジョブの実行履歴情報やファイルへのアクセス履歴情報が出力される。
１０００は、ＪＣＳ解析部である。ＪＣＳ解析部では、投入されたジョブのジョブ制御文（ＪＣＳ）を４００より入力し、ＪＣＳよりファイルへのアクセス順序関係や、各ジョブステップについて実行を開始するための制約条件を求める実行履歴解析部（７０００）の解析結果と照合して、入力したＪＣＳの各ジョブステップについて実行を開始するための制約条件を付加して、ジョブ受付部（２０００）に渡す。
ジョブ受付部では、ＪＣＳ解析部から渡されたＪＣＳについて、ジョブステップを並列実行できる最大の多重度をもとめ、ジョブステップ実行処理部（３０００）にＪＣＳと最大の多重度を渡す。
ジョブステップ実行処理部（３０００）では、並列実行させるために必要な資源（アドレス空間）を確保し、実行開始の制約が解除されたジョブステップから次々と実行させていく。
４０００では、ジョブステップの実行が終了するたびに通知をうけ、通知されたジョブステップが属するジョブが終了したか否かを確認する。終了した場合は、ジョブ完了部５０００に通知し、まだ他のジョブステップに実行を開始していないジョブステップがある場合には、ジョブステップ実行処理部を呼び出す。
６０００は、履歴情報収集部である。６０００では、ジョブが開始された時点で、ジョブ受付部（２０００）からジョブ開始情報を受け取り、ジョブステップが終了した時点で、ジョブステップ終了情報とそのジョブステップでのファイルアクセス履歴情報をステップ終了受付部（４０００）から受け取る。さらに、ジョブが終了した時点で、ジョブ完了部（５０００）からジョブ終了情報を受け取る。こうしたジョブの実行履歴情報や、ファイルへのアクセス履歴情報を、収集した順に外部記憶装置（５００）に格納するのが、履歴情報収集部（６０００）である。
実行履歴解析部（７０００）は、６０００により収集された実行履歴（５００）を入力として、ファイルへのアクセス順序関係や、ファイルへの入出力の識別により、ジョブステップの実行開始をするための制約条件を求める。ジョブステップを実行するための制約は、参照するファイルが完成されていれば、直ちに実行することが可能であるため、ファイルへのアクセス順序関係のみを守れば、他には制約を受けずに実行することができる。８０００はジョブステップを実行するプログラム実行部である。
【０００８】
図２は、本発明で説明するＪＣＳの記述例である。図２を用いて、本実施例でのＪＣＳの記述規則を説明する。
まず。ＪＯＢは、一つの処理単位であるジョブを宣言する制御文である。本例で、ＪＯＢ１がジョブ名である。
このジョブでは、ＰＧＭ１というプログラムを実行した後、ＰＧＭ２を実行させ、その後にＰＧＭ３を実行する。このように、ジョブの中で実行すべきプログラムの指定と、プログラムの実行順序を宣言しているのがＳＴＥＰ文である。ＳＴＥＰ文で宣言したプログラムの実行単位がジョブステップである。すなわち、ジョブステップとは、ジョブを構成する実行の単位で、一つのプログラムの実行を意味する。
４１０では、ジョブステップ名がＳＴＥＰ１というジョブステップでＰＧＭ１というプログラムを実行する。そのジョブステップが完了した後に、ジョブステップ名がＳＴＥＰ２というジョブステップでＰＧＭ２というプログラムを実行する。さらに、ＳＴＥＰ２の実行が完了した後で、ジョブステップ名がＳＴＥＰ３というジョブステップでＰＧＭ３というプログラムを実行する。
各プログラムの実行中にファイルをアクセスする場合がある。このようにプログラムの実行中にアクセスするファイルを指定するのが、ＦＤ文である。ＦＤ文ではＦＩＬＥオペランドでアクセスするファイル名称を指定する。
このようにＪＣＳ中で定義したアクセスするファイルを、プログラムと対応づける必要がある。それがＦＤ名である。４１０の例では、ＩＮ１、ＯＵＴ１、ＩＮ２、ＯＵＴ２、ＩＮ３、ＯＵＴ３がＦＤ名である。また、ここで定義したファイルへのアクセスが入力なのか、出力なのかはプログラムの中で指定する。
【０００９】
次に、４１０の処理の流れを説明する。
まず、ＳＴＥＰ１ではＰＧＭ１というプログラムを実行する。ここでは、Ａ．ＤＡＴＡというファイルからデータを入力し、Ｂ．ＤＡＴＡというファイルへ実行結果を出力する。次に、ＳＴＥＰ２で、ＰＧＭ２というプログラムを実行する。ここでは、ＰＧＭ１の実行結果であるＢ．ＤＡＴＡというファイルのデータを入力し、実行結果をＣ．ＤＡＴＡというファイルへ出力する。ＳＴＥＰ２の実行終了後、ＳＴＥＰ３でＰＧＭ３というプログラムを実行する。ここでは、ＰＧＭ１の実行結果であるＢ．ＤＡＴＡというファイルのデータを入力し、実行結果をＤ．ＤＡＴＡというファイルへ出力する。
ここで、ＳＴＥＰ２とＳＴＥＰ３は、互いにＢ．ＤＡＴＡというファイルを参照するが、ＳＴＥＰ２でのＢ．ＤＡＴＡへのアクセスが入力と分かっている場合には、ＳＴＥＰ２とＳＴＥＰ３の間でデータの受け渡し関係がないため、並列に実行することが可能である。しかし、ＳＴＥＰ２でのＢ．ＤＡＴＡへのアクセスが入力と分かっていない場合には並列に実行することはできない。そこで、こうしたジョブステップの構成の場合に、ＳＴＥＰ１の実行が完了した後、ＳＴＥＰ２とＳＴＥＰ３の間にデータの受け渡し関係がない場合に、これらを並列に実行させることにより、処理時間の短縮を図ることが本発明の目的である。
【００１０】
図３を用いて、４１０のＳＴＥＰ２とＳＴＥＰ３を並列に実行させるための指定方法を説明する。これが、本実施例での記述規則とする。
４２０では、ＳＴＥＰ２とＳＴＥＰ３のＳＴＥＰ文にＥＸＥＣ＝ＳＴＥＰ１という指定が付加されている。これは、ＳＴＥＰ１というジョブステップが実行完了した時点で、実行開始可能であることを示す実行開始条件を宣言している。この宣言は事前にＪＣＳで行なえばよい。
本実施例では、上記の実行開始条件の宣言がＪＣＳで行なわれていない場合には、入力したＪＣＳに基づきＪＣＳ解析部１０００によりＳＴＥＰ文のオペランドに実行を開始できる条件である実行開始条件を付加することができるようにしている。
以上が、本実施例での構成およびジョブ制御文の記述規則である。
【００１１】
次に、第１の実施例について説明する。
図４は、ＪＣＳ解析部のフローチャートである。
まず、投入されたジョブのＪＣＳを全て読み込む（１００５）。
次に、ＪＣＳについて、ＥＸＥＣオペランドが指定されているＳＴＥＰ文があるかを調べる（１０１０）。
もしあれば、１０６０に分岐し、ジョブ受付部にＪＣＳを渡す。ない場合には、入力したＪＣＳを１行ずつ解析する。まず、解析の対象をＪＣＳの第１行目とする（１０１５）。
解析対象がＪＯＢ文であれば、１０５５に進み、解析対象を次の１行にする。ＪＯＢ文でなければ、１０２５に進み、ＳＴＥＰ文であるかを調べる。もし、ＳＴＥＰ文であれば１０３０に進み、ＳＴＥＰ文のアドレス（ＳＴＥＰ文の格納されているアドレス）を記憶し、１０５５へ進む。ＳＴＥＰ文でなければ、残った指定は、アクセスするファイルを指定したＦＤ文となる。
そこで、１０３５では、このＦＤ文と等しいファイル名を指定したＦＤ文を、前段ジョブステップから上段のジョブステップ向かってサーチする。最初に見つかった時点で、１０４５に進み、見つからなかったら１０５５に分岐して解析対象を次の１行目にする（１０４０）。
１０４５では、１０３０で記憶しているＳＴＥＰ文に対して、ＥＸＥＣオペランドを付加し、１０３５で検索した、同一のファイル名を示すＦＤ文を指定したジョブステップ名を指定する。
次に、１０５０では入力した全てのＪＣＳについて上記解析を行ったかをチェックし、解析した場合には、１０６０に進み、ジョブ受付部にＪＣＳを渡す。検索していない場合には、１０５５に進み、解析の対象を次の１行として、上記解析を繰り返す。
【００１２】
次に、ジョブ受付部（２０００）の処理について、図５を用いて説明する。図５はジョブ実行受付部のフローチャートである。
まず、２００５でＪＣＳ解析部からＪＣＳを受け取る。
次に２０１０でジョブステップの並列度を求める。これは、入力したＪＣＳのＥＸＥＣオペランドの実行開始条件の指定が等しいか、ＥＸＥＣオペランドに実行開始条件の指定がないＳＴＥＰ文数の最大値である（ＥＸＥＣオペランドの指定がないＳＴＥＰは並列処理可能である）。
次に、実行履歴情報であるジョブ開始レコードを作成し、履歴情報収集部に渡す（２０１５）。最後に、ジョブ実行状況を監視するためのＪＣＳテーブルを作成し、実行管理マスタテーブルからポイントされる実行待ちＪＣＳテーブルキューの最終エントリに繋げる。ここで、ジョブ開始レコードや、ＪＣＳテーブル、実行管理マスタテーブルの詳細は、後で説明することにする。
【００１３】
図６は、ジョブ受付部（２０００）や、ジョブステップ実行処理部（３０００）、ステップ終了受付部（４０００）およびジョブ完了部（５０００）で使用するテーブルの構造である。
実行管理マスタテーブル（３１００）はジョブ実行状況の監視や、ジョブを実行させることができる空間を管理するマスタテーブルである。
実行空間管理テーブル（３２００）は、現在、実行しているジョブを記すテーブルであり、実行中の場合は、対応するジョブのＪＣＳテーブル（３３００）からポイントされるキューに繋がり、実行待ちの場合は、実行管理マスタテーブル（３１００）の３１１０と３１２０によってポイントされる空き実行空間管理テーブルキューにつながる。
ＪＣＳテーブルは、各ジョブのＪＣＳの内容や、使用している空間に対応する実行空間管理テーブル（３２００）を管理するためのテーブルである。
ジョブの実行中は、３１３０と３１４０によりポイントされる実行中のＪＣＳテーブルキューに繋がり、実行待ちの場合は、３１５０３１６０によりポイントされる実行待ちのＪＣＳキューにつながる。このＪＣＳテーブル（３３００）と実行空間管理テーブル（３２００）をプログラム実行部に渡すことにより、一つのジョブステップが実行空間管理テーブル（３２００）に対応する空間上で実行されることとなる。
【００１４】
図７は、実行空間管理テーブルの詳細である。
３２１０と３２２０は、実行管理マスタテーブル（３１００）やＪＣＳテーブル（３２００）によって管理されるキューを生成するためのポインタである。３２３０は実行させるジョブ名を格納する領域であり、３２４０はジョブステップ名を格納する領域である。３２５０は実行状態を示すフラグで、実行中はＯＮとなり、実行していないときはＯＦＦとなる。３２６０は対応するアドレス空間の番号である。
図８はＪＣＳテーブル（３３００）の構造である。ＪＣＳテーブルはジョブ対応に作成されるテーブルである。
３３１０と３３２０は実行管理マスタテーブルによって管理されるＪＣＳテーブルキューを生成するためのポインタである。
３３３０と３３４０は、ジョブステップを実行させるために確保した実行空間管理テーブルのキューを管理するためのポインタである。
３３５０はジョブステップの完了マスクである。上段のジョブステップから、左詰めに２ビットずつ割当てる。この２ビットが、’００’の時は未実行を意味し、’１０’は実行中を意味する。さらに、実行が完了すると’１１’となる。
３３６０は、ジョブステップ数の格納領域である。３３７０はジョブ受付部の２０１０で求めた並列度を格納する領域である。３３８０はＪＣＳの内容を格納する領域である。
【００１５】
図９を用いて、ジョブステップ実行処理部のフローを説明する。まず、空き実行空間管理テーブルキューのエントリ数を３０１０で求める。
次に、３０２０で実行待ちＪＣＳキューの先頭から、３０１０で求めたエントリ数よりも並列度（３３７０）が小さいＪＣＳテーブルを検索する。もしなかったら、３０３０で３０１０にもどる。この場合、一定時間間隔待って３０１０に戻ってもよい。
３０３０で有ると分かった場合には、３０４０でＪＣＳテーブル内の並列度分の実行空間管理テーブルを空きキューから切離し、３１１０と３１２０を更新する。３０２０で求めたＪＣＳテーブルで管理する実行空間管理テーブルキューに接続する。このキューの管理に３３３０と３３４０を使用する。３０４０は、ステップ終了受付部よりコールされた時の入口点でもある。
つぎに、３０５０でＪＣＳの内容（３３８０）から、上段のＳＴＥＰ文から解析を進め、実行できるジョブステップを検索する。この検索条件は、
（１）ＳＴＥＰ文にＥＸＥＣオペランドの指定がないジョブステップで、まだ未実行であるジョブステップであること
もしくは、
（２）ＳＴＥＰ文のＥＸＥＣオペランドで指定されたジョブステップがすでに実行を完了しているジョブステップであること
である。ここで、ジョブステップの実行状況は、ジョブステップマスク（３３５０）の各ジョブステップに対応するフィールドを参照することで確認できる。
３０６０では、実行可能なジョブ名とジョブステップ名を各々３２３０と３２４０に格納し、実行フラグ（３２５０）をＯＮにする。
３０７０では、登録したジョブステップ名の対応するジョブステップ完了マスク（３３５０）の対応するフィールドを’１０’として実行中にし、更新した実行空間管理テーブル（３２００）とＪＣＳテーブル（３３００）とをプログラム実行部（８０００）に渡す。
プログラム実行部では、実行空間管理テーブルに記された空間番号（３２６０）上でジョブステップを実行させる。
【００１６】
次に図１０を用いて、ステップ終了受付部を説明する。
ジョブステップが終了すると、プログラム実行部（８０００）から通知をうける。
まず、４０１０で実行完了の通知をうけたジョブステップに対応するジョブステップ完了マスク（３３５０）のフィールドを’１１’とする。
４０２０では、実行を完了した実行空間管理テーブル（３２００）のジョブ名（３２３０）、ジョブステップ名（３２４０）をクリアし、実行フラグ（３２５０）をＯＦＦにする。
次に、４０３０では、実行履歴として、ジョブステップ終了レコードを作成し、履歴情報収集部（６０００）に渡す。
次に、４０４０ではジョブステップ完了マスク（３３５０）を左から２ビットずつジョブステップ数（３３６０）回見て、’００’となっているフィールドがあるかをチェックする。ある場合には、まだ実行を開始していないジョブステップが存在することを意味するので、４０７０に進み、ジョブステップ実行処理部をコールする（図９のステップ３０４０に進む）。
もし、存在しない場合は、４０５０でジョブステップ完了マスク（３３５０）を左から２ビットずつジョブステップ数（３３６０）回見て、’１０’となっているフィールドがあるかをチェックする。もし、存在すれば、まだ実行中のジョブステップが存在することを意味する。そこで、’１０’というフィールドがなくなるまで、４０５０の実行を繰り返す。４０５０で’１０’となっているフィールドがなくなると、すべてのジョブステップの実行を終了したことを意味するので、４０６０でジョブ完了部に制御を渡す。
【００１７】
最後に、図１１を用いて、ジョブ完了部（５０００）のフローを示す。
まず、５０１０で実行履歴として、ジョブ終了レコードを作成し、履歴情報収集部（６０００）に渡す。
次に、５０２０で、ＪＣＳテーブル（３３００）に管理されている実行空間管理テーブル（３２００）を実行管理マスタテーブル（３１００）の３１１０と３１２０によって管理される空きキューにつなぐ。
最後にＪＣＳテーブルを解放する。
【００１８】
次に、第２の実施例を説明する。
第２の実施例は、過去のジョブの実行履歴情報とファイルへのアクセス履歴情報をもとにジョブステップの並列実行を解析し、その結果を使って、ジョブステップを並列実行させるものである。
バッチ処理には、データを１日単位や、１週間単位、１ヵ月単位などにまとめておいて、一括して処理するバッチ処理があり、このような処理では、１日、１週間などの間をおいて同一ジョブを実行することになり、このような場合に第２の実施例は有効である。
第１の実施例では、ＪＣＳ解析部で実行開始条件を求める場合には、ファイルアクセスが入力か出力かはプログラムの中で指定しているため、ファイルアクセスが入力か出力かを識別できない。したがって、図２に示すＪＣＳを投入すると、ＳＴＥＰ２のＥＸＥＣオペランドは、ＥＸＥＣ＝ＳＴＥＰ１となり、ＳＴＥＰ３のＥＸＥＣオペランドは、ＥＸＥＣ＝ＳＴＥＰ２となり、結局逐次的にジョブステップを実行させることとなってしまう。
ここに示す第２の実施例を用いると、ＳＴＥＰ３のＥＸＥＣオペランドはＥＸＥＣ＝ＳＴＥＰ１となり、ＳＴＥＰ１の実行完了後に、ＳＴＥＰ２とＳＴＥＰ３をパラレルに実行させることができる。
第２の実施例が第１の実施例と異なる点は、実行履歴解析部（７０００）が加わる点と、ＪＣＳ解析部（１０００）のフローが異なる点である。
【００１９】
本実施例の説明は、まずジョブの実行履歴レコードとファイルアクセス履歴レコードの詳細を説明し、次に、その履歴情報を用いる実行履歴解析部のフローを説明する。最後に、ＪＣＳ解析部のフローを説明する。
図１２、図１３、図１４および図１５を用いて履歴情報について説明する。
ジョブの実行が開始されると、ジョブ受付部（２０００）がジョブ開始情報（５１０）を出力し、ジョブの実行が終了すると、ジョブ完了部（５０００）がジョブ終了情報（５２０）を出力する。
さらに、ジョブ実行中に、ジョブステップが終了すると、ステップ終了受付部（４０００）がジョブステップ終了情報（５３０）を出力する。
各ジョブステップで実行しているプログラムが、アクセス終了を宣言する命令（ＣＬＯＳＥ命令）を発行すると、ＣＬＯＳＥしたファイルに関して、ファイルアクセス履歴情報（５４０）を出力する。
上記各レコードを、情報の種類を区別するために、レコードの中に識別子を持っている。ジョブ開始情報（５１０）はＸ’０１’（５１１）であり、ジョブ終了情報（５２０）はＸ’０２’（５２１）、さらにジョブステップ情報（５３０）は、Ｘ’０３’である。ファイルアクセス履歴情報（５４０）に関しては、プログラムがファイルのデータを入力したのか、出力したのかによって異なる。識別子（５４１）は、入力の場合がＸ’０４’で、出力の場合がＸ’０５’である。
上記各情報は、イベントが発生する度に時系列に履歴情報収集部（６０００）に渡され、履歴情報収集部（６０００）は外部記憶装置（５００）に出力する。
【００２０】
以下に、上記各情報の出力レコード形式を説明する。
図１２は、ジョブ開始情報のレコード形式である。
当該レコードは、ジョブの実行が開始された時点で、ジョブ受付部（２０００）によって出力される。５１１は識別子で、当該レコードはＸ’０１’である。５１２はジョブ名である。５１３はジョブ開始時刻である。
図１３は、ジョブ終了情報のレコード形式である。
５２１は識別子で、当該レコードはＸ’０２’である。５２２はジョブ名である。５２３はジョブ実行の開始時刻を示し、５２４はジョブ実行の終了時刻を示す。
図１４は、ジョブステップ終了情報のレコード形式である。
５３１は識別子で、当該レコードではＸ’０３’である。５３２は終了したジョブステップが属しているジョブの名称である。５３３は終了したジョブステップが属しているジョブの開始時刻である。５３４はジョブステップ名である。５３５はジョブステップの開始時刻であり、５３６はジョブステップの終了時刻である。
図１５は、ファイルアクセル履歴情報のレコード形式である。
当該レコードは、プログラムがＣＬＯＳＥ命令を発行した時に出力される。５４１は識別子である。ただし、プログラムがファイルからデータを入力した場合と出力した場合とで、識別子（５４１）の内容が異なる。入力の場合はＸ’０４’であり、出力の場合はＸ’０５’である。
５４２は、ファイルアクセスをしたプログラムが属するジョブのジョブ名である。５４３は、ジョブの開始時刻である。５４４はファイルアクセスをしたプログラムが実行したジョブステップのジョブステップ名である。５４５はジョブステップの開始時刻である。５４６はＦＤ名である。５４７はファイルの識別子であるファイル名である。
【００２１】
実行解析部（７０００）では、上記履歴情報を用いて、各ジョブステップの実行開始条件を求める。
図１６に、実行履歴解析部（７０００）の構成を示す。
実行履歴解析部（７０００）は、履歴情報入力（７１００）と実行条件解析（７２００）に分かれる。履歴情報入力（７１００）では、上記履歴情報を入力し、ジョブとジョブステップ、およびジョブステップとアクセスしたファイルを関連づける。実行条件解析（７２００）では、履歴情報入力（７１００）によって関連づけられた結果から、各ジョブステップに関して、実行開始条件を求める。
【００２２】
図１７から図２２に、実行履歴解析部で使用するテーブルの関連および、各テーブルの詳細を示す。
図１７は、実行条件解析（７２００）が、入力した履歴情報を格納し、解析するために用意するテーブル群のテーブル関連図である。各テーブルの詳細は、図１８から図２２に示す。
履歴マスタテーブル（ＭＳＴＨ）（７５００）は、実行履歴解析部（７０００）のマスタテーブルであり、ジョブの実行履歴を格納するＪＯＢＨ（７６００）キューの管理と、各ジョブステップの実行開始条件を格納する実行条件テーブル（７９００）を管理する。
ジョブ実行履歴テーブル（ＪＯＢＨ）（７６００）は、ジョブ単位に作成され、ジョブ開始情報（５１０）やジョブ終了情報（５２０）を格納する。また、ＪＯＢＨ（７６００）キューは、ジョブの実行順序にしたがっている。さらに、ジョブ内で実行されたジョブステップ情報を格納するジョブステップ実行履歴テーブル（ＳＴＰＨ）（７７００）キューの管理をする。
ＳＴＰＨ（７７００）は、ジョブステップ単位に作成され、同一ジョブ内で実行された順にキューになってならんでいる。ＳＴＰＨ（７７００）は、ジョブステップの開始情報や終了情報を格納している。さらにＳＴＰＨ（７７００）は、ジョブステップ内でアクセスしたファイル情報を格納するファイルアクセス履歴テーブルＦＤＨ（７８００）キューの管理をする。
ＦＤＨ（７８００）は、プログラムがアクセスしたファイル単位に作成され、アクセス先のファイル情報を格納する。また、ＦＤＨ（７８００）は、プログラムが実行したジョブステップごとに、キューを作成する。
実行条件テーブル（ＥＸＣＮ）（７９００）は、履歴情報に格納されている全てのジョブステップについて、実行開始が可能な条件を格納している。
【００２３】
図１８から図２２に、上記で説明したテーブルの詳細を記す。
図１８は、履歴マスタテーブル（ＭＳＴＨ）（７６００）のテーブル構造である。
ＭＳＴＨは、ＪＯＢＨキューとＥＸＣＮキューの管理をするマスタテーブルである。ＭＳＴＨ（７５００）は、先頭ＪＯＢＨアドレス（７５１０）、最終ＪＯＢＨアドレス（７５２０）、ＥＸＣＮアドレス格納域（７５３０）を格納する。
図１９は、ＪＯＢＨ（７６００）のテーブル構造である。
ＪＯＢＨは、ジョブ開始情報（５１０）を入力した時に作成される。７６１０は次ＪＯＢＨアドレス格納域であり、７６２０は前ＪＯＢＨアドレス格納域である。７６１０と７６２０を使用して、キューを形成する。７６３０は先頭ＳＴＰＨアドレス格納域であり、７６４０は最終ＳＴＰＨアドレス格納域である。７６３０と７６４０は、ＪＯＢＨに対応するジョブの中で実行されたジョブステップ情報を格納するＳＴＰＨのキューを管理するものである。
７６５０はジョブ開始時刻の格納域であり、７６６０はジョブの終了時刻の格納域である。また、７６７０はジョブ名の格納域である。７６５０と７６７０は、ジョブ開始情報レコード（５１０）よりコピーされる。７６６０はジョブ終了情報レコード（５２０）からコピーされる。
【００２４】
図２０は、ＳＴＰＨ（７７００）のテーブル構造である。
ＳＴＰＨ（７８００）は、ファイルアクセス履歴情報（５４０）を入力した時に、当該ファイルに対してアクセスしたプログラムが属しているＳＴＰＨ（７７００）が用意されていない場合に作成する。
７７１０は次ＳＴＰＨテーブルアドレス格納域であり、７７２０は前ＳＴＰＨテーブルアドレスの格納域である。７７１０と７７２０により、ジョブ単位に実行されたジョブステップを管理するＳＴＰＨキューが形成される。７７３０は先頭ＦＤＨアドレス格納域であり、７７４０は最終ＦＤＨアドレス格納域である。７７３０と７７４０は、ジョブステップ内でアクセスしたファイル情報を格納するＦＤＨキューを管理する。７７５０はジョブステップ名の格納域である。７７６０はジョブステップの開始時刻格納域で、７７７０はジョブステップ終了時刻格納粋である。
図２１は、ＦＤＨ（７８００）のテーブル構造である。
ＦＤＨ（７８００）は、ファイルアクセス履歴情報（５４０）を入力した時に作成する。ＦＤＨ（７８００）は、ファイルへアクセスしたプログラムが実行されたジョブステップ単位で管理される。７８１０は次ＦＤＨアドレス格納域であり、７８２０は前ＦＤＨアドレス格納域である。７８１０と７８２０を用いて、ＦＤＨキューを作成する。７８３０は、ＪＣＳで記述したＦＤ名の格納域である。同様に、７８４０はファイル名の格納域である。また、７８５０は入出力識別子の格納域である。
図２２は、実行条件テーブル（ＥＸＣＮ）（７９００）のテーブル構造である。
７９１０にはジョブ名が記され、７９２０にはそのジョブの中で実行されるジョブステップ名が記される。さらに、７９３０には、実行を開始するための条件、すなわち、当該ジョブステップを開始するために終了しなければならないジョブステップ名が格納される。
【００２５】
図２３は、履歴情報入力（７１００）のフローである。
まず、履歴情報レコードを１レコード入力する（７１０５）。７１１０では、入力したレコードがジョブ開始情報レコード（５１０）であるか否かをチェックする。すなわち、識別子（５１１）がＸ’０１’であるか否かをチェックする。識別子（５１１）がＸ’０１’である場合には、７１１５へ進み、ＪＯＢＨ（７６００）を作成する。ここで、ＪＯＢＨ（７６００）に対し、ジョブ開始時刻（７６５０）と、ジョブ名（７６７０）を登録する。作成したＪＯＢＨは、７５１０と７５２０によって管理されるＪＯＢキューに登録する。
７１１０で識別子がＸ’０１’でない場合、７１２０に進む。７１２０では、入力したレコードがファイルアクセス履歴情報レコード（５４０）であるか否かをチェックする。すなわち、入力したレコードの識別子（５４１）が、Ｘ’０４’もしくはＸ’０５’であるか否かをチェックする。入力したレコードが、上記条件を満たす場合は７１２５へ進み、上記条件を満たさない場合は７１３５へ進む。
７１２５では、まず、７５１０および７５２０に管理されるＪＯＢＨ（７６００）キューをたどって、下記の条件を満たすＪＯＢＨ（７６００）を検索する。
（１）入力レコードのジョブ名（５４２）とＪＯＢＨ（７６００）のジョブ名    （７６７０）が等しい。
（２）入力レコードのジョブ開始時刻（５４３）と、ＪＯＢＨ（７６００）
ジョブ開始時刻（７６５０）が等しい。
（３）ジョブ終了時刻（５３６）が未登録である。
当該ＪＯＢＨ検索処理において、入力レコードに記したファイルへアクセスしたプログラムが属するジョブの開始情報レコード（５１０）は、すでにシステムに出力されており、当該ＪＯＢＨ検索処理では、必ずＪＯＢＨキューに上記３条件を満たすＪＯＢＨ（７６００）が存在する。
次に、上記ＪＯＢＨ検索処理により求められたＪＯＢＨ（７６００）が管理するＳＴＰＨ（７７００）キューから、下記の３条件を満たすＳＴＰＨ（７７００）を検索する。
（１）入力レコードのジョブステップ名（５４４）とＳＴＰＨ（７７００）の      ジョブステップ名（７７５０）が等しい。
（２）入力レコードのジョブステップ開始時刻（５４５）と、ＳＴＰＨ（７７      ００）のジョブステップ開始時刻（７７６０）が等しい。
（３）ジョブステップ終了日付と終了時刻（７７００）が未登録である。
当該ＳＴＰＨの検索処理で、当該３条件を満足するＳＴＰＨを検索できなかった場合、新たにＳＴＰＨ領域を確保し、入力レコードの中から、ジョブステップ名（５４２）とジョブステップ開始時刻（５４４）をコピーする。以後、本ステップでの操作対象とするＳＴＰＨを当該ＳＴＰＨとし、７１３０に進む。
上記ＳＴＰＨの検索処理で、上記３条件を満足するＳＴＰＨ（７７７０）を検索できた場合は、検索したＳＴＰＨ（７７００）を操作対象として、７１３０に進む。
７１３０では、まず、ＦＤＨ領域を確保する。確保したＦＤＨ（７８００）に対して、入力レコード情報から、ＦＤ名（５４６）、ファイル名（５４７）、入出力識別子（５４８）を登録する。ここで、入出力識別子（７８６０）には、ファイルアクセス履歴情報レコード（５４０）の識別子（５４８）をコピーする。登録処理をしたＦＤＨは、上記ＳＴＰＨ検索処理で操作対象となったＳＴＰＨ（７７００）が管理するＦＤＨキューの最後尾に接続する。
【００２６】
７１３５では、入力レコードがジョブステップ終了情報レコードか否かをチェックする。すなわち、入力レコードの識別子がＸ’０３’か否かをチェックする。
入力レコードの識別子がＸ’０３’の場合は、７１４０へ進む。７１４０では、ＭＳＴＨ（７５００）が管理するＪＯＢＨキューの中から、下記の３条件を満たすＪＯＢＨ（７６００）を検索する。
（１）入力レコードのジョブ名（５３２）とＪＯＢＨのジョブ名（７６７０）      が等しい。
（２）入力レコードのジョブ開始時刻（５３２）と、ＪＯＢＨのジョブ開始時      刻（７６５０）が等しい。
（３）ＪＯＢＨ（７６００）のジョブ終了時刻（７６６０）が未登録である。
当該ＪＯＢＨ検索処理において、入力レコードに記したジョブステップが属するジョブの開始情報レコード（５１０）は、すでに出力されており、当該ジョブ開始情報レコード（５１０）に対応するＪＯＢＨ（７６００）を作成済みである。
次に検索したＪＯＢＨ（７６００）が管理するＳＴＰＨ（７７００）キューにおいて、下記３条件を満たすＳＴＰＨ（７７００）を検索する。
（１）入力したレコードのジョブステップ名（５３４）とＳＴＰＨ（７７００）      のジョブステップ名（７７５０）が等しい。
（２）入力レコードのジョブステップ開始時刻（５３５）と、ＳＴＰＨ（７７      ００）のジョブステップ開始時刻（７７６０）が等しい。
（３）ＳＴＰＨ（７７００）のジョブステップ終了時刻（７７７０）が未登録      である。
当該ＳＴＰＨ（７７００）の検索処理において、上記３条件を満たすＳＴＰＨを検索できた場合は、入力レコードの中より、ジョブステップ終了時刻（５３６）をＳＴＰＨ（７７００）に登録する。
【００２７】
上記ＳＴＰＨ検索処理で、条件を満たすＳＴＰＨ（７７００）を検索できなかった場合、新しくＳＴＰＨ領域を確保し、入力レコードの情報をもとに、５３４から５３６の領域に対応する情報をコピーする。次に、上記ＪＯＢＨ（７７００）により、検索したＪＯＢＨによって管理されるＳＴＰＨキューの最後尾に当該ＳＴＰＨを接続する。
７１３５において、入力レコードの識別子がＸ’０３’でなかった場合、７１４５に進む。７１４５では、入力レコードがジョブ終了情報レコードであるか否かをチェックする。すなわち、入力レコードの識別子がＸ’０２’であるか否かをチェックする。入力レコードの識別子がＸ’０２’である場合は、７１５０へ進む。７１５０では、まず、下記３条件を満たすＪＯＢＨ（７５００）を検索する。
（１）入力レコードのジョブ名（５２２）とＪＯＢＨのジョブ名（７６７０）が等しい。
（２）入力レコードのジョブ開始時刻（５２３）と、ＪＯＢＨ（７６００）のジョブ開始時刻（７６５０）が等しい。
（３）ＪＯＢＨ（７６００）のジョブ終了了時刻（７６６０）が未登録である。
当該ＪＯＢＨ検索処理において、入力レコードに記したジョブ終了情報に対応するジョブ開始情報レコード（５１０）は出力されており、ＯＳ適用ジョブ検索手段（１３００）は、当該ジョブ開始情報レコード（３００）に対応するＪＯＢＨを作成済みである。従って、当該ＪＯＢＨ検索処理では、必ず上記３条件を満たすＪＯＢＨが存在する。
次に、上記ＪＯＢＨ検索処理で求めたＪＯＢＨに対して、入力レコードより、ジョブ終了時刻（５２４）を登録する。
【００２８】
７１４５において、入力レコードがジョブ終了情報レコードでなかった場合は、７１５５へ進む。同様に、７１３０、７１４０、および７１５０での処理を完了した後も、７１５５へ進む。７１５５では、今回入力したレコードが、最終レコードか否かをチェックする。最終レコードの場合は、当該システム稼働情報の入力処理を完了する。最終レコードでない場合は、７１０５へ進み、次レコードを入力して、同様の処理をする。
これにより、ジョブとジョブステップの関係、およびジョブステップとアクセスしたファイルとの関係を関係づけることができた。これを用いて、各ジョブステップの実行開始条件を求め、ＥＸＣＮ（７９００）を作成する。
【００２９】
図２４を用いて、実行条件解析のフローを説明する。
まず、解析の対象をＪＯＢＨキューの先頭エントリとする（７２０５）。まず、これで、解析するジョブを選定する。
次に、解析対象となったジョブに属するジョブステップがアクセスしたファイルを逐一調べることにより、ジョブステップの実行開始条件を定めていく。そこで、７２１０では、解析対象を最終ジョブステップに定めるために、解析対象のＪＯＢＨが管理するＳＴＰＨキューの中の最終エントリを解析の対象とする。
７２１５では、解析対象となったＳＴＰＨが先頭エントリか否かを調べ、もし先頭エントリであれば、７２５０へ進む。それ以外は、７２２０へ進む。
７２２０では、解析対象となったＳＴＰＨが管理するＦＤＨの中から、入出力識別子が入力であるＦＤＨをサーチする。これは、複数でもかまわない。７２２５で判断した結果、ある場合には７２３０に進み、ない場合には７２４５へ進む。
７２３０では、現在解析対象となっているＳＴＰＨの前段から上段のＳＴＰＨに向かって、サーチしたＦＤＨとファイル名が同一で、入出力識別子が出力であるＦＤＨをサーチする。もしある場合には７２４０へ進み、ない場合には７２４５へ進む。
７２３０および７２３５の検索の結果、上記条件を満たすＳＴＰＨが存在する場合には、解析対象としたＳＴＰＨに対応するジョブステップは、７２３０でサーチしたＳＴＰＨに対応するジョブステップが終了しないかぎり、実行を開始することができない。そこで、７２４０では、ＥＸＣＮ（７９００）に解析対象となったジョブ名、ジョブステップ名、および、７２３０でサーチしたジョブステップ名を登録する。
７２４５では、次のジョブステップの実行条件を調べるために、前段のＳＴＰＨを解析対象として、７２１５へ戻る。
７２１５から分岐した７２５０では、次のジョブを解析対象とする前に、現在解析対象となっているＪＯＢＨが、ＪＯＢＨキューの最終エントリかを調べ、最終エントリの場合は処理を終了する。最終エントリでない場合には、７２５５へ進み、次ＪＯＢＨを解析対象として、７２１０へ戻る。
実行履歴解析部（７０００）により得られたＥＸＣＮ（７９００）をもとに、ＪＣＳ解析部では、ジョブステップの実行条件を入力したＪＣＳに付加して、ジョブ受付部に渡す。
【００３０】
第２５図を用いて、ＪＣＳ解析部のフローを説明する。
まず、１ジョブ文のＪＣＳを１０００５で読み込む。１００１０では、ＥＸＣＮ（７９００）から入力したＪＣＳとジョブ名が等しいエントリをサーチする。
もし、存在しない場合は、１００１５から１００５５へ分岐し、ジョブ受付部（２０００）にＪＣＳを渡す。
存在する場合には、１００２０へ進み、１００１０でサーチしたエントリを解析の対象に絞る。１００２５ではＪＣＳ中の２番目のＳＴＥＰ文を解析の対象にする。
１００３０では、解析対象となったＥＸＣＮのエントリから、ＳＴＥＰ文に示されたジョブステップ名と等しいエントリをサーチする。
存在する場合には１００４０へ進み、存在しない場合は１００４５へ進む（１００３５）。
１００４０では、ＳＴＥＰ文にＥＸＥＣオペランドを付加し、サーチしたＥＸＣＮの実行条件をＥＸＥＣオペランドのパラメタに指定する。
１００４５では全てのＳＴＥＰ文について上記の検索を行ったかをチックし、検索した場合は１００５５へ進む。まだ全てのＳＴＥＰ文を解析していない場合には、１００５０へ進み、次のＳＴＥＰ文を解析の対象にして、１００３０へ戻る。
【００３１】
【発明の効果】
本発明によれば、複数のジョブステップから構成されるジョブにおいて、ファイルの受け渡し関係のないジョブステップを並列実行させることを可能とする事で、ジョブの実行時間を短縮することができる。
【図面の簡単な説明】
【図１】本発明の構成を示す機能ブロック図である。
【図２】ジョブ制御文の例を示す図である。
【図３】本発明を使用する場合におけるジョブ制御文の１例を示す図である。
【図４】第１の実施例におけるＪＣＳ解析部のフローチャートを示す図である。
【図５】ジョブ受付部のフローチャートを示す図である。
【図６】ジョブ受付部、ジョブステップ実行処理部、ステップ終了受付部、およびジョブ完了部で使用するテーブルのテーブル関連を示す図である。
【図７】実行空間管理テーブルのテーブル構造を示す図である。
【図８】ＪＣＳテーブルのテーブル構造を示す図である。
【図９】ジョブステップ実行処理部のフローチャートを示す図である。
【図１０】ステップ終了受付部のフローチャートを示す図である。
【図１１】ジョブ完了部のフローチャートを示す図である。
【図１２】第２の実施例で参照するジョブ開始情報レコードの構造を示す図である。
【図１３】ジョブ終了情報レコードの構造を示す図である。
【図１４】ジョブステップ終了情報レコードの構造を示す図である。
【図１５】ファイルアクセス履歴情報レコードの構造を示す図である。
【図１６】第２の実施例における実行履歴解析部のフローチャートを示す図である。
【図１７】実行履歴解析部で使用するテーブルの関連を示す図である。
【図１８】履歴マスタテーブルの構造を示す図である。
【図１９】ジョブ実行履歴テーブルの構造を示す図である。
【図２０】ジョブステップ実行履歴テーブルの構造を示す図である。
【図２１】ファイルアクセス履歴テーブルの構造を示す図である。
【図２２】実行条件テーブルの構造を示す図である。
【図２３】第２の実施例における履歴情報入力のフローチャートを示す図である。
【図２４】第２の実施例における実行条件解析のフローチャートを示す図である。
【図２５】第２の実施例におけるＪＣＳ解析部のフローチャートを示す図である。
【符号の説明】
１００  計算機システム
２００  中央処理装置
３００  メモリ
４００  ジョブ制御文を格納する外部記憶装置
５００  実行履歴を格納する外部記憶装置
５１０  ジョブ開始情報レコード
５２０  ジョブ終了情報レコード
５３０  ジョブステップ終了情報レコード
５４０  ファイルアクセス履歴情報レコード
１０００  ＪＣＳ解析部
２０００  ジョブ受付部
３０００  ジョブステップ実行処理部
３１００  実行管理マスタテーブル
３２００  実行空間管理テーブル
３３００  ＪＣＳテーブル
４０００  ステップ終了受付部
５０００  ジョブ完了部
６０００  履歴情報収集部
７０００  実行履歴解析部
７５００  履歴マスタテーブル
７６００  ジョブ実行履歴テーブル
７７００  ジョブステップ実行履歴テーブル
７８００  ファイルアクセス履歴テーブル
７９００  実行条件テーブル
【図１】
0003559581.tif 000002
【図２】
0003559581.tif 000003
【図３】
0003559581.tif 000004
【図４】
0003559581.tif 000005
【図５】
0003559581.tif 000006
【図６】
0003559581.tif 000007
【図７】
0003559581.tif 000008
【図８】
0003559581.tif 000009
【図９】
0003559581.tif 000010
【図１０】
0003559581.tif 000011
【図１１】
0003559581.tif 000012
【図１２】
0003559581.tif 000013
【図１３】
0003559581.tif 000014
【図１４】
0003559581.tif 000015
【図１５】
0003559581.tif 000016
【図１６】
0003559581.tif 000017
【図１７】
0003559581.tif 000018
【図１８】
0003559581.tif 000019
【図１９】
0003559581.tif 000020
【図２０】
0003559581.tif 000021
【図２１】
0003559581.tif 000022
【図２２】
0003559581.tif 000023
【図２３】
0003559581.tif 000024
【図２４】
0003559581.tif 000025
【図２５】
0003559581.tif 000026