(57)【特許請求の範囲】
【請求項１】
計算機で実行されるジョブの入力または出力を、該ジョブの実行と切り離して非同期に処理するために、スプールデータとして管理するスプール管理装置であって、
スプール格納部、日時パトロール部、および、スプール取り出し部を有し、
前記スプール格納部は、前記スプールデータを所定のバッファに格納し、該スプールデータに対応するキュー要素を作成し、該スプールデータに日時指定がある場合は、該日時を該キュー要素に対応して記録して、該キュー要素を日時指定のキューに先頭から指定日時の早い順に並ぶように接続し、一方、該スプールデータに日時指定が無い場合は、該キュー要素を日時指定無しのキューの末尾に接続するとともに、前記スプール取り出し部へ通知し、
前記日時パトロール部は、所定時間ごとに起動し、前記日時指定のキューに接続された先頭のキュー要素より、該キュー要素に対応して記録された日時と該起動の日時を比較し、該記録日時が該起動日時より以前になっているキュー要素を検出した場合は、検出した該キュー要素を前記日時指定無しのキューに移動するとともに、前記スプール取り出し部へ通知し、
前記スプール取り出し部は、前記スプール格納部あるいは前記日時パトロール部からの通知により起動し、前記日時指定無しのキューに接続されたキュー要素を取り出し、該キュー要素に対応するスプールデータを処理プログラムまたは出力先へ通知する
ことを特徴とするスプール管理装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、計算機で実行されるジョブの、スプールデータを管理するためのスプール管理処理装置に関する。
【０００２】
【従来の技術】
計算機で実行されるジョブに関して、ジョブの処理結果のプリンタ装置等への出力、或いはジョブを規定し、又その入力データを入力するための、いわゆるジョブ制御言語又はコマンド列の入力を、ジョブの実行とは切り離して、全く非同期に入出力することにより、計算機の利用効率を高める機能が、スプール機能と呼ばれ、それらの入出力データがスプールデータと呼ばれることは、よく知られているとおりである。
【０００３】
スプール機能を持つ計算機においては、例えばジョブは出力をスプール制御部に渡し、スプール制御部はその出力のスプールデータをスプールバッファの磁気ディスク記憶装置等に格納する。
【０００４】
又、出力が例えば或るプリンタ装置への出力であれば、スプールデータに対応して作成するキュー要素を、そのプリンタ装置への出力を制御するプログラムについて設けたキューにつなぐ。
【０００５】
又、そのような出力用のキューにキュー要素がつながれていれば、そのキューに対応する出力プログラムを起動して、キュー要素を渡し、その出力プログラムは、キュー要素から指示されるスプールデータをスプールバッファから読みだして出力する。
【０００６】
出力プログラムは、一つのスプールデータを処理し終わったとき、なお該当キューにキュー要素がつながっていれば、それを受け取って前記のように処理を続け、キュー要素がなくなるまで処理して終了する。
【０００７】
以上のようにスプールデータは、先着のスプールデータが処理中であれば待ち合わせとなるが、順番が来れば直ちに処理されるのが原則である。
【０００８】
【発明が解決しようとする課題】
しかし、近年計算機の出力を直接ファクシミリで伝送することが行われるようになって、ファクシミリによる出力は、例えば通信料の安価な時間帯を待って行いたいという要求が生じている。
【０００９】
又、コンパイル・リスト等の大量になり勝ちな出力について、出力の繁忙時を避けることにより、他のジョブの出力の遅延を軽減したいという運用上の要求がある。
【００１０】
本発明は、スプールデータに処理時刻の日時指定を可能とし、以上のようにスプールデータの処理を遅延させる要求を満たすことのできるスプール管理処理装置を目的とする。
【００１１】
【課題を解決するための手段】
図１は、本発明の構成を示すブロック図である。
【００１２】
図はスプール管理処理装置の構成であって、計算機で実行されるジョブの、ジョブ入力及びジョブ出力を、スプールデータとして、該ジョブの実行と切り離して非同期に処理するためにスプールデータを管理するスプール管理処理装置であって、スプール格納部１、日時パトロール部２及びスプール取り出し部３を有する。
【００１３】
スプール格納部１は、該スプールデータ４を受け取って、所定のバッファ８に格納し、当該スプールデータ４に対応するキュー要素５を作成して、スプールデータ４を処理するプログラムに対応して設けるキュー６に接続し、スプールデータ４に指定された日時指定を、キュー要素５に対応して日時指定の記録７に記録する。
【００１４】
日時パトロール部２は、所定時間ごとに起動して、日時指定の記録７を走査することにより、キュー６から該記録の日時が、該起動時刻より以前になっているキュー要素５を検出して、スプール取り出し部３に通知する。
【００１５】
スプール取り出し部３は、該通知されたキュー要素５をキュー６から外し、当該キュー要素５に対応するスプールデータ４を、当該キュー６に定まるプログラムに通知する。
【００１６】
【作用】
本発明のスプール管理処理装置により、スプールデータに日時指定をすれば、日時パトロール機能によって日時を監視し、指定の日時まで待って各スプールデータを処理するように管理する。
【００１７】
なお、従来どおり日時指定を行わないスプールデータは、即時処理の要求として処理する。
【００１８】
【発明の実施の形態】
図２は、本発明の実施例を示すブロック図であり、  図２（ａ）において、プログラム９はスプールデータを生成する各種業務ジョブのプログラム、或いはジョブ入力データを受け取るプログラムであって、それらのスプールデータをスプール管理処理装置１４に渡して、スプール管理を要求する。
【００１９】
その際プログラム９は、スプールデータを処理するプログラム或いは出力先を指定し、又処理の日時を指定する。但し、処理日時を特に指定する必要の無い場合は指定を省略することにより即時処理の要求とされる。
【００２０】
図２（ａ）のスプール管理処理装置１４の、スプール格納部１１、日時パトロール部１２及びスプール取り出し部１３は、それぞれ  図１のスプール格納部１、日時パトロール部２及びスプール取り出し部３に対応し、スプール格納部１１がプログラム９から要求されたスプールデータをスプールデータ４として、磁気ディスク記憶装置等のバッファ８に格納する。
【００２１】
又、スプール格納部１１は、格納したスプールデータ４を指示するポインタ、指定日時等を保持するキュー要素１５を作成し、キュー管理機構１８のキューに接続する。
【００２２】
キュー管理機構１８は、例えばスプール管理要求で指定される、処理するプログラム、或いは指定出力先のプリンタ装置によって定まる出力プログラム等、スプールデータの処理内容によって異なるプログラムが必要な場合に、それらのプログラム別に設けられる。
【００２３】
各キュー管理機構１８には、図示のようにキュー管理情報１６と取り出し待ちプログラム情報１７を有し、キュー管理情報１６には後述のようにキュー要素１５のキューが接続される。
【００２４】
取り出し待ちプログラム情報１７には、このキュー管理機構で待ち合わせるスプールデータを処理するプログラムについて、プログラムを起動するために必要な制御ブロックのアドレス等の制御情報を、並行に実行させるプログラムの数だけの項目数登録してある。
【００２５】
図２（ｂ）は、キューの詳細を示す図であり、スプール格納部１１はキュー要素１５を作成して、格納したスプールデータのスプールデータ名その他の情報を記録し、又日時指定があれば指定日時を記録して、日時指定の無いキュー要素と日時指定の有るキュー要素とが別々のキューの列になるように接続し、図示のように各キューの先頭要素をキュー管理情報１６の２つのポインタでそれぞれ指示させる。
【００２６】
ここで、日時指定無しのキューは、先頭を最も古いキュー要素とする先着順のキューとする。又日時指定のキューは、先頭から指定日時の早い順にキュー要素を並べ、要すれば図示のように先頭のキュー要素の指定日時をキュー管理情報１６に記録しておく。
【００２７】
スプール格納部１１は、以上のようにキュー要素を接続すると、それが日時指定無しのキュー要素であれば、スプール取り出し部１３に当該キュー管理情報１６を指定して処理を要求する。
【００２８】
そこでスプール取り出し部１３は、指定のキュー管理情報１６につながる取り出し待ちプログラム情報１７を調べて、起動待ちのプログラムがあれば、指定の日時指定無しのキューの先頭からキュー要素を取り出す。
【００２９】
次に、取り出し待ちプログラム情報１７に登録されている項目のうち、起動済でない項目の一つを選んで起動済とし、その項目の情報に従ってスプールデータを処理するプログラムを起動するための制御ブロックを起動状態に設定し、取り出したキュー要素に保持されているスプールデータ名を起動パラメータとして渡すように処理する。
【００３０】
スプール取り出し部１３は以上の処理の後、取り出し待ちプログラム情報１７に起動済でない項目があり、日時指定無しのキューにキュー要素が残っていれば、その先頭のキュー要素を取り出して前記と同様に処理する。
【００３１】
起動されたスプールデータ処理プログラムは、起動パラメータとして受け取ったスプールデータ名によってスプールデータをバッファから読み出して、所定の処理を実行し、処理が終わるとスプール取り出し部１３に終了を通知し、起動待ち状態に戻る。
【００３２】
ここでスプール取り出し部１３は、終了したプログラムの処理するスプールデータのキューに即時取り出しを待っているキュー要素があれば、それをキューから取り出し、前記のように処理してプログラムを再起動し、即時取り出せるキュー要素が無ければ、取り出し待ちプログラム情報１７の該当項目を起動待ち状態を示すようにする。
【００３３】
日時パトロール部１２は、常時適当な間隔（例えば数分）ごとに起動するようにタイマーを設定しており、起動するとそのときの現日時を時計から読み取って保持する。
【００３４】
次にすべてのキュー管理機構１８に順次アクセスし、各日時指定キューについて、キュー管理情報１６に保持する先頭キュー要素の指定日時を、保持する現日時と比較し、現日時より後であればそのキューの処理は終わり、次のキュー管理機構１８を調べる。
【００３５】
先頭キュー要素の指定日時が現日時より以前であれば、そのキューを先頭から走査して、現日時より以前の指定日時を持つキュー要素を、例えば日時指定無しのキューにつなぎかえ、現日時より後の指定日時を持つキュー要素を検出したら、そのキューの走査を終わる。
【００３６】
日時パトロール部１２は、以上のようにして現日時より以前の指定日時を持つキュー要素を取り出した場合には、そのキュー管理情報１６に保持する先頭キュー要素の指定日時を、新たな先頭キュー要素の持つ指定日時に更新し、又スプール取り出し部１３に当該キュー管理情報１６を通知して処理を要求する。スプール取り出し部１３はこの場合も前記と同様に処理する。
【００３７】
図３、  図４、  図５は、以上に説明した本発明の処理の流れの一例を示す図であり、スプール格納部１１がプログラム９からスプールの処理を要求されると、図３の処理ステップ２０でスプールデータを格納し、キュー要素を作成してスプールデータ名、指定日時等を設定し、要求に従いスプールデータを管理するキュー管理機構１８を決定する。
【００３８】
処理ステップ２１で、要求に日時指定が有るか識別し、キュー管理情報１６から指示される日時指定キューを処理対象として、処理ステップ２２で先頭のキュー要素の持つ指定日時と新キュー要素の指定日時を比較する。
【００３９】
比較の結果、新キュー要素の指定日時の方が早ければ、処理ステップ２３で新キュー要素をキューの先頭に追加する。従って、ここでキュー管理情報１６の先頭要素を指示するポインタと、先頭の指定日時が更新される。
【００４０】
処理ステップ２２の比較で、先頭のキュー要素の持つ指定日時が新キュー要素の指定日時以前であれば、処理ステップ２４でそのキュー要素がキューの末尾か識別し（例えば次位要素を指示するポインタの値が０で末尾を示す）、末尾でなければ処理ステップ２５で次位のキュー要素の指定日時と新キュー要素の指定日時を比較する。
【００４１】
比較結果で新キュー要素の指定日時より遅い指定日時を持つキュー要素を検出するか、又は末尾になるまで処理ステップ２４と処理ステップ２５のループを繰り返し、新キュー要素の指定日時より遅い指定日時を持つキュー要素を検出したときは処理ステップ２６で、最後のキュー要素の直前に新キュー要素を挿入する。
【００４２】
又、末尾まで比較して新キュー要素の指定日時の方が遅いときは、処理ステップ２７で末尾に新キュー要素を追加し、以上いずれかの場合により日時指定キューに新キュー要素を追加すると処理を終わる。
【００４３】
処理ステップ２１で日時指定無しと識別した場合には、日時指定無しキューを処理対象として、処理ステップ２８でそのキューの末尾に新キュー要素を追加し、処理ステップ２９でスプール取り出し部１３に処理を要求して、スプール格納部１１は処理を終わる。
【００４４】
図４は日時パトロール部１２の処理の流れであり、タイマーで起動されると、処理ステップ４０で現日時を読み出して保持する。所定の順序で先頭のキュー管理機構１８から処理対象とし、そのキュー管理情報１６について、処理ステップ４１で日時指定キューにキューができているか識別し、キューがなければ、そのキュー管理機構１８の処理は終わる。
【００４５】
キューがあれば、処理ステップ４２でキュー管理情報１６にある先頭キュー要素の指定日時を現日時と比較し、先頭キュー要素の指定日時が現日時より遅ければ、そのキュー管理機構１８の処理は終わる。
【００４６】
先頭キュー要素の指定日時が現日時以前であれば処理ステップ４３以後の処理で先頭のキュー要素から順次指定日時を比較する。
【００４７】
即ち、処理ステップ４３で指定日時を比較し、現日時以前なら処理ステップ４４で末尾のキュー要素か識別し、末尾でなければ次位のキュー要素に進んで処理ステップ４３の比較をする。
【００４８】
このようにして、処理ステップ４３で現日時より遅い指定日時のキュー要素を検出すれば、処理ステップ４５で先頭からその要素の直前までのキュー要素を、日時指定キューから日時指定無しキューへ移す。
【００４９】
又末尾まで現日時より早い指定日時のキュー要素であれば、処理ステップ４６で全部のキュー要素を日時指定無しキューへ移す。以上の後、処理ステップ４７でスプール取り出し部１３に処理を要求して、そのキュー管理機構１８の処理を終わり、処理ステップ４８で未処理のキュー管理機構があるか識別し、あれば処理ステップ４１へ戻って次のキュー管理機構１８の処理を以上のようにする。
【００５０】
図５は、スプール取り出し部１３の処理の流れであり、スプール格納部１１又は日時パトロール部１２からの処理要求で起動すると、要求で指定されたキュー管理機構１８を処理対象として、処理ステップ６０でそのキュー管理機構の取り出し待ちプログラム情報１７に起動待ちのプログラムがあるか識別し、無ければプログラムの実行終了を待つ。
【００５１】
プログラムがあれば、処理ステップ６１で取り出し待ちプログラム情報１７の起動待ちの一項目を選んで起動済とし、処理ステップ６２で日時指定無しキューの先頭のキュー要素を取り出し、処理ステップ６３で、キュー要素のスプールデータ名をプログラムに渡して、プログラムを起動するように制御する。
【００５２】
処理ステップ６４で日時指定無しキューに、なお処理待ちのキュー要素があるか識別し、キュー要素があれば処理ステップ６０に戻って前記のように処理し、キュー要素が無ければ、プログラムの実行終了を待つ。
【００５３】
スプール取り出し部１３は、起動したプログラムから処理の終了の通知を受けると、処理ステップ６５で日時指定無しキューに待ちのキュー要素があるか識別し、有れば処理ステップ６２に進んで、前記のように処理する。
【００５４】
待ちのキュー要素が無ければ、処理ステップ６６で処理するスプールデータが無いことをプログラムに通知し、処理ステップ６７で取り出し待ちプログラム情報１７の該当項を起動待ち状態にする。
【００５５】
以上の後スプール取り出し部１３は、処理ステップ６８で実行中のプログラムがあるか識別し、実行中のプログラムがあれば、実行終了を待ち、実行中のプログラムが無ければ終了する。
【００５６】
以上の説明では、指定日時をキュー要素に記録し、従って日時パトロール部１２はキューを走査して指定日時の到来したキュー要素を検出するようにしたが、指定日時を取り出して別のテーブルに記録して管理し、キュー要素を指示するポインタで、各指定日時とキュー要素とを対応付けるようにしてもよい。
【００５７】
【発明の効果】
以上の説明から明らかなように本発明によれば、計算機で実行されるジョブのスプールデータの管理において、スプールデータの処理日時を指定することができ、計算機運用におけるサービスを向上するという著しい工業的効果がある。
【図面の簡単な説明】
【図１】本発明の構成を示すブロック図
【図２】本発明の実施例構成を示すブロック図。
【図３】本発明の処理の流れ図（その１）
【図４】本発明の処理の流れ図（その２）
【図５】本発明の処理の流れ図（その３）
【符号の説明】
１、１１  スプール格納部
２、１２  日時パトロール部
３、１３  スプール取り出し部
４  スプールデータ
５、１５  キュー要素
６  キュー
７  日時指定の記録
８  バッファ
１４  スプール管理処理装置
１６  キュー管理情報
１７  取り出し待ちプログラム情報
２０〜２９、４０〜４８、６０〜６８  処理ステップ
【図１】
0003617518.tif 000002
【図２】
0003617518.tif 000003
【図３】
0003617518.tif 000004
【図４】
0003617518.tif 000005
【図５】
0003617518.tif 000006