(57)【要約】【課題】  短時間に分散印刷の処理を完了することが可能技術を提供する。【解決手段】  ネットワークを介して送信される印刷ジョブを、前記ネットワークに接続された印刷装置のうち、分散先となる複数の分散印刷装置に分散して印刷するための分散印刷制御装置である。分散処理部は、受信した前記印刷ジョブを前記複数の分散印刷装置のそれぞれに送信する。部数管理部は、前記各分散印刷装置から送信されてくる印刷処理情報に従って求められる前記各分散印刷装置の印刷実行部数に基づいて、総印刷部実行部数を算出し、算出した前記総印刷実行部数が前記印刷ジョブに含まれている要求印刷部数に等しくなった場合に、前記各分散印刷装置に対して各印刷処理の中止を指示する。【選択図】        図３
2006201993.tif 000002
【特許請求の範囲】
【請求項１】
ネットワークを介して送信される印刷ジョブを、前記ネットワークに接続された印刷装置のうち、分散先となる複数の分散印刷装置に分散して印刷するための分散印刷制御装置であって、
受信した前記印刷ジョブを前記複数の分散印刷装置のそれぞれに送信する分散処理部と、
前記各分散印刷装置から送信されてくる印刷処理情報に従って求められる前記各分散印刷装置の印刷実行部数に基づいて、総印刷部実行部数を算出し、算出した前記総印刷実行部数が前記印刷ジョブに含まれている要求印刷部数に等しくなった場合に、前記各分散印刷装置に対して各印刷処理の中止を指示する部数管理部と、
を備えることを特徴とする分散印刷制御装置。
【請求項２】
請求項１記載の分散印刷制御装置において、
前記印刷実行部数は印刷実行中の部数をカウントすることにより求められることを特徴とする分散印刷制御装置。
【請求項３】
請求項１記載の分散印刷制御装置において、
前記印刷実行部数は印刷完了部数をカウントすることにより求められることを特徴とする分散印刷制御装置。
【請求項４】
請求項１記載の分散印刷制御装置において、
前記印刷実行部数は、印刷完了部数をカウントするとともに、カウントした前記印刷完了部数に、印刷中断中ではない場合の印刷実行中の１部を加えることにより求められることを特徴とする分散印刷制御装置。
【請求項５】
請求項１ないし請求項４のいずれかに記載の分散印刷制御装置において、
前記ネットワークに接続された印刷装置のうち、少なくとも１つの特定印刷装置に、内蔵または接続されていることを特徴とする分散印刷制御装置。
【請求項６】
請求項５に記載の分散印刷制御装置において、
前記分散先印刷装置として、前記特定印刷装置を決定することを許容することを特徴とする分散印刷制御装置。
【請求項７】
請求項５または請求項６記載の分散印刷制御装置において、
前記特定印刷装置と同一機種の印刷装置であって、印刷実行可能な印刷装置を前記ネットワークに接続された印刷装置の中から検索し、前記分散先印刷装置として決定することを特徴とする分散印刷制御装置。
【請求項８】
ネットワークに接続された印刷装置であって、
請求項１ないし請求項４のいずれかに記載の分散印刷制御装置を内蔵することを特徴とする印刷装置。
【請求項９】
請求項８記載の印刷装置において、
前記分散先印刷装置として、自身を決定することを許容することを特徴とする印刷装置。
【請求項１０】
請求項８または請求項９記載の印刷装置において、
自身と同一機種の印刷装置であって、印刷実行可能な印刷装置を、前記ネットワークに接続された印刷装置の中から検索し、前記分散先印刷装置として決定することを特徴とする印刷装置。
【請求項１１】
ネットワークを介して送信される印刷ジョブを、前記ネットワークに接続された印刷装置のうち、分散先となる複数の分散先印刷装置に分散して印刷するための分散印刷方法であって、
（ａ）受信した前記印刷ジョブを前記複数の分散印刷装置のそれぞれに送信する工程と、
（ｂ）前記各分散印刷装置から送信されてくる印刷処理情報に従って求められる印刷実行部数に基づいて、総印刷実行部数を算出し、前記総印刷実行部数が前記要求印刷部数に等しくなった場合に、前記各分散印刷装置に対して各印刷処理の中止を指示する工程と、
を備える分散印刷方法。
【請求項１２】
分散印刷制御装置によって、ネットワークを介して送信される印刷ジョブを、前記ネットワークに接続された印刷装置のうち、分散先となる複数の分散先印刷装置に分散して印刷するためのコンピュータプログラムであって、
受信した前記印刷ジョブを前記複数の分散印刷装置のそれぞれに送信する機能と、
前記各分散印刷装置から送信されてくる印刷処理情報に従って求められる印刷実行部数に基づいて、総印刷実行部数を算出し、前記総印刷実行部数が前記要求印刷部数に等しくなった場合に、前記各分散印刷装置に対して各印刷処理の中止を指示する機能と、
を前記分散印刷制御装置に内蔵されたコンピュータによって実現させるためのコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ネットワークに接続された複数の印刷装置に印刷ジョブを分散して、分散印刷を行う技術に関する。
【背景技術】
【０００２】
近年、複数のプリンタを同一ネットワークに接続し、ユーザが複数のプリンタを使い分けることができる印刷システムが普及しつつある。複数部の印刷を行う場合、印刷ジョブを各プリンタに分散し、並行処理することにより、短時間で印刷を完了する技術、いわゆる分散印刷も提案されている（例えば、特許文献１参照）。分散印刷は、ネットワーク上に設けられた分散印刷用の専用サーバが、印刷ジョブの分散先および印刷部数を制御するのが通常である。
【０００３】
また、上記従来技術では、分散印刷を実現するために専用サーバを含めた大がかりなシステムが必要であったため、印刷ジョブを受信した１台のプリンタが分散元プリンタとなり、分散先プリンタを決定するとともに、印刷ジョブを各分散先プリンタに分散する、簡易なシステムによる分散印刷も提案されている(例えば、特許文献２，３参照)。
【０００４】
【特許文献１】特開２００２−２１５３６９号公報
【特許文献２】特開２００４−１８１６４７号公報
【特許文献３】特開２００４−２５８８３０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかし、上記の簡易なシステムによる分散印刷の従来技術では、分散元プリンタは、クライアントから印刷ジョブを受け取った時に、各分散先プリンタに割り当てる印刷部数を決定し、印刷部数を修正した印刷ジョブを各分散先プリンタに移送していた。そして、印刷ジョブを受信した各分散先プリンタは、それぞれ割り当てられた印刷部数の印刷を実行していた。また、各分散先プリンタの印刷部数を変更することはできなかった。このため、エラーが発生した分散先プリンタ等、印刷処理の進行が遅いプリンタが存在すると、そのプリンタに割り当てられた印刷の完了を待たなければ、全部数の印刷が完了せず、全部数の印刷の完了が遅くなる場合があった。
【０００６】
また、上記の大がかりなシステムによる分散印刷の従来技術では、エラーが発生したプリンタで未処理の印刷部数を他のプリンタに自動的に振り分けることが可能である。しかしながら、この場合、各プリンタの印刷を一時中断させ、エラーが発生したプリンタの未処理の印刷部数を把握し、他のプリンタの印刷部数を変更して、印刷を再開させるための時間が、印刷処理の時間に加えて余分に必要であった。
【０００７】
本発明は、かかる課題を解決するためになされたものであり、従来よりも短時間に分散印刷の処理を完了することが可能技術を提供することを目的とする。
【課題を解決するための手段】
【０００８】
上記した目的の少なくとも一部を達成するために、本発明の装置は、ネットワークを介して送信される印刷ジョブを、前記ネットワークに接続された印刷装置のうち、分散先となる複数の分散印刷装置に分散して印刷するための分散印刷制御装置であって、
受信した前記印刷ジョブを前記複数の分散印刷装置のそれぞれに送信する分散処理部と、
前記各分散印刷装置から送信されてくる印刷処理情報に従って求められる前記各分散印刷装置の印刷実行部数に基づいて、総印刷部実行部数を算出し、算出した前記総印刷実行部数が前記印刷ジョブに含まれている要求印刷部数に等しくなった場合に、前記各分散印刷装置に対して各印刷処理の中止を指示する部数管理部と、
を備えることを特徴とする。
【０００９】
上記分散印刷制御装置は、コンピュータ等から送信された印刷ジョブを加工せずに、そのまま分散印刷装置に送信する。そして、各分散印刷装置で印刷される印刷実行部数を合計した総印刷実行部数が要求印刷部数となったら、各分散印刷装置にたいして印刷の中止を指示することができる。これにより、各分散印刷装置で印刷が実行されている途中で、例えば、エラーが発生して印刷が中断している分散印刷装置があった場合に、中断した分散印刷装置の復帰を待つ必要がなく、他の分散印刷装置によって要求印刷部数を高速に印刷することができる。また、他の印刷装置に比べて印刷速度の遅い印刷装置が含まれていた場合においても、他の印刷装置が余分に印刷することによって要求印刷部数を高速に印刷することができる。従って、従来よりも短時間に分散印刷の処理を完了することが可能である。また、分散印刷制御装置が、分散印刷を全て制御しているため、専用サーバを用いることなく、簡易なシステムで分散印刷を実現することが可能である。
【００１０】
なお、前記印刷実行部数は印刷実行中の部数をカウントすることにより求めることができる。また、前記印刷実行部数は印刷完了部数をカウントすることにより求めることもできる。さらに、前記印刷実行部数は、印刷完了部数をカウントするとともに、カウントした前記印刷完了部数に、印刷中断中ではない場合の印刷実行中の１部を加えることにより求めることもできる。
【００１１】
本発明の分散印刷制御装置において、前記ネットワークに接続された印刷装置のうち、少なくとも１つの特定印刷装置に、内蔵または接続されていてもよい。
【００１２】
特定印刷装置に内蔵または接続された分散印刷制御装置において、前記分散先印刷装置として、前記特定印刷装置を決定することを許容することが好ましい。
【００１３】
このように構成することにより、特定印刷装置自身を分散先印刷装置の候補に組み入れることができ、分散先印刷装置の選択範囲を広げることができる。
【００１４】
特定印刷装置に内蔵または接続された分散印刷制御装置において、前記特定印刷装置と同一機種の印刷装置であって、印刷実行可能な印刷装置を、前記ネットワークに接続された印刷装置の中から検索し、前記分散先印刷装置として決定することが好ましい。
【００１５】
分散印刷制御装置が特定印刷装置に内蔵または接続されている場合、分散印刷制御装置に送信されてくる印刷ジョブは、特定印刷装置用の印刷ジョブとして送信されてくるため、その印刷ジョブが分散される分散先印刷装置も、特定印刷装置と同一機種であれば、それら分散先印刷装置において、印刷ジョブのデータ変換などをすることなく、適正な印刷を行わせることができる。
【００１６】
なお、本発明は、上記した分散印刷制御装置としての構成の他、その分散印刷制御装置を内蔵する印刷装置としても構成することができる。また、そのような装置発明の態様に限ることなく、分散印刷方法などの方法発明としての態様で実現することも可能である。さらには、それら方法や装置を構築するためのコンピュータプログラムとしての態様や、そのようなコンピュータプログラムを記録した記録媒体としての態様や、上記コンピュータプログラムを含み搬送波内に具現化されたデータ信号など、種々の態様で実現することも可能である。
【００１７】
本発明をコンピュータプログラムまたはそのプログラムを記録した記録媒体等として構成する場合には、印刷装置を制御するプログラム全体として構成するものとしてもよいし、本発明の機能を果たす部分のみを構成するものとしてもよい。また、記録媒体としては、フレキシブルディスクやＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ、光磁気ディスク、ＩＣカード、ＲＯＭカートリッジ、パンチカード、バーコードなどの符号が印刷された印刷物、コンピュータの内部記憶装置（ＲＡＭやＲＯＭなどのメモリ）および外部記憶装置などコンピュータが読み取り可能な種々の媒体を利用できる。
【発明を実施するための最良の形態】
【００１８】
以下、本発明の実施の形態を、実施例に基づいて、下記の項目に分けて説明する。
Ａ．実施例：
Ａ１．システム概要：
Ａ２．プリンタの構成：
Ａ３．通常印刷処理：
Ａ４．分散印刷処理：
Ａ５．実施例の効果：
Ｂ．変形例：
【００１９】
Ａ．実施例：
Ａ１．システム概要：
図１は本発明の実施例としての印刷システムの構成を示す説明図である。本実施例では、図示するように、クライアントＰＣ（以下、クライアントと略す）ＣＬ、複数のプリンタＰＲＴ１〜ＰＲＴ４がローカルエリアネットワーク（ＬＡＮ）に接続されている。各機器間の通信は、ＴＣＰ／ＩＰプロトコルをベースとしているため、各機器には、それぞれ、ＩＰアドレスが予め固定で割り振られている。説明の便宜上、クライアントＣＬには「ＩＰｃ」、プリンタＰＲＴ１〜ＰＲＴ４には、それぞれ「ＩＰ１」〜「ＩＰ４」なるアドレスが設定されているものとする。なお、厳密に言えば、これらＩＰアドレスは、クライアントＣＬ，プリンタＰＲＴ１〜ＰＲＴ４自体に設定されているわけではなく、ＴＣＰ／ＩＰのネットワークから見た場合のノード（すなわち、具体的には、ＴＣＰ／ＩＰ通信を行うためにネットワークに接続されているネットワークボードなど）に設定されている。
【００２０】
これらプリンタのうち、プリンタＰＲＴ１には、カスタムネットワークボードＣＮＢが取り付けられている。このカスタムネットワークボードＣＮＢは、受信した印刷ジョブを他のプリンタに分散して、分散印刷を実行するための分散印刷制御機能を備えており、請求項における分散印刷制御装置に相当する。一方、他のプリンタには、それぞれ、標準のネットワークボード（図示せず）が取り付けられている。
【００２１】
一例として図中には、クライアントＣＬからプリンタＰＲＴ１に、印刷ジョブを含む通信データＤＴ０が送信される場合を例示した。
【００２２】
図２はこのような印刷ジョブを含む通信データの構成を概念的に示す説明図である。図２に示すように、通信データは、大きく分けて、ヘッダと、印刷ジョブデータと、に分かれている。
【００２３】
このうち、ヘッダには、その通信データの発信元である機器のＩＰアドレス（発信元ＩＰアドレス）と、その機器内における発信元であるソフトウェアを特定するポート番号（発信元ポート番号）と、を含む他、その通信データの送信先である機器のＩＰアドレス（送信先ＩＰアドレス）と、その機器内における送信先であるソフトウェアを特定するポート番号（送信先ポート番号）とを含んでいる。発信元である機器のソフトウェアから発信された通信データは、送信先ＩＰアドレスに従って、そのＩＰアドレスを有する機器に送信され、さらに、受信したその機器内では、送信先ポート番号に従って、その番号のポートで待機しているソフトウェアに渡される。
【００２４】
一方、印刷ジョブデータは、ジョブ制御言語の部分と、印刷コマンドと、に分かれており、このうち、ジョブ制御言語部分には、印刷部数（要求印刷部数）を表すＱＴ値が記載されている。
【００２５】
なお、ＴＣＰ／ＩＰの場合、通信データは、通常、バケットで通信される。従って、実際には、一連の印刷ジョブデータは、時分割された上で、各時分割データの前に上記ヘッダを付けて、それぞれ、送信されることになる。
【００２６】
図１に戻って、通信データＤＴ０には、送信先ＩＰアドレスとして「ＩＰ１」が、送信先ポート番号として「１９１００」が、ＱＴ値（要求印刷部数）として「１００部」が、それぞれ記載されている。
【００２７】
本実施例では、印刷プロトコルとして無手順プロトコルを用いている。無手順プロトコルでは、通常、ボート番号として「９１００」が割り当てられているが、本発明の特徴として、本実施例では、クライアントＣＬから分散印刷制御機能を有するプリンタＰＲＴ１に印刷ジョブを送信する際、ボート番号として通常の「９１００」ではなく、「１９１００」を用いる。
【００２８】
プリンタＰＲＴ１のカスタムネットワークボードＣＮＢは、この通信データＤＴ０を受信すると、ポート番号「１９１００」に待機しているソフトウェアに、印刷ジョブデータを渡す。本実施例では、ポート番号「１９１００」には、分散印刷制御機能を実現するための分散印刷ソフトウェアが待機している。それにより、その分散印刷ソフトウェアに従ってＣＰＵにより実現される各機能部が、分散先のプリンタとして、自己のプリンタＰＲＴ１を含む、プリンタＰＲＴ１〜ＰＲＴ４の中から、分散可能なプリンタを決定し、送信先ポート番号を「１９１００」ではなく、「９１００」に変更した上で、それら分散先のプリンタに、それぞれ、印刷ジョブを含む通信データを送信する。図１では、プリンタＰＲＴ１〜ＰＲＴ４に対して、それぞれ、通信データＤＴ１〜ＤＴ４を送信している場合を示している。
【００２９】
従って、例えば、通信データＤＴ２には、送信先ＩＰアドレスとして「ＩＰ２」が、送信先ポート番号として「９１００」が、それぞれ記載されている。なお、従来の分散印刷と異なり、ＱＴ値は、変更されることなく、そのまま「１００部」が記載されている。
【００３０】
プリンタＰＲＴ２の標準ネットワークボードは、この通信データＤＴ２を受信すると、ポート番号「９１００」に待機しているソフトウェアに、印刷ジョブデータを渡す。ポート番号「９１００」は、前述したとおり、印刷プロトコルである無手順プロトコルに対して、通常割り当てられているポート番号であるので、印刷ジョブデータは、プリンタＰＲＴ２内の印刷制御ソフトウェアに渡されて、その印刷ジョブに従った印刷が実行される。
【００３１】
他のプリンタＰＲＴ３，ＰＲＴ４は、もちろんのこと、分散印刷制御機能を有するＰＲＴ１においても、同様に、送信された印刷ジョブに従った印刷が実行される。
【００３２】
従って、各プリンタＰＲＴ１〜ＰＲＴ４では、各「１００部」の印刷が実行されることになる。ただし、プリンタＰＲＴ１のカスタムネットワークボードＣＮＢは、後述するように、各プリンタＰＲＴ１〜ＰＲＴ４から、１部の印刷単位で送られてくる、印刷の開始を知らせる通知（開始通知）および印刷の終了を知らせる通知（終了通知）や、プリンタがオフライン状態であることを知らせる通知（オフライン通知）などの各種印刷処理情報に基づいて、各プリンタＰＲＴ１〜ＰＲＴ４で印刷される印刷実行部数の総計（総印刷実行部数）を求める。そして、求めた総印刷部数が、クライアントＣＬからプリンタＰＲＴ１に送信された印刷ジョブの要求印刷部数「１００部」になった場合には、各プリンタＰＲＴ１〜ＰＲＴ４に対して、印刷の中止を指示する。この結果、システム全体では、合計「１００部」の分散印刷が実行されることになる。
【００３３】
Ａ２．プリンタの構成：
図３は図１におけるプリンタＰＲＴ１の構成を主として示す説明図である。プリンタＰＲＴ１は、プリンタ本体ＰＲＢと、上述したカスタムネットワークボードＣＮＢと、を備えている。このうち、プリンタ本体ＰＲＢは、主として、プリンタエンジン４１と、プリンタコントローラ４２と、を備えている。プリンタエンジン４１は、実際に印刷を行う機構部分である。プリンタコントローラ４２は、カスタムネットワークボードＣＮＢから印刷ジョブデータを受け取り、その印刷ジョブに従ってプリンタエンジン４１を制御し、印刷を実行させる。
【００３４】
一方、本発明の特徴部分であるカスタムネットワークボードＣＮＢは、主として、ＣＰＵ２０と、メモリ３０と、を備えている。また、この他、実際にネットワーク通信を行うための通信用インタフェースなども備えているが、説明の便宜上、省略されている。
【００３５】
ＣＰＵ２０は、メモリ３０より、上記した分散印刷ソフトウェアなどのプログラムを読み出して、実行することにより、図示した各機能ブロックとして機能する。なお、各機能ブロックをハードウェア的に構築しても構わない。
【００３６】
これら機能ブロックのうち、ＴＣＰ／ＩＰ解釈部２１は、ＴＣＰ／ＩＰプロトコルを解釈して、ネットワークを介して外部との通信を行う。具体的には、受信した通信データに含まれる送信先ＩＰアドレスや送信先ポート番号を検出したり、送信する通信データに送信先ＩＰアドレスや送信先ポート番号を付与したりする。無手順プロトコル解釈部２２Ａ，２２Ｂは、印刷プロトコルである無手順プロトコルを解釈する。本実施例では、説明の便宜上、通信データが、送信先ポート番号として通常の「９１００」で送信されている場合には、無手順プロトコル解釈部２２Ｂが機能し、特定の「１９１００」で送信されている場合には、無手順プロトコル解釈部２２Ａが機能するものとしている。
【００３７】
また、分散先管理部２３は、分散印刷を行う際に、ＬＡＮ上から、分散先となるべきプリンタを検索して、分散先プリンタとして決定する。部数管理部２４は、各分散先プリンタから送信されてくる印刷処理情報に基づいて、各分散先プリンタによって印刷される総印刷実行部数を求めて管理する。分散処理部２５は、各分散プリンタに印刷ジョブデータを分配する。
【００３８】
メモリ３０は、上記したプログラムを格納する他、各種データを格納するために、バッファ部３１を備えている。バッファ部３１は、送信された印刷ジョブデータを一時的に格納するための格納部であるが、記憶容量が少ないため、送信された印刷ジョブデータの全てを格納することはできない。
【００３９】
なお、図３において、その他、クライアントＣＬにおいては、アプリケーション１３の他、機能ブロックとして、無手順プロトコル解釈部１２やＴＣＰ／ＩＰ解釈部１１を備えている。また、プリンタＰＲＴ２においては、プリンタエンジン５４やプリンタコントローラ５３の他、機能ブロックとして、無手順プロトコル解釈部５２やＴＣＰ／ＩＰ解釈部５１を備えている。このうち、無手順プロトコル解釈部１２，無手順プロトコル解釈部５２は、プリンタＰＲＴ１において、送信先ポート番号として通常の「９１００」で送信された通信データを扱う無手順プロトコル解釈部２２Ｂと同じ機能を有している。また、ＴＣＰ／ＩＰ解釈部１１，５１も、プリンタＰＲＴ１におけるＴＣＰ／ＩＰ解釈部２１と、プリンタエンジン５４やプリンタコントローラ５３も、プリンタＰＲＴ１におけるプリンタエンジン４１やプリンタコントローラ４２と、それぞれ同一の機能や構成を有している。
【００４０】
なお、図１に示すプリンタＰＲＴ３，４については、図３におけるプリンタＰＲＴ２と同様の構成を有している。
【００４１】
Ａ３．通常印刷処理：
本発明の特徴部分である分散印刷処理を説明する前に、通常の印刷処理について簡単に説明する。なお、印刷ジョブを、クライアントＣＬからプリンタＰＲＴ１に送信し、プリンタＰＲＴ１のみで印刷を実行する場合を例として説明する。この場合、印刷ジョブは、図３において、破線で示す経路をたどって転送される。なお、クライアントＣＬにおけるプリンタドライバ（図示せず）において、印刷プロトコルの設定は、無手順プロトコルに設定されているものとする。
【００４２】
ユーザがクライアントＣＬに印刷命令を出すと、クライアントＣＬでは、アプリケーション１３が、印刷ジョブを、無手順プロトコル解釈部１２，ＴＣＰ／ＩＰ解釈部１１を介して、プリンタＰＲＴ１に送信する。このとき、無手順プロトコル解釈部１２は、印刷プロトコルである無手順プロトコルに従って、印刷ジョブを含む通信データを送信し、また、ＴＣＰ／ＩＰ解釈部１１は、その通信データの送信先ＩＰアドレスとして、プリンタＰＲＴ１の「ＩＰ１」を指定すると共に、送信先ポート番号として、無手順プロトコルに通常割り当てられている「９１００」を指定する。
【００４３】
プリンタＰＲＴ１では、ＴＣＰ／ＩＰ解釈部２１が、通信データに含まれる送信先ＩＰアドレス「ＩＰ１」に従って、その通信データを受信し、さらに、その通信データに含まれる送信先ポート番号が「９１００」であるので、「９１００」で送信された通信データを扱う無手順プロトコル解釈部２２Ｂに渡す。無手順プロトコル解釈部２２Ｂは、無手順プロトコルに従って、印刷ジョブを含む通信データを受け取り、印刷ジョブをプリンタコントローラ４２に渡す。プリンタコントローラ４２は、印刷ジョブのデータに含まれるＱＴ値から印刷部数を読み取り、指定されている部数だけ、プリンタエンジン４１に印刷を実行させる。
【００４４】
Ａ４．分散印刷処理：
次に、本発明の特徴部分である分散印刷処理について詳細に説明する。まず、前提として、ユーザにより、プリンタＰＲＴ１の電源が投入されると、プリンタ本体ＰＲＢ及びカスタムネットワークボードＣＮＢが起動して、分散先管理部２３が、プリンタコントローラ４２から、自己のプリンタＰＲＴ１の機種名を取得する。具体的には、分散先管理部２３が、送信先ＩＰアドレスとして、自己のプリンタＰＲＴ１のＩＰアドレス「ＩＰ１」を指定して、ＳＮＭＰ（Simple Network Management Protocol）で機種名を問い合わせることにより、ＣＰＵ２０が、バスを介してプリンタコントローラ４２に機種名を要求し、その応答を受け取ることにより、取得する。
【００４５】
分散印刷を行う際には、ユーザは、クライアントＣＬにおけるプリンタドライバにおいて、印刷プロトコルの設定が、無手順プロトコルに設定されていることを確認した上で、ポート番号の設定を、通常の「９１００」から特定の「１９１００」に変更する。すなわち、本実施例では、ここでのポート番号の設定を切り換えることにより、通常の「９１００」では通常印刷を、特定の「１９１００」では分散印刷を、それぞれ選択することになる。
【００４６】
そこで、ユーザがクライアントＣＬに、印刷部数「１０部」として印刷命令を出すと、クライアントＣＬでは、アプリケーション１３が、印刷部数を示すＱＴ値を「１０部」とした印刷ジョブを、無手順プロトコル解釈部１２，ＴＣＰ／ＩＰ解釈部１１を介して、分散元プリンタとなるプリンタＰＲＴ１に送信する。このとき、無手順プロトコル解釈部１２は、印刷プロトコルである無手順プロトコルに従って、印刷ジョブを含む通信データを送信し、また、ＴＣＰ／ＩＰ解釈部１１は、その通信データの送信先ＩＰアドレスとして、プリンタＰＲＴ１の「ＩＰ１」を指定すると共に、送信先ポート番号として、通常の「９１００」ではなく、「１９１００」を指定する。
【００４７】
これにより、クライアントＣＬからプリンタＰＲＴ１に、図１に示すような通信データＤＴ０が送信される。すなわち、通信データＤＴ０には、送信先ＩＰアドレスとして「ＩＰ１」が、送信先ポート番号として「１９１００」が、ＱＴ値（すなわち、要求印刷部数）として「１０部」が、それぞれ記載されている。
【００４８】
以下では、分散印刷における分散元プリンタの動作、分散先プリンタの動作、および、分散印刷の実施例の順で、分散印刷の処理について説明する。
【００４９】
（１）分散元プリンタの動作：
図４〜図６は、分散元プリンタとしてのプリンタＰＲＴ１における分散印刷処理手順を示すフローチャートである。具体的には、分散処理部２５，分散先管理部２３及び部数管理部２４が実行する処理である。
【００５０】
プリンタＰＲＴ１では、ＴＣＰ／ＩＰ解釈部２１が、通信データＤＴ０に含まれる送信先ＩＰアドレス「ＩＰ１」に従って、その通信データを受信し、さらに、その通信データに含まれる送信先ポート番号が「１９１００」であるので、今度は、無手順プロトコル解釈部２２Ｂではなく、「１９１００」で送信された通信データを扱う無手順プロトコル解釈部２２Ａに渡す。
【００５１】
一方、分散処理部２５は、ポート番号「１９１００」に、印刷ジョブが着信するまで待機している（ステップＳ１０２）。無手順プロトコル解釈部２２Ａは、無手順プロトコルに従って、印刷ジョブを含む通信データを受け取ると、その印刷ジョブのデータを、ポート番号「１９１００」で待機している分散処理部２５に渡す。
【００５２】
分散処理部２５は、受信した印刷ジョブデータの先頭から順次受け取ってバッファ部３１に格納する（ステップＳ１０４）。
【００５３】
次に、分散先管理部２３は、受信した印刷ジョブデータの全てがバッファ部３１に格納されている場合（ステップＳ１０６：Ｙｅｓ）には、ＬＡＮに接続された複数のプリンタのうち、分散先プリンタとして利用可能な新規分散可能プリンタがあるか検索する（ステップＳ１０８）。新規分散可能プリンタが見つかった場合（ステップＳ１０８：Ｙｅｓ）には、そのプリンタを新規分散先プリンタとして決定する（ステップＳ１１０）。そして、部数管理部２４は、新規分散先プリンタ用のパラメータＭｐ，Ｎｐ，Ｌｐ（ｐは、見つかったプリンタの順に付される番号１，２，３，...である）を準備し、それぞれのパラメータを初期化する（ステップＳ１１２）。
【００５４】
ここで、分散先管理部２３は、ＳＮＭＰなどを利用することにより、容易に新規分散可能プリンタを検索することができる。例えば、ＬＡＮに対し、ブロードキャストでＬＡＮに接続されている各機器のＩＰアドレスを問い合わせ、応答されたＩＰアドレスをリストアップし、リストアップしたＩＰアドレスの各機器に対し、その機種名を問い合わせ、応答された機種名に基づいて、自己のプリンタＰＲＴ１と同一機種のプリンタを検索する。そして、同一機種のプリンタのなかから、オンライン状態で、かつ、印刷ジョブの受信待ち状態にあって、直ちに印刷実行可能なプリンタを問い合わせることにより、分散可能プリンタを検索する。
【００５５】
なお、最初、分散先可能プリンタが１台も見つからない場合には、自己のプリンタＰＲＴ１を分散先プリンタとして決定するようにすればよい。
【００５６】
このように、自己のプリンタＰＲＴ１と同一機種のプリンタを、分散先プリンタの候補として選択するのは、分散印刷を行う際に、各分散先プリンタにおいて、印刷ジョブのデータ変換などをすることなく、適正な印刷を行わせるためである。この結果、各分散先プリンタでの印刷物の品質、例えば、解像度やフォントなどを統一することができる。カラー印刷や両面印刷指定も統一して実行する。
【００５７】
なお、既述したとおり、分散先管理部２３は、プリンタＰＲＴ１の電源投入時に、プリンタＰＲＴ１の機種名を既に取得しているので、それに基づいて、自己のプリンタＰＲＴ１と同一機種のプリンタを選択する。
【００５８】
次に、分散処理部２５は、バッファ部３１に格納されている印刷ジョブデータを、分散先プリンタに送信する（ステップＳ１１４）。ただし、新規分散先プリンタに対しては、これまでに受信してバッファ部３１に格納されている全ての印刷ジョブデータが送信される。また、他の分散先プリンタに対しては、未送信の印刷ジョブデータが送信される。
【００５９】
なお、受信した印刷ジョブデータのバッファ部３１への格納（ステップＳ１０６）から印刷ジョブデータの分散先プリンタへの送信（ステップＳ１１４）までの処理は、全ての印刷ジョブデータの受信が終了するまで、順次繰り返し実行される（ステップＳ１１６）。従って、印刷ジョブデータの受信が終了するまで、繰り返し、分散可能プリンタの検索が行われ、新規に見つかった分散可能プリンタが新規分散先プリンタとして追加される。この結果、より多くの分散先プリンタによって分散印刷を並列に実行することが可能となる。
【００６０】
そして、全ての印刷ジョブデータの受信が終了すると（ステップＳ１１６：Ｙｅｓ）、図５のステップＳ１１８の処理を実行する。
【００６１】
ステップＳ１１８において、分散先管理部２３は、受信した印刷ジョブデータの全てがバッファ部３１に格納されているか否か判断し、全ての印刷ジョブデータがバッファ部３１に格納されている場合（ステップＳ１１８：Ｙｅｓ）には、ＬＡＮに接続された複数のプリンタのうち、分散先プリンタとして利用可能な新規分散可能プリンタがあるか検索する（ステップＳ１２０）。そして、新規分散可能プリンタが見つかった場合（ステップＳ１２０：Ｙｅｓ）には、そのプリンタを新規分散先プリンタとして決定する（ステップＳ１２２）。そして、部数管理部２４は、新規分散先プリンタ用のパラメータＭｐ，Ｎｐ，Ｌｐを準備し、それぞれのパラメータを初期化する（ステップＳ１１２）。
【００６２】
そして、分散処理部２５は、バッファ部３１に格納されている印刷ジョブデータを、分散先プリンタに送信する（ステップＳ１２６）。ただし、新規分散先プリンタに対しては、受信してバッファ部３１に格納されている全ての印刷ジョブデータが送信され、他の分散先プリンタに対しては、未送信の印刷ジョブデータが送信される。
【００６３】
次に、部数管理部２４は、いずれかの分散先プリンタから印刷開始の通知を受けた場合（ステップＳ１２８：Ｙｅｓ）には、開始通知を受けた分散先プリンタのパラメータＭｐ（以下、「印刷実行中パラメータ」と呼ぶ）を１にセットする（ステップＳ１３０）。そして、分散先プリンタから印刷終了の通知を受けた場合（ステップＳ１３２：Ｙｅｓ）には、印刷実行中パラメータＭｐを０にリセットするとともに、パラメータＮｐ（以下、「印刷完了部数パラメータ」と呼ぶ）を、１インクリメント（Ｎｐ＝Ｎｐ＋１）する（ステップＳ１３４）。さらに、部数管理部２４は、図６のステップＳ１３６において、分散先プリンタからオフライン状態を知らせる通知（以下、「オフライン通知」と呼ぶ）を受けた場合（ステップＳ１３６：Ｙｅｓ）には、オフライン通知を出した分散先プリンタのパラメータＬｐ（以下、「オフラインパラメータ」と呼ぶ）を１にセットする（ステップＳ１３８）。そして、その分散先プリンタからオンライン復帰の通知を受けた場合（ステップＳ１４０：Ｙｅｓ）には、オフラインパラメータＬｐを０にリセットする（ステップＳ１４２）。
【００６４】
次に、部数管理部２４は、各分散先プリンタの３つのパラメータＭｐ，Ｎｐ，Ｌｐに基づいて求めた各分散先プリンタの印刷実行部数Ｅｐの総計である総印刷実行部数ΣＥｐを求め、求めた総印刷実行部数ΣＥｐが要求印刷部数（ＱＴ値）に等しいか否か判断する（ステップＳ１４４）。
【００６５】
ここで、各分散先プリンタの印刷実行部数Ｅｐおよび総印刷実行部数ΣＥｐは、下式（１）および（２）のように表される。
Ｅｐ＝（Ｎｐ＋Ｍｐ―Ｌｐ）  ...（１）
ΣＥｐ＝Σ（Ｎｐ＋Ｍｐ―Ｌｐ）  ...（２）
【００６６】
なお、上式（１）で表された印刷実行部数Ｅｐは、印刷完了部数と、印刷実行中の１部を加算した数を表している。ただし、印刷中断中である印刷実行中の１部は除かれている。
【００６７】
そして、総印刷実行部数ΣＥｐが要求印刷部数（ＱＴ値）に等しいと判断される場合（ステップＳ１４４：Ｙｅｓ）には、部数管理部２４は、分散先プリンタに対して印刷のキャンセル要求を通知する。ただし、オフライン状態にある分散先プリンタに対しては、実行途中で中断している部数目以降（この部数目を含む）の印刷のキャンセル要求を通知し、オンライン状態にある分散先プリンタに対しては、実行途中の部数目の次の部数目以降（この部数を含む）の印刷のキャンセル要求を通知する（ステップＳ１４４）。そして、分散印刷の処理を終了する。
【００６８】
一方、求めた総印刷実行部数ΣＥｐが要求印刷部数（ＱＴ値）よりも少ないと判断される場合（ステップＳ１４４：Ｎｏ）には、図５のステップＳ１１８の処理に戻り、総印刷実行部数ΣＥｐが要求印刷部数ＱＴに等しいと判断されるまで（ステップＳ１４４：Ｙｅｓ）、図５のステップＳ１１８から図６のステップＳ１４２までの処理を繰り返し実行する。従って、要求印刷部数の印刷が実行されて分散印刷の処理を終了するまで、分散可能プリンタの検索が行われ、新規に見つかった分散可能プリンタが新規分散先プリンタとして追加される。この結果、より多くの分散先プリンタによって分散印刷を並列に実行することが可能となる。
【００６９】
（２）分散先プリンタの動作：
図７〜図９は、分散先プリンタとしてのプリンタＰＲＴ２における分散印刷処理手順を示すフローチャートである。具体的には、ポート「９１００」で待機している印刷ソフトウェア（図示しない）及びこれによって制御されるプリンタコントローラ４２が実行する処理である。
【００７０】
分散先プリンタであるプリンタＰＲＴ２では、図３に示すように、ＴＣＰ／ＩＰ解釈部５１が、通信データＤＴ２に含まれる送信先ＩＰアドレス「ＩＰ２」に従って、その通信データを受信し、さらに、その通信データに含まれる送信先ポート番号が「９１００」であるので、無手順プロトコル解釈部５２に渡す。
【００７１】
一方、プリンタコントローラ５３は、ポート番号「９１００」に、印刷ジョブが着信するまで待機している（ステップＳ２０２）。無手順プロトコル解釈部５２は、無手順プロトコルに従って、印刷ジョブを含む通信データを受け取ると、その印刷ジョブのデータを、ポート番号「９１００」で待機しているプリンタコントローラ５３に渡す。
【００７２】
プリンタコントローラ５３は、受信した印刷ジョブデータをバッファ部に格納する（ステップＳ２０４）。そして、印刷ジョブのデータに含まれているＱＴ値から要求印刷部数を読み取り、指定されているその部数だけ、プリンタエンジン５４に、印刷ジョブに従った印刷を実行させる。具体的には、以下の手順で実行される。
【００７３】
まず、部数カウンタＸを初期化（Ｘ＝０）にセットする（ステップＳ２０６）。そして、オフライン状態であるか否か判断し（ステップＳ２０８）、オフライン状態である場合（ステップＳ２０８：Ｙｅｓ）には、分散元プリンタにオフライン状態であることを、ＳＮＭＰで通知する（ステップＳ２１０）。そして、オンライン状態と判断されるまで（ステップＳ２０８：Ｎｏ）、この判断が繰り返される。ただし、分散元プリンタへのオフライン通知は毎回行われる必要はなく、最初の１回のみ実行され、その後は省略さればよい。
【００７４】
一方、オンライン状態である場合（ステップＳ２０８：Ｎｏ）には、部数カウンタのカウント値Ｘを１インクリメント（Ｘ＝Ｘ＋１）し（ステップＳ２１２）、分散元プリンタにＸ部目の印刷開始を、ＳＮＭＰで通知する（ステップＳ２１４）。
【００７５】
次に、図８のステップＳ２１６で、キャンセルフラグＦｃをリセットしておく。そして、印刷途中であるＸ部目以降のキャンセル要求を受け取ったか否か判断し（ステップＳ２１８）、このキャンセル要求を受け取った場合（ステップＳ２１８：Ｙｅｓ）には、Ｘ部目以降（Ｘ部目を含む）の印刷をキャンセルする（図９のステップＳ２４２）。
【００７６】
一方、受け取っていない場合（ステップＳ２１８：Ｎｏ）には、さらに、印刷途中であるＸ部目の次の（Ｘ＋１）部目以降のキャンセル要求を受け取ったか判断する（ステップＳ２２０）。キャンセル要求を受け取った場合（ステップＳ２２０：Ｙｅｓ）には、キャンセルフラグＦｃを１にセットした（ステップＳ２２１）後、Ｘ部目の印刷処理を実行し、受け取っていない場合（ステップＳ２２０：Ｎｏ）には、そのままＸ部目の印刷処理を実行する（ステップＳ２２２）。
【００７７】
次に、オンライン状態であるか否か判断し（ステップＳ２２４）、オンライン状態である場合（ステップＳ２２４：Ｙｅｓ）には、ステップＳ２３２の処理を実行する。一方、オフライン状態である場合（ステップＳ２２４：Ｎｏ）には、分散元プリンタにオフライン状態であることを、ＳＮＭＰで通知する（ステップＳ２２６）。そして、オンライン状態に復帰したと判断されるまで（ステップＳ２２８：Ｙｅｓ）、待機する。オンライン状態に復帰した場合（ステップＳ２２８：Ｙｅｓ）には、分散元プリンタにオンライン状態に復帰したことを通知する（ステップＳ２３０）。
【００７８】
ステップＳ２３２では、Ｘ部目の印刷が終了したか否か判断する。Ｘ部目の印刷が終了していない場合（ステップＳ２３２：Ｎｏ）には、Ｘ部目の印刷が終了したと判断されるまで（ステップＳ２３２：Ｙｅｓ）、ステップＳ２１８からステップＳ２３０までの処理を繰り返し実行する。これにより、印刷実行中において、キャンセル要求が通知されたか否か、常時監視し、印刷処理を制御することができる。また、プリンタがオフライン状態となったか否かを常時監視し、分散元プリンタに通知することができる。
【００７９】
一方、ステップＳ２３２において、Ｘ部目の印刷が終了したと判断された場合（ステップＳ２３２：Ｙｅｓ）には、分散元プリンタにＸ部目の印刷終了を通知し（ステップＳ２３４）、図９のステップＳ２３６の処理を実行する。
【００８０】
図９のステップＳ２３６では、キャンセルフラグＦｃが１にセットされているか否かを判断する。Ｆｃ＝０であると判断された場合（ステップＳ２３６：Ｎｏ）には、さらに、要求印刷部数（ＱＴ値）を印刷したか否かを判断する（ステップＳ２３８）。印刷された部数Ｘが要求印刷部数よりも少なく、要求印刷部数を印刷していない場合（ステップＳ２３８：Ｎｏ）には、図７のステップＳ２０８に戻ってステップＳ２０８からの処理を実行する。一方、印刷された部数Ｘが要求印刷部数に等しく、要求印刷部数を印刷した場合（ステップＳ２３８：Ｙｅｓ）には、印刷ジョブの実行処理を終了する。
【００８１】
一方、Ｆｃ＝１であると判断された場合（ステップＳ２３６：Ｙｅｓ）には、実行中であるＸ部目を終了後、（Ｘ＋１）部目以降の印刷をキャンセルする（ステップＳ２４０）。
【００８２】
なお、以上のフローチャートは、分散先プリンタとしてプリンタＰＲＴ２が決定されている場合を例に説明したが、他のプリンタＰＲＴ３が分散先プリンタとして決定される場合にも、送信した通信データＤＴ３に含まれる送信先ＩＰアドレス「ＩＰ３」に従って、その通信データを受信し、同様の手順に従って印刷を実行する。また、プリンタ４が分散先プリンタとして決定されている場合にも、送信した通信データＤＴ４に含まれる送信先ＩＰアドレス「ＩＰ４」に従って、その通信データを受信し、同様の手順に従って印刷を実行する。さらに、分散先プリンタとして分散元プリンタＰＲＴ１自身が決定されている場合には、ＴＣＰ／ＩＰ解釈部２１が、送信した通信データＤＴ１に含まれる送信先ＩＰアドレス「ＩＰ１」に従って、その通信データを受信し、さらに、その通信データに含まれる送信先ポート番号が「９１００」であるので、通常印刷の場合と同様に、「９１００」で送信された通信データを扱う無手順プロトコル解釈部２２Ｂに渡す。無手順プロトコル解釈部２２Ｂは、無手順プロトコルに従って、印刷ジョブを含む通信データを受け取り、印刷ジョブをプリンタコントローラ４２に渡す。プリンタコントローラ４２は、印刷ジョブのデータに含まれるＱＴ値から要求印刷部数を読み取り、プリンタエンジン４１に、印刷ジョブに従った印刷を実行させる。具体的に、上記プリンタＰＲＴ２と同様の手順に従って印刷が実行される。
【００８３】
（３）分散印刷の実行例：
図１０は分散印刷の実行例を示す説明図である。プリンタＰＲＴ１が分散元プリンタとして要求印刷部数（ＱＴ値）が「１０部」の印刷ジョブを受け付け、自分自身であるプリンタＰＲＴ１、他のプリンタＰＲＴ２、ＰＲＴ３の順に分散先プリンタとして決定して分散しつつ、印刷を行う場合のシーケンスを例示した。
【００８４】
まず、分散元プリンタ（本実施例ではプリンタＰＲＴ１）の分散先管理部２３によって、自分自身（プリンタＰＲＴ１）が第１の分散先プリンタとして決定されると、プリンタＰＲＴ１は、印刷ジョブデータを受信し、指定されている要求印刷部数（ＱＴ値：１０部）を印刷するまで、１部単位で順に印刷を行う。まず、プリンタＰＲＴ１は、１部目の印刷を開始し、その開始を知らせる通知（印刷の開始通知：Ｓ）を分散元プリンタに、ＳＮＭＰで通知する。このとき、分散元プリンタの部数管理部２４では、プリンタＰＲＴ１用に準備されたパラメータＮ１，Ｍ１，Ｌ１のうち、印刷実行中パラメータＭ１を「１」にセットする。これにより、上式（１）で表される印刷実行部数Ｅ１は「１」となる。そして、この時点における分散先プリンタはプリンタＰＲＴ１のみであるので、上式（２）で表される総印刷部数ΣＥｐは印刷実行部数Ｅ１に等しく「１」となる。ここで、分散元プリンタが受け付けた要求印刷部数（ＱＴ値）は「１０部」であり、総印刷実行部数ΣＥｐは要求印刷部数よりも少ないので、そのまま印刷が続けられる。
【００８５】
そして、例えば、プリンタＰＲＴ１で印刷ジョブデータを受信し、１部目の印刷を実行している間に、分散先管理部２３によって、プリンタＰＲＴ２が分散先プリンタとして決定されると、プリンタＰＲＴ２においても、プリンタＰＲＴ１と同様に、印刷ジョブデータを受信し、指定されている要求印刷部数（ＱＴ値：１０部）を印刷するまで、１部単位で順に印刷を行う。プリンタＰＲＴ２においても、まず、１部目の印刷を開始し、印刷の開始通知を分散元プリンタに、ＳＮＭＰで通知する。このとき、分散元プリンタの部数管理部２４では、プリンタＰＲＴ２用のパラメータＮ２，Ｍ２，Ｌ２のうち、印刷実行中パラメータＭ２を「１」にセットする。これにより、上式（１）で表される印刷実行部数Ｅ２は「１」となる。そして、この時点における分散先プリンタはプリンタＰＲＴ１，ＰＲＴ２の２台であるので、上式（２）で表される総印刷部数ΣＥｐ（但し、Ｐ＝１，２）は印刷実行部数Ｅ１およびＥ２の和に等しく「２」となる。ここで、分散元プリンタが受け付けた要求印刷部数（ＱＴ値）は「１０部」であり、総印刷実行部数ΣＥｐは要求印刷部数よりも少ないので、そのまま印刷が続けられる。
【００８６】
さらに、例えば、プリンタＰＲＴ１およびプリンタＰＲＴ２で印刷ジョブデータを受信し、１部目の印刷を実行している間に、分散先管理部２３によって、プリンタＰＲＴ３が分散先プリンタとして決定されると、プリンタＰＲＴ３においても、プリンタＰＲＴ１およびプリンタＰＲＴ２と同様に、印刷ジョブデータを受信し、指定されている要求印刷部数（ＱＴ値：１０部）を印刷するまで、１部単位で順に印刷を行う。プリンタＰＲＴ３においても、まず、１部目の印刷を開始し、印刷の開始通知を分散元プリンタに、ＳＮＭＰで通知する。このとき、分散元プリンタの部数管理部２４では、プリンタＰＲＴ３用のパラメータＮ３，Ｍ３，Ｌ３のうち、印刷実行中パラメータＭ３を「１」にセットする。これにより、上式（１）で表される印刷実行部数Ｅ３は「１」となる。そして、この時点における分散先プリンタはプリンタＰＲＴ１，ＰＲＴ２，ＰＲＴ３の３台であるので、上式（２）で表される総印刷部数ΣＥｐ（但し、ｐ＝１，２，３）は印刷実行部数Ｅ１，Ｅ２，Ｅ３の和に等しく「３」となる。ここで、分散元プリンタが受け付けた要求印刷部数（ＱＴ値）は「１０部」であり、総印刷実行部数ΣＥｐは要求印刷部数よりも少ないので、そのまま印刷が続けられる。
【００８７】
プリンタＰＲＴ３が１部目の印刷を開始した後、プリンタＰＲＴ１が１部目の印刷を終了すると、プリンタＰＲＴ１は、その終了を知らせる通知（印刷の終了通知：Ｅ）を分散元プリンタに、ＳＮＭＰで通知する。そして、分散元プリンタの部数管理部２４では、プリンタＰＲＴ１用のパラメータＮ１，Ｍ１，Ｌ１のうち、印刷実行中パラメータＭ１を「０」にリセットするとともに、印刷完了部数パラメータＮ１を１インクリメントして「１」にセットする。このとき、求められる印刷実行部数Ｅ１は、「１」のままであり、総印刷実行部数ΣＥｐも「３」のままである。
【００８８】
次に、プリンタＰＲＴ１は、引き続き２部目の印刷を開始する。このとき、分散元プリンタの部数管理部２４では、印刷実行中パラメータＭ１を「１」にセットし、これにより、印刷実行部数Ｅ１は「１」から「２」に増加する。そして、この時点における総印刷実行部数ΣＥｐは「３」から「４」に増加する。このとき、総印刷実行部数ΣＥｐは、まだ要求印刷部数「１０部」よりも少ないので、そのまま印刷が続けられる。
【００８９】
プリンタＰＲＴ１が２部目の印刷を開始した後、プリンタＰＲＴ２が１部目の印刷を終了すると、プリンタＰＲＴ２は、印刷の終了通知を分散元プリンタに、ＳＮＭＰで通知する。そして、分散元プリンタの部数管理部２４では、プリンタＰＲＴ２用のパラメータＮ２，Ｍ２，Ｌ２のうち、印刷実行中パラメータＭ２を［０］にリセットするとともに、印刷完了部数パラメータＮ２を１インクリメントして「１」にセットする。このとき、求められる印刷実行部数Ｅ２は、「１」のままであり、総印刷実行部数ΣＥｐも「４」のままである。
【００９０】
次に、プリンタＰＲＴ２は、引き続き２部目の印刷を開始する。このとき、分散元プリンタの部数管理部２４では、印刷実行中パラメータＭ２を「１」にセットし、これにより、印刷実行部数Ｅ２は「１」から「２」に増加する。となる。そして、この時点における総印刷実行部数ΣＥｐは「４」から「５」に増加する。このとき、総印刷実行部数ΣＥｐは、まだ要求印刷部数「１０部」よりも少ないので、そのまま印刷が続けられる。
【００９１】
プリンタＰＲＴ２が２部目の印刷を開始した後、プリンタＰＲＴ３が１部目の印刷を終了すると、プリンタＰＲＴ３は、印刷の終了通知を分散元プリンタに、ＳＮＭＰで通知する。そして、分散元プリンタの部数管理部２４では、プリンタＰＲＴ３用のパラメータＮ３，Ｍ３，Ｌ３のうち、印刷実行中パラメータＭ３を［０］にリセットするとともに、印刷完了部数パラメータＮ３を１インクリメントして「１」にセットする。このとき、印刷実行部数Ｅ３は、「１」のままであり、総印刷実行部数ΣＥｐも「５」のままである。
【００９２】
次に、プリンタＰＲＴ３は、引き続き２部目の印刷を開始する。このとき、分散元プリンタの部数管理部２４では、印刷実行中パラメータＭ３を「１」にセットし、これにより、印刷実行部数Ｅ３は「２」から「３」に増加する。そして、この時点における総印刷実行部数ΣＥｐは「５」から「６」に増加する。このとき、総印刷実行部数ΣＥｐは、まだ要求印刷部数「１０部」よりも少ないので、そのまま印刷が続けられる。
【００９３】
プリンタＰＲＴ３が２部目の印刷を開始した後、プリンタＰＲＴ１が２部目の印刷を終了すると、プリンタＰＲＴ１は、印刷の終了通知を分散元プリンタに、ＳＮＭＰで通知する。そして、分散元プリンタの部数管理部２４では、印刷実行中パラメータＭ１を「０」にリセットするとともに、印刷完了部数パラメータＮ１を１インクリメントして「２」にセットする。このとき、求められる印刷実行部数Ｅ１は、「２」のままであり、総印刷実行部数ΣＥｐも「６」のままである。
【００９４】
次に、プリンタＰＲＴ１は、引き続き３部目の印刷を開始する。このとき、分散元プリンタの部数管理部２４では、印刷実行中パラメータＭ１を「１」にセットし、これにより、印刷実行部数Ｅ１は「３」から「４」に増加する。そして、この時点における総印刷実行部数ΣＥｐは「６」から「７」に増加する。このとき、総印刷実行部数ΣＥｐは、まだ要求印刷部数「１０部」よりも少ないので、そのまま印刷が続けられる。
【００９５】
プリンタＰＲＴ１が３部目の印刷を開始した後、プリンタＰＲＴ２が２部目の印刷を終了すると、プリンタＰＲＴ２は、印刷の終了通知を分散元プリンタに、ＳＮＭＰで通知する。そして、分散元プリンタの部数管理部２４では、印刷実行中パラメータＭ２を［０］にリセットするとともに、印刷完了部数パラメータＮ２を１インクリメントして「２」にセットする。このとき、求められる印刷実行部数Ｅ２は、「２」のままであり、総印刷実行部数ΣＥｐも「７」のままである。
【００９６】
次に、プリンタＰＲＴ２は、引き続き３部目の印刷を開始する。このとき、分散元プリンタの部数管理部２４では、印刷実行中パラメータＭ２を「１」にセットし、これにより、印刷実行部数Ｅ２は「３」となる。そして、この時点における総印刷実行部数ΣＥｐは「８」となる。このとき、総印刷実行部数ΣＥｐは、まだ要求印刷部数「１０部」よりも少ないので、そのまま印刷が続けられる。
【００９７】
ここで、例えば、プリンタＰＲＴ２において、プリンタの動作状態がオフライン状態となると、プリンタＰＲＴ２は３部目の印刷を途中で中断し、オフラインとなったことを知らせる通知（オフライン通知：Ｄ）を分散元プリンタに、ＳＮＭＰで通知で通知する。このとき分散元プリンタの部数管理部２４では、プリンタＰＲＴ２用のパラメータＮ１，Ｍ１，Ｌ１のうち、オフラインパラメータＬ２を「１」にセットする。これにより、印刷実行部数Ｅ２は「３」から「２」に減少する。そして、この時点における総印刷部数ΣＥｐは「８」から「７」に減少する。なお、本例では説明の便宜上図示を省略するが、オフライン状態となったプリンタＰＲＴ２のオフライン状態が解除されてオンライン状態に復帰した場合には、プリンタＰＲＴ２は３部目の印刷を再開するとともに、オンラインに復帰したことを知らせるオンライン復帰通知を分散元プリンタに、ＳＮＭＰで通知する。これにより、分散元プリンタの部数管理部２４ではオフラインパラメータＬ２を「０」にリセットし、オフライン状態となる前のパラメータの状態に戻すことができる。
【００９８】
プリンタＰＲＴ２がオフライン状態となって、プリンタＰＲＴ３が２部目の印刷を終了すると、プリンタＰＲＴ３は、印刷の終了通知を分散元プリンタに、ＳＮＭＰで通知する。そして、分散元プリンタの部数管理部２４では、印刷実行中パラメータＭ３を［０］にリセットするとともに、印刷完了部数パラメータＮ３を１インクリメントして「２」にセットする。このとき、求められる印刷実行部数Ｅ２は、「２」のままであり、総印刷実行部数ΣＥｐも「７」のままである。
【００９９】
次に、プリンタＰＲＴ３は、引き続き３部目の印刷を開始する。このとき、分散元プリンタの部数管理部２４では、印刷実行中パラメータＭ３を「１」にセットし、これにより、印刷実行部数Ｅ３は「２」から「３」に増加する。そして、この時点における総印刷実行部数ΣＥｐは「８」となる。このとき、総印刷実行部数ΣＥｐは、まだ要求印刷部数よりも少ないので、そのまま印刷が続けられる。
【０１００】
プリンタＰＲＴ３が３部目の印刷を開始して、プリンタＰＲＴ１が３部目の印刷を終了すると、プリンタＰＲＴ１は、印刷の終了通知を分散元プリンタに、ＳＮＭＰで通知する。そして、分散元プリンタの部数管理部２４では、印刷実行中パラメータＭ１を「０」にリセットするとともに、印刷完了部数パラメータＮ１を１インクリメントして「３」にセットする。このとき、求められる印刷実行部数Ｅ１は、「３」のままであり、総印刷実行部数ΣＥｐも「８」のままである。
【０１０１】
そして、プリンタＰＲＴ１は、３部目の印刷終了すると、４部目の印刷を開始する。このとき、分散元プリンタの部数管理部２４では、印刷実行中パラメータＭ１を「１」にセットし、これにより、印刷実行部数Ｅ１は「４」となる。そして、この時点における総印刷実行部数ΣＥｐは「９」となる。このとき、総印刷実行部数ΣＥｐは要求印刷部数よりも少ないので、そのまま印刷が続けられる。
【０１０２】
プリンタＰＲＴ１が４部目の印刷を開始して、プリンタＰＲＴ３が３部目の印刷を終了すると、プリンタＰＲＴ３は、印刷の終了通知を分散元プリンタに、ＳＮＭＰで通知する。そして、分散元プリンタの部数管理部２４では、印刷実行中パラメータＭ３を［０］にリセットするとともに、印刷完了部数パラメータＮ３を１インクリメントして「３」にセットする。このとき、求められる印刷実行部数Ｅ３は、「３」のままであり、総印刷実行部数ΣＥｐも「９」のままである。
【０１０３】
次に、プリンタＰＲＴ３は、引き続き４部目の印刷を開始する。このとき、分散元プリンタの部数管理部２４では、印刷実行中パラメータＭ３を「１」にセットし、これにより、印刷実行部数Ｅ３は「４」となる。そして、この時点における総印刷実行部数ΣＥｐは「１０」となる。このとき、総印刷実行部数ΣＥｐは要求印刷部数に等しくなるので、部数管理部２４は、各分散先プリンタに対して印刷処理のキャンセルを要求する。具体的には、印刷実行中のプリンタＰＲＴ１、ＰＲＴ３に対しては、それぞれ実行中の印刷、本例では、それぞれ４部目の印刷を終了後、５部目から１０部目までの印刷のキャンセルを要求する。また、オフライン状態で印刷中断中のプリンタＰＲＴ２に対しては、中断中の印刷を含めて、それ以降の印刷、本例では、３部目から１０部目までの印刷のキャンセルを要求する。
【０１０４】
以上のように、本実施例の分散印刷では、各分散先プリンタは、それぞれ、分散元プリンタで受け付けた印刷ジョブで指定された要求印刷部数の印刷を、総印刷実行部数が要求印刷部数になるまで実行する。
【０１０５】
Ａ５．実施例の効果：
以上説明したように、本実施例においては、分散印刷制御機能を有するプリンタＰＲＴ１が、分散印刷を全て制御しているため、専用サーバを用いることなく、簡易なシステムで分散印刷を実現することが可能である。
【０１０６】
また、本実施例の分散印刷では、分散印刷制御機能を有するプリンタＰＲＴ１が、分散先プリンタのそれぞれおにおける印刷実行部数を管理し、総印刷実行部数が要求印刷部数となるまで、それぞれの分散先プリンタの印刷を実行させることができるので、上記したようにエラー等が発生してオフライン状態となり、印刷が中断している分散先プリンタや、何らかの理由で印刷速度が遅い分散先プリンタなど、印刷処理の進行が遅い分散先プリンタが存在しても、他の分散先プリンタが余分に印刷することができる。これにより、進行の遅い分散先プリンタによる印刷の完了を待つ必要がなく、要求部数の印刷を高速に行うことができる。
【０１０７】
Ｂ．変形例：
なお、本発明は上記した実施例や実施形態に限られるものではなく、その要旨を逸脱しない範囲において種々の態様にて実施することが可能である。
【０１０８】
Ｂ１．変形例１：
上記した実施例では、分散印刷を特定する手法として、印刷プロトコルとして用いられた無手順プロトコルのポート番号を変更することにより特定する手法を用いて説明したが、ポート番号の変更が可能であれば、ＬＰＲ，ＩＰＰ（Internet Printing Protocol），ＦＴＰ（File Transfer Protocol），ＳＭＢ（Server Message Block），ＡｐｐｌｅＴａｌｋなど、別の印刷プロトコルを用いるようにしてもよい。また、印刷プロトコルとして、ＬＰＲと無手順プロトコルの組み合わせ分散印刷と特定する手法や、別の印刷プロトコル同士の組み合わせで特定するようにしてもよい。また、分散印刷用のフラグを備えることにより特定する手法を用いるようしてもよい。
【０１０９】
Ｂ２．変形例２：
上記した実施例では、ＬＡＮに接続されている各機器にはＩＰアドレスが固定で割り振られていたが、ＤＨＣＰ（Dynamic Host Configuration Protocol）サーバなどによって、動的にＩＰアドレスを割り振るようにしてもよい。但し、上記した第１の実施例のように、ポート番号「１９１００」とポート番号「９１００」を使い分けてＩＰアドレスでプリンタを特定する場合は、分散元プリンタ（プリンタＰＲＴ１）は予めＩＰアドレスが固定で割り振っておいたほうが好ましい。
【０１１０】
このように、ＩＰアドレスでプリンタを特定するようなプロトコルの場合は、分散元アドレスは予め固定でＩＰアドレスを割り振っておくことが好ましいが、ＳＭＢやＡｐｐｌｅＴａｌｋのように論理的なプリンタ名でプリンタを特定する場合はその限りでない。ＳＭＢやＡｐｐｌｅＴａｌｋのような場合は、分散元、分散先ともに、論理的なプリンタ名をつけておき、分散先指定ファイルにも、それらのプリンタ名を指定しておくことで、ＩＰアドレスを使うことなく、同様の効果を発揮させることができる。
【０１１１】
Ｂ３．変形例３：
上記した実施例では、分散印刷制御装置を、プリンタＰＲＴ１に内蔵されたカスタムネットワークボードＣＮＢとして構成するようにしたが、本発明はこれに限定されるものではなく、分散印刷制御装置をプリンタＰＲＴ１と別体とし、ＵＳＢ接続，ＩＥＥＥ１３９４バス接続，パラレル接続，シリアル接続などの有線接続や、ブルートゥース接続，無線ＬＡＮ接続，赤外線接続などの無線接続で接続するようにしてもよい。
【０１１２】
Ｂ４．変形例４：
上記した実施例では、プリンタＰＲＴ１のみが分散印刷制御装置を内蔵する構成として説明したが、ＬＡＮに接続されている複数のプリンタの全部あるいは一部が分散印刷制御装置を内蔵する構成としてもよい。
【０１１３】
Ｂ５．変形例５：
上記した実施例では、各分散先プリンタの印刷実行部数を、上式（１）で表される印刷実行部数、すなわち、カウントした印刷完了部数に、印刷が中断中ではなく印刷実行中である１部を加えた部数としているが、これに限定されるものではない。例えば、単に、印刷実行中の部数をカウントすることにより印刷実行部数を求めるようにしてもよいし、単に、印刷完了部数をカウントすることにより印刷実行部数を求めるようにしてもよい。ただし、実施例の場合および単に印刷実行中の部数をカウントする場合には、印刷実行中に印刷の中断が発生した場合の部数も含んでいるので、その中断を解除して印刷を終了させる必要がある。また、印刷完了部数をカウントする場合には、要求印刷部数以上の部数の印刷が行われる場合がある。
【図面の簡単な説明】
【０１１４】
【図１】本発明の実施例としての印刷システムの構成を示す説明図である。
【図２】このような印刷ジョブを含む通信データの構成を概念的に示す説明図である。
【図３】図１におけるプリンタＰＲＴ１の構成を主として示す説明図である。
【図４】分散元プリンタとしてのプリンタＰＲＴ１における分散印刷処理手順を示すフローチャートである。
【図５】分散元プリンタとしてのプリンタＰＲＴ１における分散印刷処理手順を示すフローチャートである。
【図６】分散元プリンタとしてのプリンタＰＲＴ１における分散印刷処理手順を示すフローチャートである。
【図７】分散先プリンタとしてのプリンタＰＲＴ２における分散印刷処理手順を示すフローチャートである。
【図８】分散先プリンタとしてのプリンタＰＲＴ２における分散印刷処理手順を示すフローチャートである。
【図９】分散先プリンタとしてのプリンタＰＲＴ２における分散印刷処理手順を示すフローチャートである。
【図１０】分散印刷の実行例を示す説明図である。
【符号の説明】
【０１１５】
１１...ＴＣＰ／ＩＰ解釈部
１２...無手順プロトコル解釈部
１３...アプリケーション
２０...ＣＰＵ
２１...ＴＣＰ／ＩＰ解釈部
２２Ａ...無手順プロトコル解釈部
２２Ｂ...無手順プロトコル解釈部
２３...分散先管理部
２４...部数管理部
２５...分散処理部
３０...メモリ
３１...バッファ部
４１...プリンタエンジン
４２...プリンタコントローラ
５１...ＴＣＰ／ＩＰ解釈部
５２...無手順プロトコル解釈部
５３...プリンタコントローラ
５４...プリンタエンジン
ＣＬ...クライアント
ＣＮＢ...カスタムネットワークボード
ＰＲＢ...プリンタ本体
ＰＲＴ１〜ＰＲＴ４...プリンタ
【図１】
2006201993.tif 000003
【図２】
2006201993.tif 000004
【図３】
2006201993.tif 000005
【図４】
2006201993.tif 000006
【図５】
2006201993.tif 000007
【図６】
2006201993.tif 000008
【図７】
2006201993.tif 000009
【図８】
2006201993.tif 000010
【図９】
2006201993.tif 000011
【図１０】
2006201993.tif 000012