(57)【特許請求の範囲】
【請求項１】
複数の印刷ジョブの各印刷データを並列的に受信できる受信手段と、
前記受信手段が受信した各印刷ジョブの印刷データからそれぞれ所定単位で中間コードを並列的に生成できる中間コード生成手段と、
前記中間コードからビットイメージを生成するイメージ生成手段と、
各中間コードに対応する印刷要求を前記複数の印刷ジョブについて並列的に生成する印刷要求生成手段と、
生成された印刷要求を発行する印刷管理手段と、
前記印刷管理手段からの印刷要求に対応する中間コードから生成されたイメージデータに基づいて印刷を行う印刷機構と
を有し、
前記印刷管理手段は、以下の（Ａ）乃至（Ｄ）の処理を実行する、
（Ａ）各印刷ジョブについて、初めて印刷要求が生成された場合に、印刷ジョブを印刷待ちとし、
（Ｂ）或る印刷ジョブの印刷要求を基に印刷を行う場合、前記印刷機構の使用権の獲得要求を出し、その要求に応じて前記印刷機構の使用権を獲得できたならば、当該印刷ジョブの印刷要求を前記印刷機構に発行し、未だ印刷すべきページが残っているにも関わらず、印刷要求が存在しない状態が一定時間経過したならば、前記印刷機構の使用権を放棄し、該使用権が放棄された印刷ジョブを印刷中断中とし、
（Ｃ）その際、複数の他の印刷ジョブが印刷待ちである場合には、それら複数の他の印刷ジョブの中から所定の判断によりいずれかを選択し、選択された他の印刷ジョブに前記印刷機構の使用権を譲り、
（Ｄ）該使用権を譲り受けた他の印刷ジョブについても、印刷要求が存在しない状態が一定時間経過したならば、該使用権を放棄し、該放棄した使用権を、前記印刷中断中の印刷ジョブに戻す、
印刷装置。
【請求項２】
複数の印刷ジョブの各印刷データを並列的に受信するステップと、
前記受信した各印刷ジョブの印刷データからそれぞれ所定単位で中間コードを並列的に生成するステップと、
前記中間コードからビットイメージを生成するステップと、
各中間コードに対応する印刷要求を前記複数の印刷ジョブについて並列的に生成するステップと、
各印刷ジョブについて、初めて印刷要求が生成された場合に、印刷ジョブを印刷待ちとするステップと、
或る印刷ジョブの印刷要求を基に印刷を行う場合、前記印刷機構の使用権の獲得要求を出すステップと、
その獲得要求に応じて前記印刷機構の使用権を獲得できたならば、当該印刷ジョブの印刷要求を印刷機構に発行するステップと、
前記発行された印刷要求に対応する中間コードから生成されたイメージデータに基づいて印刷機構により印刷を行うステップと、
前記印刷機構の使用権が獲得された前記或る印刷ジョブについて、未だ印刷すべきページが残っているにも関わらず、印刷要求が存在しない状態が一定時間経過したならば、前記印刷機構の使用権を放棄するステップと、
該使用権が放棄された印刷ジョブを印刷中断中とするステップと、
複数の他の印刷ジョブが印刷待ちである場合には、それら複数の他の印刷ジョブの中から所定の判断によりいずれかを選択し、選択された他の印刷ジョブに、前記放棄した使用権を譲るステップと、
該使用権を譲り受けた他の印刷ジョブについても、印刷要求が存在しない状態が一定時間経過したならば、該使用権を放棄し、該放棄した使用権を、前記印刷中断中の印刷ジョブに戻すステップと
を有する印刷制御方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、複数の印刷データを所定の順番で印刷する印刷装置に関する。
【０００２】
【従来の技術】
従来の印刷装置は、データ処理装置との間で１対１のローカル接続により使用されるのが通常であり、このため、印刷装置におけるデータ処理装置との接続インターフェースは、接続すべきデータ処理装置に適合する単一種の接続インターフェースを１つだけ備えるものが一般的であった。
【０００３】
しかし、近時における情報処理環境の変化に伴い、印刷装置には、複数種類の異なるインターフェースを有するデータ処理装置に対応できることが要求されてきている。このような要求に対応して、例えば、シリアルポート，パラレルポート等の複数の入力インターフェース（以下、入力ポート）を備える印刷装置が提供されている。
【０００４】
このような複数の入力ポートを持つ印刷装置の一例を図２８に示す。図２８において、印刷装置３０は、例えば、４台のデータ処理装置（以下、ホストと略称する）Ｈ（Ｈ１〜Ｈ４）に対し、入力ポートＰ（Ｐ１〜Ｐ４）を介して接続されており、また、各入力ポートＰ（Ｐ１〜Ｐ４）には、それぞれ所定容量のバッファメモリＢ（Ｂ１〜Ｂ４）が設けられている。
【０００５】
以上の構成において、ホストＨから各入力ポートＰに対して、図２９に示すようなタイミングで印刷のためのコマンド及びデータ（以下、印刷ジョブ）が入力され、それが各バッファメモリＢに蓄積されるとする。このとき、印刷装置３０は、まず、ホストＨ１から入力された印刷ジョブに基づく印刷を行い、続いて、ホストＨ３，ホストＨ２，ホストＨ４から入力された印刷ジョブに基づく印刷を行う。従来の印刷装置３０による印刷順がこのようになるのは、図２９に示すように、各入力ポートＰへの印刷データ転送開始順に画像形成処理が実行されて図示しない印刷機構への印刷要求が発行され、その印刷ジョブが終了した時点で次着の印刷ジョブに基づく画像形成処理が実行されるようになっているためである。
【０００６】
【発明が解決しようとする課題】
このように、従来の印刷装置３０では、先着の印刷ジョブのものから順に印刷が始まり、その印刷ジョブが終わらない限りは他の印刷ジョブに基づく印刷が始まらないようになっていたため、以下のような問題があった。
【０００７】
例えば図２９に示す例に基づいて説明すると、ホストＨ２〜Ｈ４から送られた印刷ジョブは、ホストＨ１に入力される印刷ジョブよりも早く印刷実行可能な状態となってるにも拘わらず、印刷データ転送開始時期が遅かったために、ホストＨ１からの印刷ジョブが終了するまで待機状態となる。このため、すべての印刷ジョブを終了するまでに、かなりの待機時間が含まれることとなり、印刷装置３０における総印刷時間が長引くばかりか、待機状態となっているホストのオペレータにあっては苛々の種となっている。これは、印刷要求に基づく印刷を実行する印刷機構が一つだけなので、印刷要求が出された後の処理は直列的に実行されるのみのためである。
【０００８】
図３０に印刷要求が出された後の処理のフローを示す。図３０に示すように、一の印刷ジョブに対応する印刷要求（[1]とする）が出されると、印刷機構が使用中がどうかの問い合わせが出され（ステップＳ０１）、印刷機構が使用中でない場合（ステップＳ０２：No）は、どの出力トレイを使用するか問い合わせをし（ステップＳ０３）、出力トレイが獲得できた場合には（ステップＳ０４：Yes）印刷機構に出力トレイを指示する（ステップＳ０５）。出力トレイが獲得できないときには（ステップＳ０４：No）、印刷機構に出力トレイをデフォルト値にするように指定し、同時に出力位置を右もしくは左に少しずらすように指定する（ステップＳ０６）。その後、最初の印刷単位であるｎ[1]の中間コードを印刷機構に送信して印刷し（ステップＳ０７）、総印刷枚数ｐ[1]が０になるまで印刷を繰り返す（ステップＳ０８およびＳ０９）、印刷が終了すると、印刷機構の印刷権を放棄を通知し（ステップＳ０１０）、出力トレイの使用終了を通知する（ステップＳ０１１）。一方、ステップＳ０２で印刷機構が使用中の場合には、印刷機構が空くまでステップＳ０１の問い合わせを繰り返すことになる。
【０００９】
このように上述した優先順位に基づいて印刷要求が出されると、その後の印刷は印刷要求が出された順に直列的に実行されるので、例えば、印刷枚数の多い印刷を実行していると、たった一枚の印刷であっても印刷中の印刷が終了するまでは待たされるという問題がある。
【００１０】
本発明の課題は、上記問題点を解消し、複数の印刷ジョブの印刷を最適な順で実行することができる印刷装置を提供することにある。
【００１１】
【課題を解決するための手段】
上記課題を解決する本発明の印刷装置の基本構成は、複数の印刷ジョブの各々に対応する印刷データを受信する受信手段と、この受信手段が受信した各印刷データからそれぞれ中間コードを生成する中間コード生成手段と、生成済みの各中間コードについての印刷要求をそれぞれ発行する印刷要求生成手段と、この印刷要求生成手段が発行した各印刷要求の受付順に、該当する中間コードに基づく印刷を行う印刷機構とを備え、さらに、所定条件下で印刷処理中の印刷ジョブを中断させて前記印刷待ちの印刷ジョブの印刷を実行させる印刷管理手段を有することを特徴とする。
【００１２】
かかる構成により、実行中の印刷ジョブの処理を続けるより、他の印刷待ちの印刷ジョブを実行した方が、印刷処理の順番が最適である、あるいは印刷機構の利用が効率よくできるというような場合には、実行中の印刷ジョブを中断することができる。
【００１３】
ここで、前記印刷管理手段は、例えば、実行中の印刷ジョブの未処理枚数より他の印刷待ちの印刷ジョブの印刷枚数が少なく、その差が所定以上である場合に実行中の印刷ジョブの実行を中断させる。
【００１４】
これにより、印刷待機中の印刷ジョブの印刷枚数が少ない場合に、優先的に印刷させることができる。
【００１５】
また、前記印刷管理手段は、例えば、実行中の印刷ジョブの印刷処理待機時間が所定以上に長い場合に該印刷ジョブの実行を中断させる。
【００１６】
これにより、実行中の印刷ジョブの印刷が有効に処理されていない場合、実行中の印刷ジョブの実行を中断し、他の印刷待ちの印刷ジョブを実行し、印刷機構の有効利用を図ることができる。
【００１７】
ここで、前記印刷処理待機時間は、例えば、実行中の印刷ジョブの一群の中間コードの生成完了から次の一群の中間コードの生成までの時間で計時する。
【００１８】
これにより、実行中の印刷ジョブの印刷が、中間コードの生成に時間がかかるなどして有効に処理されていないことにより印刷処理が待機中である場合に、実行中の印刷ジョブの実行を中断し、他の印刷待ちの印刷ジョブを実行し、印刷機構の有効利用を図ることができる。
【００１９】
また、前記印刷管理手段は、例えば、複数の印刷待ちの印刷ジョブがある場合には、印刷枚数の最も少ない印刷ジョブに印刷を実行させる。
【００２０】
これにより、印刷枚数の少ない印刷ジョブを優先的に実行できる。
【００２１】
また、前記印刷管理手段は、例えば、複数の印刷待ちの印刷ジョブがある場合には、前記受信手段による該印刷データの受信開始の早い順、前記受信手段による該印刷データの受信完了の早い順、前記中間コード生成手段による中間コード生成開始の早い順、及び前記中間コード生成手段による中間コード生成完了の早い順の何れかの順で優先実行順位の高い印刷ジョブに印刷を実行させる。
【００２２】
これにより、所望の優先順位で印刷ジョブを実行できる。
【００２３】
また、前記印刷管理手段は、例えば、複数の印刷待ちの印刷ジョブの中に中断中の印刷ジョブがある場合には、当該中断中の印刷要求に基づく印刷を他の印刷待ち印刷ジョブよりも優先実行させる。
【００２４】
これにより、一度中断された印刷ジョブが優先的に実行される。
【００２５】
また、前記印刷管理手段は、例えば、実行中の印刷ジョブを中断させる際に、所定条件下で次に印刷を実行させる印刷ジョブを指定する。
【００２６】
これにより、少ない印刷枚数の印刷ジョブを優先的に実行させたりすることができる。
【００２７】
また、前記印刷管理手段は、例えば、実行中の印刷ジョブを中断させる際に、所定条件下で次の次に印刷を実行させる印刷ジョブを指定する。
【００２８】
これにより、さらに、例えば、他の印刷枚数の少ない印刷ジョブを優先的に実行されるようにできる。
【００２９】
また、前記印刷管理手段は、例えば、実行中の印刷ジョブを中断させる際に、所定条件下で次の次に印刷を実行させる印刷ジョブとして当該中断させた印刷ジョブを指定する。
【００３０】
これにより、一度中断した後、自分が優先的に実行されるようにできる。
【００３１】
また、前記印刷管理手段は、例えば、前記次の次に指定した印刷ジョブに印刷を実行させる際に、当該印刷ジョブの未印刷枚数と、他の印刷待ちの印刷ジョブの印刷枚数とを比較し、所定条件下で他の印刷ジョブの印刷の実行を優先させる。
【００３２】
これにより、一度中断した後、例えば、他の印刷待ちの印刷ジョブの未印刷枚数との比較により、所定の場合に自分が優先的に実行されるようにできる。
【００３３】
また、例えば、出力トレイを複数備え、前記印刷管理手段は、並列的に処理されている前記各印刷ジョブに基づく印刷物をジョブ毎にそれぞれ異なる出力トレイに出力するようにする。
【００３４】
これにより、複数の印刷ジョブを並列的処理し、印刷物を複数の出力トレイに並列的に出力できる。
【００３５】
また、前記受信手段は、複数の入力インターフェースを有し、前記複数の印刷ジョブが、該当する入力インターフェースを介して並列的に受信されるように構成されていてもよい。
【００３６】
これにより、複数の入力インターフェースから入力される複数の印刷ジョブを並列的に処理できる。
【００３７】
また、前記受信手段は、ネットワーク用インターフェースを有し、前記複数の印刷ジョブが、このネットワーク用インターフェースを介して並列的に受信されるように構成されていてもよい。
【００３８】
これにより、ネットワーク用インターフェースから入力される複数の印刷ジョブを並列的に処理できる。
【００３９】
【発明の実施の形態】
以下、本発明の実施形態を図面に基づいて詳細に説明する。
【００４０】
（第１実施形態）
図１は、本発明の第１実施形態に係る印刷装置の機能ブロック図である。図１に示すように、この実施形態による印刷装置１は、印刷データ受信部２（２−１，２−２，２−３）、各印刷データ受信部が受信した印刷データを記憶する印刷データ記憶部である受信バッファ２ａ（２ａ−１，２ａ−２，２ａ−３）、中間コード生成部３（３−１，３−２，３−３）、各中間コード生成部３（３−１，３−２，３−３）が生成した中間コードをそれぞれ記憶する中間コード記憶部となる中間コードバッファ３ａ（３ａ−１，３ａ−２，３ａ−３）、印刷要求管理部４（４−１，４−２，４−３）、印刷機構管理部５、印刷機構６、出力トレイ７（７−１，７−２，７−３）を有している。
【００４１】
ここで、印刷データ受信部２、中間コード生成部３、及び印刷要求管理部４はタイムシェアによる並行処理が可能なマイクロプロセッサ（ＣＰＵ）を備えたコントローラ内に形成されており、このＣＰＵによって所要の機能が付与され、あるいは制御されるようになっている。また、図示を省略してあるが、中間コード生成部３の後段には、生成された中間コードに対応する印刷要求を生成する印刷要求作成部、さらに、印刷機構６の前段には、実画像であるビットイメージ（実画像データ）を生成する実画像データ生成手段が設けられている。
【００４２】
印刷データ受信部２（２−１，２−２，２−３）は、それぞれホストＨ（Ｈ１〜Ｈ３）から送られてくる印刷ジョブ（印刷データを含む）を受信するものであり、ホストＨのインターフェースに個別に対応する３つの入力ポートを有している。そして、入力ポート毎に印刷ジョブを蓄積するための領域が受信バッファ２ａである。なお、印刷データの蓄積領域を入力ポート毎に形成するのは後段処理の便宜であって、常にこのようにしなければならないものではなく、受信バッファ２ａの特定の蓄積領域を各入力ポートで共用するようにしてもよい。
【００４３】
中間コード生成部３（３−１，３−２，３−３）は、印刷ジョブにしたがって所定の画像形成処理を実行する際に、当該印刷ジョブの印刷データを一旦中間コードに変換するものである。ここに中間コードとは、個々の印刷データに対する位置情報と、その位置における画像情報（文字であればビットマップデータ、図形であれば形状データ、写真等であればイメージデータ）とから構成される。印刷データを中間コードに変換するのは、印刷データから直接実画像データを生成すると画像形成処理が複雑化して時間がかかること、さらには、保存時に実画像データよりも中間コードの方がサイズが小さいのが通常だからである。生成された中間コードは、実画像データ生成手段によって随時実画像データに展開ないし圧縮され、印刷機構６からの指示があるまで保存される。
【００４４】
印刷要求管理部４（４−１，４−２，４−３）は、それぞれ中間コード生成部３（３−１，３−２，３−３）で生成された中間コードについて生成された印刷要求を管理し、各印刷要求を所定の手順で印刷機構６へ発行するものである。
【００４５】
本実施形態では、各印刷要求管理部４が、所定の判断をするための情報として、印刷ジョブの状況情報Ａ及び状況情報Ｂを各印刷ジョブ毎に有している。これらの印刷ジョブの状況情報Ａ及び状況情報Ｂは、例えば、図３に示すような構造を有し、ＲＡＭ等に設けられる。印刷ジョブの状況情報Ａは、各ホストＨ１〜Ｈ３から受信した印刷ジョブ１〜３が印刷中か、印刷待ち状態か、あるいはそれ以外かを示し、また、印刷ジョブの状況情報Ｂは、各印刷ジョブ１〜３が状況情報Ａの状態での残り枚数を示し、図では、印刷ジョブ１は印刷中で印刷しようとしている未印刷枚数が２０枚、ホストＨ３が印刷待ち状態で、全枚数が２枚であることを示す。なお、これらの状況情報Ａ及びＢは、各印刷ジョブに対応して存在するが、これらのメモリ内の格納領域は、最初から全てを確保するようにしてもよいし、各印刷ジョブ１〜３が発生した時点で一つずつ確保するようにしてもよい。
【００４６】
印刷機構管理部５は、印刷機構６の状況を管理するもので、印刷機構６が使用中である場合にフラグＥをたてるようになっている。また、印刷機構管理部５は、出力トレイ７の空き情報を示す空き出力トレイの管理情報Ｃ及び管理情報Ｄを管理する。空き出力トレイの管理情報Ｃ及び管理情報Ｄは、例えば、図４に示すような構造を有し、管理情報Ｃは各出力トレイ７（７−１〜７−３）が使用中か未使用かを示し、管理情報Ｄはその出力トレイが何れの印刷要求管理タスクに使用されているかを示す。図では出力トレイ７−１は使用中で、印刷要求管理タスク１に使用されており、出力トレイ７−２は未使用であり、出力トレイ７−３は使用中で、印刷要求管理タスク２に使用されていることをそれぞれ示している。なお、フラグＥ、及び管理情報Ｃ及びＤは、それぞれＲＡＭ等の所定の場所に設けられるが、これらの領域は最初から確保しておいてもよいし、必要に応じて確保してもよい。
【００４７】
印刷機構６は図示しないエンジンを有し、印刷要求管理部４が発行した印刷要求を受け付けた順に中間コードに対応する実画像データを取得して用紙への印刷を実行する。
【００４８】
出力トレイ７（７−１，７−２，７−２）は、印刷結果物を出力するためのものであり、複数（図示の場合は３）の印刷データに基づく印刷結果物をそれぞれ別に出力できるようになっている。
【００４９】
上述の実施形態では、印刷データ受信部２にホストＨ１〜Ｈ３に個別的に対応する複数の入力ポートを設けたものとして説明しているが、例えば図２に示すように、複数のホストＨ１〜Ｈｎからの印刷ジョブ及びそれに伴う印刷データを一つのネットワーク用ポート２ｂ及び前述のＣＰＵにより、並列的に受信する構成も可能である。すなわち、あるホストからのデータ受信中に、他のホストからのデータ受信があった場合、ＣＰＵをタイムシェアしながら、稼働中の受信プログラムにより印刷データを並列的に受信することで、あたかも複数の入力ポートを備えた場合と同様の処理が実現される。
【００５０】
何れの場合においても、複数のホストＨから並列的に印刷ジョブ及びそれに伴う印刷データを受信するために複数の受信処理が並列的に実行される。
【００５１】
複数のホストからの印刷ジョブ及びそれに伴う印刷データを並列的に受信する手順の一例を図５に示す。
【００５２】
図５において、あるホストからのデータ受信中に、他のホストからのデータ受信があった場合、つまり印刷ジョブ及びそれに伴う印刷データの受信要求があった場合（ステップＳ１１：YES）、印刷データ受信部２は、対応する受信プログラムを起動し（ステップＳ１２）、ＣＰＵをタイムシェアしながら、稼働中の受信プログラムにより印刷データを並列的に受信する（ステップＳ１３）。受信された印刷データは、それぞれ印刷データ記憶部である受信バッファ２ａの該当領域に順次蓄積される。あるホストがデータ受信を終了した場合（ステップＳ１４：YES）、印刷データ受信部２は、対応する受信プログラムを停止して格納する（ステップＳ１５）。以上の処理を全ホストについて行い、全ホストからのデータ受信が終了した場合は（ステップＳ１６：YES）、データ受信処理を終える。
【００５３】
また、複数ホストＨから受信されてそれぞれ印刷データ記憶部２ａの該当領域に順次蓄積された印刷データを、中間コード生成部３が並列的に処理して中間コードに変換する手順の一例を図６に示す。
【００５４】
図６において、ある印刷データを中間コード生成中に他の印刷データが蓄積された場合、つまり印刷データの中間コード生成要求があった場合（ステップＳ２１：YES）、中間コード生成部３は、対応する中間コード生成プログラムを起動し（ステップＳ２２）、ＣＰＵをタイムシェアしながら、稼働中の中間コード生成プログラムにより印刷データを並列的に中間コードに変換する（ステップＳ２３）。ある印刷データの中間コードへの変換が終了した場合（ステップＳ２４：YES）、中間コード生成部３は、対応する中間コード生成プログラムを格納する（ステップＳ２５）。以上の処理を全印刷データについて行い、全印刷データの中間コードへの変換を終了した場合は（ステップＳ２６：YES）、中間コード生成処理を終える。
【００５５】
以上説明した並列的なデータ受信処理または並列的な中間コード生成処理において、対応するプログラムを起動する（ステップＳ１２、Ｓ２２）とは、例えば、ＲＯＭにデータ受信処理あるいは中間コード生成処理用のプログラムを一つ有し、その一つのプログラムをＲＯＭで実行している場合に、そのプログラムをＲＡＭにコピーしてＲＡＭ上でコピーしたプログラムを実行し、両者をＣＰＵをタイムシェアしながら並列的に実行する場合をいう。また、最初からＲＯＭにそれぞれ複数のプログラム、例えば、言語に応じた複数のプログラムを有し、これらの複数のプログラムをＣＰＵをタイムシェアしながら並列的に実行する場合をいう。あるいは、ＲＯＭ等に格納されているデータ受信処理あるいは中間コード生成処理用のプログラムがリエントラントなものであり、必要に応じて複数の処理をＣＰＵをタイムシェアしながら並列的に実行可能な場合等をいう。
【００５６】
なお、上述した図１の印刷データ受信部２−１，２−２，２−３、及び中間コード生成部３−１，３−２，３−３はこのような状態を模式的に示したものである。すなわち、印刷データ受信部２−１，２−２，２−３、及び中間コード生成部３−１，３−２，３−３は、それぞれ並列的に実行可能な各タスクに対応するものであるが、図示した数は単なる例示であり、この数に限定されないのは言うまでもない。
【００５７】
また、本実施形態では、印刷要求管理部４−１，４−２，４−３による印刷要求管理処理も同様に並列的に実行可能であり、各印刷要求管理部４−１，４−２，４−３は、それぞれ並列的に実行可能な各タスクに対応する。
【００５８】
さらに、印刷データ受信部２、中間コード生成部３、印刷要求管理部４、及び印刷機構管理部５による各タスクはＣＰＵをタイムシェアしながら並列的に実行される。これらのタスクには優先順位が定められており、各タスクは、その優先順位に基づいて、一般に、数ｍｓｅｃオーダの時間単位で交互に実行されるようになっている。このように各種タスクを交互に実行するに際して、次にどのタスクにＣＰＵの利用権利を渡すかの選択は、例えば、１ｍｓｅｃ以下のオーダで実行されるプログラムの集合体であるリアルタイムモニタが、各タスクの優先順位等を参照しながら決定している。
【００５９】
次に、本実施形態における処理の流れを順次説明する。
【００６０】
まず、印刷データの受信処理を実行する印刷データ受信タスク（図１の印刷データ受信部２−１，２−２，２−３のそれぞれに対応してタスク１〜３が存在する）、及び受信データの中間コードへの変換処理を行う中間コード生成タスク（図１の中間コード生成部３−１，３−２，３−３のそれぞれに対応してタスク１〜３が存在する）の処理フローをそれぞれタスク１を代表して説明する。
【００６１】
図７には印刷データ受信タスク１の処理を示す。図７に示すように、まず、ホストＨ１から受信データを受信し（ステップＳ３１）、受信した受信データを受信バッファ２ａ−１に格納する（ステップＳ３２）。
【００６２】
図８には中間コード生成タスク１の処理を示す。図８に示すように、まず、受信バッファ２ａ−１から受信データを取り出し（ステップＳ３５）、取り出した受信データを中間コードへ変換し（ステップＳ３６）、生成した中間コードを中間コードバッファ３ａ−１に格納する（ステップＳ３７）。
【００６３】
このように生成された中間コードに対応して、通常は受信受付順に、あるいは、後述する優先順位決定手段により決定される優先順位に基づいて、図示しない印刷要求作成手段により印刷要求が生成されるが、このように生成された印刷要求に基づく各印刷を所定の手順で実行させるように管理する印刷管理手段として、本実施形態では、印刷要求管理部４及び印刷機構管理部５を有する。
【００６４】
図９及び図１０には、印刷要求管理部４−１，４−２，４−３に対応する印刷要求管理タスク１〜３の代表としての印刷要求管理タスク１の処理を示す。印刷要求が生成されると、まず、印刷ジョブ１に対応する状況情報Ａに印刷待ちを入力し（ステップＳ４１）、状況情報Ｂに総印刷枚数を入力した後（ステップＳ４２）、印刷機構管理部５に印刷機構６が使用中かどうかの問い合わせをする印刷機構獲得要求を出す（ステップＳ４３）。なお、この印刷機構獲得要求は、後述するサブルーチンをコールするものである。
【００６５】
印刷機構が獲得できない場合には（ステップＳ４４：No）、ステップＳ４３に戻り、印刷機構が獲得できた場合には（ステップＳ４４：Yes）、状況情報Ａ[1]に印刷中を入力した後、印刷機構管理部５にどの出力トレイに出力するかを問い合わせる出力トレイ獲得要求を出す（ステップＳ４６）。この出力トレイ獲得要求は、後述するサブルーチンをコールするものである。
【００６６】
出力トレイが獲得できた場合には（ステップＳ４７：Yes）、問い合わせ結果を元に印刷機構６に出力トレイを指定し（ステップＳ４８）、出力トレイが獲得できない場合には（ステップＳ４７：No）、印刷機構６に出力トレイをデフォルト値にするように指定すると同時に、出力位置を右もしくは左に少しずらすように指定する（ステップＳ４９）。
【００６７】
次いで、印刷単位であるｎ[1]ページ分の中間コードを印刷機構６に送って印刷を実行し（ステップＳ５０）、残りの印刷ページ数を示す状況情報Ｂ[1]に（Ｂ[1]−ｎ[1]）を入力し（ステップＳ５１）、Ｂ[1]が０でない場合には印刷を繰り返し（ステップＳ５２：No）、Ｂ[1]が０になった時点で印刷を終了する（ステップＳ５２：Yes）。
【００６８】
ステップＳ５２でＢ[1]が０でない場合には、他の印刷ジョブに対応する状況情報Ａ[2]が印刷待ちかどうかを判断し（ステップＳ５３）、印刷待ちでない場合にはさらに他の印刷ジョブに対応する状況情報Ａ[3]が印刷待ちかどうかを判断する（ステップＳ５４）。
【００６９】
ステップＳ５３でＡ[2]が印刷待ちの場合には、印刷待ちの総ページ数が印刷実行中の自分の残りのページ数より十分に小さいかどうか、すなわち、（Ｂ[1]／ｍ）≧Ｂ[2]かどうかを判断する（ステップＳ５５）。ここで、ｍはＢ[2]がＢ[1]より十分に小さいかどうかを判定するための係数であり、例えば、１０位の数字である。ステップＳ５４でＡ[3]が印刷待ちの場合には、同様にしてステップＳ５６で印刷待ちの総ページ数が自分の残りのページ数より十分に小さいかどうか、すなわち、（Ｂ[1]／ｍ）≧Ｂ[3]かどうかを判断する。印刷待ちのページ数が印刷実行中の自分の残りページより十分に小さい場合には（ステップＳ５５：Yes、ステップＳ５６：Yes）、印刷機構管理部５に印刷機構６の印刷権放棄を通知し（ステップＳ５７）、Ａ[1]に印刷待ちを入力した後（ステップＳ５８）、ステップＳ４３に戻る。なお、ステップＳ５７は後述の印刷機構返却通知サブルーチンをコールするものである。
【００７０】
一方、ステップＳ５２でＢ[1]が０となって印刷が終了した場合には、印刷機構管理部５に印刷機構６の印刷権放棄を通知する印刷機構返却通知を行い（ステップＳ５９）、次いで、印刷機構管理部５に出力トレイの使用終了を通知する出力トレイ返却通知を行い（ステップＳ６０）、状況情報Ａ[1]にその他を入力して処理を終了する（ステップＳ６１）。なお、ステップＳ５９は、後述の印刷機構返却通知サブルーチンをコールするものであり、ステップＳ６０は、後述する出力トレイ返却通知サブルーチンをコールするものである。
【００７１】
図１１には、図９のステップＳ４３でコールされる印刷機構獲得要求サブルーチンの処理フローを示す。図１１に示すように、まず、印刷機構使用中フラグＥで使用中かどうかを判断して使用中の場合には（ステップＳ７１：Yes）、問い合わせてきた印刷要求管理タスクｐ（ｐは問い合わせてきた印刷要求管理タスクの番号を示し、この場合のｐは１である）に「印刷機構を獲得できない」を返す（ステップＳ８２）。
【００７２】
一方、印刷機構６が使用中でない場合には（ステップＳ７１：No）、以下のステップで他に印刷待ちの印刷要求管理タスクがあるかどうかを調べて他の印刷要求管理タスクの方が印刷枚数が少ない場合にはそちらの印刷要求管理タスクを優先させる。
【００７３】
すなわち、印刷枚数が状況情報Ａ[1]〜Ａ[3]の中からＡ[p]以外の「印刷待ち」を探し（ステップＳ７２）、存在した場合には（ステップＳ７３：Yes）、それに対応する印刷ジョブ番号を決定してその番号をβ１とし（ステップＳ７４）、その印刷要求管理タスクの未印刷枚数を示す状況情報Ｂ[β1]が問い合わせ中の印刷要求管理タスクの状況情報Ｂ[p]より多いかどうかを判断して多くない場合には（ステップＳ７５：No）、β１の印刷要求管理タスクに印刷機構が渡るように問い合わせ中の印刷要求管理タスクには「印刷機構が獲得できない」を返す（ステップＳ８２）。
【００７４】
他の印刷要求管理タスクの方が多い場合には（ステップＳ７５：Yes）、状況情報Ａの中からＡ[p]及びＡ[β1]以外の「印刷待ち」を探す（ステップＳ７６）。存在する場合には（ステップＳ７７：Yes）、それに対応する印刷ジョブ番号を決定してその番号をβ２とし（ステップＳ７８）、ステップＳ７５と同様に印刷状況Ｂ[β2]がＢ[p]より多いかどうかを判断して多くない場合には（ステップＳ７９：No）、β２の印刷要求管理タスクに印刷機構が渡るように問い合わせ中の印刷要求管理タスクには「印刷機構が獲得できない」を返す（ステップＳ８２）。
【００７５】
他の印刷要求管理タスクの方が多い場合には（ステップＳ７９：Yes）、フラグＥを使用中にし（ステップＳ８０）、印刷要求管理タスクｐに「印刷機構を獲得できた」を返す（ステップＳ８１）。
【００７６】
なお、上述した処理は他の印刷要求管理タスクが２つある例を示したが、さらに他の印刷要求管理タスクがある場合には、例えば、ステップＳ７２〜Ｓ７５をさらに繰り返すようにする。
【００７７】
図１２には、図９のステップＳ４６でコールされる出力トレイ獲得要求サブルーチンの処理フローを示す。図１２に示すように、まず、出力トレイを使用中の印刷要求管理タスクの番号を示す管理情報Ｄの中に出力トレイ獲得要求をしている印刷要求管理タスクの番号ｐが存在するかどうかを検索し（ステップＳ９１）、使用中出力トレイが存在する場合には（ステップＳ９２：Yes）、要求を出している印刷要求管理タスクｐにその印刷要求管理タスクが使用中の出力トレイ番号を返す（ステップＳ９３）。使用中の出力トレイがない場合には（ステップＳ９２：No）、出力トレイの使用状況を示す管理情報Ｃに「未使用」が在るかどうかを検索し（ステップＳ９４）、存在する場合には（ステップＳ９５：Yes）、検出した管理情報Ｃに「使用中」を入力するとともに使用中の印刷要求管理タスク番号を示す管理情報Ｄにｐを入力し（ステップＳ９６）、見つけだした空き状態の出力トレイ番号を返す（ステップＳ９７）。また、未使用の出力トレイが存在しない場合には（ステップＳ９５：No）、印刷要求管理タスクｐに出力トレイを獲得できない」旨を返す（ステップＳ９８）。
【００７８】
図１３には、図１０のステップＳ５７及びＳ５９の印刷機構返却通知サブルーチンを示し、印刷機構の使用状況を示すフラグＥを未使用状態にする処理を行う（ステップＳ１０１）。
【００７９】
また、図１４には図１０のステップＳ６０の出力トレイ返却通知サブルーチンを示し、管理情報Ｄの中から番号ｐを探してそれに対応する出力トレイ番号を決定してその番号をα１とし（ステップＳ１０５）、その番号に対応する管理情報Ｃ[α1]に未使用を入力する（ステップＳ１０６）。
【００８０】
以上説明した第１実施形態では、印刷要求管理タスク１による印刷実行中に図１０のステップＳ５３で他の印刷待ちの印刷ジョブの印刷枚数が自分と比較して大幅に少ない場合には印刷機構の使用権を放棄する。そして、使用権を放棄した後は、他の印刷要求管理タスクが印刷機構獲得要求を行い、図１１のステップＳ７２〜Ｓ７９で印刷枚数の一番少ない印刷要求管理タスクに印刷機構が使用されるようになる。なお、このように印刷枚数の少ない印刷ジョブが優先的に処理されるのは、例えば、印刷要求管理タスク１の処理が全て終わった際に複数の印刷要求管理タスクが印刷待ちをしている場合も同様である。
【００８１】
なお、他に印刷枚数の少ない印刷要求管理タスクが印刷待ちをしていると判断して印刷機構の使用権を放棄した際に、複数の印刷要求管理タスクが印刷待ちをしているのが希であると考えれば、ステップＳ７２〜Ｓ７９の判断は必ずしも必要ない。また、同様の効果は、以下の実施形態でも同様に得ることが可能である。
【００８２】
以上の実施形態における処理の流れの一例を図１５に示す。図１５においては、まず、ホストＨ２からのデータが受信されて印刷データ受信タスク２が実行され、中間コード生成タスク２及び印刷要求管理タスク２が順次実行される。次に、ホストＨ１からの印刷データが受信されて印刷データ受信タスク１が実行され、中間コード生成タスク１及び印刷要求管理タスク１が順次実行される。この印刷実行中にホストＨ３から印刷データが受信されて印刷データ受信タスク３が実行され、さらに中間コード生成タスク３及び印刷要求管理タスク３が実行され、印刷要求管理タスク３が印刷待ち状態（Ｘ１）になる。このような場合、従来においては、印刷要求管理タスク１の印刷終了まで印刷待ち状態が続くが、本実施形態では、印刷要求管理タスク１が印刷待ち状態の印刷要求管理タスク３の印刷枚数が少ないと判断して印刷機構の使用権を一時的に放棄することにより使用権が印刷要求管理タスク３に移行する（Ｘ２）。
【００８３】
また、印刷要求管理タスク３の印刷が終了した際に印刷機構の使用権が放棄されるが、このとき、印刷要求管理タスク２も印刷待ち状態になっている（Ｘ３）。この場合、印刷要求管理タスク１と印刷要求管理タスク２との印刷枚数の比較により、印刷枚数の少ない印刷要求管理タスク２に印刷機構が移行する（Ｘ４）。なお、この場合、印刷要求管理タスク２の方の印刷枚数が少ないので、上述した実施形態では印刷機構６の使用権が印刷要求管理タスク２に移行してしまうが、例えば、状況情報Ａに印刷中断中という情報を付加して、印刷中断中の印刷要求管理タスクに優先的に印刷機構６が移行するようにしてもよい。
【００８４】
また、本実施形態では、複数の印刷待ちの印刷要求管理タスクが存在する場合には、印刷枚数が少ない印刷要求管理タスクが優先的に実行されるようにしたが、例えば、印刷データ受信部２による印刷データの受信開始の早い順、印刷データ受信部２による印刷データの受信完了の早い順、中間コード生成部３による中間コード生成開始の早い順、及び中間コード生成部３による中間コード生成完了の早い順などの何れかの順で優先実行順位を決定し、この情報を状況情報Ａに付加して、優先実行順位の高い印刷ジョブに印刷を実行させるようにしてもよい。
【００８５】
（第２実施形態）
以下に説明する実施形態では、他に印刷枚数の少ない印刷要求管理タスクが印刷待ちをしていると判断して印刷機構の使用権を放棄した際に、印刷機構を次にどこに渡すかを指定することにより、印刷枚数の多い印刷ジョブの実行中に印刷枚数の少ない印刷ジョブが優先的に実行されるようにしたものである。また、印刷を一時的に中断して印刷機構を他の印刷要求管理タスクに渡した後、その印刷ジョブ終了後に、印刷機構使用権が自分に戻るように、印刷機構の一時的な放棄の際に次の次にどの印刷要求管理タスクに印刷機構の使用権を渡すかを指定できるようにしたものである。
【００８６】
図１６は、本実施形態を実施するための機能ブロック図である。本実施形態の印刷装置１０の印刷機構管理部５０は、フラグＥ、管理情報Ｃ及び管理情報Ｄの他に、管理情報Ｆ及び管理情報Ｇを有する。管理情報Ｆは、次に印刷機構の使用権を渡すべき印刷要求管理タスクの番号を示し、管理情報Ｇは、次の次に印刷機構の使用権を渡すべき印刷要求管理タスクの番号を示すものである。これらの管理情報Ｆ及びＧは、印刷要求管理タスクが一時的に印刷機構の使用権を放棄する際にセットされ、印刷機構獲得要求サブルーチンにおいて参照されてＦ及びＧの指定にしたがって印刷機構の使用権が渡され、且つ不要になったＦ及びＧはリセットされる。なお、使用権を渡すべき相手が指定されていない場合には、Ｆ及びＧには、０が入っているものとする。なお、管理情報Ｆ及び管理情報Ｇは、例えば、管理情報Ｃ及びＤなどと同様に、それぞれＲＡＭ等の所定の場所に設けられるが、これらの領域は最初から確保しておいてもよいし、必要に応じて確保してもよい。
【００８７】
本実施例の印刷データ受信タスク、中間コード生成タスク、及び印刷要求管理タスクの基本的な処理は上述した第１実施例と同様であり、印刷要求管理タスクの処理、及び印刷機構獲得要求サブルーチンの一部に違いがあるだけである。
【００８８】
図１７及び図１８には印刷要求管理タスク１の処理フローを示すが、図９及び図１０と同様な処理の部分には同一の符号を伏して重複する説明は省略する。
【００８９】
本実施形態では、印刷実行中に他の印刷待ちの印刷要求管理タスクがあるかどうかを判断し（ステップＳ５３及びＳ５４）、その印刷要求管理タスクの印刷枚数が自分の未印刷枚数より大幅に少ないと判断した場合（ステップＳ５５：Yes、ステップＳ５６：Yes）に、ステップＳ１１１及びステップＳ１１２で、それぞれ管理情報Ｆに、印刷待ちで印刷機構を渡すべき印刷要求管理タスクの番号である２または３を入力し、また、ステップＳ１１３で、その印刷機構を渡すべき印刷要求管理タスクの印刷が終了した後に印刷機構が自分に移行されるように、管理情報Ｇに自分の番号１を入力する。
【００９０】
図１９には、管理情報Ｆ及びＧの一例を示し、管理情報Ｆには、次に印刷機構の使用権を渡すべき印刷要求管理タスクの番号３が入力され、管理情報Ｇには、次の次に印刷機構が自分に戻ってくるように自分の印刷要求管理タスク番号１が入力してある。
【００９１】
図２０には、印刷機構獲得要求サブルーチンを示す。このサブルーチンでは、フラグＥが使用中でなかった場合に（ステップＳ７１：No）、上述したようにセットされた管理情報Ｆ及びＧが参照される。
【００９２】
まず、ステップＳ１２１で管理情報Ｆが参照されてＦに印刷要求中の印刷要求管理タスクの番号であるｐがあるかどうかを判定し、ｐがあった場合には、ステップＳ１２２でＦに０をセットして、フラグＥを使用中にした後（ステップＳ８０）、印刷要求管理タスクｐに「印刷機構を獲得できた」を返す（ステップＳ８１）。
【００９３】
一方、ステップＳ１２１において管理情報Ｆにｐがなかった場合には、ステップＳ１２３で管理情報Ｆが０かどうかを判断し、０でない場合には、ｐ以外に使用権を渡すべき相手がいると判断して印刷要求管理タスクｐに「印刷機構が獲得できない」旨を返す（ステップＳ８２）。ステップＳ１２３で管理情報Ｆが０の場合には、管理情報Ｇに渡すべき相手の番号がある可能性があると判断して、ステップＳ１２４で、管理情報Ｇに印刷要求中のタスク番号ｐがあるかどうかを判断する。ステップＳ１２４でｐがあった場合には、ステップＳ１２５で管理情報Ｇに０をセットして、フラグＥを使用中にした後（ステップＳ８０）、印刷要求管理タスクｐに「印刷機構を獲得できた」を返す（ステップＳ８１）。ステップＳ１２４でｐがない場合には、ステップＳ１２６でさらにＧが０かどうかを判断し、０でない場合には、ｐ以外に使用権を渡すべき相手がいると判断して印刷要求管理タスクｐに「印刷機構が獲得できない」旨を返す（ステップＳ８２）。また、管理情報Ｇも０の場合には、指定されている印刷要求管理タスクがないと判断して、ステップＳ７２以下の通常の処理に戻る。
【００９４】
以上の処理によると、管理情報Ｆ及びＧによる指定を行うことにより、次に印刷機構を渡すべき印刷要求管理タスク、及び次の次に印刷機構を渡すべき印刷要求管理タスクを指定することができる。
【００９５】
また、このように次の次に印刷機構の使用権を渡すべき印刷要求管理タスクの指定を行うことにより、印刷を中断している印刷要求管理タスクの未印刷枚数より印刷枚数の少ない他の印刷待ちの印刷要求管理タスクが存在しても、印刷を中断している印刷要求管理タスクに印刷機構を優先的に戻すことができる。
【００９６】
このような実施形態における処理の流れの一例を図２１に示す。図２１は図１５と同様な処理を示し、印刷要求管理タスク１の実行中に印刷要求管理タスク３が印刷待ち状態になると（Ｘ１）、印刷要求管理タスク１が印刷待ち状態の印刷要求管理タスク３の印刷枚数が少ないと判断して印刷機構の使用権を一時的に放棄することにより使用権が印刷要求管理タスク３に移行し（Ｘ２）、印刷要求管理タスク３の印刷が終了した際に印刷機構の使用権が放棄されるが、このとき、印刷要求管理タスク２も印刷待ち状態になっている（Ｘ３）。この場合、印刷要求管理タスク１と印刷要求管理タスク２との印刷枚数の比較によると、印刷枚数の少ない印刷要求管理タスク２に印刷機構が移行してしまうが（図１５のＸ４）、本実施形態では、次の次に印刷機構の使用権を渡すべき印刷要求管理タスクを自分に指定することにより、印刷中断中の印刷要求管理タスク１に印刷機構が移行する（Ｘ５）。
【００９７】
（第３実施形態）
本実施形態は、第２実施形態において、管理情報Ｆ及び管理情報Ｇの指定の仕方による応用例である。
【００９８】
印刷機構を一時的に放棄する場合に、印刷機構の使用権が移行する印刷機構を指定するが、次の次に自分に必ずしも戻さなくてもよいという場合が考えられる。この場合には、管理情報Ｆに次に印刷機構を渡すべき印刷要求管理タスクの番号を指定し、管理情報Ｇには指定をしないという意味で０を入力する。これにより、印刷機構の使用権を放棄した後、管理情報Ｆの指定により、図２０のステップＳ１２１の判断で、使用権は指定された印刷要求管理タスクに移行する。また、その印刷が終了した後は、図２０のステップＳ７２以降の判断で印刷機構の使用権が移行する。
【００９９】
（第４実施形態）
本実施形態も、第２実施形態において、管理情報Ｆ及び管理情報Ｇの指定の仕方による応用例である。
【０１００】
本実施形態では、次の指定を行わずに印刷機構を一時的に放棄するが、次の次には自分に戻すようにする例である。この場合には、管理情報Ｆに他の印刷要求管理タスクの番号及び０以外の他の特殊な番号、例えば、FFFFhを入力し、管理情報Ｇに自分の番号を入力する。
【０１０１】
そして、印刷機構獲得要求サブルーチンを図２２のように変更する。すなわち、ステップＳ７１でフラグＥが使用中でなかった場合には、まず、ステップＳ１３１で管理情報ＦがFFFFhかどうかを判断し、FFFFhの場合には、ステップＳ１３２で管理情報Ｆに０を入力した後、ステップＳ１３３で管理情報Ｇがｐがどうかを判断し、管理情報Ｇがｐの場合には、印刷機構の使用権を渡さないようにステップＳ８２に移行し、管理情報Ｇがｐでない場合のみ、ステップＳ７２以降の処理で印刷機構の使用権を渡すようにする。なお、ステップＳ１３１で管理情報ＦがFFFFh以外の場合には、第２実施形態のステップＳ１２１以降の処理（図２０参照）と同様な処理となる。
【０１０２】
（第５実施形態）
本実施形態も、第２実施形態において、管理情報Ｆ及び管理情報Ｇの指定の仕方による応用例である。
【０１０３】
本実施形態では、次の指定を行わず、従って、印刷枚数の少ない印刷要求管理タスクに印刷機構の使用権が移行するようになるが、次の次の判断の際には、他の印刷待ちのタスクの印刷枚数が自分と比較して極めて少ない場合には印刷機構の使用権を譲るが、他の印刷要求管理タスクの印刷枚数と自分の未印刷枚数とが似たような枚数であれば自分に優先的に戻すように処理する例である。この場合には、管理情報Ｆに他の印刷要求管理タスクの番号及び０以外の他の特殊な番号、例えば、FFFEhを入力し、管理情報Ｇに自分の番号を入力する。
【０１０４】
そして、印刷機構獲得要求サブルーチンを図２３のように変更する。すなわち、ステップＳ７１でフラグＥが使用中でなかった場合には、まず、ステップＳ１４１で管理情報ＦがFFFEhかどうかを判断し、FFFEhの場合には、ステップＳ１４２で管理情報Ｇがｐがどうかを判断し、管理情報Ｇがｐの場合には、印刷機構の使用権を渡さないようにステップＳ８２に移行し、管理情報Ｇがｐでない場合のみ、ステップＳ１４３で管理情報ＦにFFFDhを入力した後、ステップＳ７２以降の処理で印刷機構の使用権を渡すようにする。
【０１０５】
次に、ステップＳ１４１で管理情報ＦがFFFEhでない場合には、、ステップＳ１４４で管理情報ＦがFFFDhがどうかを判断し、管理情報ＦがFFFDhの場合には、ステップＳ１４５で、印刷待ちとなっている印刷要求管理タスク（管理情報Ｇに指定されている）の未印刷枚数Ｂ[G]が他の印刷待ちのタスクの印刷枚数より十分に大きいかどうかを判断し、十分に大きい場合には他の印刷待ちのタスクに印刷機構の使用権を渡し（ステップＳ１４６）、十分に大きくない場合には、印刷情報Ｆ及びＧに０を入力し（ステップＳ１４７）、印刷を中断中の印刷要求管理タスク（管理情報Ｇに指定されている）に印刷機構の使用権を渡す（ステップＳ１４８）。なお、ステップＳ１４４で管理情報ＦがFFFDh以外の場合には、第２実施形態のステップＳ１２１以降の処理（図２０参照）と同様な処理となる。
【０１０６】
（第６実施形態）
以上説明した各実施形態においては、印刷要求を発生する印刷要求作成部は印刷要求管理タスク４に対して、印刷ジョブの全ページ分をまとめて印刷要求を作成していたような形態となっているが、これは説明をわかりやすくするためであり、実際には、例えば、１ページ分、２ページ分あるいはそれ以上の所定のページ分の中間コードが生成された時点でその分の印刷要求が作成されて印刷要求管理タスク４に管理される。なお、全印刷ページ数は、印刷データに情報として含まれており、この印刷ジョブの最初の印刷要求の作成の際には全印刷枚数の情報も含まれている。
【０１０７】
このような印刷要求が発生した際の印刷要求管理タスクによる処理の状態を示すフローを図２４及び図２５に示す。このフローは基本的には図９及び図１０に示したフローに対応するものであり、同一のステップには同一の符号を付してある。
【０１０８】
まず、印刷要求が生成されると、印刷ジョブ１に対応する状況情報Ａに印刷待ちを入力し（ステップＳ４１）、状況情報Ｂに総印刷枚数を入力した後（ステップＳ４２）、ステップＳ１５１で、印刷要求作成部が印刷ジョブ１から要求された印刷ページ数のうち、まだ印刷していないページ数（未印刷ページ数）を表すＷ[1]を０に設定した後、ステップＳ１５２で印刷要求があったかどうかを判断し、印刷要求があった場合には、未印刷枚数Ｗ[1]を一回の印刷要求による印刷枚数ｎ[1]だけ増やし（ステップＳ１５３）、その後、印刷機構管理部５に印刷機構６が使用中かどうかの問い合わせをする印刷機構獲得要求を出す（ステップＳ４３）。ここで、この印刷機構獲得要求は、上述したサブルーチンをコールするものである。また、印刷機構が獲得できない場合には、ステップＳ１５２から繰り返す。なお、ステップＳ４４〜ステップＳ４９の出力トレイの獲得処理は図９と同様であり、ここでの説明は省略する。
【０１０９】
次いで、印刷単位であるｎ[1]ページ分の中間コードを印刷機構６に送って印刷を実行し（ステップＳ５０）、残りの印刷ページ数を示す状況情報Ｂ[1]に（Ｂ[1]−ｎ[1]）を入力した後（ステップＳ５１）、ステップＳ１５４で、未印刷ページ数Ｗ[1]に（Ｗ[1]−ｎ[1]）を入力する。
【０１１０】
続いて、Ｂ[1]が０でない場合には、ステップＳ１５５で印刷要求があったかどうかを判断し、印刷要求があった場合には未印刷枚数Ｗ[1]を印刷要求の印刷枚数分ｎ[1]だけ増やし（ステップＳ１５６）、印刷要求がなかった場合にはそのまま、ステップＳ１５７でＷ[1]がｎ[1]以上かどうかを判断する。Ｗ[1]がｎ[1]以上の場合には（ステップＳ１５７：YES）、ステップＳ５０に戻ってｎ[1]ページ印刷し、Ｗ[1]がｎ[1]より小さい場合には（ステップＳ１５７：NO）、ステップＳ１５５に戻って次の印刷要求を待つ。
【０１１１】
そして、Ｂ[1]が０になった時点で（ステップＳ５２：Yes）、印刷を終了し、印刷機構管理部５に印刷機構６の印刷権放棄を通知する印刷機構返却通知を行い（ステップＳ５９）、次いで、印刷機構管理部５に出力トレイの使用終了を通知する出力トレイ返却通知を行い（ステップＳ６０）、状況情報Ａ[1]にその他を入 力して処理を終了する（ステップＳ６１）。なお、ステップＳ５９は、前述の印刷機構返却通知サブルーチンをコールするものであり、ステップＳ６０は、前述する出力トレイ返却通知サブルーチンをコールするものである。
【０１１２】
以上のフローでは、図１０のステップＳ５２〜Ｓ５８の処理、すなわち、印刷途中で、他の印刷待ちの印刷ジョブの状態を調べて必要に応じて印刷を中断するという処理は省略してあるが、以上のフローは上述した各実施形態における実際の処理の流れの一例を示すものである。なお、以上説明したフローでは、一回の印刷要求での印刷枚数ｎ[1]を一定の枚数としたが、この値は動的に変化するものであってもよい。
【０１１３】
（第７実施形態）
以上の各実施形態では、特に第６実施形態の説明で明らかなように、一度印刷を開始した印刷ジョブの途中で、例えば、描画の複雑等の理由で中間コードの生成に時間がかかる印刷ページがあった場合、図２５のステップＳ１５５〜Ｓ１５７のステップを繰り返すことになり、実際には印刷を行っていないが、印刷機構を占有しているという無駄な時間が生じてしまう。本実施形態は、このような事態が生じた場合、現在実行中の印刷要求管理タスクが印刷機構の使用権を返却し、他の印刷待ちの印刷要求管理タスクに印刷機構の使用権を受け渡して印刷を行わせることにより、印刷機構をより効率よく使用できるようにするものである。
【０１１４】
図２６及び図２７に本実施形態の処理フローを示す。なお、図２４及び図２５と同一のステップには同一の符号を付して重複する説明は省略する。
【０１１５】
本実施形態では、印刷の途中で続きの印刷要求を待っている時間を計時するタイマーを具備し、印刷要求があった場合に（ステップＳ１５２：YES）、タイマーカウントを０にセットして（ステップＳ１６１）、タイマーをスタートする（ステップＳ１６２）。このタイマーはステップＳ１５５で次の印刷要求があるまでの時間を計時するもので、次の印刷要求があった場合には（ステップＳ１５５：YES）、リセットするために、タイマーをストップし（ステップＳ１６３）、タイマーカウント数を０にセットして（ステップＳ１６４）、タイマーをスタートし（ステップＳ１６５）、ステップＳ１５６に移行する。
【０１１６】
一方、印刷後、次の印刷要求がない場合には（ステップＳ１５５：NO）、ステップＳ１６６でタイマーカウント数を取得して、ステップＳ１６７で所定の時間Ｈとの比較を行い、所定の時間Ｈ以上になった場合には、中間コードの生成に時間がかかっていると判断し、印刷機構６を返却し（ステップＳ５７）、状況情報Ａ[1]に印刷待ちを入力する（ステップＳ５８）。ここで、所定の時間Ｈは、一の印刷要求の印刷枚数ｎ[1]の印刷に要する時間に所定のマージンを加えたものであり、固定値としてもよいし、マージンを可変にして動的に変化させてもよい。なお、ステップＳ５７の印刷機構の返却は、上述の印刷機構返却通知サブルーチンをコールするものである。
【０１１７】
以上の処理により、中間コードの生成に時間がかかったり、またはホスト側あるいはネットワーク等の何らかの理由によりホストからのデータ転送に時間がかかっている場合には、一度、印刷機構６の使用権を放棄して、他の印刷要求管理タスクに印刷機構６の使用権を譲ることにより、印刷機構６をさらに効率よく使用することができる。
【０１１８】
また、本実施形態では、ステップＳ１６７でタイマーカウント数が所定の時間Ｈ以上の場合には、そのまま印刷機構６の使用権を放棄するようにしているが、この場合、他の印刷要求管理タスクが印刷待ちになっているかどうか、すなわち、状況情報Ａが印刷待ちになっているかどうかを判断して、他の印刷要求管理タスクが印刷待ちしているときのみ、あるいはさらに印刷待ちの印刷要求管理タスクの印刷枚数が所定の枚数以下の場合、例えば、自分の未印刷枚数より大幅に少ない場合のみ、印刷機構の使用権を放棄するようにしてもよい。
【０１１９】
なお、印刷を中断した際に複数の印刷待ちの印刷要求管理タスクが存在する場合に、何れの印刷要求管理タスクに印刷機構の使用権が移行するかは、例えば、上記第１実施形態のように印刷枚数が少ない印刷要求管理タスクが優先されてもよいし、あるいは状況情報Ａに印刷中断中という情報を付加して、印刷中断中の印刷要求管理タスクに優先的に印刷機構６が移行するようにしてもよい。また、例えば、印刷データ受信部２による印刷データの受信開始の早い順、印刷データ受信部２による印刷データの受信完了の早い順、中間コード生成部３による中間コード生成開始の早い順、及び中間コード生成部３による中間コード生成完了の早い順などの何れかの順で優先実行順位を決定し、この情報を状況情報Ａに付加して、優先実行順位の高い印刷ジョブに印刷を実行させるようにしてもよい。
【０１２０】
さらに、第２〜第５実施形態で説明したように、管理情報Ｆ及びＧを設け、印刷機構を返却する場合に、管理情報Ｆ及びＧに、次に、あるいは次の次に印刷機構の使用権が渡る印刷要求管理タスクの番号を指定するようにしてもよいし、次の次に自分に印刷機構を戻すようにする場合には、他の印刷待ちの印刷要求管理タスクとの未印刷枚数の比較により、所定の条件の時のみ自分に戻るようにしてもよい。さらにいうなら、次に渡すジョブを決定する方法は、印刷実行中に他の印刷要求管理タスクが印刷待ちをしている場合に所定の判断で現在実行中の印刷要求管理タスクが印刷機構の使用権を返却するという第１〜第６実施形態に記した決定方法を適宜組み合わせて実行することも可能であり、さらに有効な印刷機構の使用が実現できる。
【０１２１】
また、以上の説明では、所定の時間以上を計時した場合に、中間コードの生成に時間がかかっていると判断して印刷機構の使用権を放棄するようにしているが、例えば、描画コマンドの種類や数といった印刷データの特徴から事前に中間コードの生成に時間がかかりそうな場合を予め判断して印刷機構の使用権を放棄するようにしてもよい。
【０１２２】
（第８実施形態）
以上説明した実施形態において、印刷要求作成部が印刷要求を作成するのは、基本的には１印刷用紙の片面単位である。しかしながら、例えば、両面印刷の場合、印刷要求の作成はデータにして２頁分とし、それらを表裏の各面に印刷してもよい。また、各ページを縮小してｎページ分を１印刷用紙の片面に印刷する場合などは、印刷要求の作成はデータにしてｎ頁分とすればよい。
【０１２３】
また、上述した各実施形態では、印刷機構管理部をサブルーチンによる処理としたが、例えば、印刷機構管理タスクを設け、上述した各サブルーチンによる処理を印刷機構管理タスクとの情報交換の形態で処理するようにしてもよい。
【０１２４】
また、上述の各実施形態では、印刷装置としてページプリンタ装置を想定して説明したが、他にもインクジェットプリンタ、サーマルプリンタ、ドットインパクトプリンタ等の印刷装置にも同様に適用が可能である。
【０１２５】
【発明の効果】
以上の説明から明らかなように、本発明によれば、複数の印刷ジョブに基づく画像形成処理及び印刷を、印刷ページ数などに応じて最適な順で実行することができる。
【図面の簡単な説明】
【図１】本発明の第１実施形態に係る印刷装置の機能ブロック図。
【図２】第１実施形態の変形例を示す機能ブロック図。
【図３】状況情報Ａ及びＢの構造の一例を示す図。
【図４】管理情報Ｃ及びＤの構造の一例を示す図。
【図５】本発明の各実施形態による印刷データの受信処理の手順説明図。
【図６】本発明の各実施形態による印刷データからの中間コード生成処理の手順説明図。
【図７】印刷データ受信タスクの処理を示すフローチャート。
【図８】中間コード生成タスクの処理を示すフローチャート。
【図９】印刷要求管理タスクの処理を示すフローチャート。
【図１０】印刷要求管理タスクの処理を示すフローチャート。
【図１１】印刷機構獲得要求サブルーチンを示すフローチャート。
【図１２】出力トレイ獲得要求サブルーチンを示すフローチャート。
【図１３】印刷機構返却通知サブルーチンを示すフローチャート。
【図１４】出力トレイ返却通知サブルーチンを示すフローチャート。
【図１５】第１実施形態の処理の一例を示すタイミング図。
【図１６】本発明の第２実施形態に係る印刷装置の機能ブロック図。
【図１７】第２実施形態の印刷要求管理タスクの処理を示すフローチャート。
【図１８】第２実施形態の印刷要求管理タスクの処理を示すフローチャート。
【図１９】管理情報Ｆ及びＧの構造の一例を示す図。
【図２０】第２実施形態による印刷機構獲得要求サブルーチンを示すフローチャート。
【図２１】第２実施形態の処理の一例を示すタイミング図。
【図２２】第４実施形態による印刷機構獲得要求サブルーチンを示すフローチャート。
【図２３】第５実施形態による印刷機構獲得要求サブルーチンを示すフローチャート。
【図２４】第６実施形態の印刷要求管理タスクの処理を示すフローチャート。
【図２５】第６実施形態の印刷要求管理タスクの処理を示すフローチャート。
【図２６】第７実施形態の印刷要求管理タスクの処理を示すフローチャート。
【図２７】第７実施形態の印刷要求管理タスクの処理を示すフローチャート。
【図２８】従来の印刷装置の概略ブロック図。
【図２９】従来の印刷装置における印刷ジョブの処理順を説明するためのタイミング図。
【図３０】従来の印刷装置における印刷ジョブの処理を示すフローチャート。
【符号の説明】
１，１０  印刷装置
２−１，２−２，２−３  印刷データ受信部
２ａ−１，２ａ−２，２ａ−３  受信バッファ（印刷データ記憶部）
２ｂ  ネットワーク用ポート
３−１，３−２，３−３  中間コード生成部
３ａ−１，３ａ−２，３ａ−３  中間コードバッファ（中間コード記憶部）
４−１，４−２，４−３  印刷要求管理部
５，５０  印刷機構管理部
６    印刷機構
７−１，７−２，７−３  出力トレイ
【図１】
0003858419.tif 000002
【図２】
0003858419.tif 000003
【図３】
0003858419.tif 000004
【図４】
0003858419.tif 000005
【図５】
0003858419.tif 000006
【図６】
0003858419.tif 000007
【図７】
0003858419.tif 000008
【図８】
0003858419.tif 000009
【図９】
0003858419.tif 000010
【図１０】
0003858419.tif 000011
【図１１】
0003858419.tif 000012
【図１２】
0003858419.tif 000013
【図１３】
0003858419.tif 000014
【図１４】
0003858419.tif 000015
【図１５】
0003858419.tif 000016
【図１６】
0003858419.tif 000017
【図１７】
0003858419.tif 000018
【図１８】
0003858419.tif 000019
【図１９】
0003858419.tif 000020
【図２０】
0003858419.tif 000021
【図２１】
0003858419.tif 000022
【図２２】
0003858419.tif 000023
【図２３】
0003858419.tif 000024
【図２４】
0003858419.tif 000025
【図２５】
0003858419.tif 000026
【図２６】
0003858419.tif 000027
【図２７】
0003858419.tif 000028
【図２８】
0003858419.tif 000029
【図２９】
0003858419.tif 000030
【図３０】
0003858419.tif 000031