(57)【特許請求の範囲】
【請求項１】
複数の印刷装置に対する印刷データの送信制御を行う印刷制御装置であって、
１つの印刷要求ジョブに含まれる複数頁の印刷データの中で、印刷装置に送信した印刷データの頁数である送信済頁数と、印刷装置による排紙が完了した印刷データの頁数である排紙済頁数とを含むジョブ管理情報を、印刷処理中である複数の印刷要求ジョブの各々に対応させて記憶する記憶手段と、
新たな印刷要求ジョブが生成された場合に、この印刷要求ジョブに対応する前記ジョブ管理情報を前記記憶手段に追加し、該印刷要求ジョブに含まれる各頁の印刷データを前記複数の印刷装置の少なくとも１つに対して順次送信するのに応じて前記追加したジョブ管理情報内の送信済頁数を更新する送信頁管理手段と、
エラー発生時および印刷ジョブの要求を受けた時に前記印刷装置のバッファに蓄えられている未印刷データの頁数を取得し、その取得した頁数と各印刷要求ジョブに対する前記ジョブ管理情報内の送信済頁数とを比較することにより各印刷要求ジョブ毎に排紙が完了した頁数を特定し、各印刷要求ジョブに対する前記ジョブ管理情報内の排紙済頁数を更新する排紙頁管理手段と、
前記印刷装置による印刷処理がエラーの発生により中断された際に、各印刷要求ジョブに対する前記ジョブ管理情報内の送信済頁数と排紙済頁数とに基づいて、過去に生成された複数の印刷要求ジョブのうち、印刷が完了した印刷要求ジョブと、印刷が完了していない印刷要求ジョブおよびその中断された頁位置とを特定する特定手段と、
エラー状態でない印刷装置に対して、前記印刷が完了していないと特定された印刷要求ジョブの中断された頁位置からの印刷データを再度送信する再開手段と、
を具備したことを特徴とすることを特徴とする印刷制御装置。
【請求項２】
前記エラーの発生により印刷処理を中断した印刷装置のバッファに蓄えられている印刷データをクリアするクリア手段を更に具備したことを特徴とする請求項１記載の印刷制御装置。
【請求項３】
複数の印刷装置に対する印刷データの送信制御を行うためのコンピュータが実行可能なプログラムを記憶した記録媒体であって、
１つの印刷要求ジョブに含まれる複数頁の印刷データの中で、印刷装置に送信した印刷データの頁数である送信済頁数と、印刷装置による排紙が完了した印刷データの頁数である排紙済頁数とを含むジョブ管理情報を、印刷処理中である複数の印刷要求ジョブの各々に対応させて記憶する機能と、
新たな印刷要求ジョブが生成された場合に、この印刷要求ジョブに対応する前記ジョブ管理情報を前記記憶手段に追加し、該印刷要求ジョブに含まれる各頁の印刷データを前記複数の印刷装置の少なくとも１つに対して順次送信するのに応じて前記追加したジョブ管理情報内の送信済頁数を更新する機能と、
エラー発生時および印刷ジョブの要求を受けた時に前記印刷装置のバッファに蓄えられている未印刷データの頁数を取得し、その取得した頁数と各印刷要求ジョブに対する前記ジョブ管理情報内の送信済頁数とを比較することにより各印刷要求ジョブ毎に排紙が完了した頁数を特定し、各印刷要求ジョブに対する前記ジョブ管理情報内の排紙済頁数を更新する機能と、
前記印刷装置による印刷処理がエラーの発生により中断された際に、各印刷要求ジョブに対する前記ジョブ管理情報内の送信済頁数と排紙済頁数とに基づいて、過去に生成された複数の印刷要求ジョブのうち、印刷が完了した印刷要求ジョブと、印刷が完了していない印刷要求ジョブおよびその中断された頁位置とを特定する機能と、
エラー状態でない印刷装置に対して、前記印刷が完了していないと特定された印刷要求ジョブの中断された頁位置からの印刷データを再度送信する機能と、
を実現させるためのプログラムを記憶した記録媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、複数の印刷ジョブを複数の印刷装置で印刷する際に、状況に応じて印刷装置の切換制御を行う印刷制御装置、及びその制御プログラムを記憶した記録媒体に関する。
【０００２】
【従来の技術】
従来の印刷装置としては、例えば、受信した複数ページの印刷要求データを一時的にバッファに記憶した後、このバッファからデータを取り出しながら１ページずつ順番に印刷を行う印刷装置があり、いわゆるバッファリング機能付きの印刷装置が普及している。
【０００３】
バッファリング機能付き印刷装置は、例えば、ＬＡＮ（Local Area Network）に接続されて、複数の利用者から共有して利用される。多くの利用者からの印刷要求ジョブが集中した際の、印刷装置の負荷を分散して印刷待ち時間を減らすために、複数の印刷装置をＬＡＮ上に接続する場合も多くなっている。この場合、予め印刷装置を幾つかのグループに分類しておき、グループ内のある印刷装置に、印刷中に用紙切れ等の印刷エラーが発生した場合、自動的に同じグループ内の他の印刷装置に切り換えて印刷するリレー印刷機能が利用されている。
【０００４】
このリレー印刷機能を使用したリレー印刷動作について、図１２に示す従来のシステム構成例を参照して説明する。
【０００５】
図１２において、プリンタ１とプリンタ２の２台のプリンタがグループ化されており、プリンタ１には用紙が５０枚だけセットされていたとする。また、プリンタ１、プリンタ２は共にページプリンタであり、共に数ページ分の印刷要求データを記憶するバッファを有しており、このバッファ容量が大きいプリンタ程、高速印刷が可能である。
【０００６】
図１２において、ホストコンピュータ１００上で動作する上位アプリケーションプログラム１０１が、１００ページの印刷データをリレー印刷制御部１０２に出力したとすると、リレー印刷制御部１０２は、グループ化されたプリンタの中からプリンタ１を見つけるとプリンタ１に印刷データの出力を開始する。
【０００７】
プリンタ１には、用紙が５０枚しかセットされていないので、５０枚印刷物を排紙した時点で用紙切れエラーとなるが、この時、プリンタ１内のバッファにはリレー印刷制御部１０２から５１〜５５ページの印刷データが既に送出されていると、リレー印刷制御部１０２では、５６ページの印刷データの送出途中でプリンタ１のエラーが検出される。
【０００８】
そして、リレー印刷制御部１０２は、プリンタ１のエラー検出後、グループ化されたプリンタの中から他の空いているプリンタ２を検出し、エラー検出した５６ページ〜１００ページの印刷データをプリンタ１からプリンタ２に切り換えて送出し、印刷を続行する。
【０００９】
【発明が解決しようとする課題】
しかしながら、この場合、プリンタ１のエラーが回復せず、電源を落としてしまったような場合には、５１ページ〜５５ページまでの印刷データは印刷出力されないまま失われてしまう。
【００１０】
一方、プリンタにバッファリングされている印刷データの出力状況を、ホストコンピュータからの要求に応じて認識可能な技術も知られているが、通常、プリンタ側では複数の印刷ジョブ毎に印刷データの出力状況を管理するようなインテリジェント機能を持っていない。
【００１１】
このため、１つの印刷要求ジョブに含まれる全ての印刷頁データの印刷出力が完了してから、次の印刷要求ジョブのデータをプリンタへ送信するような場合には、エラーによる中断があっても印刷出力の未完了頁位置を特定できる。しかしながら、複数の印刷ジョブのデータを連続してプリンタに送信するような場合には、複数の印刷ジョブ毎に印刷データの出力状況を管理できないので、印刷処理が中断された際の印刷出力の未完了頁位置を特定することができなかった。
【００１２】
本発明の課題は、複数の印刷ジョブを複数の印刷装置で印刷する場合に、いずれかの印刷装置において用紙切れ等のエラーが発生した際に、中断された印刷ジョブの未だ印刷が完了していないページから他の印刷装置へ切り換えて印刷することを可能にすることである。
【００１３】
特に、複数の利用者からの複数の印刷ジョブを連続して処理するような場合において、複数の印刷ジョブ毎に印刷データの出力状況を管理するようなインテリジェント機能を持たないプリンタへ印刷ジョブを出力する場合であっても、印刷効率を低下させること無く複数印刷ジョブの切り換え印刷を行えるようにすることである。
【００１４】
【課題を解決するための手段】
本発明の手段は次の通りである。
複数の印刷装置に対する印刷データの送信制御を行う印刷制御装置であって、
１つの印刷要求ジョブに含まれる複数頁の印刷データの中で、印刷装置に送信した印刷データの頁数である送信済頁数と、印刷装置による排紙が完了した印刷データの頁数である排紙済頁数とを含むジョブ管理情報を、印刷処理中である複数の印刷要求ジョブの各々に対応させて記憶する記憶手段と、
新たな印刷要求ジョブが生成された場合に、この印刷要求ジョブに対応する前記ジョブ管理情報を前記記憶手段に追加し、該印刷要求ジョブに含まれる各頁の印刷データを前記複数の印刷装置の少なくとも１つに対して順次送信するのに応じて前記追加したジョブ管理情報内の送信済頁数を更新する送信頁管理手段と、
エラー発生時および印刷ジョブの要求を受けた時に前記印刷装置のバッファに蓄えられている未印刷データの頁数を取得し、その取得した頁数と各印刷要求ジョブに対する前記ジョブ管理情報内の送信済頁数とを比較することにより各印刷要求ジョブ毎に排紙が完了した頁数を特定し、各印刷要求ジョブに対する前記ジョブ管理情報内の排紙済頁数を更新する排紙頁管理手段と、
前記印刷装置による印刷処理がエラーの発生により中断された際に、各印刷要求ジョブに対する前記ジョブ管理情報内の送信済頁数と排紙済頁数とに基づいて、過去に生成された複数の印刷要求ジョブのうち、印刷が完了した印刷要求ジョブと、印刷が完了していない印刷要求ジョブおよびその中断された頁位置とを特定する特定手段と、
エラー状態でない印刷装置に対して、前記印刷が完了していないと特定された印刷要求ジョブの中断された頁位置からの印刷データを再度送信する再開手段と、
を具備したことを特徴としている。
【００１７】
【発明の実施の形態】
以下、図を参照して本発明の実施の形態を詳細に説明する。
図１〜図１１は、本発明を適用したＬＡＮによりホスト装置と複数のプリンタが接続された印刷システムの一実施の形態を示す図である。
まず、構成を説明する。
図１は、本実施の形態におけるホスト装置１の要部構成を示すブロック図である。この図１において、ホスト装置１は、ＣＰＵ２、入力装置３、ＲＡＭ４、表示装置５、ＬＡＮポート６、記憶装置７、及び記憶媒体８により構成されており、記憶媒体８を除く各部はバス９に接続されている。
【００１８】
このホスト装置１は、図２に示すＬＡＮを介して接続されたＮ台の内部バッファを有するプリンタに対して、同図において機能ブロックで示す印刷制御機能を有している。
【００１９】
すなわち、ホスト装置１は、印刷制御機能として、文書印刷処理機能を有するアプリケーションプログラム（以下、ＡＰ１という）２０１と、そのＡＰ１２０１から入力される描画情報をデータ構造化するグラフィカルデバイスインタフェース（以下、ＧＤＩという）２０２と、そのＧＤＩ２０２によりデータ構造化された描画情報から図中のスプールジョブ記述ファイルと描画情報記述ファイルとを生成するスプール制御部２０３と、プリンタでの障害発生時にリレー印刷制御ファイル２０４に記述されたリレー先のプリンタに対して、印刷が中断したスプールジョブ記述ファイルと描画情報記述ファイルに基づいてリレー印刷制御を実行するリレー印刷制御部２０５とを有する。
【００２０】
なお、図２においてプリンタ毎に接続されたプリンタドライバ１〜ｎとポート１〜ｎドライバは、各プリンタ内でホスト装置１との間でＬＡＮを介して印刷制御処理に係る各種制御信号を送受信するためのＬＡＮポート（図示省略）に属する機能ブロックを示したものであり、実際には、各プリンタ内に内蔵されるものである。また、これらの機能ブロックは、ホスト装置１側に備えるようにしてもよい。
【００２１】
また、ホスト装置１では、図２に示したスプールジョブ記述ファイル１，２と描画情報記述ファイル１，２は、それぞれ１回のアプリケーション印刷処理で一対生成されるものであり、その２つのファィルを合わせてスプールジョブファイルと呼び、このスプールジョブファイルを特定するためのＩＤをスプールジョブＩＤと呼ぶ。また、図中のスプールキューは、スプールジョブファイルがプリンタに出力されるまでの待ち行列を示しており、アプリケーション印刷処理要求に応じてＣＰＵ２によりＲＡＭ４内に蓄積される。
【００２２】
図１において、ＣＰＵ（Central Processing Unit ）２は、ＬＡＮポート６からＬＡＮを介して接続されるｎ台のプリンタの各印刷動作を制御する印刷制御機能を有しており、記憶媒体８に記憶されたアプリケーションプログラムの実行時に指示される文書印刷処理要求に基づいて、ＲＡＭ４内に後述するスプールジョブ記述ファイル及び描画情報記述ファイルを展開し、これら各ファイルの記述内容に従って、後述する印刷制御処理（図８、図９参照）と、完全排紙管理テーブル更新処理（図１０参照）と、リレー印刷処理（図１１参照）とを実行する。
【００２３】
図２のＡＰ１２０１から印刷対象の描画情報と印刷制御情報を含む印刷処理要求がＧＤＩ２０２に発行され、ＧＤＩ２０２により印刷対象の描画情報がデータ構造化され、スプール制御部２０３によりスプールジョブ記述ファイルと描画情報記憶ファイルが生成されてスプールジョブＩＤが設定され、そのスプールキューがＲＡＭ４に記憶されると、ＣＰＵ２は、印刷制御処理を開始する。
【００２４】
ＣＰＵ２は、印刷制御処理において、まず、ＲＡＭ４に記憶された上記スプールキューから次に出力するスプールジョブを取り出してスプールジョブＩＤをセットし、そのスプールジョブ記述ファイルから出力先プリンタ名や開始ページを取得し、その出力先プリンタに対する完全排紙管理テーブルメモリ（図５参照）内の記憶内容を参照し、完全排紙未確認ジョブの有無を判別し、完全排紙未確認ジョブがなければ、当該スプールジョブを開始し、完全排紙未確認ジョブがあれば、その対応するプリンタから未印刷ページ数情報を受信して完全排紙管理テーブルメモリを更新し、その更新内容で完全排紙済みのスプールジョブが有れば、完全排紙管理テーブルメモリから削除する。
【００２５】
また、印刷制御処理において、実行中のスプールジョブにプリンタエラーが発生した場合、ＣＰＵ２は、完全排紙管理テーブル更新処理と、リレー印刷処理とを実行する。
【００２６】
ＣＰＵ２は、完全排紙管理テーブル更新処理において、まず、プリンタエラーが発生したプリンタに対して未印刷ページ数通知要求を発行し、未印刷ページ数情報を受信すると、そのエラー発生プリンタ用の完全排紙管理テーブルメモリ（図５参照）を参照して、記憶されている全スプールジョブの全エントリ行の出力済みページ数の合計値を求めるとともに、その完全排紙管理テーブルメモリ内のエントリ行数ＬＮをセットし、その各エントリ行のスプールジョブについて開始ページと出力済みページ数を取得する。
【００２７】
そして、ＣＰＵ２は、取得した各エントリ行のスプールジョブの出力済みページ数が、上記合計値から上記未印刷ページ数を減算した減算結果、すなわち、完全排紙確認済みページ数以下であれば、当該エントリ行のスプールジョブが終了していると判断して、当該プリンタ用の完全排紙管理テーブルメモリから当該エントリ情報を削除するとともに、当該スプールジョブファイルも削除し、上記出力済みページ数が完全排紙確認済みページ数より大きい値であれば、当該エントリ行のスプールジョブが終了していないと判断して、当該プリンタ用の完全排紙管理テーブルメモリの当該エントリ情報を更新するとともに、当該エントリ行以降のスプールジョブ情報も全て更新する。
【００２８】
また、ＣＰＵ２は、完全排紙管理テーブル更新処理に続いてリレー印刷処理を実行し、まず、エラーが発生したプリンタに対して未印刷ページクリア要求を発行して、そのエラーが発生したプリンタ内のバッファに格納されている全てのページ情報をクリアさせる。
【００２９】
次いで、ＣＰＵ２は、リレー印刷制御ファィル２０４からエラー発生プリンタの代替プリンタ名を取得し、その代替プリンタ用の完全排紙管理テーブルメモリ内のエントリ行数ＬＮをセットするとともに、そのエントリ行を指定するｎをセットし、その指定値ｎがエントリ行数ＬＮ以下であれば、エラー発生プリンタ用の完全排紙管理テーブルメモリを参照して、当該指定値ｎ行目のエントリ行のスプールジョブＩＤと完全排紙確認済みページ数を取得し、当該ジョブＩＤのスプールジョブ記述ファイルの記述内容を代替プリンタ名と完全排紙確認済みページ数により更新し、当該スプールジョブＩＤをスプールキューの先頭に移動する。
【００３０】
また、指定値ｎがエントリ行数ＬＮより大きければ、ＣＰＵ２は、エラーが発生したプリンタにエントリされた全スプールジョブの印刷処理が終了したと判断して、エラー発生プリンタ用の完全排紙管理テーブルメモリの全エントリ情報をクリアして、リレー印刷処理を終了する。
【００３１】
したがって、ＣＰＵ２は、図２のリレー印刷制御部２０５としての機能を有する。
【００３２】
入力装置３は、カーソルキー、数字入力キー及び各種機能キー等を備えたキーボード及びマウス等のポインティングデバイスを含み、キーボードにおいて押下されたキーの押下信号やマウスの位置信号をＣＰＵ２に出力する。
【００３３】
ＲＡＭ（Random Access の記憶媒体８には上記印刷制御処理プログラム、完全排紙管理テーブル更新処理プログラム、リレー印刷処理プログラム、及び当該各プログラムで処理されたデータ等を記憶する。
【００３４】
また、この記憶媒体８に記憶する各種プログラム、データ等は、通信回線等を介して接続された他の機器から受信して記憶する構成にしてもよく、更に通信回線等を介して接続された他の機器側に前記記憶媒体７を備えた記憶装置を設け、この記憶媒体７に記憶されているプログラム、データ等を通信回線を介して使用する構成にしてもよい。
【００３５】
次に、本実施の形態の動作を説明する。
まず、ＣＰＵ２により実行される印刷制御処理について図８及び図９に示すフローチャートに基づいて説明する。
【００３６】
図２のＡＰ１２０１から印刷対象の描画情報と印刷制御情報を含む印刷処理要求がＧＤＩ２０２に発行され、ＧＤＩ２０２により印刷対象の描画情報がデータ構造化され、スプール制御部２０３によりスプールジョブ記述ファイルと描画情報記憶ファイルが生成されてスプールジョブＩＤが設定され、そのスプールキューがＲＡＭ４に記憶されると、ＣＰＵ２は、印刷制御処理を開始する。
【００３７】
ＣＰＵ２は、図８の印刷制御処理において、まず、ＲＡＭ４に記憶された上記スプールキューから次に出力するスプールジョブを取り出し、そのスプールジョブＩＤを取得して「ＪｏｂＩＤ」としてＲＡＭ４にセットする（ステップＳ１）。その「ＪｏｂＩＤ」に該当するスプールジョブファイルの有無をＲＡＭ４内で確認する（ステップＳ２）。該当するスプールジョブファイルがなければ、アイドリング処理として、スプールキューの待ち行列と、完全排紙未確認のジョブが存在するプリンタの状態とをポーリング監視する（ステップＳ３）。
【００３８】
ホスト装置１からプリンタの状態を取得する際は、プリンタに対して状態取得要求を発行することにより行うものとする。プリンタでは、ホスト装置１から状態取得要求を受信すると、プリンタの状態値として、例えば、「待機中（未印刷データ無しで、印刷もしていない状態）」、「印刷中」、「エラー中（用紙切れ等のエラーで印刷停止中）」のいずれかをホスト装置１に返すものとする。
【００３９】
次いで、ＣＰＵ２は、プリンタから返された状態値が「エラー中」か否かを検出し（ステップＳ４）、「エラー中」を検出しなければステップＳ１に戻り、「エラー中」を検出した場合はステップＳ１８の完全排紙管理テーブル更新処理に移行する。
【００４０】
また、ステップＳ２において「ＪｏｂＩＤ」に該当するスプールジョブファイルがある場合、ＣＰＵ２は、その「ＪｏｂＩＤ」のスプールジョブ記述ファイルをＲＡＭ４から読み込み、出力プリンタ名（Ｐｒｉｎｔｅｒ）と開始ページ（ＪＳＰａｇｅ）を取得する（ステップＳ５）。そして、ＣＰＵ２は、その出力プリンタ用の完全排紙管理テーブルメモリを参照して（ステップＳ６）、完全排紙未確認ジョブの有無を確認する（ステップＳ７）。完全排紙未確認ジョブがなければステップＳ１１の処理に移行し、完全排紙未確認ジョブがあれば、出力プリンタ（Ｐｒｉｎｔｅｒ）に未印刷ページ情報取得要求を発行して、出力プリンタから未印刷ページ情報を取得して、出力プリンタ用の完全排紙管理テーブルメモリの記憶内容を更新する（ステップＳ８）。
【００４１】
次いで、ＣＰＵ２は、出力済みページ数と完全排紙確認済みページ数が同じジョブが、出力プリンタ用の完全排紙管理テーブルメモリに有るか否かを確認し（ステップＳ９）、そのジョブが有れば、当該ジョブを完全排紙管理テーブルメモリから削除し、該当するスプールジョブもＲＡＭ４から削除する（ステップＳ１０）。また、そのジョブがなければステップＳ１１に移行する。
【００４２】
ステップＳ１１において、ＣＰＵ２は、今回処理するスプールジョブ記述ファイルの情報を、出力プリンタ用の完全排紙管理テーブルメモリに追加記憶する。すなわち、ジョブＩＤ＝ＪｏｂＩＤ，出力済みページ数＝０，完全排紙確認済みページ数＝０として追加する。次いで、ＣＰＵ２は、今回の印刷処理を管理するためのパラメータとして、「ＳＰａｇｅ←開始ページ」、「ＴＰａｇｅ←総ページ」、「ＮＰａｇｅ←ＳＰａｇｅ」をＲＡＭ４内にセットし（ステップＳ１２）、「ＮＰａｇｅ」が「ＴＰａｇｅ」より小さい値か否かを確認する（ステップＳ１３）。
【００４３】
「ＮＰａｇｅ」が「ＴＰａｇｅ」以上であれば、今回の印刷処理が終了したと判断してステップＳ１に戻り、「ＮＰａｇｅ」が「ＴＰａｇｅ」より小さい値であれば、その「ＮＰａｇｅ」目の描画情報を描画情報記憶ファイルから読み込んで出力先プリンタ（Ｐｒｉｎｔｅｒ）のプリンタドライバにＬＡＮポート６及びＬＡＮを介して出力する（ステップＳ１４）。
【００４４】
そして、ＣＰＵ２は、その出力先プリンタからの「エラー中」の状態値を受信したか否かを確認し（ステップＳ１５）、「待機中」の状態値を受信した場合は、その「ＮＰａｇｅ」目の印刷が終了したと判断して、「ＮＰａｇｅ←ＮＰａｇｅ＋１」し（ステップＳ１６）、出力プリンタ用の完全排紙管理テーブルメモリの出力済みページ数を加算した「ＮＰａｇｅ」に更新し（ステップＳ１７）、ステップＳ１３に戻る。
【００４５】
以上のステップＳ１３〜ステップＳ１７の処理を繰り返し実行することにより、今回の印刷処理に係るスプールジョブ記述ファィルに基づく印刷動作を出力先プリンタ（Ｐｒｉｎｔｅｒ）に対して実行する。
【００４６】
また、ステップＳ１５において「エラー中」の状態値を受信した場合、ＣＰＵ２は、ステップＳ１８の完全排紙管理テーブル更新処理を実行し、続いてステップＳ１９でリレー印刷処理を実行する。
【００４７】
ＣＰＵ２により実行される完全排紙管理テーブル更新処理について図１０に示すフローチャートに基づいて説明する。
【００４８】
図１０において、ＣＰＵ２は、まず、プリンタエラーが発生した出力先プリンタ（Ｐｒｉｎｔｅｒ）に対して未印刷ページ数通知要求を発行し（ステップＳ１０１）、その出力先プリンタから未印刷ページ数情報「Ｐ２」を受信すると（ステップＳ１０２）、その出力先プリンタ用の完全排紙管理テーブルメモリを参照して、記憶されている全スプールジョブの全エントリ行の出力済みページ数の合計「ＡｌｌＰａｇｅ」を求めるとともに（ステップＳ１０３）、その完全排紙管理テーブルメモリのエントリ行数ＬＮをセットする（ステップＳ１０４）。
【００４９】
次いで、ＣＰＵ２は、エントリ行数ＬＮが「１」以上か否かを確認し（ステップＳ１０５）、エントリ行数ＬＮが「１」以上でなければ、すなわち、エントリ行数が「０」であれば、本処理を終了してリレー印刷処理に移行する。また、エントリ行数ＬＮが「１」以上であれば、出力先プリンタ用の完全排紙管理テーブルメモリを参照して、１行目のエントリ情報を取得し、その取得した情報からリレー印刷処理を管理するためのパラメータとして、「ＪｏｂＩＤ←ジョブＩＤ」、「ＳＰａｇｅ←開始ページ」、「ＥＰａｇｅ←出力済みページ数」をＲＡＭ４にセットする（ステップＳ１０６）。
【００５０】
そして、ＣＰＵ２は、「ＥＰａｇｅ」が、「ＡｌｌＰａｇｅ」から未印刷ページ数「Ｐ２」を減算した減算結果「ＡｌｌＰａｇｅ−Ｐ２」、すなわち、完全排紙確認済みページ数以下であるか否かを確認する（ステップＳ１０７）。「ＥＰａｇｅ」が「ＡｌｌＰａｇｅ−Ｐ２」以下である場合、ＣＰＵ２は、１行目にエントリされたスプールジョブが終了していると判断して、当該出力先プリンタ（Ｐｒｉｎｔｅｒ）用の完全排紙管理テーブルメモリから１行目のエントリ情報を削除するとともに、当該「ＪｏｂＩＤ」のスプールジョブファイルもＲＡＭ４から削除する（ステップＳ１０８）。
【００５１】
次いで、ＣＰＵ２は、エントリ行を１行削除したため、エントリ行数ＬＮの設定も「−１」として（ステップＳ１０９）、ステップＳ１０５のエントリ行数ＬＮの確認処理に戻る。また、「ＥＰａｇｅ」が「ＡｌｌＰａｇｅ−Ｐ２」より大きい値であれば、ＣＰＵ２は、当該エントリ行のスプールジョブが終了していないと判断して、ステップＳ１１０に移行して、当該出力先プリンタ（Ｐｒｉｎｔｅｒ）用の完全排紙管理テーブルメモリにおいて、１行目のエントリ情報の完全排紙確認済みページ数を「ＡｌｌＰａｇｅ−Ｐ２」に更新する。
【００５２】
そして、ＣＰＵ２は、当該出力先プリンタ（Ｐｒｉｎｔｅｒ）用の完全排紙管理テーブルメモリにおいて、２行目以降のエントリ情報の完全排紙確認済みページ数を全て「０」に更新して（ステップＳ１１１）、本処理を終了してリレー印刷処理に移行する。
【００５３】
次いで、ＣＰＵ２により実行されるリレー印刷処理について図１１に示すフローチャートに基づいて説明する。
【００５４】
図１１において、ＣＰＵ２は、まず、エラーが発生した出力先プリンタ（Ｐｒｉｎｔｅｒ）に対して未印刷ページクリア要求を発行して（ステップＳ２０１）、そのエラーが発生したプリンタ内のバッファに格納されている全てのページ情報をクリアさせる。そして、ＣＰＵ２は、リレー印刷制御ファィル２０４からエラー発生プリンタの代替プリンタ名（ＮＰｒｉｎｔｅｒ）を取得し（ステップＳ２０２）、その代替プリンタ用の完全排紙管理テーブルメモリのエントリ行数ＬＮをセットするとともに、そのエントリ行を指定するｎを「１」にセットする（ステップＳ２０３）。
【００５５】
次いで、ＣＰＵ２は、指定値ｎ「１」がエントリ行数ＬＮ以下であるか否かを確認し（ステップＳ２０４）、指定値ｎ「１」がエントリ行数ＬＮ以下であれば、出力先プリンタ（Ｐｒｉｎｔｅｒ）用の完全排紙管理テーブルメモリを参照し、指定値ｎ「１」行目の情報を取得し、その取得した情報から今回のリレー印刷処理を管理するためのパラメータとして、「ＪｏｂＩＤ←ジョブＩＤ」、「ＨＰａｇｅ←完全排紙確認済みページ数」をＲＡＭ４にセットする（ステップＳ２０７）。
【００５６】
そして、ＣＰＵ２は、当該ジョブＩＤのスプールジョブ記述ファイルの記述内容を「プリンタ名←ＮＰｒｉｎｔｅｒ」、「開始ページ←ＨＰａｇｅ＋１」に更新し（ステップＳ２０７）、当該スプールジョブＩＤ「ＪｏｂＩＤ」をスプールキューの先頭に移動する（ステップＳ２０８）。
【００５７】
次いで、ＣＰＵ２は、指定値ｎを「１」加算して（ステップＳ２０９）、ステップＳ２０４の処理に戻り、指定値ｎ「２」がエントリ行数ＬＮ以下であれば、ステップＳ２０６〜ステップＳ２０９の処理を繰り返し実行して、エラーが発生したプリンタにおいて未印刷のスプールジョブを代替プリンタにおいて、エラーが発生したページを開始ページとして印刷させる。
【００５８】
また、ステップＳ２０４において指定値ｎがエントリ行数ＬＮより大きければ、ＣＰＵ２は、エラーが発生したプリンタにエントリされた全スプールジョブの未印刷処理が終了したと判断して、エラー発生プリンタ用の完全排紙管理テーブルメモリの全エントリ情報をクリアして（ステップＳ２０５）、本リレー印刷処理を終了し、図８のステップＳ１に戻る。
【００５９】
次に、上記ＣＰＵ２により実行される印刷制御処理の具体例について、図２の機能ブロック構成と、図５〜図７に示すプリンタ１用とプリンタ２用の完全排紙管理テーブルメモリの記憶内容を参照して説明する。
【００６０】
図２に示すように、スプールジョブ１が次に処理すべきスプールジョブだとすると、リレー印刷制御部２０５（ＣＰＵ２）は、まず、スプールジョブ記述ファィル１を読み込んで出力先プリンタ名を認識する。このスプールジョブ１では、スプールジョブＩＤが「００００１」、開始ページが「１」、出力先プリンタ名が「プリンタ１」、総ページ数が１００ページとする。
【００６１】
リレー印刷制御部２０５は、プリンタ１のプリンタ１ドライバへの描画情報の出力処理を開始する前に、プリンタ１用の完全排紙管理テーブルメモリにスプールジョブＩＤ「００００１」、開始ページ「１」、出力済みページ数「０」を記憶し、図５▲１▼に示す状態値とする。そして、リレー印刷制御部２０５は、１ページ目の描画情報から順次ページ単位に取り出し、その描画情報を順次プリンタ１ドライバに出力する。
【００６２】
この描画情報は、プリンタの機種に依存しない形式であるため、プリンタ１ドライバによってプリンタ１に固有のコマンド形式（ＥＳＣシーケンス）に変換されて、ポート１ドライバを介してプリンタ１に出力される。
【００６３】
リレー印刷制御部２０５は、各ページの描画情報をプリンタ１ドライバに出力する度に、プリンタ１用の完全排紙管理テーブルメモリの出力済みページ数をカウントアップする。
【００６４】
そして、リレー印刷制御部２０５〜プリンタ１ドライバ〜ポート１ドライバは、スプールジョブ１内の全てのページに対して、上記処理を繰り返し、リレー印刷制御部２０５は、全ページの描画情報をプリンタ１ドライバに出力した時点で、プリンタ１用の完全排紙管理テーブルメモリは、図５▲２▼に示すようになる。
【００６５】
このスプールジョブ１を処理している間にＡＰ１２０１の全ページ出力処理が完了しており、図２のスプールキューには次の待ち行列としてスプールジョブ２が存在する。
【００６６】
リレー印刷制御部２０５は、スプールジョブ２を認識すると、スプールジョブ記述ファイル２を読み込んで出力先プリンタ名を認識する。このスプールジョブ２では、スプールジョブＩＤが「００００２」、開始ページが「１」、出力先プリンタ名が「プリンタ１」、総ページ数が２００ページとする。
【００６７】
リレー印刷制御部２０５は、プリンタ１用の完全排紙管理テーブルメモリを参照し、プリンタ１に完全排紙未確認のスプールジョブＩＤ「００００１」のスプールジョブがあることを認識すると、プリンタ１に対し、未印刷データのページ数を問い合わせる指示をポートドライバ１を介して行う。この問い合わせる際の手段は、ホスト装置１とプリンタ１の間の接続は、ＬＡＮ接続である場合を示したが、セントロニクスインタフェース接続やＵＳＢ接続、その他の接続形態であってもよく、その接続形態によって規定されたプロトコル手段に準じた手法を用いればよい。
【００６８】
プリンタ１は、未印刷データのページ数を問い合わせる要求を受け取ると、未印刷ページ数を上記プロトコル手段によりホスト装置１に出力する。リレー印刷制御部２０５は、プリンタ１から受信した未印刷ページ数情報が「０」ならば、先に出力済みのスプールジョブ１のスプールジョブファィルを削除するとともに、プリンタ１用の完全排紙管理テーブルメモリからスプールジョブ２の情報を削除すると同時に、スプールジョブ１のファイル（スプールジョブ記述ファイル１と描画情報記憶ファイル１）を削除する。
【００６９】
また、上記未印刷ページ数がＰ（Ｐ＞０）ならば、プリンタ１用の完全排紙管理テーブルメモリのスプールジョブＩＤ「００００１」の完全排紙確認済みページ数を出力済みページ数−Ｐ、すなわち、「１００−Ｐ」にし、プリンタ１用の完全排紙管理テーブルメモリは、図５▲３▼に示すようになる。
【００７０】
この後、リレー印刷制御部２０５とプリンタ１ドライバとの間では、上記スプールジョブ１の出力時と同様にスプールジョブ２の出力処理を行い、スプールジョブ２の出力処理が完了したとき、プリンタ１用の完全排紙管理テーブルメモリは図６▲４▼に示すようになる。
【００７１】
リレー印刷制御部２０５が、プリンタ１のエラーを認識する手段は、スプールジョブ出力中にエラーを検出する場合、すなわち、ポート１ドライバ→プリンタ１ドライバ→リレー印刷制御部２０５の順にエラーが伝わる場合と、全ページ出力後、次に出力するジョブが無い場合のアイドリング処理中に検出する場合とがある。
【００７２】
リレー印刷制御部２０５は、アイドリング処理中にスプールキューの待ち行列と、完全排紙未確認のジョブが存在するプリンタの状態とをポーリング監視する。リレー印刷制御部２０５は、プリンタ１に対して状態取得要求を発行し、プリンタ１から状態値として、上記「待機中（未印刷データ無しで、印刷もしていない状態）」、「印刷中」、「エラー中（用紙切れ等のエラーで印刷停止中）」を受信する。
【００７３】
リレー印刷制御部２０５は、上記２つのタイミングでプリンタ１のエラーを検出すると、上記完全排紙管理テーブル更新処理を実行する。
【００７４】
リレー印刷制御部２０５は、未印刷ページ数の問い合わせをプリンタ１に対して行い、プリンタ１の内部バッファに保留されている未印刷ページ数「Ｐ２」を認識すると、プリンタ１用の完全排紙管理テーブルメモリを以下のように操作する。
【００７５】
図２において、リレー印刷制御部２０５が、スプールジョブ２の５１ページ目の描画データのプリンタ１の出力途中でエラーを検出した場合、もし、プリンタ１の未印刷ページ数情報「Ｐ２」が、Ｐ２≦５０であれば、プリンタ１用の完全排紙管理テーブルメモリの記憶内容は、図６▲５▼に示すようになり、Ｐ２＞５０であれば、図６▲６▼に示すようになる。
【００７６】
この場合、出力途中の５１ページ目の描画情報は、プリンタ１ではページフレーム未完成状態であるため、１ページ分としてカウントされない。
【００７７】
次いで、リレー印刷制御部２０５は、プリンタ１で発生したエラーを認識し、プリンタ１に完全排紙未確認中のジョブが存在するので、上記リレー印刷処理を実行する。
【００７８】
リレー印刷制御部２０５は、プリンタ１でエラーが発生したため、先に読み込み済みのリレー印刷制御ファイル２０４の内容に従って、プリンタ１のリレー（切り換え）先プリンタであるプリンタ２を認識すると、プリンタ２に対してジョブ出力処理を実行する。
【００７９】
この時、未印刷ページ数情報「Ｐ２」が、Ｐ２≦５０（図６の▲５▼）だった場合、リレー印刷制御部２０５は、スプールジョブ２の完全排紙確認済みページ数である５０−Ｐ２ページの描画情報からプリンタ２への出力処理を開始する。
【００８０】
この時、プリンタ２用の完全排紙管理テーブルメモリには、スプールジョブＩＤ「００００２」と出力開始ページ「５０−Ｐ２」を記憶する。
【００８１】
そして、プリンタ２用の完全排紙管理テーブルメモリは、未印刷ページ数情報「Ｐ２」が、Ｐ２≦５０（図６の▲５▼）だった場合には、図７▲１▼に示すようになり、Ｐ２＞５０だった場合には、図７▲２▼に示すようになる。
【００８２】
以上のように、本実施の形態の印刷システムでは、ページ毎に排紙確認を行うのではなく、次のスプールジョブを出力する前と、プリンタエラーが発生した場合のみに排紙確認を行うため、プリンタの印字性能を劣化させることなく、効率的なリレー印刷処理を行うことができる。
【００８３】
また、完全排紙を確認した次のページからリレー印刷処理を行うため、プリンタエラー中に、そのプリンタの電源がＯＦＦされた場合の印刷ページ抜け等の発生を防止できる。
【００８４】
次いで、リレー印刷制御部２０５は、プリンタ１のエラーを検出した時、プリンタ１に対して内部バッファに記憶されたデータの内部データクリア要求を発行する。プリンタ１では、内部データクリア要求を受信すると、内部バッファに記憶する全てのページの描画情報を消去する。
【００８５】
リレー印刷制御部２０５は、起動時に読み込んだリレー印刷制御ファイル２０４の情報を参照して、プリンタ１の代替プリンタ名である「プリンタ２」を取得すると、プリンタ１用の完全排紙管理テーブルメモリの記憶内容を読み込み、エントリ行の全てのスプールジョブのジョブ記述ファイルを書き換え、スプールキューの先頭に移動する。
【００８６】
この後、リレー印刷制御部２０５は、スプールキューの先頭ジョブを取り出しにいった時、上記プリンタ２にリレーしたスプールジョブを取り出すことになり、上記プリンタ１でエラーになったページの描画情報からプリンタ２に再出力することになる。
【００８７】
以上のように、本実施の形態の印刷システムでは、エラーが発生したプリンタの内部バッファに記憶された全てのページ情報をクリアし、完全排紙された次のページから代替プリンタにリレー出力するため、リレー印刷時に同一ページの重複印刷や、ページ抜けの発生を防止でき、印刷システムの利便性と信頼性を向上できる。
【００８８】
なお、本発明を適用した上記実施の形態において図２に示した印刷システムの構成では、ホスト装置１とＮ台のプリンタをＬＡＮを介して接続した場合を示したが、更に大規模なネットワークに接続された印刷システムや、より小規模のネットワークに印刷システムに対しても本発明は適用可能である。
【００８９】
また、上記実施の形態では、複数の印刷要求ジョブの各ページ毎に印刷データを順番に印刷装置に送信してそのバッファ内に記憶させ、印刷装置側で受信した順番にバッファ内より各ページ毎の印刷データを取り出して印刷を行うことを前提としており、印刷装置より取得する印刷ページに関する情報は、バッファ内に記憶されている複数ジョブの印刷データをトータルした未印刷ページ数情報であり、複数ジョブをトータルした送信出力済ページ数よりこのトータルした未印刷ページ数を減算することによって、トータルの完全排紙確認済ページ数を算出し、各印刷要求ジョブのデータを送信した順番に個々のジョブの送信出力済ページ数と算出したトータルの完全排紙確認済ページ数との比較を行っていくことにより、どの印刷要求ジョブのどのページ位置が印刷未完了ページ位置であるかを特定しているが、前記トータルした未印刷ページ数を印刷装置から取得する代わりに前記トータルの完全排紙確認済ページ数と等価の情報を直接印刷装置から取得することによって以下同様の方法で印刷未完了ページ位置を特定するようにしてもよい。
【００９０】
また、上記実施の形態では、印刷装置側は受信した印刷データをジョブ毎に区別することなくトータルで扱っているが、各ジョブ毎に印刷ページ数情報を管理するようにし、印刷制御装置側は、各ジョブ毎に未印刷ページ数情報または完全排紙済ページ数情報を取得して各ジョブ毎の印刷未完了ページ位置を特定するようにしてもよく、その場合には複数の印刷要求ジョブの各ページの印刷を順番に行わず、交互に行うような印刷制御においても同様の効果を期待することが可能となる。
【００９１】
【発明の効果】
本発明によれば、例え印刷装置が複数の印刷ジョブ毎の印刷状況を管理するようなインテリジェント機能を持っておらず、且つ、１つの印刷要求ジョブに含まれる全ての頁が印刷装置により排紙されて印刷が完了するのを待つことなく、複数の印刷要求ジョブの印刷データを連続して印刷装置に送信するような場合であっても、エラー発生のタイミングに係らず、エラーにより印刷が中断された印刷要求ジョブとその中断された頁位置とを常に正しく認識できるので、印刷装置に対して電源ＯＦＦやリセット等の操作が行われた場合でも、正しいページ位置からのデータ送信により印刷頁抜けが発生することなく印刷を再開することができ、印刷システムの利便性と信頼性を向上できる。
【００９２】
請求項２記載の発明の印刷制御装置によれば、エラーが発生した印刷装置のバッファ内に記憶されている印刷出力未完了の印刷要求データを削除することにより、他の印刷装置に切り換えて未印刷ページの印刷を継続する場合でも、エラーが発生した印刷装置の復帰時に余分なページが印刷されてしまうことを防止することができる。
【００９４】
請求項６記載の発明の記録媒体によれば、複数の利用者からの連続した複数の印刷要求ジョブを処理するような場合において、１つの印刷要求ジョブの処理毎に印刷出力の完了を待つことなく、連続して複数の印刷要求ジョブの印刷頁デ−タをプリンタに送信することができ、エラー等により印刷が中断された際に、ネットワーク上の他のエラー状態でないプリンタに対し、中断された印刷要求ジョブの正しいページ位置からのデータ送信により印刷ページ抜けが発生することなく印刷を再開することができ、印刷システムの利便性と信頼性を向上できる。
【図面の簡単な説明】
【図１】本発明を適用した一実施の形態における印刷システムのホスト装置１の要部構成を示すブロック図である。
【図２】図１のホスト装置１の印刷制御機能を示す機能ブロックと、その機能ブロックに接続されたＮ台のプリンタの構成とを示す図である。
【図３】図２のスプールジョブ記述ファイルの構成例と描画情報記憶ファイルの構成例とを示す図である。
【図４】図２のリレー印刷制御ファィル２０４の構成例を示す図である。
【図５】図２のスプールジョブ１に係るプリンタ１用の完全排紙管理テーブルメモリの記憶過程を示す図である。
【図６】図２のスプールジョブ１、２に係るプリンタ１用の完全排紙管理テーブルメモリの記憶過程を示す図である。
【図７】図２のスプールジョブ１、２に係るプリンタエラー発生時のプリンタ２用の完全排紙管理テーブルメモリの記憶内容を示す図である。
【図８】図１のＣＰＵ２により実行される印刷制御処理の一部を示すフローチャートである。
【図９】図８に続く印刷制御処理の一部を示すフローチャートである。
【図１０】図１のＣＰＵ２により実行される完全排紙管理テーブル更新処理を示すフローチャートである。
【図１１】図１のＣＰＵ２により実行されるリレー印刷処理を示すフローチャートである。
【図１２】従来の印刷システムにおけるプリンタエラー発生時の処理過程を説明するための図である。
【符号の説明】
１    ホスト装置
２    ＣＰＵ
３    入力装置
４    ＲＡＭ
５    表示装置
６    ＬＡＮポート
７    記憶装置
８    記憶媒体
９    バス
２０１    アプリケーションプログラム（ＡＰ１）
２０２    グラフィカルデバイスインタフェース（ＧＤＩ）
２０３    スプール制御部
２０４    リレー印刷制御ファイル
２０５    リレー印刷制御部
【図１】
0003845789.tif 000002
【図２】
0003845789.tif 000003
【図３】
0003845789.tif 000004
【図４】
0003845789.tif 000005
【図５】
0003845789.tif 000006
【図６】
0003845789.tif 000007
【図７】
0003845789.tif 000008
【図８】
0003845789.tif 000009
【図９】
0003845789.tif 000010
【図１０】
0003845789.tif 000011
【図１１】
0003845789.tif 000012
【図１２】
0003845789.tif 000013