(57)【要約】【課題】  簡易なシステムで、効率的な分散印刷を実現する。【解決手段】  本分散印刷制御装置は、印刷対象画像データと、印刷を制御するための印刷制御データの少なくとも一方を含む分散印刷ジョブデータを分散先印刷装置に送信する制御部を備える。本分散印刷制御装置は、分散先印刷装置に対して印刷対象画像データと印刷制御データとを含む第１の分散印刷ジョブデータを送信して印刷を１部実行させる第１の送信処理と、印刷対象画像データを用いた印刷の完了を表す完了データの分散先印刷装置からの受信に応じて、完了データの送信元に対して印刷制御データを含む第２の分散印刷ジョブデータを送信して印刷対象画像データを用いた印刷を１部ずつ送信元に実行させる第２の送信処理と、を実行させる特定の制御モードを有することを特徴とする。【選択図】  図１１
2006256089.tif 000002
【特許請求の範囲】
【請求項１】
ネットワークを介して送信される印刷ジョブを、前記ネットワークに接続された複数の印刷装置のうち、分散先となる１以上の分散先印刷装置に分散することが可能な分散印刷制御装置であって、
前記印刷ジョブの受信に応じて前記複数の印刷装置の中から前記分散先印刷装置を決定するとともに、前記印刷ジョブによって印刷されるべき印刷対象画像を表す印刷対象画像データと、前記印刷対象画像データを用いた印刷を制御するための印刷制御データの少なくとも一方を含む分散印刷ジョブデータを前記分散先印刷装置に送信する制御部を備え、
前記制御部は、
前記分散先印刷装置に対して前記印刷対象画像データと前記印刷制御データとを含む第１の分散印刷ジョブデータを送信して印刷を１部実行させる第１の送信処理と、
前記印刷対象画像データを用いた印刷の完了を表す完了データの前記分散先印刷装置からの受信に応じて、前記完了データの送信元に対して前記印刷制御データを含む第２の分散印刷ジョブデータを送信して前記印刷対象画像データを用いた印刷を１部ずつ前記送信元に実行させる第２の送信処理と、
を実行させる特定の制御モードを有することを特徴とする、分散印刷制御装置。
【請求項２】
請求項１記載の分散印刷制御装置であって、
前記第１の分散印刷ジョブデータは、前記印刷部数がゼロの部数指定コマンドの受信に応じてのみ印刷ジョブが終了するように前記各分散先印刷装置を設定する制御コマンドを含み、
前記第２の分散印刷ジョブデータは、前記印刷対象画像データを含まず、前記印刷部数が１の部数指定コマンドと前記印刷部数がゼロの部数指定コマンドのいずれか一方の部数指定コマンドを含み、
前記分散印刷制御装置は、前記特定の制御モードにおいて、前記印刷部数が１の部数指定コマンドを前記各分散先印刷装置に送信して前記印刷対象画像を１部だけ印刷させ、一方、前記印刷部数がゼロの部数指定コマンドを前記各分散先印刷装置に送信して前記各分散先印刷装置における前記印刷対象画像データを用いた印刷ジョブを終了させるように構成されている、分散印刷制御装置。
【請求項３】
請求項１記載の分散印刷制御装置であって、
前記分散印刷制御装置は、コネクション型のプロトコルを用いて前記各分散先印刷装置と通信を行い、
前記制御部は、前記印刷ジョブによる印刷が完了するまで前記通信のコネクションを維持するとともに、前記印刷部数が１の部数指定コマンドを前記各分散先印刷装置に送信して前記印刷対象画像を１部だけ印刷させ、一方、所定のジョブ終了コマンドを前記各分散先印刷装置に送信して前記各分散先印刷装置における前記印刷対象画像データを用いた印刷ジョブを終了させるように構成されている、分散印刷制御装置。
【請求項４】
請求項２または３に記載の分散印刷制御装置であって、さらに、
前記印刷ジョブを格納するための印刷ジョブ格納部を備え、
前記制御部は、前記複数の印刷装置の中から、オンライン状態であって、かつ、印刷ジョブを受信中でなく、印刷中でもないという所定の条件を満たす印刷装置を候補印刷装置として検索し、前記検索された候補印刷装置の中から前記分散先印刷装置を決定し、前記決定後においても前記所定の条件を満たすこととなった印刷装置を前記分散印刷制御装置に追加決定する決定モードを前記特定の制御モードにおいて実行可能である、分散印刷制御装置。
【請求項５】
ネットワークに接続された印刷装置であって、
印刷を行う印刷部と、
請求項１ないし４のいずれかに記載の分散印刷制御装置と、
を備えることを特徴とする印刷装置。
【請求項６】
ネットワークを介して送信される印刷ジョブを、前記ネットワークに接続された複数の印刷装置のうち、分散先となる１以上の分散先印刷装置に分散することが可能な分散印刷制御方法であって、
前記印刷ジョブの受信に応じて前記複数の印刷装置の中から前記分散先印刷装置を決定する分散先決定工程と、
前記印刷ジョブによって印刷されるべき印刷対象画像を表す印刷対象画像データと、前記印刷対象画像データを用いた印刷を制御するための印刷制御データの少なくとも一方を含む分散印刷ジョブデータを前記分散先印刷装置に送信する送信工程と、
を備え、
前記分散印刷制御方法は、
前記分散先印刷装置に対して前記印刷対象画像データと前記印刷制御データとを含む第１の分散印刷ジョブデータを送信して印刷を１部実行させる第１の送信処理工程と、
前記印刷対象画像データを用いた印刷の完了を表す完了データの前記分散先印刷装置からの受信に応じて、前記完了データの送信元に対して前記印刷制御データを含む第２の分散印刷ジョブデータを送信して前記印刷対象画像データを用いた印刷を１部ずつ前記送信元に実行させる第２の送信処理工程と、
を実行させる特定の制御モードを有することを特徴とする、分散印刷制御方法。
【請求項７】
ネットワークを介して送信される印刷ジョブを、前記ネットワークに接続された複数の印刷装置のうち、分散先となる１以上の分散先印刷装置に分散するための処理をコンピュータに実行させるためのコンピュータプログラムであって、
前記印刷ジョブの受信に応じて前記複数の印刷装置の中から前記分散先印刷装置を決定する分散先決定機能と、
前記印刷ジョブによって印刷されるべき印刷対象画像を表す印刷対象画像データと、前記印刷対象画像データを用いた印刷を制御するための印刷制御データの少なくとも一方を含む分散印刷ジョブデータを前記分散先印刷装置に送信する送信機能と、
を前記コンピュータに実現させるプログラムを有し、
前記分散印刷処理は、
前記分散先印刷装置に対して前記印刷対象画像データと前記印刷制御データとを含む第１の分散印刷ジョブデータを送信して印刷を１部実行させる第１の送信処理と、
前記印刷対象画像データを用いた印刷の完了を表す完了データの前記分散先印刷装置からの受信に応じて、前記完了データの送信元に対して前記印刷制御データを含む第２の分散印刷ジョブデータを送信して前記印刷対象画像データを用いた印刷を１部ずつ前記送信元に実行させる第２の送信処理と、
を実行させる特定の制御モードを有することを特徴とする、コンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ネットワークに接続された１以上の印刷装置に印刷ジョブを分散して、分散印刷を行う技術に関する。
【背景技術】
【０００２】
近年、複数のプリンタを同一ネットワークに接続し、ユーザが複数のプリンタを使い分けることができる印刷システムが普及しつつある。複数部の印刷を行う場合、印刷ジョブを各プリンタに分散し、並行処理することにより、短時間で印刷を完了する技術、いわゆる分散印刷も提案されている（例えば、特許文献１参照）。分散印刷は、ネットワーク上に設けられた分散印刷用の専用サーバが、印刷ジョブの分散先および印刷部数を制御するのが通常である。
【０００３】
【特許文献１】特開２００２−２１５３６９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかし、従来技術では、分散印刷を実現するために専用サーバを含めた大がかりなシステムが必要となっていた。さらに、従来の分散印刷では、各分散先における印刷部数が最初に決定されているため、紙切れやジャムといった種々の理由で一部の遅い分散先が進捗が遅くなった場合には、最も遅い分散先の印刷が完了するまで印刷ジョブが完了しないという問題も生じていた。
【０００５】
本発明は、かかる課題を解決するためになされたものであり、簡易なシステムで、効率的な分散印刷を実現することを目的とする。
【課題を解決するための手段】
【０００６】
上記した目的の少なくとも一部を達成するために、本発明は、ネットワークを介して送信される印刷ジョブを、前記ネットワークに接続された複数の印刷装置のうち、分散先となる１以上の分散先印刷装置に分散することが可能な分散印刷制御装置を提供する。この分散印刷制御装置は、
前記印刷ジョブの受信に応じて前記複数の印刷装置の中から前記分散先印刷装置を決定するとともに、前記印刷ジョブによって印刷されるべき印刷対象画像を表す印刷対象画像データと、前記印刷対象画像データを用いた印刷を制御するための印刷制御データの少なくとも一方を含む分散印刷ジョブデータを前記分散先印刷装置に送信する制御部を備え、
前記制御部は、
前記分散先印刷装置に対して前記印刷対象画像データと前記印刷制御データとを含む第１の分散印刷ジョブデータを送信して印刷を１部実行させる第１の送信処理と、
前記印刷対象画像データを用いた印刷の完了を表す完了データの前記分散先印刷装置からの受信に応じて、前記完了データの送信元に対して前記印刷制御データを含む第２の分散印刷ジョブデータを送信して前記印刷対象画像データを用いた印刷を１部ずつ前記送信元に実行させる第２の送信処理と、
を実行させる特定の制御モードを有することを特徴とする。
【０００７】
本発明の分散印刷制御装置によれば、前記各分散先印刷装置における印刷の完了に応じて印刷を指令する分散印刷ジョブデータが送信されるので、前記各分散先印刷装置における印刷状況に応じた印刷ジョブの分散が行われることになる。これにより、進捗の遅い分散先印刷装置に割り当てられる印刷部数を減らすとともに、進捗の速い分散先印刷装置に割り当てられる印刷部数を増やすといった印刷の進捗状況に応じた動的な配分が可能となるので、各分散先印刷装置における全部数の印刷の完了時間を近づけることができる。
【０００８】
たとえば分散先印刷装置の一部が紙詰まりやトナー不足といった事情で停止しても、他の分散先印刷装置への配分が増えるので、効率よく分散印刷を行うことができる。なお、第２の分散印刷ジョブデータは、前記印刷対象画像データを含むように構成しても良いし、あるいは、後述するように前記印刷対象画像データを含まないように構成しても良い。
【０００９】
上記分散印刷制御装置において、
前記第１の分散印刷ジョブデータは、前記印刷部数がゼロの部数指定コマンドの受信に応じてのみ印刷ジョブが終了するように前記各分散先印刷装置を設定する制御コマンドを含み、
前記第２の分散印刷ジョブデータは、前記印刷対象画像データを含まず、前記印刷部数が１の部数指定コマンドと前記印刷部数がゼロの部数指定コマンドのいずれか一方の部数指定コマンドを含み、
前記分散印刷制御装置は、前記特定の制御モードにおいて、前記印刷部数が１の部数指定コマンドを前記各分散先印刷装置に送信して前記印刷対象画像を１部だけ印刷させ、一方、前記印刷部数がゼロの部数指定コマンドを前記各分散先印刷装置に送信して前記各分散先印刷装置における前記印刷対象画像データを用いた印刷ジョブを終了させるように構成しても良いし、
あるいは、
前記分散印刷制御装置は、コネクション型のプロトコルを用いて前記各分散先印刷装置と通信を行い、
前記分散印刷制御装置は、前記印刷ジョブによる印刷が完了するまで前記通信のコネクションを維持するとともに、前記印刷部数が１の部数指定コマンドを前記各分散先印刷装置に送信して前記印刷対象画像を１部だけ印刷させ、一方、所定のジョブ終了コマンドを前記各分散先印刷装置に送信して前記各分散先印刷装置における前記印刷対象画像データを用いた印刷ジョブを終了させるように構成されているようにしても良い。
【００１０】
こうすれば、データサイズが大きな印刷対象画像データの送信を最初の一度だけとすることができるので、ネットワークのトラフィックを小さくすることができる。さらに、分散印刷が完了するまで印刷ジョブが終了しないので、他の印刷ジョブを排して迅速に分散印刷を完了させることができるとともに、分散先印刷装置を独占して他の印刷物の混入も防止することができる。
【００１１】
上記分散印刷制御装置において、さらに、
前記印刷ジョブを格納するための印刷ジョブ格納部を備え、
前記分散印刷制御装置は、前記複数の印刷装置の中から、オンライン状態であって、かつ、印刷ジョブを受信中でなく、印刷中でもないという所定の条件を満たす印刷装置を候補印刷装置として検索し、前記検索された候補印刷装置の中から前記分散先印刷装置を決定し、前記決定後においても前記所定の条件を満たすこととなった印刷装置を前記分散印刷制御装置に追加決定する決定モードを前記特定の制御モードにおいて実行可能であるように構成しても良い。
【００１２】
こうすれば、他の印刷ジョブの処理の完了等によって利用可能となった印刷装置を分散先に加えることができるので、分散印刷処理をさらに迅速化することができる。
【００１３】
なお、本発明は、上記した分散印刷制御装置としての構成の他、その分散印刷制御装置を内蔵する印刷装置としても構成することができる。また、そのような装置発明の態様に限ることなく、印刷ジョブ分散方法などの方法発明としての態様で実現することも可能である。さらには、それら方法や装置を構築するためのコンピュータプログラムとしての態様や、そのようなコンピュータプログラムを記録した記録媒体としての態様や、上記コンピュータプログラムを含み搬送波内に具現化されたデータ信号など、種々の態様で実現することも可能である。
【００１４】
本発明をコンピュータプログラムまたはそのプログラムを記録した記録媒体等として構成する場合には、印刷装置を制御するプログラム全体として構成するものとしてもよいし、本発明の機能を果たす部分のみを構成するものとしてもよい。また、記録媒体としては、フレキシブルディスクやＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ、光磁気ディスク、ＩＣカード、ＲＯＭカートリッジ、パンチカード、バーコードなどの符号が印刷された印刷物、コンピュータの内部記憶装置（ＲＡＭやＲＯＭなどのメモリ）および外部記憶装置などコンピュータが読み取り可能な種々の媒体を利用できる。
【発明を実施するための最良の形態】
【００１５】
以下、本発明の実施の形態を、実施例に基づいて、下記の項目に分けて説明する。
Ａ．第１の実施例：
Ａ１．システム概要：
Ａ２．プリンタの構成：
Ａ３．通常印刷処理：
Ａ４．分散印刷処理：
Ａ５．実施例の効果：
Ｂ．第２の実施例：
Ｂ１．プリンタの構成：
Ｂ２．通常印刷処理：
Ｂ３．分散印刷処理：
Ｂ４．実施例の効果：
Ｃ．第３の実施例：
Ｃ１．第１の分散印刷処理の変形例：
Ｃ２．第２の分散印刷処理の変形例：
Ｄ．変形例：
【００１６】
Ａ．第１の実施例：
Ａ１．システム概要：
図１は本発明の第１の実施例としてのプリンタＰＲＴ１を備える印刷システムの構成を示す説明図である。この印刷システムでは、図示するように、クライアントＰＣ（以下、クライアントと略す）ＣＬ、複数のプリンタＰＲＴ１〜ＰＲＴ４がローカルエリアネットワーク（ＬＡＮ）に接続されている。各機器間の通信は、ＴＣＰ／ＩＰプロトコルをベースとしているため、各機器には、それぞれ、ＩＰアドレスが予め固定で割り振られている。説明の便宜上、クライアントＣＬには「ＩＰｃ」、プリンタＰＲＴ１〜ＰＲＴ４には、それぞれ「ＩＰ１」〜「ＩＰ４」なるアドレスが設定されているものとする。なお、厳密に言えば、これらＩＰアドレスは、クライアントＣＬ，プリンタＰＲＴ１〜ＰＲＴ４自体に設定されているわけではなく、ＴＣＰ／ＩＰのネットワークから見た場合のノード（すなわち、具体的には、ＴＣＰ／ＩＰ通信を行うためにネットワークに接続されているネットワークボードなど）に設定されている。
【００１７】
これらプリンタのうち、プリンタＰＲＴ１には、カスタムネットワークボードＣＮＢが取り付けられている。このカスタムネットワークボードＣＮＢは、受信した印刷ジョブを他のプリンタに分散して、分散印刷を実行するための分散印刷制御機能を備えており、請求項における分散印刷制御装置に相当する。一方、他のプリンタには、それぞれ、標準のネットワークボード（図示せず）が取り付けられている。
【００１８】
一例として図中には、クライアントＣＬからプリンタＰＲＴ１に、印刷ジョブを含む通信データＤＴ０が送信される場合を例示した。
【００１９】
図２はこのような印刷ジョブを含む通信データの構成を概念的に示す説明図である。図２に示すように、通信データは、大きく分けて、ヘッダと、印刷ジョブデータと、に分かれている。
【００２０】
このうち、ヘッダには、その通信データの発信元である機器のＩＰアドレス（発信元ＩＰアドレス）と、その機器内における発信元であるソフトウェアを特定するポート番号（発信元ポート番号）と、を含む他、その通信データの送信先である機器のＩＰアドレス（送信先ＩＰアドレス）と、その機器内における送信先であるソフトウェアを特定するポート番号（送信先ポート番号）とを含んでいる。発信元である機器のソフトウェアから発信された通信データは、送信先ＩＰアドレスに従って、そのＩＰアドレスを有する機器に送信され、さらに、受信したその機器内では、送信先ポート番号に従って、その番号のポートで待機しているソフトウェアに渡される。
【００２１】
一方、印刷ジョブデータは、ジョブ制御言語の部分と、印刷対象画像データと、に分かれており、このうち、ジョブ制御言語部分には、印刷部数情報として、印刷部数を表すＱＴ値が記載されている。
【００２２】
なお、ＴＣＰ／ＩＰの場合、通信データは、通常、パケットで通信される。従って、実際には、一連の印刷ジョブデータは、時分割された上で、各時分割データの前に上記ヘッダを付けて、それぞれ、送信されることになる。
【００２３】
図１に戻って、通信データＤＴ０には、送信先ＩＰアドレスとして「ＩＰ１」が、送信先ポート番号として「１９１００」が、ＱＴ値（すなわち、印刷部数）として「１００部」が、それぞれ記載されている。
【００２４】
本実施例では、印刷プロトコルとして無手順プロトコルを用いている。無手順プロトコルでは、通常、ボート番号として「９１００」が割り当てられているが、本実施例では、クライアントＣＬから分散印刷制御機能を有するプリンタＰＲＴ１に印刷ジョブを送信する際、ボート番号として通常の「９１００」ではなく、「１９１００」を用いる。
【００２５】
プリンタＰＲＴ１のカスタムネットワークボードＣＮＢは、この通信データＤＴ０を受信すると、ポート番号「１９１００」に待機しているソフトウェアに、印刷ジョブデータを渡す。本実施例では、ポート番号「１９１００」には、分散印刷制御機能を実現するための分散印刷ソフトウェアが待機している。それにより、その分散印刷ソフトウェアに従ってＣＰＵにより実現される機能部が、まず、印刷ジョブデータを印刷ジョブ格納部（図示せず）に格納し、クライアントＣＬから送信された印刷ジョブデータの全てがその印刷ジョブ格納部に入りきった場合には、ＬＡＮに接続されているプリンタの中から、オンライン状態であり、かつ、印刷ジョブを受信中でなく、印刷中でもないプリンタを検索し、分散先プリンタを決定する。例えば、その分散先プリンタとして、プリンタＰＲＴ２〜ＰＲＴ４の他、自己のプリンタＰＲＴ１を決定されたとすると、上記機能部は、印刷ジョブデータに含まれるＱＴ値を「１部」に変更すると共に、送信先ポート番号を「１９１００」ではなく、「９１００」に変更した上で、それら分散先のプリンタに、それぞれ、印刷ジョブを含む通信データＤＴ１〜ＤＴ４を送信する。
【００２６】
従って、例えば、通信データＤＴ２には、送信先ＩＰアドレスとして「ＩＰ２」が、送信先ポート番号として「９１００」が、ＱＴ値として「１部」が、それぞれ記載されている。
【００２７】
プリンタＰＲＴ２の標準ネットワークボードは、この通信データＤＴ２を受信すると、ポート番号「９１００」に待機しているソフトウェアに、印刷ジョブデータを渡す。ポート番号「９１００」は、前述したとおり、印刷プロトコルである無手順プロトコルに対して、通常割り当てられているポート番号であるので、印刷ジョブデータは、プリンタＰＲＴ２内の印刷制御ソフトウェアに渡されて、その印刷ジョブに従った印刷が実行される。
【００２８】
他のプリンタＰＲＴ３，ＰＲＴ４は、もちろんのこと、分散印刷制御機能を有するＰＲＴ１においても、同様に、送信された印刷ジョブに従った印刷が実行される。
【００２９】
従って、各プリンタＰＲＴ１〜ＰＲＴ４では、各「１部」ずつの印刷が実行されることになり、システム全体で、合計「４部」の分散印刷が実行されることになる。
【００３０】
続いて、上記機能部は、再度、ＬＡＮに接続されているプリンタの中から、オンライン状態であり、かつ、印刷ジョブを受信中でなく、印刷中でもないプリンタを検索して、分散先プリンタを決定し、印刷ジョブデータに含まれるＱＴ値を「１部」に、送信先ポート番号を「９１００」にそれぞれ変更した上で、それら分散先のプリンタに、それぞれ、印刷ジョブを含む通信データを送信する。そして、各分散先プリンタにおいて、その印刷ジョブに従って、各「１部」ずつの印刷を実行する。以下、このような処理を、システム全体での累積の印刷部数が「１００部」になるまで、繰り返し、実行する。
【００３１】
すると、最終的には、システム全体において、合計「１００部」の分散印刷が実行されることになる。
【００３２】
Ａ２．プリンタの構成：
図３は図１におけるプリンタＰＲＴ１の構成を主として示す説明図である。プリンタＰＲＴ１は、プリンタ本体ＰＲＢと、上述したカスタムネットワークボードＣＮＢと、を備えている。このうち、プリンタ本体ＰＲＢは、主として、プリンタエンジン４１と、プリンタコントローラ４２と、を備えている。プリンタエンジン４１は、実際に印刷を行う機構部分である。プリンタコントローラ４２は、カスタムネットワークボードＣＮＢから印刷ジョブデータを受け取り、その印刷ジョブに従ってプリンタエンジン４１を制御し、印刷を実行させる。
【００３３】
一方、本発明の特徴部分であるカスタムネットワークボードＣＮＢは、主として、ＣＰＵ２０と、メモリ３０と、を備えている。また、この他、実際にネットワーク通信を行うための通信用インタフェースなども備えているが、説明の便宜上、省略されている。
【００３４】
ＣＰＵ２０は、メモリ３０より、上記した分散印刷ソフトウェアなどのプログラムを読み出して、実行することにより、図示した各機能ブロックとして機能する。なお、各機能ブロックをハードウェア的に構築しても構わない。このようなＣＰＵ２０が、請求項に記載の制御部に相当する。
【００３５】
これら機能ブロックのうち、ＴＣＰ／ＩＰ解釈部２１は、ＴＣＰ／ＩＰプロトコルを解釈して、ネットワークを介して外部との通信を行う。具体的には、受信した通信データに含まれる送信先ＩＰアドレスや送信先ポート番号を検出したり、送信する通信データに送信先ＩＰアドレスや送信先ポート番号を付与したりする。無手順プロトコル解釈部２２Ａ，２２Ｂは、印刷プロトコルである無手順プロトコルを解釈する。本実施例では、説明の便宜上、通信データが、送信先ポート番号として通常の「９１００」で送信されている場合には、無手順プロトコル解釈部２２Ｂが機能し、特定の「１９１００」で送信されている場合には、無手順プロトコル解釈部２２Ａが機能するものとしている。
【００３６】
また、分散先決定部２３は、分散印刷を行う際に、ＬＡＮ上から、分散先となるべきプリンタを候補プリンタとして検索し、それら候補プリンタの中から分散先プリンタを決定する。部数決定部２４は、指定されている総印刷部数から、各分散先プリンタに割り当てるべき分散部数を決定する。分散処理部２５は、印刷ジョブデータに含まれる印刷部数を示すＱＴ値を書き換えた上で、各分散プリンタに印刷ジョブデータを分配する。
【００３７】
一方、メモリ３０は、上記したプログラムを格納する他、各種データを格納するために、印刷ジョブ格納部３１や分散先指定ファイル格納部３２を備えている。このうち、印刷ジョブ格納部３１は、送信された印刷ジョブデータを一時的に格納するための格納部である。また、分散先指定ファイル格納部３２は分散先指定ファイルを格納する。この分散先指定ファイルは、ＬＡＮに接続されている複数のプリンタの中で、分散印刷における分散先として使用したいプリンタを、前もって、指定して限定しておきたい場合に用いる。従って、そのような指定が不要な場合には、分散先指定ファイル格納部３２には何も格納されない。
【００３８】
さて、図３において、その他、クライアントＣＬにおいては、アプリケーション１３の他、機能ブロックとして、無手順プロトコル解釈部１２やＴＣＰ／ＩＰ解釈部１１を備えている。また、プリンタＰＲＴ２においては、プリンタエンジン５４やプリンタコントローラ５３の他、機能ブロックとして、無手順プロトコル解釈部５２やＴＣＰ／ＩＰ解釈部５１を備えている。このうち、無手順プロトコル解釈部１２，無手順プロトコル解釈部５２は、プリンタＰＲＴ１において、送信先ポート番号として通常の「９１００」で送信された通信データを扱う無手順プロトコル解釈部２２Ｂと同じ機能を有している。また、ＴＣＰ／ＩＰ解釈部１１，５１も、プリンタＰＲＴ１におけるＴＣＰ／ＩＰ解釈部２１と、プリンタエンジン５４やプリンタコントローラ５３も、プリンタＰＲＴ１におけるプリンタエンジン４１やプリンタコントローラ４２と、それぞれ同一の機能や構成を有している。
【００３９】
なお、図１に示すプリンタＰＲＴ３，４については、図３におけるプリンタＰＲＴ２と同様の構成を有している。
【００４０】
Ａ３．通常印刷処理：
本発明の特徴部分である分散印刷処理を説明する前に、通常の印刷処理について簡単に説明する。なお、印刷ジョブを、クライアントＣＬからプリンタＰＲＴ１に送信し、プリンタＰＲＴ１のみで印刷を実行する場合を例として説明する。この場合、印刷ジョブは、図３において、点線で示す経路をたどって転送される。なお、クライアントＣＬにおけるプリンタドライバ（図示せず）において、印刷プロトコルの設定は、無手順プロトコルに設定されているものとする。
【００４１】
ユーザがクライアントＣＬに印刷命令を出すと、クライアントＣＬでは、アプリケーション１３が、印刷ジョブを、無手順プロトコル解釈部１２，ＴＣＰ／ＩＰ解釈部１１を介して、プリンタＰＲＴ１に送信する。このとき、無手順プロトコル解釈部１２は、印刷プロトコルである無手順プロトコルに従って、印刷ジョブを含む通信データを送信し、また、ＴＣＰ／ＩＰ解釈部１１は、その通信データの送信先ＩＰアドレスとして、プリンタＰＲＴ１の「ＩＰ１」を指定すると共に、送信先ポート番号として、無手順プロトコルに通常割り当てられている「９１００」を指定する。
【００４２】
プリンタＰＲＴ１では、ＴＣＰ／ＩＰ解釈部２１が、通信データに含まれる送信先ＩＰアドレス「ＩＰ１」に従って、その通信データを受信し、さらに、その通信データに含まれる送信先ポート番号が「９１００」であるので、「９１００」で送信された通信データを扱う無手順プロトコル解釈部２２Ｂに渡す。無手順プロトコル解釈部２２Ｂは、無手順プロトコルに従って、印刷ジョブを含む通信データを受け取り、印刷ジョブをプリンタコントローラ４２に渡す。プリンタコントローラ４２は、印刷ジョブのデータに含まれるＱＴ値から印刷部数を読み取り、指定されている部数だけ、プリンタエンジン４１に印刷を実行させる。
【００４３】
Ａ４．分散印刷処理：
次に、本発明の特徴部分である分散印刷処理について詳細に説明する。まず、前提として、ユーザにより、プリンタＰＲＴ１の電源が投入されると、プリンタ本体ＰＲＢ及びカスタムネットワークボードＣＮＢが起動して、分散先決定部２３が、プリンタコントローラ４２から、自己のプリンタＰＲＴ１の機種名を取得する。具体的には、分散先決定部２３が、送信先ＩＰアドレスとして、自己のプリンタＰＲＴ１のＩＰアドレス「ＩＰ１」を指定して、ＳＮＭＰ（Simple Network Management Protocol）で機種名を問い合わせることにより、ＣＰＵ２０が、バスを介してプリンタコントローラ４２に機種名を要求し、その応答を受け取ることにより、取得する。
【００４４】
以上の前提を踏まえた上で、印刷ジョブを、クライアントＣＬからプリンタＰＲＴ１に送信し、そのプリンタＰＲＴ１の他、プリンタＰＲＴ２〜ＰＲＴ４で分散印刷を実行し得る場合を例として説明する。
【００４５】
分散印刷を行う際には、ユーザは、クライアントＣＬにおけるプリンタドライバにおいて、印刷プロトコルの設定が、無手順プロトコルに設定されていることを確認した上で、ポート番号の設定を、通常の「９１００」から特定の「１９１００」に変更する。すなわち、本実施例では、ここでのポート番号の設定を切り換えることにより、通常の「９１００」では通常印刷を、特定の「１９１００」では分散印刷を、それぞれ選択することになる。
【００４６】
そこで、ユーザがクライアントＣＬに、印刷部数「１００部」として印刷命令を出すと、クライアントＣＬでは、アプリケーション１３が、印刷部数を示すＱＴ値を「１００部」とした印刷ジョブを、無手順プロトコル解釈部１２，ＴＣＰ／ＩＰ解釈部１１を介して、プリンタＰＲＴ１に送信する。このとき、無手順プロトコル解釈部１２は、印刷プロトコルである無手順プロトコルに従って、印刷ジョブを含む通信データを送信し、また、ＴＣＰ／ＩＰ解釈部１１は、その通信データの送信先ＩＰアドレスとして、プリンタＰＲＴ１の「ＩＰ１」を指定すると共に、送信先ポート番号として、通常の「９１００」ではなく、「１９１００」を指定する。
【００４７】
これにより、クライアントＣＬからプリンタＰＲＴ１に、図１に示すような通信データＤＴ０が送信される。すなわち、通信データＤＴ０には、送信先ＩＰアドレスとして「ＩＰ１」が、送信先ポート番号として「１９１００」が、ＱＴ値（すなわち、印刷部数）として「１００部」が、それぞれ記載されている。
【００４８】
図４はプリンタＰＲＴ１における主要機能ブロックの処理手順を示すフローチャートである。具体的には、分散処理部２５，分散先決定部２３及び部数決定部２４が実行する処理である。
【００４９】
プリンタＰＲＴ１では、ＴＣＰ／ＩＰ解釈部２１が、通信データＤＴ０に含まれる送信先ＩＰアドレス「ＩＰ１」に従って、その通信データを受信し、さらに、その通信データに含まれる送信先ポート番号が「１９１００」であるので、今度は、無手順プロトコル解釈部２２Ｂではなく、「１９１００」で送信された通信データを扱う無手順プロトコル解釈部２２Ａに渡す。
【００５０】
一方、分散処理部２５は、ポート番号「１９１００」に、印刷ジョブが着信するまで待機している（ステップＳ１０２）。無手順プロトコル解釈部２２Ａは、無手順プロトコルに従って、印刷ジョブを含む通信データを受け取ると、その印刷ジョブのデータを、ポート番号「１９１００」で待機している分散処理部２５に渡す。
【００５１】
分散処理部２５は、受信した印刷ジョブデータの先頭から順次受け取って印刷ジョブ格納部３１に格納する（ステップＳ１０４）。
【００５２】
図５は一例として印刷ジョブのデータをエディタで開いて示した説明図である。図５に示すとおり、印刷ジョブデータの前側は、ジョブ制御言語部分となっており、後側は印刷対象画像データとなっている。また、ジョブ制御言語部分には、印刷部数情報として、印刷部数を示すＱＴ値が記載されている。図示した例では、"ＱＴ＝２"となっており、ＱＴ値（印刷部数）が「２部」であることを示している。
【００５３】
分散処理部２５は、格納した印刷ジョブデータにＱＴ値が見つかるまで（ステップＳ１０６）、受信した印刷ジョブデータを印刷ジョブ格納部３１に格納し続ける。その後、ＱＴ値が見つかると、分散処理部２５は、印刷ジョブデータの印刷ジョブ格納部３１部への格納を停止し、見つかったＱＴ値から総印刷部数ｍを取得し（ステップＳ１０８）、その総印刷部数ｍが「１部」であるかどうか判定する（ステップＳ１１０）。判定の結果、総印刷部数ｍが「１部」である場合には、ステップＳ１２４の処理に進むが、「２部」以上である場合には、ステップＳ１１２の処理に進む。この場合、ＱＴ値（印刷部数）として、前述したとおり「１００部」が記載されている（"ＱＴ＝１００"）ので、その「１００部」を、分散印刷すべき総印刷部数ｍとして取得することになり、「２部」以上であるので、ステップＳ１１２に進むことになる。
【００５４】
次に、ステップＳ１１２では、分散処理部２５は、印刷ジョブデータの印刷ジョブ格納部３１部への格納を再開し、受信した印刷ジョブデータを印刷ジョブ格納部３１に格納する。そして、分散処理部２５は、受信した印刷ジョブデータが、印刷ジョブ格納部３１に入りきったか否かを判定し（ステップＳ１１４）、入りきった場合には、さらに、送信されてきた印刷ジョブデータの全てを受信したか否かを判定する（ステップＳ１１６）。判定の結果、未だ、印刷ジョブデータの全てを受信していない場合には、ステップＳ１１２の処理に戻り、分散処理部２５は、引き続き、受信した印刷ジョブデータを印刷ジョブ格納部３１に格納し、印刷ジョブデータの全てを受信するまで、ステップＳ１１２からステップＳ１１６までの処理を繰り返す。その後、印刷ジョブデータの全てを受信するまでの間に、受信した印刷ジョブデータが、印刷ジョブ格納部３１に入りきらなかった場合には、後述する第２の分散印刷処理が実行される（ステップＳ１２０）。反対に、印刷ジョブデータの全てを受信して、その印刷ジョブデータの全てが印刷ジョブ格納部３１に入りきった場合には、後述する第１の分散印刷処理が実行される（ステップＳ１１８）。
【００５５】
即ち、本実施例では、図４に示す広義の分散印刷処理は、その中でさらに、狭義の分散印刷処理である第１の分散印刷処理と第２の分散印刷処理に分かれており、それらの処理は、送信された印刷ジョブデータの全てを印刷ジョブ格納部３１に格納したか否かに応じて、選択的に実行される。
【００５６】
図６は第１の分散印刷処理ルーチンの処理手順を示すフローチャートである。この処理ルーチンが開始されると、分散先決定部２３は、まず、共通前処理を実行する（ステップＳ２０２）。この共通前処理は、この第１の分散印刷処理においてだけでなく、後述する第２の分散印刷処理においても、共通に実行される前処理である。
【００５７】
図７は共通前処理の処理手順を示すフローチャートである。この共通前処理では、分散先決定部２３は、まず、分散先指定ファイル格納部３２に、分散先指定ファイルが格納されているか否かを検出する（ステップＳ３０２）。分散先指定ファイルが格納されている場合には、前もって、分散先として使用したいプリンタの候補が指定されていることになる。
【００５８】
図８は分散先指定ファイルの内容を示す説明図である。図８に示すように、分散先指定ファイルには、分散先として使用したいプリンタのＩＰアドレスが列挙して記載されている。このような分散先指定ファイルは、例えば、サービスマンが、プリンタＰＲＴ１を設置して初期設定する際に、そのプリンタＰＲＴ１に設定用コンピュータなどを接続して、インストールすることにより、分散先指定ファイル格納部３２に格納することができる。また、ＬＡＮを介してインストールするようにしてもよい。なお、このような分散先指定ファイルを用いる場合、分散先として自己のプリンタＰＲＴ１も使用したい場合には、自己プリンタＰＲＴ１のＩＰアドレス「ＩＰ１」も、分散先指定ファイルに記載しておく必要がある。
【００５９】
さて、分散先指定ファイル格納部３２に分散先指定ファイルが格納されている場合には、分散先決定部２３は、その分散先指定ファイルを読み出して、記載されているプリンタのＩＰアドレスをリストアップする（ステップＳ３０４）。
【００６０】
反対に、分散先指定ファイルが格納されていない場合には、分散先決定部２３は、ＳＮＭＰなどを利用して、ＬＡＮに対し、ブロードキャストでＬＡＮに接続されている各機器のＩＰアドレスを問い合わせ、応答されたＩＰアドレスをリストアップする（ステップＳ３０６）。
【００６１】
次に、分散先決定部２３は、ＳＮＭＰで、リストアップしたＩＰアドレスの各機器に対し、その機種名を問い合わせ、応答された機種名に基づいて、自己のプリンタＰＲＴ１と同一機種のプリンタを抽出する（ステップＳ３０８）。このように、自己のプリンタＰＲＴ１と同一機種のプリンタを、分散先プリンタの候補として抽出するのは、分散印刷を行う際に、各分散先プリンタにおいて、印刷ジョブのデータ変換などをすることなく、適正な印刷を行わせるためである。この結果、各分散先プリンタでの印刷物の品質、例えば、解像度やフォントなどを統一することができる。カラー印刷や両面印刷指定も統一して実行する。
【００６２】
なお、既述したとおり、分散先決定部２３は、プリンタＰＲＴ１の電源投入時に、プリンタＰＲＴ１の機種名を既に取得しているので、それに基づいて、自己のプリンタＰＲＴ１と同一機種のプリンタを抽出する。
【００６３】
また、分散先指定ファイルで指定されているＩＰアドレスの機器に対しても、機種名の問い合わせを行うのは、次の理由による。すなわち、分散先指定ファイル作成後に、機器の入れ換えなどにより、分散先指定ファイルに記載されていたＩＰアドレスが、自己のプリンタＰＲＴ１と別機種のプリンタに割り振られたり、プリンタ以外の機器に割り振られたりする可能性があるので、自己のプリンタＰＲＴ１と同一機種であるかの確認を行うためである。さらに、分散先指定ファイルで指定されているＩＰアドレスの機器が、実際に電源が投入されていて、ネットワーク経路が到達可能であることの確認も同時に行っている。
【００６４】
さて、以上のようにして、図７に示す共通前処理が終了したら、図６に戻って、部数決定部２４が、次に、図４のステップＳ１０８で取得した総印刷部数ｍを、残存印刷部数ｒとして設定する（ステップＳ２０４）。ここで、残存印刷部数ｒとは、システム全体で、まだ印刷しなければならない残りの印刷部数のことである。
【００６５】
次に、分散先決定部２３は、前述した共通前処理で抽出したプリンタに対し、ＳＮＭＰなどで、動作状態の問い合わせを行い、その応答結果に基づいて、次の３つの条件の全てを満たすプリンタを候補プリンタとして選択する（ステップＳ２０６）。
１）オンライン状態である。
２）印刷ジョブデータを受信中でない。
３）印刷ジョブデータを印刷中でない。
【００６６】
このうち、１）の「オンライン状態である。」という条件を課すことによって、用紙切れやトナー切れ（あるいはインク切れ）、あるいは紙詰まりなど、エラーを発生していて、すぐには印刷できないプリンタを、分散先プリンタの候補から排除することができる。また、２）の「印刷ジョブデータを受信中でない。」とは、対象となるプリンタが、プリンタＰＲＴ１から送信された印刷ジョブデータもちろんのこと、他の機器（コンピュータなど）から送信された印刷ジョブデータも受信している最中でないことを言い、また、３）の「印刷ジョブデータを印刷中でない。」とは、受信した印刷ジョブデータを印刷している最中ではないことを言う。オンライン状態にあるプリンタであっても、印刷ジョブデータを受信中または印刷中のプリンタは、印刷中や、印刷完了時に、紙詰まりや、用紙切れ，トナー切れなどのエラーを発生し得るので、これら２），３）の条件を課すことによって、そのような可能性のあるプリンタを、分散先プリンタの候補から排除することができる。
【００６７】
なお、共通前処理で抽出したプリンタの中に自己プリンタＰＲＴ１が含まれている場合、その自己プリンタＰＲＴ１についても、上記３つの条件の全てを満たせば、候補プリンタとして選択されることになる。
【００６８】
次に、分散先決定部２３は、上記した候補プリンタとして、１台以上のプリンタを選択したか否かを判定し（ステップＳ２０８）、選択されている場合には、後述するタイマ（図示せず）をリセットする（ステップＳ２１０）。そして、部数決定部２４は、選択されている候補プリンタの台数ｎを取得し（ステップＳ２１２）、残存印刷部数ｒが、候補プリンタの台数ｎより多いか否かを判定する（ステップＳ２１４）。残存印刷部数ｒの方が多い場合には、分散先決定部２３は、そのｎ台の候補プリンタ全てを分散先プリンタとして決定する（ステップ２１６）。前述したとおり、図１中に示した例では、分散先プリンタとして、自己のプリンタＰＲＴ１と、他のプリンタＰＲＴ２〜ＰＲＴ４の合計４台のプリンタを決定している。
【００６９】
第１の分散印刷処理では、決定した各分散先プリンタにおいて、それぞれ、１部ずつ分散印刷を行うようにしている。そこで、分散処理部２５は、印刷ジョブ格納部３１に格納している印刷ジョブデータのうち、ＱＴ値のみを「１部」に変更して、その印刷ジョブデータを各分散先プリンタにそれぞれ送信する（ステップＳ２１８）。従って、例えば、図１中に示した例では、印刷ジョブデータに記載されている"ＱＴ＝１００"を"ＱＴ＝１"に変更して、その印刷ジョブデータを４台の分散先プリンタに送信することになる。また、この場合、クライアントＣＬから送信された印刷ジョブデータの全てが印刷ジョブ格納部３１に入りきっているので、その印刷ジョブデータの全てが各分散先プリンタにそれぞれ送信されることになる。
【００７０】
こうして、分散処理部２５は、受信した印刷ジョブを、ＱＴ値のみ「１部」に変更して、無手順プロトコル解釈部２２Ｂ，ＴＣＰ／ＩＰ解釈部２１を介して、各分散先プリンタにそれぞれ送信することになる。このとき、無手順プロトコル解釈部２２Ｂは、印刷プロトコルである無手順プロトコルに従って、その印刷ジョブを含む通信データを送信する。また、ＴＣＰ／ＩＰ解釈部２１は、その通信データの送信先ＩＰアドレスとして、各分散先プリンタのＩＰアドレスをそれぞれ指定すると共に、送信先ポート番号としては、受信した際のポート番号「１９１００」ではなく、無手順プロトコルで通常割り当てるボート番号「９１００」を指定する。
【００７１】
例えば、図１中に示した例では、分散先プリンタとしてプリンタＰＲＴ１〜ＰＲＴ４が決定されているため、各々の分散先プリンタに送信される通信データＤＴ１〜ＤＴ４では、送信先ＩＰアドレス，送信先ポート番号，ＱＴ値は以下のように指定される。
【００７２】
プリンタＰＲＴ１への通信データＤＴ１→「ＩＰ１」，「９１００」，「１部」
プリンタＰＲＴ２への通信データＤＴ２→「ＩＰ２」，「９１００」，「１部」
プリンタＰＲＴ３への通信データＤＴ３→「ＩＰ３」，「９１００」，「１部」
プリンタＰＲＴ２への通信データＤＴ４→「ＩＰ４」，「９１００」，「１部」
【００７３】
分散先プリンタの１つであるプリンタＰＲＴ２では、図３に示すように、ＴＣＰ／ＩＰ解釈部５１が、通信データＤＴ２に含まれる送信先ＩＰアドレス「ＩＰ２」に従って、その通信データＤＴ２を受信し、さらに、その通信データＤＴ２に含まれる送信先ポート番号が「９１００」であるので、無手順プロトコル解釈部２２Ｂに渡す。無手順プロトコル解釈部５２は、無手順プロトコルに従って、印刷ジョブを含む通信データを受け取り、印刷ジョブをプリンタコントローラ５３に渡す。プリンタコントローラ５３は、印刷ジョブのデータに含まれるＱＴ値から印刷部数として「１部」を読み取り、指定されているその部数、即ち、「１部」だけ、プリンタエンジン５４に、印刷ジョブに従った印刷を実行させる。
【００７４】
他の分散先プリンタであるプリンタＰＲＴ３，ＰＲＴ４においても、同様にして、指定された印刷部数「１部」だけ、印刷ジョブに従った印刷が実行される。
【００７５】
また、分散先プリンタである自己のプリンタＰＲＴ１では、ＴＣＰ／ＩＰ解釈部２１が、送信した通信データＤＴ１を、その通信データＤＴ１に含まれる送信先ＩＰアドレス「ＩＰ１」に基づいて受信する。さらに、ＴＣＰ／ＩＰ解釈部２１は、その通信データＤＴ１に含まれる送信先ポート番号が「９１００」であるので、通常印刷の場合と同様に、「９１００」で送信された通信データを扱う無手順プロトコル解釈部２２Ｂに渡す。無手順プロトコル解釈部２２Ｂは、無手順プロトコルに従って、印刷ジョブを含む通信データを受け取り、印刷ジョブをプリンタコントローラ４２に渡す。プリンタコントローラ４２は、印刷ジョブのデータに含まれるＱＴ値から印刷部数として「１部」を読み取り、指定されているその部数「１部」だけ、プリンタエンジン４１に、印刷ジョブに従った印刷を実行させる。
【００７６】
以上のようにして、分散先プリンタであるプリンタＰＲＴ１〜ＰＲＴ４では、それぞれ、「１部」ずつの印刷が実行されることになり、システム全体で、合計「４部」の分散印刷が実行されることになる。すなわち、今回、システム全体で印刷された部数は、ステップＳ２１６で決定された分散先プリンタの台数、すなわち、最終的な候補プリンタの台数ｎと等しくなる。
【００７７】
図６に戻って、次に、部数決定部２４は、現在の残存印刷部数ｒから、今回印刷された部数ｎを減じて、その差を新たな残存印刷部数ｒとして設定する（ステップＳ２２０）。そして、部数決定部２４は、その残存印刷部数ｒが「０部」であるか否かを判定する（ステップＳ２２２）。「０部」でない場合には、ステップＳ２０６に戻って、分散先決定部２３は、共通前処理で抽出したプリンタに対し、再度、動作状態の問い合わせを行い、その応答結果に基づいて、上記条件の全てを満たすプリンタを候補プリンタとして選択する。
【００７８】
ところで、ステップＳ２１６で決定された分散先プリンタは、ステップＳ２１８における印刷ジョブデータの送信からほとんど時間が経っていない場合には、印刷ジョブデータを受信中または印刷中である可能性が高いので、そのようなときに、分散先決定部２３が、ステップＳ２０６において、再度、候補プリンタの選択を行ったとしても、候補プリンタとして１台のプリンタも選択していない可能性がある。
【００７９】
そこで、そのように、分散先決定部２３が、１台のプリンタも選択していない場合には（ステップＳ２０８）、まず、タイマ（図示せず）の計時動作を開始させ（ステップＳ２２６）、その後、例えば、５秒などの一定時間待機する（ステップＳ２２８）。そして、分散先決定部２３は、タイマによる計時開始から、例えば、５分など所定時間経過したか否かを判定し（ステップＳ２３０）、未だその時間を経過していなければ、ステップＳ２０６に戻って、候補プリンタの選択を実行する。こうして、分散先決定部２３は、候補プリンタとして１台以上のプリンタを選択するまで、同様の処理を繰り返す。なお、この間、タイマの計時動作は継続させる（ステップＳ２２６）。このように、所定の期間、上記の処理を繰り返すことにより、その期間中に、受信中や印刷中であったプリンタが印刷を完了して、再度の印刷を実行することが可能となった場合や、または、用紙切れであったプリンタに用紙が補充されて、オンライン状態になったり、電源がオフ状態であったプリンタに電源が投入され、電源オンの状態になったりして、印刷を実行することが可能となった場合には、候補プリンタとしてそれらのプリンタを選択することが可能となる
【００８０】
しかし、タイマによる計時開始から所定時間経過しても、候補プリンタとして１台のプリンタも選択できない場合には、分散先決定部２３は、タイマをリセットした上で（ステップＳ２３２）、自己のプリンタＰＲＴ１を、無条件で分散先プリンタとして決定する（ステップＳ２３４）。
【００８１】
次に、分散処理部２５は、印刷ジョブ格納部３１に格納している印刷ジョブデータのうち、ＱＴ値を、残存印刷部数である「ｒ部」に変更して、その印刷ジョブデータを分散先プリンタである自己プリンタＰＲＴ１に送信する（ステップＳ２３６）。
【００８２】
こうして、分散処理部２５は、受信した印刷ジョブを、ＱＴ値のみを「ｒ部」に変更して、無手順プロトコル解釈部２２Ｂ，ＴＣＰ／ＩＰ解釈部２１を介して、分散先プリンタである自己プリンタＰＲＴ１に送信することになる。このとき、無手順プロトコル解釈部２２Ｂは、印刷プロトコルである無手順プロトコルに従って、その印刷ジョブを含む通信データを送信する。また、ＴＣＰ／ＩＰ解釈部２１は、その通信データの送信先ＩＰアドレスとして、自己プリンタＰＲＴ１のＩＰアドレス「ＩＰ１」を指定すると共に、送信先ポート番号としては、無手順プロトコルで通常割り当てるボート番号「９１００」を指定する。
【００８３】
また、分散先プリンタである自己のプリンタＰＲＴ１では、ＴＣＰ／ＩＰ解釈部２１が、送信した通信データＤＴ１を、その通信データＤＴ１に含まれる送信先ＩＰアドレス「ＩＰ１」に基づいて受信する。さらに、ＴＣＰ／ＩＰ解釈部２１は、その通信データＤＴ１に含まれる送信先ポート番号が「９１００」であるので、通常印刷の場合と同様に、「９１００」で送信された通信データを扱う無手順プロトコル解釈部２２Ｂに渡す。無手順プロトコル解釈部２２Ｂは、無手順プロトコルに従って、印刷ジョブを含む通信データを受け取り、印刷ジョブをプリンタコントローラ４２に渡す。プリンタコントローラ４２は、印刷ジョブのデータに含まれるＱＴ値から印刷部数として「ｒ部」を読み取り、指定されているその部数「ｒ部」だけ、プリンタエンジン４１に、印刷ジョブに従った印刷を実行させる。
【００８４】
以上のようにして、所定時間中に候補プリンタとして１台のプリンタも選択されない場合には、分散先プリンタとして自己プリンタＰＲＴ１を決定し、その自己プリンタＰＲＴにおいて、残っている全ての印刷部数（即ち、残存印刷部数ｒ）分の、印刷を実行して、ＣＰＵ２０は、図６に示す第１の分散印刷処理ルーチンを終了する。
【００８５】
一方、ステップＳ２０６からステップＳ２２２までの処理が繰り返されて、システム全体で印刷された累積の部数が、総印刷部数ｍに近づくと、残存印刷部数ｒも少なくなり、ステップＳ２１４において、ついには、残存印刷部数ｒが、候補プリンタの台数ｎより少なくなる場合がある。その場合には、全ての候補プリンタを分散先プリンタとして決定する必要はなく、残存印刷部数ｒ分の台数だけ、分散先プリンタを決定すればよいので、分散先決定部２３は、その残存印刷部数ｒを候補プリンタの台数ｎとして設定し（ステップＳ２２４）、その残存印刷部数ｒ分の台数に、候補プリンタを絞り込む。その上で、分散先決定部２３は、新たに設定したｎ（＝ｒ）台の候補プリンタを分散先プリンタとして決定する（ステップ２１６）。
【００８６】
そして、分散処理部２５は、前述したとおり、印刷ジョブ格納部３１に格納している印刷ジョブデータのうち、ＱＴ値のみを「１部」に変更して、その印刷ジョブデータを各分散先プリンタにそれぞれ送信する（ステップＳ２１８）。そして、部数決定部２４も、前述したとおり、現在の残存印刷部数ｒから、今回印刷された部数ｎを減じて、その差を新たな残存印刷部数ｒとして設定し（ステップＳ２２０）、その残存印刷部数ｒが「０部」であるか否かを判定する（ステップＳ２２２）。しかし、上記の如く、今回印刷された部数ｎは、残存印刷部数ｒと等しいので（ｎ＝ｒ）、残存印刷部数ｒから部数ｎを減じて得られる差は「０」となって、新たに設定される残存印刷部数ｒは「０部」となるため、部数決定部２４は、残存印刷部数ｒが「０部」であると判定する。
【００８７】
こうして、システム全体において、各分散先プリンタで印刷された累積の印刷部数は、「ｍ部」となり、総印刷部数ｍを全て印刷したことになるので、ＣＰＵ２０は、図６に示す第１の分散印刷処理ルーチンを終了する。
【００８８】
以上のようにして、第１の分散印刷処理ルーチンを終了すると、ＣＰＵ２０は、図４の処理に戻り、図４の一連の処理も終了する。
【００８９】
図９は、第２の分散印刷処理ルーチンの処理手順を示すフローチャートである。前述したとおり、クライアントＣＬから送信された印刷ジョブデータの全てを受信するまでの間に、受信した印刷ジョブデータが、印刷ジョブ格納部３１に入りきらなかった場合には、第２の分散印刷処理が実行される（図１のステップＳ１２０）。そこで、図９に示す処理ルーチンが開始されると、分散先決定部２３は、第１の分散印刷処理と同様に、まず、共通前処理を実行する（ステップＳ２０２）。共通前処理については、図７で述べた内容と同じであるので、その説明は省略する。
【００９０】
次に、分散先決定部２３は、共通前処理で抽出したプリンタに対し、ＳＮＭＰなどで、動作状態の問い合わせを行い、その応答結果に基づいて、オンライン状態にあるプリンタを候補プリンタとして選択する（ステップＳ４０２）。これにより、用紙切れなど、エラーを起こしていて、すぐには印刷できないプリンタを、分散先プリンタの候補から排除することができる。
【００９１】
なお、共通前処理で抽出したプリンタの中に自己プリンタＰＲＴ１が含まれている場合、その自己プリンタＰＲＴ１についても、オンライン状態であれば、候補プリンタとして選択されることになる。
【００９２】
次に、分散先決定部２３は、上記した候補プリンタとして、１台以上のプリンタを選択したか否かを判定し（ステップＳ４０４）、未だ１台のプリンタも選択していない場合には、自己のプリンタＰＲＴ１を、無条件で候補プリンタとして選択する（ステップＳ４１４）。
【００９３】
こうして、分散先決定部２３は、以上のようにして選択したプリンタを、分散先プリンタとして決定する（ステップＳ４１６）。前述したとおり、図１中に示した例では、分散先プリンタとして、自己のプリンタＰＲＴ１と、他のプリンタＰＲＴ２〜ＰＲＴ４の合計４台のプリンタを決定している。
【００９４】
第２の分散印刷処理では、決定した各分散先プリンタにおいて、それぞれ、割り当てた分散部数だけ、分散印刷を行うようにしている。そこで、部数決定部２４は、分散先プリンタの台数ｓと、ステップＳ１０８で取得した総印刷部数ｍとに基づいて、各分散先プリンタに割り当てるべき分散部数を決定する。本実施例では、各分散先プリンタに対し、できる限り均等に割り当てられるように、かつ、その総計が総印刷部数ｍと等しくなるように、各々の分散部数を決定している。
【００９５】
従って、前述したとおり、図１中に示した例では、分散先プリンタの台数が４台で、総印刷部数は「１００部」であるので、各分散先プリンタに割り当てるべき分散部数を、各々、「２５部」ずつと決定することになる。
【００９６】
但し、分散先プリンタの台数や総印刷部数の値によっては、当然に、各分散先プリンタで、分散部数が均等にならない場合も生じる。従って、そのことを踏まえた上で、具体的には、次のようにして分散部数の決定を行っている。
【００９７】
すなわち、分散先プリンタの台数をｍ台、総印刷部数をｍ部として、ｓ台の分散先プリンタのうち、ｘ番目のプリンタに割り当てるべき分散部数をａxとすると、その分散部数ａxは式（１）に従って決定する。
【００９８】
【数１】
2006256089.tif 000003
【００９９】
なお、式（１）において、右辺２項目の"（...≦...）？１：０"は、カッコ内の不等式を満足する場合には、その項の値を１とし、不等式を満足しない場合には、その項の値を０とするものである。
【０１００】
従って、例えば、分散先プリンタの台数ｓが４台（ｓ＝４）、総印刷部数ｍが１０２部（ｍ＝１０２）の場合、式（１）に従うと、各分散先プリンタへの分散部数ａxは、それぞれ、次のとおりとなる。
１番目のプリンタ：ａ1＝２５＋１＝２６部
２番目のプリンタ：ａ2＝２５＋１＝２６部
３番目のプリンタ：ａ3＝２５＋０＝２５部
４番目のプリンタ：ａ4＝２５＋０＝２５部
【０１０１】
次に、分散処理部２５は、印刷ジョブ格納部３１に格納している印刷ジョブデータのうち、ＱＴ値のみを、各分散先プリンタ毎に、その分散先プリンタに割り当てた分散部数ａxの値に変更して、その印刷ジョブデータを各分散先プリンタにそれぞれ送信する（ステップＳ４１０）。従って、例えば、図１中に示した例では、各分散先プリンタに割り当てた分散部数は各々「２５部」であるので、印刷ジョブデータに記載されている"ＱＴ＝１００"を"ＱＴ＝２５"に変更して、その印刷ジョブデータを４台の分散先プリンタに送信することになる。この場合、クライアントＣＬから送信された印刷ジョブデータの全てが印刷ジョブ格納部３１に入りきっていないので、送信された印刷ジョブデータのうち、印刷ジョブ格納部３１に入りきっている分の印刷ジョブデータが、各分散先プリンタにそれぞれ送信されることになる。こうして、印刷ジョブ格納部３１に格納されていた印刷ジョブデータが送信されることにより、その分の格納領域が空くので、印刷ジョブ格納部３１への新たなデータの格納が可能となる。そこで、分散処理部２５は、受信した印刷ジョブデータの印刷ジョブ格納部３１への格納を再開し、それ以降に受信し、印刷ジョブ格納部３１に一旦格納した印刷ジョブデータも、順次、各分散先プリンタにそれぞれ送信する（ステップＳ４１２）。
【０１０２】
こうして、分散処理部２５は、受信した印刷ジョブを、ＱＴ値のみ変更して、無手順プロトコル解釈部２２Ｂ，ＴＣＰ／ＩＰ解釈部２１を介して、各分散先プリンタにそれぞれ送信することになる。このとき、無手順プロトコル解釈部２２Ｂは、印刷プロトコルである無手順プロトコルに従って、その印刷ジョブを含む通信データを送信する。また、ＴＣＰ／ＩＰ解釈部２１は、その通信データの送信先ＩＰアドレスとして、各分散先プリンタのＩＰアドレスをそれぞれ指定すると共に、送信先ポート番号としては、受信した際のポート番号「１９１００」ではなく、無手順プロトコルで通常割り当てるボート番号「９１００」を指定する。
【０１０３】
例えば、図１中に示した例では、分散先プリンタとしてプリンタＰＲＴ１〜ＰＲＴ４が決定されているため、各々の分散先プリンタに送信される通信データＤＴ１〜ＤＴ４では、送信先ＩＰアドレス，送信先ポート番号，ＱＴ値は以下のように指定される。
【０１０４】
プリンタＰＲＴ１への通信データＤＴ１→「ＩＰ１」，「９１００」，「２５部」
プリンタＰＲＴ２への通信データＤＴ２→「ＩＰ２」，「９１００」，「２５部」
プリンタＰＲＴ３への通信データＤＴ３→「ＩＰ３」，「９１００」，「２５部」
プリンタＰＲＴ２への通信データＤＴ４→「ＩＰ４」，「９１００」，「２５部」
【０１０５】
分散先プリンタであるプリンタＰＲＴ１〜ＰＲＴ４における動作は、前述した第１の分散処理の場合とほぼ同様であるので、説明は省略する。ただ異なる点は、プリンタコントローラが、印刷ジョブのデータに含まれるＱＴ値から印刷部数として「２５部」を読み取り、指定されているその部数「２５部」だけ、プリンタエンジンに、印刷ジョブに従った印刷を実行させる点である。
【０１０６】
以上のようにして、分散先プリンタであるプリンタＰＲＴ１〜ＰＲＴ４では、それぞれ、「２５部」ずつの印刷が実行されることになり、システム全体で、合計「１００部」の分散印刷が実行されることになる。
【０１０７】
こうして、ステップＳ４０６で決定した分散先プリンタにおいて、ステップＳ４０８で決定した各分散先プリンタに対する分散部数ａxだけ、分散印刷を実行させることにより、システム全体で、総印刷部数ｍを全て印刷したことになるので、ＣＰＵ２０は、図９に示す第２の分散印刷処理ルーチンを終了し、図４の処理に戻り、図４の一連の処理も終了する。
【０１０８】
さて、一方、図４において、分散処理部２５は、前述したステップＳ１０６で、印刷ジョブ格納部３１に格納した印刷ジョブデータにＱＴ値が見つからなければ、次に、分散処理部２５は、格納している印刷ジョブデータにジョブ制御言語部分が見つかっており、かつ、そのジョブ制御言語部分の終端が見つかっていないかどうかを判定する（ステップＳ１２２）。
【０１０９】
その結果、格納している印刷ジョブデータにジョブ制御言語部分が見つかっていない場合は、印刷ジョブデータにジョブ制御言語部分自体がないものと判断でき、また、ジョブ制御言語部分は見つかっているが、ＱＴ値が見つかることなく、すでに、その終端が見つかっている場合は、ジョブ制御言語部分にＱＴ値がないものと判断できる。従って、これらの場合には、もはや、受信している印刷ジョブデータ内にＱＴ値を見つける可能性がないので、分散処理部２５は、次のステップＳ１２４の処理に進む。
【０１１０】
また、前述したとおり、総印刷部数ｍが「１部」である場合（ステップＳ１１０）も、同様に、ステップＳ１２４の処理に進む。
【０１１１】
ステップＳ１２４では、分散先決定部２３が、自己のプリンタＰＲＴ１のみを分散先プリンタとして決定する。すなわち、ＱＴ値がなく、総印刷部数ｍが不明な場合や、ＱＴ値があっても、総印刷部数ｍが「１部」の場合には、実質的に分散印刷を行うことは不可能であるため、自己のプリンタＰＲＴ１のみの通常の印刷に切り換えるのである。そして、分散処理部２５は、印刷ジョブ格納部３１に格納している印刷ジョブデータをそのまま、分散先プリンタとして決定した自己のプリンタＰＲＴ１に送信する（ステップＳ１２６）。その後、分散処理部２５は、それ以降に受信した印刷ジョブデータも、分散先プリンタである自己のプリンタＰＲＴ１に送信する（ステップＳ１２８）。
【０１１２】
こうして、分散処理部２５は、受信した印刷ジョブを、無手順プロトコル解釈部２２Ｂ，ＴＣＰ／ＩＰ解釈部２１を介して、自己のプリンタＰＲＴ１に送信することになる。このとき、無手順プロトコル解釈部２２Ｂは、印刷プロトコルである無手順プロトコルに従って、その印刷ジョブを含む通信データを送信すると共に、ＴＣＰ／ＩＰ解釈部２１は、その通信データの送信先ＩＰアドレスとして、自己プリンタＰＲＴ１のＩＰアドレス「ＩＰ１」を指定すると共に、送信先ポート番号としては、無手順プロトコルで通常割り当てるボート番号「９１００」を指定する。
【０１１３】
自己プリンタＰＲＴ１では、ＴＣＰ／ＩＰ解釈部２１が、送信した通信データを、その通信データＤＴ１に含まれる送信先ＩＰアドレス「ＩＰ１」に基づいて受信し、さらに、その通信データに含まれる送信先ポート番号が「９１００」であるので、「９１００」で送信された通信データを扱う無手順プロトコル解釈部２２Ｂに渡す。無手順プロトコル解釈部２２Ｂは、無手順プロトコルに従って、印刷ジョブを含む通信データを受け取り、印刷ジョブをプリンタコントローラ４２に渡す。プリンタコントローラ４２は、印刷ジョブのデータに含まれるべきＱＴ値がない場合には、「１部」だけ、プリンタエンジン４１に、印刷ジョブに従った印刷を実行させる。また、印刷ジョブのデータにＱＴ値がある場合には、そのＱＴ値から印刷部数として「１部」を読み取り、指定されているその部数「１部」だけ、プリンタエンジン４１に、印刷ジョブに従った印刷を実行させる。この結果、いずれの場合も、プリンタＰＲＴ１では、１部のみ印刷が実行されることになる。
【０１１４】
以上のようにして、受信した印刷ジョブデータにＱＴ値が含まれない場合や、含まれていても、そのＱＴ値から読み取った総印刷部数ｍが「１部」のみである場合には、分散先プリンタとして自己プリンタＰＲＴ１を決定し、その自己プリンタＰＲＴにおいて、１部のみの印刷を実行して、ＣＰＵ２０は、図４の一連の処理も終了する。
【０１１５】
Ａ５．実施例の効果：
以上説明したように、本実施例においては、分散印刷制御機能を有するプリンタＰＲＴ１が、分散印刷を全て制御しているため、専用サーバを用いることなく、簡易なシステムで分散印刷を実現することが可能である。
【０１１６】
また、分散印刷制御機能を有するプリンタＰＲＴ１では、クライアントＣＬから送信された印刷ジョブデータの全てが印刷ジョブ格納部３１に入りきった場合には、ＱＴ値を「１部」に変更した上で、印刷ジョブデータを各分散先プリンタにそれぞれ送信し、各分散先プリンタにおいて、それぞれ、「１部」ずつ分散印刷を行わせるため、仮に、いずれかの分散先プリンタにおいて、エラーなどが発生し、印刷に失敗したとしても、高々、１部だけの失敗にとどめることができる。
【０１１７】
また、上記プリンタＰＲＴ１では、印刷ジョブデータの全てが印刷ジョブ格納部３１に入りきった場合、ＬＡＮに接続されているプリンタの中から、オンライン状態であり、かつ、印刷ジョブを受信中でなく、印刷中でもないプリンタを検索し、分散先プリンタを決定するため、エラーを発生しているプリンタや、エラーを発生する可能性のあるプリンタを、分散先プリンタから排除することができ、印刷に失敗したプリンタに繰り返し印刷ジョブデータを送信したりすることを避けることができる。
【０１１８】
また、クライアントＣＬでは、分散印刷を実行するために、特別なソフトウェアをインストールすることなく、単に、プリンタドライバにおいて、ポート番号の設定を、無手順プロトコルで通常割り当てられている通常のポート番号「９１００」から特定のポート番号「１９１００」に変更するだけで、分散印刷を実現することができるため、ユーザの負担を大幅に軽減することができる。
【０１１９】
また、分散先プリンタでは、送信されてくる通信データは、ポート番号が無手順プロトコルで通常割り当てられているポート番号「９１００」となっているので、分散印刷であるかどうかに関知することなく、そのまま印刷を実行することができる。
【０１２０】
また、上記プリンタＰＲＴ１では、分散印刷制御実行のトリガとなる通信データの示す送信先ポート番号「１９１００」と、分散先プリンタに送信する通信データの示す送信先ポート番号「９１００」と、を変えているため、分散先プリンタに自己のプリンタＰＲＴ１が含まれていて、自己宛に印刷ジョブを含む通信データを送信した場合でも、その通信データの示すポート番号は「９１００」であって、分散印刷制御のトリガとはなり得ず、それ故、自己宛に分散した印刷ジョブを、さらに再分散，再々分散など、無限に分散させるようなことがない。同様に、同じネットワーク内に、分散印刷制御機能を有するカスタムネットワークボードが２枚以上存在する場合にも、それらの間で分散すべき印刷ジョブをピンポンすることがない。
【０１２１】
また、上記プリンタＰＲＴ１では、受信して印刷ジョブ格納部３１に格納した印刷ジョブに、ＱＴ値が含まれていなかったり、含まれていても、そのＱＴ値から読み取った総印刷部数ｍが「１部」のみである場合には、分散先プリンタとして自己プリンタＰＲＴ１を決定し、直ちに、その印刷ジョブデータの送信を開始しているため、クライアントＣＬから送信された印刷ジョブデータの全てを受信してから、その印刷ジョブデータの送信を開始する場合に比較して、各分散先プリンタでの印刷開始を早めることができる。
【０１２２】
また、上記プリンタＰＲＴ１では、受信した印刷ジョブデータのうち、印刷部数情報であるＱＴ値のみを変更して、各分散先プリンタにそれぞれ送信するだけで、容易に分散印刷を行うことができるので、カスタムネットワークボードＣＮＢの有するＣＰＵ２０としては、高い処理能力を有するＣＰＵを用いなくて済み、製造コストを低減することができる。
【０１２３】
Ｂ．第２の実施例：
上記した第１の実施例においては、クライアントＣＬから分散印刷制御機能を有するプリンタＰＲＴ１に印刷ジョブを送信する際と、プリンタＰＲＴ１から分散先プリンタに印刷ジョブを送信する際において、それぞれ、印刷プロトコルとして同じプロトコル（すなわち、無手順プロトコル）を用いるが、ポート番号として異なるポート番号（すなわち、「９１００」と「１９１００」）を用いることにより、分散印刷を実現するようにしていたが、本実施例においては、クライアントＣＬから分散印刷制御機能を有するプリンタＰＲＴ１に印刷ジョブを送信する際と、プリンタＰＲＴ１から分散先プリンタに印刷ジョブを送信する際において、それぞれ、印刷プロトコルとして異なるプロトコルを用いることによって、分散印刷を実現する。
【０１２４】
Ｂ１．プリンタの構成：
図１０は本発明の第２の実施例としてのプリンタＰＲＴ１の構成を主として示す説明図である。本実施例において、図１０に示す構成が、第１の実施例における図３に示した構成と異なる点は、無手順プロトコル解釈部２２Ａに代えて、ＬＰＲ解釈部２６を用いた点（但し、無手順プロトコル解釈部２２Ｂはそのまま）と、それに応じて、クライアントＣＬでも、ＬＰＲ解釈部１４を設けた点である。それ以外の構成は、図３に示した構成と同じである。
【０１２５】
図１０において、ＬＰＲ解釈部２６，１４は、それぞれ、印刷プロトコルであるＬＰＲ（Line Printer daemon protocol）を解釈する。
【０１２６】
Ｂ２．通常印刷処理：
分散印刷処理を説明する前に、通常の印刷処理について簡単に説明する。なお、印刷ジョブを、クライアントＣＬからプリンタＰＲＴ１に送信し、プリンタＰＲＴ１のみで印刷を実行する場合を例として説明する。この場合、印刷ジョブは、図１０において、点線で示す経路をたどって転送される。なお、クライアントＣＬにおけるプリンタドライバ（図示せず）において、印刷プロトコルの設定は、無手順プロトコルに設定されているものとする。
【０１２７】
ユーザがクライアントＣＬに印刷命令を出すと、クライアントＣＬでは、アプリケーション１３が、印刷ジョブを、無手順プロトコル解釈部１２，ＴＣＰ／ＩＰ解釈部１１を介して、プリンタＰＲＴ１に送信する。このとき、無手順プロトコル解釈部１２は、印刷プロトコルである無手順プロトコルに従って、印刷ジョブを含む通信データを送信し、また、ＴＣＰ／ＩＰ解釈部１１は、その通信データの送信先ＩＰアドレスとして、プリンタＰＲＴ１の「ＩＰ１」を指定する。
【０１２８】
プリンタＰＲＴ１では、ＴＣＰ／ＩＰ解釈部２１が、通信データに含まれる送信先ＩＰアドレス「ＩＰ１」に従って、その通信データを受信する。無手順プロトコル解釈部２２Ｂは、無手順プロトコルに従って、印刷ジョブを含む通信データを受け取り、印刷ジョブをプリンタコントローラ４２に渡す。プリンタコントローラ４２は、印刷ジョブのデータに含まれるＱＴ値から印刷部数を読み取り、指定されている部数だけ、プリンタエンジン４１に印刷を実行させる。
【０１２９】
Ｂ３．分散印刷処理：
次に、分散印刷処理について説明する。分散印刷を行う際には、ユーザは、クライアントＣＬにおけるプリンタドライバにおいて、印刷プロトコルの設定を、無手順プロトコルからＬＰＲに変更する。すなわち、本実施例では、ここでの印刷プロトコルの設定を切り換えることにより、無手順プロトコルでは通常印刷を、ＬＰＲでは分散印刷を、それぞれ選択することになる。
【０１３０】
そこで、ユーザがクライアントＣＬに、印刷部数「１００部」として印刷命令を出すと、クライアントＣＬでは、アプリケーション１３が、印刷部数を示すＱＴ値を「１００部」とした印刷ジョブを、ＬＰＲ解釈部１４，ＴＣＰ／ＩＰ解釈部１１を介して、プリンタＰＲＴ１に送信する。このとき、ＬＰＲ解釈部１４は、印刷プロトコルであるＬＰＲに従って、印刷ジョブを含む通信データを送信し、また、ＴＣＰ／ＩＰ解釈部１１は、その通信データの送信先ＩＰアドレスとして、プリンタＰＲＴ１の「ＩＰ１」を指定する。
【０１３１】
プリンタＰＲＴ１では、ＴＣＰ／ＩＰ解釈部２１が、通信データに含まれる送信先ＩＰアドレス「ＩＰ１」に従って、その通信データを受信する。ＬＰＲ解釈部２６は、ＬＰＲに従って、印刷ジョブを含む通信データを受け取り、そのうちの印刷ジョブのデータを分散処理部２５に渡す。
【０１３２】
こうして、本実施例において、分散処理部２５に印刷ジョブデータが渡されてから、その後、分散先プリンタが決定されるまでの処理については、第１の実施例と同様であるので、それらについての説明は省略する。なお、ここで、例えば、分散先プリンタとしてプリンタＰＲＴ１〜ＰＲＴ４が決定されたものとする。
【０１３３】
その後、分散処理部２５は、受信した印刷ジョブのＱＴ値のみを変更し、そして、その印刷ジョブを、ＬＰＲ解釈部２６ではなく、無手順プロトコル解釈部２２Ｂを介し、さらに，ＴＣＰ／ＩＰ解釈部２１を介して、各分散先プリンタにそれぞれ送信する。このとき、無手順プロトコル解釈部２２Ｂは、印刷プロトコルである無手順プロトコルに従って、その印刷ジョブを含む通信データを送信する。また、ＴＣＰ／ＩＰ解釈部２１は、その通信データの送信先ＩＰアドレスとして、各分散先プリンタのＩＰアドレスをそれぞれ指定する。
【０１３４】
分散先プリンタの１つであるプリンタＰＲＴ２では、図１０に示すように、ＴＣＰ／ＩＰ解釈部５１が、通信データＤＴ２に含まれる送信先ＩＰアドレス「ＩＰ２」に従って、その通信データＤＴ２を受信し、無手順プロトコル解釈部２２Ｂに渡す。無手順プロトコル解釈部５２は、無手順プロトコルに従って、印刷ジョブを含む通信データを受け取り、印刷ジョブをプリンタコントローラ５３に渡す。プリンタコントローラ５３は、印刷ジョブのデータに含まれるＱＴ値から印刷部数を読み取り、指定されているその部数だけ、プリンタエンジン５４に、印刷ジョブに従った印刷を実行させる。
【０１３５】
他の分散先プリンタであるプリンタＰＲＴ３，ＰＲＴ４においても、同様にして、指定された印刷部数だけ、印刷ジョブに従った印刷が実行される。
【０１３６】
また、分散先プリンタである自己のプリンタＰＲＴ１では、ＴＣＰ／ＩＰ解釈部２１が、通信データに含まれる送信先ＩＰアドレス「ＩＰ１」に基づいて、自己宛に送信した通信データを受信する。無手順プロトコル解釈部２２Ｂは、無手順プロトコルに従って、印刷ジョブを含む通信データを受け取り、印刷ジョブをプリンタコントローラ４２に渡す。プリンタコントローラ４２は、印刷ジョブのデータに含まれるＱＴ値から印刷部数を読み取り、指定されているその部数だけ、プリンタエンジン４１に、印刷ジョブに従った印刷を実行させる。
【０１３７】
以上のようにして、分散先プリンタであるプリンタＰＲＴ１〜ＰＲＴ４では、それぞれ、指定された部数の印刷が実行されることになる。
【０１３８】
これら以外の処理については、第１の実施例と同様であるので、それらについての説明は省略する。
【０１３９】
Ｂ４．実施例の効果：
以上説明したように、本実施例においては、第１の実施例と同様に、分散印刷制御機能を有するプリンタＰＲＴ１が、分散印刷を全て制御しているため、専用サーバを用いることなく、簡易なシステムで分散印刷を実現することが可能である。
【０１４０】
また、分散印刷制御機能を有するプリンタＰＲＴ１でも、第１の実施例と同様に、クライアントＣＬから送信された印刷ジョブデータの全てが印刷ジョブ格納部３１に入りきった場合、ＬＡＮに接続されているプリンタの中から、オンライン状態であり、かつ、印刷ジョブを受信中でなく、印刷中でもないプリンタを検索して、分散先プリンタを決定し、ＱＴ値を「１部」に変更した上で、印刷ジョブデータを各分散先プリンタにそれぞれ送信し、各分散先プリンタにおいて、それぞれ、「１部」ずつ分散印刷を行わせる。このため、仮に、いずれかの分散先プリンタにおいて、エラーなどが発生し、印刷に失敗したとしても、高々、１部だけの失敗にとどめることができる。また、エラーを発生しているプリンタや、エラーを発生する可能性のあるプリンタを、分散先プリンタから排除することができ、印刷に失敗したプリンタに繰り返し印刷ジョブデータを送信したりすることを避けることができる。
【０１４１】
また、クライアントＣＬでは、分散印刷を実行するために、特別なソフトウェアをインストールすることなく、単に、プリンタドライバにおいて、印刷プロトコルの設定を、ＬＰＲに変更するだけで、分散印刷を実現することができるため、ユーザの負担を大幅に軽減することができる。
【０１４２】
また、上記プリンタＰＲＴ１では、分散印刷制御実行のトリガとなる印刷プロトコル（すなわち、ＬＰＲ）と、分散先プリンタに送信する際の印刷プロトコル（すなわち、無手順プロトコル）と、で種類を変えているため、分散先プリンタに自己のプリンタＰＲＴ１が含まれていて、自己宛に印刷ジョブを送信した場合でも、その際の印刷プロトコルは無手順プロトコルであって、分散印刷制御のトリガとはなり得ず、それ故、自己宛に分散した印刷ジョブを、さらに再分散，再々分散など、無限に分散させるようなことがない。
【０１４３】
また、上記プリンタＰＲＴ１でも、受信した印刷ジョブデータのうち、印刷部数情報であるＱＴ値のみを変更して、各分散先プリンタにそれぞれ送信するだけで、容易に分散印刷を行うことができるので、カスタムネットワークボードＣＮＢの有するＣＰＵ２０としては、高い処理能力を有するＣＰＵを用いなくて済み、製造コストを低減することができる。
【０１４４】
Ｃ．第３の実施例：
Ｃ１．第１の分散印刷処理の変形例：
図１１は、第１の分散印刷処理ルーチンの処理手順の変形例を示すフローチャートである。第１実施例や第２実施例における第１の分散印刷処理ルーチンは、送信されてきた印刷ジョブが印刷ジョブ格納部３１に格納可能な場合にのみ実行可能である。しかし、変形例の第１の分散印刷処理ルーチンは、印刷ジョブ格納部３１に格納可能でなくても実行可能であるように構成されている点が異なる。
【０１４５】
ステップＳ５１０では、分散印刷制御機能を有するプリンタＰＲＴ１は、第１実施例と同様に分散先を決定する。ステップＳ５２０では、プリンタＰＲＴ１は、決定された分散先に対して送信されてきた印刷ジョブのうち印刷対象画像データのみを送信する。
【０１４６】
ステップＳ５３０では、プリンタＰＲＴ１は、「１」のＱＴ値を含む部数指定コマンドを決定された分散先に対して送信する。なお、本実施例では、印刷対象画像データと部数指定コマンドとを別々に送信しているが、一緒に送信するように構成しても良い。本実施例では、印刷対象画像データの送信と部数指定コマンドの送信の組合せが、特許請求の範囲における「第１の分散印刷ジョブデータ」に相当する。
【０１４７】
なお、本実施例では、この部数指定コマンドは、「０」のＱＴ値を含む部数指定コマンドを受信するまでジョブを完了しないように分散先の印刷装置を設定するためのコマンドを含んでいる。分散先の印刷装置は、指令された１部の印刷を完了すると、印刷完了を表す情報を含む印刷完了データをプリンタＰＲＴ１に送信する。
【０１４８】
ステップＳ５４０では、プリンタＰＲＴ１は、印刷完了データの受信に応じて印刷完了データの送信元に「１」のＱＴ値を含む部数指定コマンドを再送信する。この再送信は、総印刷部数が総印刷部数ｍに達するまで継続される（ステップＳ５５０）。一方、全ての部数の印刷が完了すると、処理がステップＳ５４０に進められる。
【０１４９】
ステップＳ５４０では、プリンタＰＲＴ１は、印刷完了データの受信に応じて印刷完了データの送信元に「０」のＱＴ値を含む部数指定コマンドを再送信する。「０」のＱＴ値を含む部数指定コマンドを受信した分散先は、順次ジョブを完了する。
【０１５０】
このように、本変形例は、分散先に部数指定コマンドを送信することによって１部ずつ印刷を実行させることができるので、印刷対象画像データを再送信する必要がない。この結果、印刷対象画像データの再送信に要求される印刷ジョブ格納部３１への印刷ジョブの格納が不要となるので、かかる格納ができなくても本変形例は、実行可能である。
【０１５１】
加えて、データサイズが大きな印刷対象画像データの送信を最初の一度だけとすることができるので、ネットワークのトラフィックを小さくすることができる。さらに、分散印刷が完了するまで印刷ジョブが終了しないので、他の印刷ジョブを排して迅速に分散印刷を完了させることができるとともに、分散先印刷装置を独占して他の印刷物の混入も防止することができる。
【０１５２】
ただし、印刷ジョブ格納部３１への印刷ジョブの格納が可能であれば、他の印刷ジョブの処理の完了等によって利用可能となった印刷装置を分散先に加えることができるように構成することも可能となる。印刷ジョブ格納部３１に格納された印刷対象画像データを新たに利用可能となった印刷装置に送信することが可能だからである。これにより、分散先を追加して分散印刷処理をさらに迅速化することができる。
【０１５３】
なお、上述の変形例では、「０」のＱＴ値を含む部数指定コマンドを受信するまでジョブを完了しないように分散先の印刷装置を設定するように構成されているが、後述するようにプリンタＰＲＴ１と分散先の印刷装置のコネクションを維持して他からのアクセスを制限することによって実現しても良い。この場合には、所定のジョブ終了コマンドを分散先の印刷装置に送信することによって印刷ジョブを完了させることになる。
【０１５４】
また、本実施例では、印刷対象画像データと部数指定コマンドとは、それぞれ特許請求の範囲における「印刷対象画像データ」と「印刷制御データ」とに相当する。
【０１５５】
Ｃ２．第２の分散印刷処理の変形例：
図１２は、第２の分散印刷処理ルーチンの処理手順の変形例を示すフローチャートである。第２の分散印刷処理は、決定した各分散先プリンタにおいて、それぞれ、割り当てた分散部数だけ、分散印刷を行う処理である。本実施例は、分散先への印刷ジョブの送信後において、各分散先に割り当てられた印刷部数を変更できるように構成されている点で第１実施例と異なる。なお、分散先への印刷ジョブは、特許請求の範囲における「分散印刷ジョブ」に相当する。
【０１５６】
ステップＳ６１０では、プリンタＰＲＴ１は、第１実施例と同様に分散先と各分散先の割当て部数を決定する。ステップＳ６２０では、プリンタＰＲＴ１は、第１実施例と同様に印刷対象画像データと割当て部数を含む印刷ジョブを分散先に送信する。
【０１５７】
ステップＳ６３０において、プリンタＰＲＴ１は、分散先の１つから紙詰まり等で分散先の１つが停止していることを表す情報を含むエラーメッセージが受信されている場合には、処理をステップＳ６４０に進める。
【０１５８】
ステップＳ６４０では、プリンタＰＲＴ１は、割当ての再配分を行う。割当ての再配分は、エラーメッセージの送信元の割当て部数をゼロとするとともに、他の分散先に残存印刷部数ｒを均等に割り当てることによって行われる。
【０１５９】
ステップＳ６５０において、プリンタＰＲＴ１は、分散先が追加された場合には、処理をステップＳ６４０に進める。分散先の追加は、他の印刷ジョブの処理の完了等によって利用可能となった印刷装置を分散先に加える処理である。
【０１６０】
ステップＳ６４０では、プリンタＰＲＴ１は、割当ての再配分を行う。割当ての再配分は、追加された分散先を含めた全ての分散先に残存印刷部数ｒを均等に割り当てることによって行われる。
【０１６１】
このような、分散先の停止や追加に応じた割当ての再配分は、印刷部数が総印刷部数ｍに達するまで継続される。ただし、分散先への印刷ジョブの送信後における各分散先に割り当てられた印刷部数の変更は、本実施例では、プリンタＰＲＴ１と分散先のコネクションを維持することによって実現されている。
【０１６２】
図１３は、本変形例におけるプリンタＰＲＴ１とプリンタＰＲＴ２の間の通信シーケンスを示す説明図である。この通信シーケンスでは、通信プロトコルとして上述の各実施例と同様にＴＣＰ／ＩＰプロトコルが採用されている。この通信シーケンスは、図から分かるようにコネクション確立、データ転送、およびコネクション終了の３つのフェーズを有する。なお、プリンタＰＲＴ１とプリンタＰＲＴ２〜４の間の通信シーケンスも同様に行われる。
【０１６３】
コネクション確立のフェーズは、プリンタＰＲＴ１とプリンタＰＲＴ２との間のコネクションを確立するためのフェーズである。このフェーズは、ヘッダ中のＳＹＮフラグが立ったＴＣＰパケットをプリンタＰＲＴ１がプリンタＰＲＴ２に送信することによって開始される。「ＳＹＮフラグが立った」とは、そのＴＣＰパケットがコネクション接続を要求するパケットであることを意味している。
【０１６４】
コネクション接続を要求するパケットを受信したプリンタＰＲＴ２は、コネクションの接続が可能な場合には、ヘッダ中のＳＹＮフラグとＡＣＫフラグとが立ったＴＣＰパケットをプリンタＰＲＴ１に返送する。ＡＣＫフラグが立ったＴＣＰパケットがプリンタＰＲＴ１に返送されることによって、プリンタＰＲＴ２側のコネクションが確立する。この返送されたＴＣＰパケットのＳＹＮフラグも立っているのは、プリンタＰＲＴ２がプリンタＰＲＴ１側にコネクションの接続を要求するためである。
【０１６５】
コネクション接続を要求するパケットを受信したプリンタＰＲＴ１は、ＡＣＫフラグが立ったＴＣＰパケットをプリンタＰＲＴ２に返送する。この返送によってプリンタＰＲＴ１側のコネクションが確立する。このようにして、プリンタＰＲＴ１とプリンタＰＲＴ２との間のコネクションが確立してコネクションフェーズが完了する。
【０１６６】
データ転送のフェーズは、ＴＣＰパケットに分割された印刷ジョブをプリンタＰＲＴ１がプリンタＰＲＴ２に転送するフェーズである。このフェーズでは、複数の印刷ジョブがプリンタＰＲＴ２に転送される。
【０１６７】
コネクション終了のフェーズは、プリンタＰＲＴ１とプリンタＰＲＴ２との間のコネクションを終了させるためのフェーズである。このフェーズは、ヘッダ中のＦＩＮフラグが立ったＴＣＰパケットをプリンタＰＲＴ１がプリンタＰＲＴ２に送信することによって開始される。「ＦＩＮフラグが立った」とは、そのＴＣＰパケットがコネクション終了を要求するパケットであることを意味している。
【０１６８】
コネクション終了を要求するパケットを受信したプリンタＰＲＴ２は、ヘッダ中のＡＣＫフラグが立ったＴＣＰパケットをプリンタＰＲＴ１に返送する。ヘッダ中のＡＣＫフラグが立ったＴＣＰパケットがプリンタＰＲＴ１に返送されることによって、プリンタＰＲＴ２側のコネクションが終了する。
【０１６９】
プリンタＰＲＴ２は、ヘッダ中のＡＣＫフラグが立ったＴＣＰパケットの直後に、ヘッダ中のＦＩＮフラグが立ったＴＣＰパケットをもプリンタＰＲＴ１に返送する。ＦＩＮフラグが立ったＴＣＰパケットがプリンタＰＲＴ１に返送されるのは、プリンタＰＲＴ２がプリンタＰＲＴ１側にコネクションの終了を要求するためである。プリンタＰＲＴ１は、このＴＣＰパケットの受信に応じてＡＣＫフラグとが立ったＴＣＰパケットをプリンタＰＲＴ２に返送する。これにより、プリンタＰＲＴ１とプリンタＰＲＴ２との間のコネクションが終了してプリンタＰＲＴ２が他のユーザに開放されることになる。
【０１７０】
コネクション終了のフェーズは、通常は、１つの印刷ジョブのデータ転送が完了するとプリンタＰＲＴ１によって開始される。しかし、本実施例では、残存印刷部数ｒがゼロとなるまで、コネクション終了のフェーズが開始されずに、データ転送のフェーズが継続する。残存印刷部数ｒがゼロとなるまで、データ転送のフェーズを継続させているのは、残存印刷部数ｒがゼロとなるまでプリンタＰＲＴ２を他の開放しないようにするためである。残存印刷部数ｒがゼロとなるまでプリンタＰＲＴ２を他の開放しないのは、分散先の停止や追加に応じて割当て部数の変更ができるようにするためである。
【０１７１】
このように、本実施例では、残存印刷部数ｒがゼロとなるまでプリンタＰＲＴ１とプリンタＰＲＴ２〜４のコネクションが継続されるので、分散先における印刷部数を印刷ジョブの送信後に調整することができる。
【０１７２】
なお、プリンタＰＲＴ２が通信セッションを監視してタイムアウト処理を行うように構成されている場合には、各印刷ジョブのデータ転送の間隔が長いと、プリンタＰＲＴ２が自動的にコネクションを終了させてしまうことも想定される。しかし、この場合には、プリンタＰＲＴ１が再割当てのための制御データ転送の間にダミーのデータを転送するように構成すればよい。
【０１７３】
また、本実施例では、ＴＣＰ／ＩＰプロトコルをベースとしているが、他のコネクション型の通信プロトコールをベースとしても良い。
【０１７４】
Ｄ．変形例：
なお、本発明は上記した実施例や実施形態に限られるものではなく、その要旨を逸脱しない範囲において種々の態様にて実施することが可能である。
【０１７５】
上記した第１の実施例では、印刷プロトコルとして無手順プロトコルを用いたが、ポート番号の変更が可能であれば、ＬＰＲ，ＩＰＰ（Internet Printing Protocol），ＦＴＰ（File Transfer Protocol），ＳＭＢ（Server Message Block），ＡｐｐｌｅＴａｌｋなど、別の印刷プロトコルを用いるようにしてもよい。
【０１７６】
上記した第２の実施例では、印刷プロトコルとして、ＬＰＲと無手順プロトコルの組み合わせで用いるようにしたが、互いに異なっていれば、別の印刷プロトコル同士の組み合わせで用いるようしてもよい。
【０１７７】
上記した実施例では、ＬＡＮに接続されている各機器にはＩＰアドレスが固定で割り振られていたが、ＤＨＣＰ（Dynamic Host Configuration Protocol）サーバなどによって、動的にＩＰアドレスを割り振るようにしてもよい。但し、上記した第１の実施例のように、ポート番号「１９１００」とポート番号「９１００」を使い分けてＩＰアドレスでプリンタを特定する場合は、分散元プリンタ（プリンタＰＲＴ１）は予めＩＰアドレスが固定で割り振っておいたほうが好ましい。分散先指定ファイルを使う場合は、分散先プリンタも予めＩＰアドレスを振っておいたほうが好ましい。また、分散先指定ファイルを使わない場合は、分散先プリンタは予めＩＰアドレスを振っておかず、ＤＨＣＰによるＩＰアドレス割り当てにしておいてもよい。
【０１７８】
このように、ＩＰアドレスでプリンタを特定するようなプロトコルの場合は、分散元アドレスは予め固定でＩＰアドレスを割り振っておくことが好ましいが、ＳＭＢやＡｐｐｌｅＴａｌｋのように論理的なプリンタ名でプリンタを特定する場合はその限りでない。
ＳＭＢやＡｐｐｌｅＴａｌｋのような場合は、分散元、分散先ともに、論理的なプリンタ名をつけておき、分散先指定ファイルにも、それらのプリンタ名を指定しておくことで、ＩＰアドレスを使うことなく、同様の効果を発揮させることができる。
【０１７９】
上記した実施例では、分散印刷制御装置を、プリンタＰＲＴ１に内蔵されたカスタムネットワークボードＣＮＢとして構成するようにしたが、本発明はこれに限定されるものではなく、分散印刷制御装置をプリンタＰＲＴ１と別体とし、ＵＳＢ接続，ＩＥＥＥ１３９４バス接続，パラレル接続，シリアル接続などの有線接続や、ブルートゥース接続，無線ＬＡＮ接続，赤外線接続などの無線接続で接続するようにしてもよい。
【０１８０】
上記した実施例では、分散先指定ファイルでは、分散先として使用したいプリンタのＩＰアドレスをそれぞれ指定するようにしていたが、本発明はこれに限定されるものではなく、例えば、分散先プリンタの検索を行いたいＩＰアドレスの範囲を指定するようにしてもよい。
【０１８１】
上記した実施例では、送信先の指定や、分散先プリンタの検索や、分散先指定ファイルにおける分散先プリンタの指定などにおいて、ＩＰアドレスを用いるようにしたが、代わりに、ＭＡＣアドレスや、その他、機器を一意的に特定することができるＩＤを用いるようにしてもよい。
【０１８２】
上記した実施例では、カスタムネットワークボードＣＮＢによる、自己プリンタＰＲＴ１の機種名取得は、プリンタＰＲＴ１の電源投入時に行っていたが、本発明はこれに限定されるものではなく、少なくとも、分散先プリンタを決定するに際して、図６のステップＳ２０５の処理（自己プリンタＰＲＴ１と同一機種のプリンタの選択）よりも前に行っていればよい。従って、例えば、このステップＳ２０５の直前で、自己プリンタＰＲＴ１の機種名取得の処理を行うようにしてもよい。
【０１８３】
上記した実施例では、第２の分散印刷処理において、各分散先プリンタにできる限り均等に割り当てられるように、分散部数を決定するようにしていたが、本発明はこれに限定されるものではなく、部数決定部２４が、分散部数を決定するのに先立って、ＳＮＭＰで各分散先プリンタに、印刷用紙やトナー（あるいはインク）などの消耗品について、有無や、残量を問い合わせて、その結果に応じて、各分散先プリンタに割り当てる分散部数を決定するようにしてもよい。あるいは、各分散先プリンタの印刷速度や利用頻度や使用年数などを考慮して、分散部数を決定するようにしてもよい。また、ある程度まとまった部数以上を分散させたり、あらかじめ登録された情報に基づいてプリンタの物理的な距離を考慮したり、プリンタのネットワークトポロジー的な距離を考慮したり、さらに、分散先指定ファイルに指定された順番を考慮したり、分散先指定ファイルの中に部数の分散比率を指定してそれを考慮したりしてもよい。
【０１８４】
上記した実施例では、第１の分散印刷処理において、分散先決定部２３は、図６のステップＳ２１６において、ｎ台の候補プリンタ全てを分散先プリンタとして決定するようにしていたが、本発明はこれに限定されるものではなく、例えば、候補プリンタが２台以上ある場合でも、常にそのうちの１台のみを選択して、分散先プリンタとして決定するようにしてもよい。この場合、ステップＳ２１２，Ｓ２１４，Ｓ２２４の処理は不要となり、ステップＳ２２０において、残存印刷部数ｒとしてｒ−１を設定することになる。また、２台以上の候補プリンタの中から、１台の分散先プリンタを選択して決定する場合、その２台以上の候補プリンタが既に印刷ジョブを送付したことがあるプリンタである場合には、処理速度の速いプリンタや、メモリ容量の大きいプリンタや、自己プリンタＰＲＴ１の近くに位置するプリンタなどを優先的に選択するようにする。
【０１８５】
上記した実施例では、印刷ジョブ格納部３１に格納した印刷ジョブデータにＱＴ値が見つからない場合、分散先決定部２３は、自己のプリンタＰＲＴ１のみを分散先プリンタとして決定し、印刷ジョブ格納部３１に格納している印刷ジョブデータをそのまま、分散先プリンタとして決定した自己のプリンタＰＲＴ１に送信するようにしていた。しかしながら、本発明はこれに限定されるものではない。例えば、格納した印刷ジョブデータにＱＴ値が見つからない場合でも、送信された印刷ジョブデータの全てが印刷ジョブ格納部３１に入りきったか否かに応じて、次のように処理を分けてもよい。
【０１８６】
即ち、送信された印刷ジョブデータの全てが印刷ジョブ格納部３１に入りきった場合には、図７に示す共通前処理を実行した上で、抽出したプリンタに対し、ＳＮＭＰなどで、動作状態の問い合わせを行い、その応答結果に基づいて、オンライン状態にあるプリンタを分散先プリンタとして決定し、自己プリンタＰＲＴ１に予め設定されている所定の回数分だけ、印刷ジョブ格納部３１に格納している印刷ジョブデータを、書き換えることなくそのまま、決定した各分散先プリンタに対して、それぞれ送信するようにしてもよい。
【０１８７】
また、送信された印刷ジョブデータの全てが印刷ジョブ格納部３１に入りきらなかった場合には、同様に、共通前処理を実行した上で、抽出したプリンタに対し動作状態の問い合わせを行って、オンライン状態にあるプリンタを分散先プリンタとして決定し、印刷ジョブ格納部３１に格納している印刷ジョブデータを、書き換えることなくそのまま、その決定した各分散先プリンタに対して、それぞれ送信し、その後、それ以降に受信した印刷ジョブデータも、それら分散先プリンタに対し送信するようにしてもよい。
【０１８８】
このように構成することにより、例えば、PostScriptプリンタなど、ＱＴ値を用いて印刷部数の指定を行うことが不可能なプリンタに対しても十分対応することができる。
【図面の簡単な説明】
【０１８９】
【図１】本発明の第１の実施例としてのプリンタＰＲＴ１を備える印刷システムの構成を示す説明図である。
【図２】印刷ジョブを含む通信データの構成を概念的に示す説明図である。
【図３】図１におけるプリンタＰＲＴ１の構成を主として示す説明図である。
【図４】プリンタＰＲＴ１における主要機能ブロックの処理手順を示すフローチャートである。
【図５】印刷ジョブのデータをエディタで開いて示した説明図である。
【図６】第１の分散印刷処理ルーチンの処理手順を示すフローチャートである。
【図７】共通前処理の処理手順を示すフローチャートである。
【図８】分散先指定ファイルの内容を示す説明図である。
【図９】第２の分散印刷処理ルーチンの処理手順を示すフローチャートである。
【図１０】本発明の第２の実施例としてのプリンタＰＲＴ１の構成を主として示す説明図である。
【図１１】第１の分散印刷処理ルーチンの処理手順の変形例を示すフローチャートである。
【図１２】第２の分散印刷処理ルーチンの処理手順の変形例を示すフローチャートである。
【図１３】第２の分散印刷処理ルーチンの処理手順の変形例におけるプリンタＰＲＴ１とプリンタＰＲＴ２の間の通信シーケンスを示す説明図である。
【符号の説明】
【０１９０】
１１...ＴＣＰ／ＩＰ解釈部
１２...無手順プロトコル解釈部
１３...アプリケーション
１４...ＬＰＲ解釈部
２０...ＣＰＵ
２１...ＴＣＰ／ＩＰ解釈部
２２Ａ，２２Ｂ...無手順プロトコル解釈部
２３...分散先決定部
２４...部数決定部
２５...分散処理部
２６...ＬＰＲ解釈部
３０...メモリ
３１...印刷ジョブ格納部
３２...分散先指定ファイル格納部
４１...プリンタエンジン
４２...プリンタコントローラ
５１...ＴＣＰ／ＩＰ解釈部
５２...無手順プロトコル解釈部
５３...プリンタコントローラ
５４...プリンタエンジン
ＣＬ...クライアント
ＣＮＢ...カスタムネットワークボード
ＰＲＢ...プリンタ本体
ＰＲＴ１〜４...プリンタ
【図１】
2006256089.tif 000004
【図２】
2006256089.tif 000005
【図３】
2006256089.tif 000006
【図４】
2006256089.tif 000007
【図５】
2006256089.tif 000008
【図６】
2006256089.tif 000009
【図７】
2006256089.tif 000010
【図８】
2006256089.tif 000011
【図９】
2006256089.tif 000012
【図１０】
2006256089.tif 000013
【図１１】
2006256089.tif 000014
【図１２】
2006256089.tif 000015
【図１３】
2006256089.tif 000016