(57)【特許請求の範囲】
【請求項１】
第１のジョブを実行する第１の計算機と、前記第１のジョブを実行することにより出力される出力データに基づいて第２のジョブを実行する第２の計算機とを有するネットワークシステムにおける、前記第１の計算機から前記第２の計算機への前記出力データを引き継ぐデータ引継方法であって、
前記第１の計算機により、前記第１のジョブを実行することにより出力される出力データをレコード単位で共用記憶装置に記憶するステップと、
前記第１の計算機により、前記出力データをレコード単位で前記共用記憶装置に記憶したことを、前記第２の計算機に対して通知するステップと、
前記第２の計算機により、前記通知を受けていることを条件に、前記共用記憶領域に記憶された前記出力データに基づいて前記第２のジョブを実行するステップと、
前記第１の計算機及び前記第２の計算機各々により、ジョブのアクセス履歴情報を取得するステップと、
前記ネットワークシステム内のいずれか１以上の計算機により、前記ジョブのアクセス履歴情報に基づいて、前記第1の計算機で実行する前記第1のジョブと前記第２の計算機で実行する前記第２のジョブとを各々特定し、前記第１のジョブと前記第２のジョブとが並列的に実行されるようにジョブの実行順序を決定するステップと、
前記ジョブのアクセス履歴情報には、前記ジョブの使用するファイル名と、ファイルへのアクセス開始時刻と、前記ファイルへのアクセス終了時刻と、前記ファイルへのアクセス種別とを示す情報を含み、
前記決定するステップにおいて、
前記ジョブのアクセス履歴情報に従って、前記ジョブにおいて前記ファイルに対してデータを出力する書き込み処理を含むジョブと前記データを入力する読み込み処理を含むジョブであって、前記書込み処理のアクセス終了時刻が前記読込み処理のアクセス開始時刻よりも早いことを条件に、前記書込み処理を含むジョブを第１のジョブとし、前記読込み処理を含むジョブを第２のジョブとして各々特定し、前記第１のジョブと前記第２のジョブとが並列的に実行されるようにジョブの実行順序を決定することを特徴とするデータ引継ぎ方法。
【請求項２】
逐次的に実行される一連の処理からなる第１のジョブを実行する第１の計算機と、当該第１のジョブを実行することにより出力される出力データに基づいて、逐次的に実行される一連の処理からなる第２のジョブを実行する第２の計算機とを有する計算機システムにおける、前記第１の計算機から前記第２の計算機への前記出力データを引き継ぐデータ引継方法であって、
前記第１の計算機により、前記第１のジョブを実行することにより出力される出力データを、第一の処理としてレコード単位で共用記憶装置に書き込むステップと、
前記第１の計算機により、前記出力データをレコード単位で前記共用記憶装置に書き込んだことを、前記第２の計算機に対して通知するステップと、
前記第２の計算機により、前記通知を受けていることを条件に、第二の処理として、前記第一の処理がアクセスしたファイルについて、前記共用記憶領域に記憶された前記出力データを読み込むステップと、
前記第１の計算機及び前記第２の計算機各々により、ジョブのアクセス履歴情報であって、前記ジョブの使用するファイル名と、ファイルへのアクセス開始時刻と、前記ファイルへのアクセス終了時刻と、前記ファイル内レコードのアクセス順序と、前記ファイルへのアクセス種別とを示す情報を含むものを取得するステップと、    
前記ジョブのアクセス履歴情報に従って、第一の処理の前記ファイルに対する前記ファイルアクセス終了時刻が第二の処理の前記ファイルに対する前記ファイルアクセス開始時刻よりも早く、かつ、第一の処理の前記ファイルに対する前記ファイル内レコードのアクセス順序が第二の処理の前記ファイルに対する前記ファイル内レコードのアクセス順序と等しいような、第一の処理と第二の処理を発見するステップと、
前記発見するステップにおける第一の処理のみからなるジョブを第１のジョブとし、前記発見するステップにおける第二の処理のみからなるジョブを第２のジョブとして各々特定するステップと、
前記第１のジョブと前記第２のジョブとが前記計算機システムの異なる計算機において並列的に実行されるようにジョブの実行順序を決定するステップとを有することを特徴とするデータ引継ぎ方法。
【発明の詳細な説明】
【０００１】
【産業上の利用分野】
本発明は、計算機システム間のデータ引き継ぎ方法に関し、特に、複数の計算機間でのデータ引き継ぎを効率的に行うための計算機間のデータ引き継ぎ方法に関する。
【０００２】
【従来の技術】
あるジョブ（計算機における処理の単位）と別のジョブ間でデータを引き継ぐ場合、まず書き込み側のジョブが、引き継ぎデータから構成されたファイルを記憶装置内に格納し、書き込みジョブからファイルへのアクセスが終了した後に、読み込み側のジョブがファイルへのアクセスを開始し、引き継ぎデータを読み込む、という方法が従来広く使われている。
【０００３】
この方法では、データ引き継ぎ用ファイルへのデータの書き込みが途中までしか完了していないうちは、読み込みジョブからのファイルアクセスを開始することはできない。これは、現在の計算機が、一般のファイルへのアクセスにおいてはファイル単位での同期処理しか行っておらず、書き込み側と読み込み側のアクセスを同時には行えないからである。そのため、上記方式では、書き込みジョブと読み込みジョブを並列に実行することはできない。
【０００４】
特願平1−180316（特開平3-46033）号公報は、同一計算機で実行中のジョブから別のジョブにデータを受け渡す際、特に受け渡すデータを保存する必要がない場合のデータ引き継ぎ方法を開示している。この方法では、書き込みジョブと読み込みジョブが同時に同一ファイルへアクセスし、ファイル単位ではなく、ファイルを構成するレコード単位での同期を実現している。そのため、書き込み側と読み込み側のファイルアクセスを並列に実行できることが特徴である。その結果、処理時間を短縮し、ＣＰＵオーバヘッドを削減できる。
【０００５】
これらの方式では、主記憶あるいはそれに準ずる記憶装置に用意したデータ引き継ぎ用領域に、引き継ぎデータを一時的に格納する。また、レコード単位での同期を可能にするための入出力実行履歴情報も、主記憶あるいはそれに準じる記憶装置に用意する。これらの記憶装置は、各計算機に固有のものでなければならない。
【０００６】
ところで、データの引き継ぎ処理を行うジョブも含めて、計算機システムの運用は、一連のジョブを一定の規則に従って順次実行することにより成り立っている。このような処理をバッチ処理と呼ぶ。バッチ処理は、一日または一ヶ月といった一定の期間ごとに同じ処理が繰り返される。また、バッチ処理を実行する計算機システムには、通常ファイルへのアクセスといったジョブの実行履歴を記録する機能が備わっている。ジョブ実行履歴を調べることにより、ある程度バッチ処理の処理内容を知ることができる。例えば、前述したようにバッチ処理は一定の期間ごとに同じ処理が繰り返されるので、ジョブ実行履歴にファイルアクセスの記録があれば、ファイルへのアクセスはバッチ処理の実行ごとに毎回繰り返されているものと考えられる。
【０００７】
【発明が解決しようとする課題】
前記従来例で示された方式は、同一計算機で実行されるジョブ間でのデータ引き継ぎ方式であり、一台の計算機内に固有の記憶領域内にバッファ領域および入出力実行履歴情報を確保して、レコード単位に同期を取りながらのデータ引き継ぎ処理を可能としている。しかし、記憶装置を共用する複数の計算機システムにおいて、異なる計算機で実行されるジョブ間でデータの引き継ぎを行う場合については、公報ではなんら開示していなかった。
【０００８】
また、計算機間のデータ引き継ぎ処理を行うためには、まず既存のジョブの中から、計算機間のデータ引き継ぎ処理を適用可能なジョブを見つけ出し、該当するジョブを変更しなければならなかった。
【０００９】
本発明の目的は、記憶装置を共用する計算機システムにおいて、異なる計算機で実行中のジョブの中から、データ引き継ぎ処理を適用可能なジョブを発見する方法を提供し、また、計算機間でデータ引き継ぎ処理を行う書き込みジョブ，読み込みジョブを並列に実行することが可能となる、計算機間のデータ引き継ぎ方法を提供することにある。
【００１０】
【課題を解決するための手段】
上記課題を解決するための、代表的な手段は、次のとおりである。
【００１１】
本発明の計算機間のデータ引き継ぎ方法は、複数の計算機が記憶装置を共有し、逐次的に実行される一連の処理からなるジョブが複数の計算機で実行される計算機システムにおいて、前記ジョブの使用ファイル名称，ファイルアクセス開始時間，ファイルアクセス終了時間，ファイル内レコードのアクセス順序，アクセス種別（読み込み，書き込みの区別）とからなる稼働情報を取得するステップと、前記稼働情報を用いて、前記ジョブを構成する第一の処理と第二の処理が共に同一のファイルをアクセスし、かつ、第一の処理は前記ファイルに対する書き込み処理であり、かつ、第二の処理は該ファイルに対する読み込み処理であり、かつ、第一の処理の前記ファイルに対する前記ファイルアクセス終了時間は第二の処理の前記ファイルに対する前記ファイルアクセス開始時間よりも早く、かつ、第一の処理の前記ファイルに対する前記ファイル内レコードのアクセス順序は第二の処理の前記ファイルに対する前記ファイル内レコードのアクセス順序と等しいような、第一の処理と第二の処理を発見するステップと、第一の処理のみからなる第一のジョブと第二の処理のみからなる第二のジョブを作成するステップと、前記第一のジョブと前記第二のジョブを、前記計算機システムの異なる計算機で実行させるステップとを有する。
【００１２】
また、本発明の計算機間のデータ引き継ぎ方法は、複数の計算機が第一の外部記憶装置と第二の外部記憶装置を共用している計算機システムであって、前記計算機システムの第一の計算機で実行される第一のジョブが前記第一の記憶装置へ一連のデータの書き込みを完了した後に、第二の計算機で実行される第二のジョブが前記書き込んだ一連のデータを読み込む計算機システムにおいて、前記第一のジョブからの第一の外部記憶装置に対するデータの書き込み要求を、前記第一の計算機を制御する第一のオペレーティングシステムが受け付けるステップと、前記第一のオペレーティングシステムは、該書き込み要求を第一の外部記憶装置ではなく第二の外部記憶装置への書き込みに変更して書き込むステップと、前記第一のオペレーティングシステムが、前記第二の計算機を制御する第二のオペレーティングシステムに書き込み完了を通知するステップと、前記第二のオペレーティングシステムは、前記第二の計算機で実行中の第二のジョブの前記第一の外部記憶装置への書き込み要求をトラップするステップと、前記第二のオペレーティングシステムが、前記第一のオペレーティングシステムからの前記完了通知を受け取って、前記第一の外部記憶の代わりに前記第二の外部記憶からデータを読み込んで前記第二のジョブに前記データを渡すステップとを有する。
【００１３】
【作用】
システム稼働情報の中から、同一のファイルをアクセスしており、かつ、第一の処理はファイルに対する書き込み処理であり、かつ、第二の処理はファイルに対する読み込み処理であり、かつ、第一の処理のファイルに対するファイルアクセス終了時間は、第二の処理のファイルに対するファイルアクセス開始時間よりも早く、かつ、第一の処理のファイルに対するファイル内レコードのアクセス順序は、第二の処理のファイルに対するファイル内レコードのアクセス順序と等しいような、第一の処理および第二の処理とを発見する。これを満たす第一の処理および第二の処理は、並列に実行してもデータを引き継ぐことができる。
【００１４】
第一の処理および第二の処理を並列に実行する際、システムの別の計算機上で実行すれば、より並列性が高くなる。よって、次のステップで、第一の処理および第一の処理が同一のジョブ内で実行されていれば、ジョブを、第一の処理と同じ動作を行う第一のジョブと、第二の処理と同じ動作を行う第二のジョブとに変換する。同じジョブ内で同一ファイルをアクセスする場合、必ず最初のアクセスが終了したのちに次のアクセスを開始しなければならなかったが、元のジョブを二つのジョブに分割することにより、同一ファイルへのアクセスを同時に実行することが可能になる。さらに、第一のジョブおよび第二のジョブを異なる計算機上で実行させることにより、より並列実行の効果が高くなる。
【００１５】
異なる計算機上で実行される第一のジョブおよび第二のジョブ間でのデータ引き継ぎ処理を正常に行うために、以下で示す情報を用いて、出力処理と入力処理との間での同期制御を行う。
【００１６】
共用記憶装置内に、出力ジョブと入力ジョブとの中間データの受け渡しを管理するためのデータ引き継ぎ記録領域と、データ引き継ぎ用バッファ領域とを設ける。データ引き継ぎ記録領域に設けられた情報を利用し、出力ジョブは順次バッファ領域にデータを書き込み、入力ジョブは順次バッファ領域からデータを読み込む。このとき、バッファに空きがなければ出力ジョブをウェイト状態にし、空きができたときに出力ジョブのウェイト状態を解除する。また、必要とするデータがバッファに出力されていなければ入力ジョブをウェイト状態にし、必要なデータが出力されたときに入力ジョブのウェイト状態を解除する。このように、データ引き継ぎ記録領域の情報をもとに、並列に実行されている出力ジョブと入力ジョブ間でのデータ引き継ぎを行う。
【００１７】
このようにして、共用の記憶装置を共用している複数の計算機からなる計算機システムにおいて、異なる計算機上で実行されるジョブ間でデータの引き継ぎを行う場合でもジョブを並列に実行できる。その結果、処理経過時間の短縮が可能となる。
【００１８】
【実施例】
図１は、本発明の原理図である。図１において、１，２は計算機である。３，４は各々計算機１および計算機２に固有の記憶装置である。５は計算機１および計算機２の双方に接続されている共用記憶装置である。
【００１９】
６はデータ引き継ぎ判定部である。７はバッチ処理変換部である。データ引き継ぎ判定部６，バッチ処理変換部７は、計算機システム内のいずれか一つ以上の計算機のオペレーティングシステム内に存在していればよく、本実施例では計算機１のオペレーティングシステム内に置くものとする。８は計算機１のシステム稼働情報取得部である。９は計算機２のシステム稼働情報取得部である。１０は計算機１のジョブスケジューラであり、１１は計算機２のジョブスケジューラである。１２は計算機１の入出力管理部であり、１３は計算機２の入出力管理部である。１４は計算機１の同期処理部であり、１５は計算機２の同期処理部である。１６は計算機１のレコード処理部であり、１７は計算機２のレコード処理部である。１８は計算機１の固有記憶装置３に置かれたバッチ処理記録ファイルである。また、１９は計算機２の固有記憶装置４に置かれたバッチ処理記録ファイルである。２２は共用記憶装置５に置かれた変換可能ジョブ記録ファイルである。２３は共用記憶装置５に置かれたデータ引き継ぎ記録ファイルである。２４は共用記憶装置５に置かれたデータ引き継ぎ用バッファ領域である。
【００２０】
公知のシステム稼働情報取得部８および９は、各々計算機１および２での稼働中に実行された全ファイルアクセスの履歴を、それぞれアクセス履歴記録ファイル２０および２１に記録する。アクセス履歴記録ファイル２０および２１は、システム間データ引き継ぎ可能な処理を発見するために利用されるが、その処理の詳細については、図３で説明する。
【００２１】
図２は、システム稼働情報取得部８および９が、アクセス履歴記録ファイル２０および２１に書き込むアクセス履歴レコードの構成図である。システム稼働情報取得部８および９は、自計算機で実行中のジョブからのファイルアクセス終了時に、使用ファイル名称２０１，ファイルアクセス開始時間２０２，ファイルアクセス終了時間２０３，ファイル内レコードのアクセス順序２０４，アクセス種別２０５，アクセスしたジョブ名称２０６，アクセスしたジョブを実行した計算機名称２０７、とを含んだアクセス履歴レコード２００を、アクセス履歴記録ファイル２０または２１に追加する。アクセス履歴記録レコード２００は、システム間データ引き継ぎ可能な処理を発見するために利用されるが、その利用方法の詳細については、図３で説明する。
【００２２】
図３は、データ引き継ぎ判定部６が、アクセス履歴記録ファイル２０および２１をもとに、計算機間でデータ引き継ぎ可能な処理を検索する際の処理フローチャートである。
【００２３】
まず、アクセス履歴記録ファイル２０および２１の中から、任意のレコードを一つ取り出し、レコードをレコード１とする(ステップ３０１)。次に、アクセス履歴記録ファイル２０および２１の中から、レコード１以外のレコードを任意に取り出し、レコードをレコード２とする(ステップ３０２)。
【００２４】
レコード１とレコード２に対し、以下のチェックを行う。すなわち、レコード１とレコード２内の使用ファイル名称２０１は等しく(ステップ３０３)、かつ、レコード１内のアクセス種別２０５は“書き込み処理”であり(ステップ３０４)、かつ、レコード２内のアクセス種別２０５は“読み込み処理”であり（ステップ３０５）、かつ、レコード１内のアクセス終了時間２０３はレコード２内のアクセス開始時間２０２よりも早く(ステップ３０６)、かつ、レコード１内のレコードアクセス順序２０４とレコード２内のレコードアクセス順序２０４とが等しい(ステップ３０７)かどうかをチェックする。
【００２５】
レコード１とレコード２が上記の条件を満たす場合、システム間データ引き継ぎ判定部６は、図４が示す変換可能ジョブ記録レコード４００を、変換可能ジョブ記録ファイル２２に一つ追加(ステップ３０８)する。このとき、新たに追加される変換可能ジョブ記録レコード４００には、レコード１内のアクセスジョブ名称２０６を出力ジョブ名称４０１として格納し、レコード１内の計算機名称207を出力ジョブ実行計算機名称４０２として格納し、レコード２内のアクセスジョブ名称２０６を入力ジョブ名称４０３として格納し、レコード２内の計算機名称２０７を入力ジョブ実行計算機名称４０４として格納し、レコード１内のファイル名称２０１をファイル名称４０５として格納する。ここで、一つのジョブの中で繰り返し同じファイルをアクセスすることは可能であるから、出力ジョブ名称４０１と、入力ジョブ名称４０３が等しくなることもある。
【００２６】
レコード１とレコード２がステップ３０３からステップ３０７の条件を満たさない場合、別のレコードがアクセス履歴記録ファイル２０および２１内に存在していれば、それらのレコードに対して、ステップ３０２からステップ３０８を順次繰り返す(ステップ３０９)。
【００２７】
ステップ３０１からステップ３０９までを、アクセス履歴記録ファイル２０および２１内に存在する全アクセス履歴記録レコードをレコード１とした場合について繰り返す(ステップ３１０)。このとき、システム間でのデータ引き継ぎ可能と判断された処理については、すべて変更可能ジョブ記録ファイル２２にその情報を書き込む。ここで作成した変換可能ジョブ記録ファイル２２は、こののち計算機間でデータ引き継ぎ処理を行うジョブを作成する際に利用されるが、その詳細については図６で説明する。
【００２８】
ジョブスケジューラ１０および１１は、公知の技術である。ジョブスケジューラ１０および１１は、バッチ処理記録ファイル１８および１９をもとに順次ジョブを実行する。バッチ処理記録ファイル１８および１９は、図５に示す構成をしたジョブ記述レコード５００から成る。ジョブ記述レコード５００は、ジョブ名称５０１，実行プログラム情報５０２，アクセスファイル情報５０３、とから構成される。一つのジョブ記述レコード内に、ジョブ名称５０１は一つしか格納できないが、実行プログラム情報５０２，アクセスファイル情報５０３は複数格納することが可能である。ジョブスケジューラ１０および１１が、ジョブ記述レコード５００に記述されたジョブを実行する際には、ジョブ記述レコード５００内の実行プログラム情報５０２で指定されたプログラムを順に実行し、また、ジョブ記述レコード５００内のアクセスファイル情報５０３で指定されたファイルを順にアクセスする。
【００２９】
一般に、計算機システムでバッチ処理を行うときには、一日あるいは一ケ月などという一定の期間ごとに、同じバッチ処理記録ファイルを利用して処理を行っている。そのため、通常は一定期間のサイクルごとに、同じバッチ処理が実行されることになる。逆に、利用するバッチ処理記録ファイルの内容を変更することによって、次のサイクルでバッチ処理を実行するときからは新しい処理を行うことが可能となる。このバッチ処理実行上の性質を利用し、本実施例では、システム間データ引き継ぎを行うために、バッチ処理変換部７が、バッチ処理記録ファイル１８および１９の内容を変更する。
【００３０】
バッチ処理変換部７は、データ引き継ぎ判定部６が作成した変更可能ジョブ記録ファイル２２をもとに、バッチ処理記録ファイル１８および１９を変更する部分である。前述したように、バッチ処理記録ファイル１８および１９を書き換えることにより、システム間データ引き継ぎ処理を実行することが可能となる。
【００３１】
図６は、バッチ処理変換部７が、変更可能ジョブ記録ファイル２２をもとに、データ引き継ぎ処理を行うバッチ処理記録ファイル１８および１９を変更する際の処理フローチャートである。
【００３２】
まず、変更可能ジョブ記録ファイル２２より、任意の変更可能ジョブ記録レコード４００を一つ取り出す(ステップ６０１)。前述したように、変更可能ジョブ記録レコード４００は、システム間データ引き継ぎ可能と判定された処理の、出力ジョブ名称４０１，入力ジョブ名称４０３とを含んでいる。ここで、出力ジョブ名称４０１をジョブ１，入力ジョブ名称４０３をジョブ２とする（ステップ６０２)。
【００３３】
次にバッチ処理記録ファイル１８および１９の中から、ジョブ１またはジョブ２に等しいジョブ名称を持つジョブ記述レコード５００を探索し、それぞれレコード１，レコード２とする(ステップ６０３)。ここでジョブ１とジョブ２が同一ジョブである場合と、そうでない場合とで以後の処理が異なる。
【００３４】
ジョブ１とジョブ２とが同一ジョブである場合(ステップ６０４)、レコード１とレコード２は同一レコードである。レコードが記述するジョブの実行中に、同一のファイルに対して順次、書き込みのためのアクセス，読み込みのためのアクセスを行っていることになる。そこで、ジョブに対するジョブ記述レコード500の中に、ファイルへ書き込みアクセスを行うファイルアクセス情報５０３、および、ファイルへ読み込みアクセスを行うファイルアクセス情報５０３が存在する。ここで、新しいジョブ記述レコード５００を二つ作成(ステップ６０５)し、ジョブ記述レコード５００をそれぞれレコード３，レコード４とする。レコード３およびレコード４に属するジョブ名称５０１には、それぞれシステム内で一意的な任意のジョブ名称を格納する。また、レコード３の実行プログラム情報５０２およびアクセスファイル情報５０３には、それぞれジョブ１のうちファイルへの書き込み処理を記述した部分の実行プログラム情報５０２およびアクセスファイル情報５０３を格納する。また、レコード４の実行プログラム情報５０２およびアクセスファイル情報５０３には、それぞれジョブ１のうちファイルからの読み込み処理を記述した部分の実行プログラム情報５０２およびアクセスファイル情報５０３を格納する。新たに作成したレコード３およびレコード４を、それぞれ新しいレコード１およびレコード２とする(ステップ６０６)。
【００３５】
以下の処理は、ジョブ１とジョブ２が同一ジョブである場合とそうでない場合とで共通して行う。
【００３６】
レコード１およびレコード２には、それぞれデータ引き継ぎに利用したファイルへのアクセス処理を記述したアクセスファイル情報５０３が存在する。その部分のファイル名称を、システムで定めたデータ引き継ぎ用ファイルの名称に書き換える(ステップ６０７)。ただしファイル名称は、システム内で一意的なものでなければならない。実際にジョブが実行される時点で、各計算機の入出力管理部１２および１３が、このファイル名称によってシステム間でのデータ引き継ぎを行うか否かを判断する。
【００３７】
次に、新たに作成または変更したレコード１およびレコード２を、もとのレコード１およびレコード２の代わりにバッチ処理記録ファイル１８または１９に格納する。ここで、バッチ処理記録ファイル１８および１９は、各計算機１または計算機２に独自のものである。そのため、システム間でデータの引き継ぎを行うには、新たに作成または変更したレコード１およびレコード２を、それぞれ異なる計算機のバッチ処理記録ファイル１８または１９に格納しなければならない。
【００３８】
ジョブ１，ジョブ２がもともと異なる計算機上で実行されるジョブである場合、すなわち、変換可能ジョブ記録レコード４００内の出力ジョブ実行計算機名称４０２と入力ジョブ実行計算機名称４０４とが異なる場合(ステップ６０８)、レコード１を出力ジョブ実行計算機名称４０２が示す計算機のバッチ処理記録ファイル１８または１９に格納し、レコード２を入力ジョブ実行計算機名称４０４が示す計算機のバッチ処理記録ファイル１８または１９に格納(ステップ６０９)する。
【００３９】
変換可能ジョブ記録レコード４００内の出力ジョブ実行計算機名称４０２と入力ジョブ実行計算機名称４０４とが等しい場合、二つのジョブは従来同一計算機上で実行されていたジョブである。この場合、レコード１を出力ジョブ実行計算機名称４０２および入力ジョブ実行計算機名称４０４が示す計算機のバッチ処理記録ファイル１８または１９に格納し、レコード２をそれとは別の計算機のバッチ処理記録ファイル１８または１９に格納(ステップ６１０)する。
【００４０】
すべての変更可能ジョブ記録レコード４００に対して、ステップ６０１からステップ６１０で示す処理を繰り返す(ステップ６１１)。ここで作成された新しいバッチ処理記録ファイル１８および１９を適用することにより、次回のバッチ処理実行時より、データ引き継ぎ可能な処理か否かを認識することが可能となる。
【００４１】
各計算機のジョブスケジューラ１０および１１は、新たに作成されたジョブ処理記録ファイル１８および１９をもとにして、従来同様にバッチ処理を実行する。このとき、ジョブスケジューラ１０および１１は、実行するジョブがシステム間データの引き継ぎを実行しているかどうかは意識しない。システム間データ引き継ぎ処理は、ジョブの実行中、ジョブからの入出力要求が入出力管理部１２および１３に出されたときに行われる。その際、ジョブ間で引き継がれるデータは、各計算機のレコード処理部１６および１７が、データ引き継ぎ用バッファ領域２４に格納する。また、各計算機の入出力管理部１２および１３は、出力処理と入力処理との１レコード単位のデータ引き継ぎの同期制御を正常に行うために、データ引き継ぎ記録ファイル２３に格納した情報を利用する。データ引き継ぎ記録ファイル２３に格納する情報は、各データ引き継ぎ処理ごとに図７で示すデータ引き継ぎ記録レコード７００の形をとっている。
【００４２】
データ引き継ぎ記録レコード７００は、書き込みジョブ，読み込みジョブのいずれかが先にオープン命令を発行した時点で、同期処理部１４または同期処理部１５が、システム間共用記憶装置５内に置かれたデータ引き継ぎ記録ファイル２３内に追加する。同時に、引き継ぎデータを一時的に格納するデータ引き継ぎ用バッファ領域２４も、システム間共用記憶装置５内に確保する。データ引き継ぎ記録レコード７００およびデータ引き継ぎ用バッファ領域１７は、書き込みジョブ、読み込みジョブがともにクローズ命令を発行した時点で共用記憶装置５内から削除される。
【００４３】
図７に示したデータ引き継ぎ記録レコード７００のうち、ファイル名７０１には、出力ジョブと入力ジョブとがファイルアクセス時に指定したファイル名を記録する。このファイル名称によって、データ引き継ぎの対応をとる。バッファアドレス７０２には、対応するデータ引き継ぎ用バッファ領域２４の先頭アドレスを記録する。バッファのブロック数７０３には、対応するデータ引き継ぎ用バッファ領域２４のブロック数を記録する。データ入出力の単位長７０４には、出力ジョブと入力ジョブが起動時に指定した１回の入出力時に取り扱うデータの長さ（データ長）を記録する。書き込みブロック番号７０５には、次に出力ジョブが出力命令を発行したときに、データを書き出すデータ引き継ぎ用バッファ領域２４内のブロック番号を記録する。読み込みブロック番号７０６には、入力ジョブが入力命令を発行したときに、データ引き継ぎ用バッファ領域２４内のどのブロック番号のデータを入力するかを記録する。書き込み回数７０７には、出力ジョブの出力命令発行により、データ引き継ぎ用バッファ領域２４にデータを書き込んだ回数を記録する。読み込み回数７０８には、入力ジョブの入力命令発行により、データ引き継ぎ用バッファ領域２４からデータを読み込んだ回数を記録する。
【００４４】
出力ジョブオープンフラグ７０９は、出力ジョブがオープン命令を発行済みか否かを示すフラグである。出力ジョブがオープン命令を発行したときに、出力ジョブオープンフラグ７０９をオンにする。ただし、出力ジョブがオープン命令を発行したときに、すでにデータ引き継ぎ記録ファイル２３内のオープンフラグ７０９がオンであるならば、他の出力ジョブがアクセス中であることを意味しているため、入出力管理部１２および１３は、出力ジョブからのアクセスを禁止する。
【００４５】
入力ジョブオープンフラグ７１０は、入力ジョブがオープン命令を発行済みか否かを示すフラグである。入力ジョブがオープン命令を発行したときに、入力ジョブオープンフラグ７１０をオンにする。ただし、入力ジョブがオープン命令を発行したときに、すでにデータ引き継ぎ記録ファイル２３内のオープンフラグ７１０がオンであるならば、他の入力ジョブがアクセス中であることを意味しているため、入出力管理部１２および１３は、入力ジョブからのアクセスを禁止する。
【００４６】
出力ジョブクローズフラグ７１１は、出力ジョブがクローズ命令を発行済みか否かを示すフラグである。出力ジョブがクローズ命令を発行したときに、出力ジョブクローズフラグ７１１をオンにする。入力ジョブクローズフラグ７１２は、入力ジョブがクローズ命令を発行済みか否かを示すフラグである。入力ジョブがクローズ命令を発行したときに、入力ジョブクローズフラグ７１２をオンにする。
【００４７】
出力ジョブウェイトフラグ７１３は、出力ジョブがウェイト状態であるか否かを示すフラグである。出力ジョブがウェイト状態になったとき、出力ジョブウェイトフラグ７１３をオンにし、ウェイト状態が解除されたとき、出力ジョブウェイトフラグ７１３をオフにする。入力ジョブウェイトフラグ７１４は、入力ジョブがウェイト状態であるか否かを示すフラグである。入力ジョブがウェイト状態になったとき、入力ジョブウェイトフラグ７１４をオンにし、ウェイト状態が解除されたとき、入力ジョブウェイトフラグ７１４をオフにする。
【００４８】
出力処理計算機名７１５は、出力ジョブを実行している計算機の名称である。入力処理計算機名７１６は、入力ジョブを実行している計算機の名称である。それぞれ、各ジョブがアクセスを開始した時点で記録する。
【００４９】
ジョブ間で引き継ぐデータは、データ引き継ぎ用バッファ領域２４の先頭から順に格納されていく。このとき、引き継ぎデータ量がデータ引き継ぎ用バッファ領域２４のブロック数よりも多く、すべてのデータをデータ引き継ぎ用バッファ領域２４に格納できない状況も考えられる。このような場合、データ引き継ぎ用バッファ領域２４を再利用することによってデータの引き継ぎ処理を続行する。すなわち、既に書き込み，読み込みともに終わったデータは不要であるため、当するデータを格納していた領域には新しいデータを上書きしても差し支えない。このように、データ引き継ぎ用バッファ領域２４の末尾までデータを書き込んだ場合、以後データ引き継ぎ用バッファ領域２４の先頭に戻って処理を続ける。ただし、データ引き継ぎ用バッファ領域２４内の該当するブロックのデータがまだ読み込みを終了していないときは、入出力管理部１２および１３は、出力処理ジョブをウェイトさせる。逆に該当するデータ引き継ぎ用バッファ領域２４内の該当するブロックに新しいデータが書き込まれていないときは、入出力管理部１２および１３は、入力処理ジョブをウェイトさせる。
【００５０】
ここで、すべての引き継ぎデータを格納できるように、あらかじめデータ引き継ぎ用バッファ領域２４を大きく確保することも可能であるが、通常引き継ぐデータ量は事前には分からないことと、メモリを有効に活用するため、本実施例では前述のように、データ引き継ぎ用バッファ領域２４を再利用する方式とする。ただし、本実施例でも、ジョブ間で引き継ぐデータ量がデータ引き継ぎ用バッファ領域２４のブロック数よりも少ない場合は、データ引き継ぎ用バッファ領域２４を再利用することなく処理が終了する。
【００５１】
データ引き継ぎ用バッファ領域２４を再利用しながら、データを１レコード単位で引き継ぎ処理を行うためには、前述したようにデータ引き継ぎ記録レコード７００を利用して、同期処理部１４および１５が出力側処理と入力側処理との同期制御を行わなければならない。同期処理部１４および１５が実行している同期処理の詳細を、書き込み処理の場合と読み込み処理の場合とに分けて、それぞれ図８および図９で示す。
【００５２】
図８は、同期処理部１４および１５が、ジョブからファイルへの書き込み要求を受け取った際の処理のフローチャートである。データ書き込み要求があったとき、まず命令をトラップ(ステップ８０１)する。さらに、書き込み要求がデータ引き継ぎ用ファイルに対してなされたものかどうかを判定(ステップ８０２)する。前述の判定は、データ引き継ぎ記録ファイル２３内のすべてレコードを検索し、その中のレコードのうち、ファイル名称７０１が書き込み要求を発行されたファイル名と一致するものがあるか否かを実行することにより行われる。
【００５３】
データ引き継ぎ用ファイルに対してなされた書き込み要求でなければ、通常の出力処置を実行(ステップ８０３)する。データ引き継ぎ用ファイルに対してなされた書き込み要求であれば、引き続きデータ引き継ぎ用バッファ領域２４にデータ書き込み可能かどうかを判断(ステップ８０４)する。ここで、ファイルに対応するデータ引き継ぎ記録レコード７００内の、書き込みブロック番号７０５と読み込みブロック番号７０６との差が、バッファのブロック数７０３と等しい場合は、データ引き継ぎ用バッファ領域２４へのデータ書き込み不可能と判断し、それ以外の場合はデータ書き込み可能と判断する。
【００５４】
データ書き込み不可能と判断した場合、書き込み要求を発行したジョブをウェイトさせ、出力ジョブウェイトフラグ７１３をオンにする(ステップ８０５)。ウェイト状態になった出力ジョブを実行中の計算機のオペレーティングシステムは、出力ジョブのウェイト解除の通知を受け取った時点で(ステップ８０６)、出力ジョブのウェイト状態を解除し、出力ジョブウェイトフラグ７１３をオフにしたのち(ステップ８０７)、以下の処理を続ける。ここで、ジョブのウェイト／ウェイト解除の実行は、ジョブを実行中のオペレーティングシステムでなければ行うことができない。そのため、他の計算機で実行中のジョブのウェイト状態を解除したいときには、このようにジョブを実行している計算機のオペレーティングシステムにその旨通知しなければならない。
【００５５】
次に、データ引き継ぎ用バッファ領域２４のうち、書き込みブロック番号705で示すブロックにデータを書き込み(ステップ８０８)、書き込みブロック番号７０５，書き込み回数７０７を更新(ステップ８０９)する。ここで、書き込みブロック番号７０５がバッファのブロック数７０３を越えた場合、書き込みブロック番号７０５の値を１に戻す。
【００５６】
更に、入力ジョブウェイトフラグ７１４がオンであり(ステップ８１０)、書き込み回数７０７と読み込み回数７０８の差が、バッファのブロック数７０３と等しく(ステップ８１１)なった場合、入力処理計算機名７１６のオペレーティングシステムにその旨通知(ステップ８１２)する。通知を受けた計算機のオペレーティングシステムは、該当する入力ジョブのウェイト状態を解除する。
【００５７】
ところで、ウェイト／ウェイト解除の制御が多発すると、その影響で処理時間が長くなるおそれがある。そこで本実施例では、データ引き継ぎ用バッファ領域２４に一つでもデータが書き込まれた時点で入力ジョブのウェイト状態を解除するのではなく、バッファ一周分のデータが書き込まれた時点で、入力ジョブのウェイト状態を解除する。この方式を採用すれば、少なくともバッファ一周分のデータを入力する間は、再びウェイトすることはない。これにより、ウェイト状態を解除されたジョブがその直後に再びウェイトすることが繰り返され、処理時間が長びくことを防いでいる。
【００５８】
図９は、同期処理部１４および１５が、ジョブからファイルへの読み込み要求を受け取った際の処理のフローチャートである。データ書き込み要求があったとき、まず命令をトラップ(ステップ９０１)する。さらに、読み込み要求がデータ引き継ぎ用ファイルに対してなされたものかどうかを判定(ステップ９０２)する。この判定は、データ引き継ぎ記録ファイル２３内のすべてレコードを検索し、その中のレコードのうち、ファイル名称７０１が読み込み要求を発行されたファイル名と一致するものがあるか否かを実行することにより行われる。
【００５９】
データ引き継ぎ用ファイルに対してなされた読み込み要求でなければ、通常の入力処置を実行(ステップ９０３)する。データ引き継ぎ用ファイルに対してなされた読み込み要求であれば、引き続きデータ引き継ぎ用バッファ領域２４からデータ読み込み可能かどうかを判断(ステップ９０４)する。ここで、当するデータ引き継ぎ記録レコード内の、書き込みブロック番号７０５と読み込みブロック番号７０６が等しい場合は、データ引き継ぎ用バッファ領域２４からのデータの読み込みは不可能と判断し、それ以外の場合はデータ読み込み可能と判断する。
【００６０】
データ読み込み不可能と判断した場合、読み込み要求を発行したジョブをウェイトさせ、入力ジョブウェイトフラグ７１４をオンにする(ステップ９０５)。ウェイト状態になった入力ジョブを実行中の計算機のオペレーティングシステムは、入力ジョブのウェイト解除の通知を受け取った時点で(ステップ９０６)、入力ジョブのウェイト状態を解除し、入力ジョブウェイトフラグ７１４をオフにしたのち(ステップ９０７)、以下の処理を続ける。
【００６１】
次に、データ引き継ぎ用バッファ領域２４のうち、読み込みブロック番号706で示すブロックからデータを読み込み(ステップ９０８)、読み込みブロック番号７０６，読み込み回数７０８を更新(ステップ９０９)する。このとき、読み込みブロック番号７０６がバッファのブロック数７０３を越えていれば、読み込みブロック番号７０６の値を１に戻す。
【００６２】
更に、出力ジョブウェイトフラグ７１３がオンであり(ステップ９１０)、書き込み回数７０７と読み込み回数７０８が等しく(ステップ９１１)なった場合、出力処理計算機名７１５のオペレーティングシステムにその旨通知(ステップ912)する。通知を受けた計算機のオペレーティングシステムは、該当する出力ジョブのウェイト状態を解除する。
【００６３】
図８で示した入力ジョブのウェイト解除のときと同じように、出力ジョブのウェイト状態を解除するときも、ウェイト／ウェイト解除の制御が多発することを防ぐ工夫を行っている。すなわち、ウェイト中の出力ジョブが存在するときに、データ引き継ぎ用バッファ領域２４に一つでも空きブロックが生じた時点で出力ジョブのウェイト状態を解除することも可能だが、本実施例では、データ引き継ぎ用バッファ領域２４のすべてのブロックが空き状態になった時点で出力ジョブのウェイト状態を解除する。このとき、少なくともバッファ一周分のデータを出力する間は、出力ジョブが再びウェイトすることはない。すなわち、ウェイト／ウェイト解除の制御回数が多発することを防いでいる。
【００６４】
上述したように、本実施例によれば、記憶装置を共用している計算機システムにおいて、システム間でデータの引き継ぎを行う場合に、ファイル単位ではなくレコード単位でのデータの引き継ぎが可能となり、同一ファイルへの書き込みアクセス，読み込みアクセスを同時に実行できる。その結果、システム間でのデータ引き継ぎ処理の処理時間を短縮できる。
【００６５】
【発明の効果】
本発明によれば、記憶装置を共用している計算機システムにおいて、中間データの引き継ぎを行うジョブ群を異なる計算機上で並列に実行できるため、処理時間を短縮できる。
【図面の簡単な説明】
【図１】本発明の原理説明図。
【図２】アクセス履歴記録レコードの説明図。
【図３】変換可能ジョブ記録レコードの説明図。
【図４】データ引き継ぎ判定部の処理フローチャート。
【図５】ジョブ記述レコードの説明図。
【図６】バッチ処理変換部の処理フローチャート。
【図７】データ引き継ぎ記録レコードの説明図。
【図８】データ書き込み処理のフローチャート。
【図９】データ読み込み処理のフローチャート。
【符号の説明】
１，２…計算機、３，４…固有記憶装置、５…共用記憶装置、６…データ引き継ぎ判定部、７…バッチ処理変換部、８，９…システム稼働情報取得部、１０，１１…ジョブスケジューラ、１２，１３…入出力管理部、１４，１５…同期処理部、１６，１７…レコード処理部、１８，１９…バッチ処理記録ファイル、２０，２１…アクセス履歴記録ファイル、２２…変換可能ジョブ記録ファイル、２３…データ引き継ぎ記録ファイル、２４…データ引き継ぎ用バッファ領域。
【図１】
0003781007.tif 000002
【図２】
0003781007.tif 000003
【図３】
0003781007.tif 000004
【図４】
0003781007.tif 000005
【図５】
0003781007.tif 000006
【図６】
0003781007.tif 000007
【図７】
0003781007.tif 000008
【図８】
0003781007.tif 000009
【図９】
0003781007.tif 000010