(57)【要約】【課題】  簡易なシステムで、分散印刷を実現する。【解決手段】  分散印刷ソフトウェアに従ってＣＰＵにより実現される各機能部が、印刷ジョブデータを印刷ジョブ格納部に格納し、クライアントＣＬから送信された印刷ジョブデータの全てがその印刷ジョブ格納部に入りきった場合には、ＬＡＮに接続されているプリンタの中から、オンライン状態であり、かつ、印刷ジョブを受信中でなく、印刷中でもないプリンタを検索し、分散先プリンタとしてプリンタＰＲＴ１〜ＰＲＴ４を決定する。上記機能部は、印刷ジョブデータに含まれるＱＴ値を「１部」に変更すると共に、送信先ポート番号を「１９１００」ではなく、「９１００」に変更した上で、それら分散先のプリンタに、それぞれ、印刷ジョブを含む通信データＤＴ１〜ＤＴ４を送信する。【選択図】  図１
2005215925.tif 000002
【特許請求の範囲】
【請求項１】
ネットワークを介して送信される印刷ジョブを、前記ネットワークに接続された印刷装置のうち、分散先となる１以上の分散先印刷装置に分散することが可能な分散印刷制御装置であって、
前記印刷ジョブを格納するための印刷ジョブ格納部と、
制御部と、
を備え、
前記制御部は、特定のポート番号を指定して前記印刷ジョブが送信されてきた場合に、前記印刷ジョブを前記印刷ジョブ格納部に格納すると共に、送信された前記印刷ジョブの全てが前記印刷ジョブ格納部に入りきったら、前記ネットワークに接続された印刷装置の中から前記分散先印刷装置を決定し、各分散先印刷装置において、それぞれ、１部ずつの印刷がなされるよう、前記印刷ジョブ格納部に格納された前記印刷ジョブを前記分散先印刷装置に分散することを特徴とする分散印刷制御装置。
【請求項２】
請求項１に記載の分散印刷制御装置において、
前記分散先印刷装置に分散する際、前記特定のポート番号とは異なるポート番号を指定して前記印刷ジョブを送信することを特徴とする分散印刷制御装置。
【請求項３】
ネットワークを介して送信される印刷ジョブを、前記ネットワークに接続された印刷装置のうち、分散先となる１以上の分散先印刷装置に分散することが可能な分散印刷制御装置であって、
特定の印刷プロトコルで前記印刷ジョブが送信されてきた場合に、前記印刷ジョブを前記印刷ジョブ格納部に格納すると共に、送信された前記印刷ジョブの全てが前記印刷ジョブ格納部に入りきったら、前記ネットワークに接続された印刷装置の中から前記分散先印刷装置を決定し、各分散先印刷装置において、それぞれ、１部ずつの印刷がなされるよう、前記印刷ジョブ格納部に格納された前記印刷ジョブを前記分散先印刷装置に分散することを特徴とする分散印刷制御装置。
【請求項４】
請求項３に記載の分散印刷制御装置において、
前記分散先印刷装置に分散する際、前記特定の印刷プロトコルとは異なる印刷プロトコルで前記印刷ジョブを送信することを特徴とする分散印刷制御装置。
【請求項５】
請求項１ないし請求項４のうちの任意の１つに記載の分散印刷制御装置において、
前記制御部は、送信された前記印刷ジョブが印刷部数情報を含むと共に、該印刷部数情報の示す部数がｍ部（但し、ｍは２以上の整数）である場合に、各分散先印刷装置で印刷された累積の部数が前記ｍ部となるまで、前記印刷装置の中からの前記分散先印刷装置の決定と、決定した分散先印刷装置への前記印刷ジョブの分散と、を繰り返すことを特徴とする分散印刷制御装置。
【請求項６】
請求項１ないし請求項５のうちの任意の１つに記載の分散印刷制御装置において、
前記制御部は、前記印刷装置の中から前記分散先印刷装置を決定する際、前記印刷装置の中から、オンライン状態であり、かつ、印刷ジョブを受信中でなく、印刷中でもない印刷装置を候補印刷装置として検索し、該候補印刷装置の中から前記分散先印刷装置を決定することを特徴とする分散印刷制御装置。
【請求項７】
請求項１ないし請求項４のうちの任意の１つに記載の分散印刷制御装置において、
前記制御部は、送信された前記印刷ジョブの全てが前記印刷ジョブ格納部に入りきらなかった場合であって、送信された前記印刷ジョブが印刷部数情報を含むと共に、該印刷部数情報の示す部数がｍ部（但し、ｍは２以上の整数）である場合に、前記ネットワークに接続された印刷装置の中から前記分散先印刷装置を決定すると共に、各分散先印刷装置に割り当てるべき分散部数を、それぞれ、それら分散部数の総和が前記ｍ部となるよう、決定し、各分散先印刷装置において、それぞれ、決定した前記分散部数だけ印刷がなされるよう、前記印刷ジョブを前記分散先印刷装置に分散することを特徴とする分散印刷制御装置。
【請求項８】
請求項１ないし請求項７のうちの任意の１つに記載の分散印刷制御装置において、
前記ネットワークに接続された印刷装置のうち、少なくとも１つの特定印刷装置に、内蔵または接続されていることを特徴とする分散印刷制御装置。
【請求項９】
請求項８に記載の分散印刷制御装置において、
前記制御部は、前記分散先印刷装置として、前記特定印刷装置を決定することを許容することを特徴とする分散印刷制御装置。
【請求項１０】
請求項８または請求項９に記載された分散印刷制御装置において、
前記制御部は、前記印刷装置の中から前記分散先印刷装置を決定する際、前記印刷装置の中から、前記特定印刷装置と同一機種の印刷装置を抽出し、該同一機種の印刷装置の中から、前記分散先印刷装置を決定することを特徴とする分散印刷制御装置。
【請求項１１】
請求項１０に記載された分散印刷制御装置において、
分散先指定ファイルを有すると共に、
前記制御部は、前記印刷装置の中から、前記特定印刷装置と同一機種の印刷装置を抽出する際、前記分散先指定ファイルの指定内容に基づいた範囲内で、前記同一機種の印刷装置を抽出することを特徴とする分散印刷制御装置。
【請求項１２】
ネットワークに接続された印刷装置であって、
請求項１ないし請求項７のうちの任意の１つに記載の分散印刷制御装置を内蔵することを特徴とする印刷装置。
【請求項１３】
ネットワークを介して送信される印刷ジョブを、前記ネットワークに接続された印刷装置のうち、分散先となる１以上の分散先印刷装置に分散するための印刷ジョブ分散方法であって、
（ａ）印刷ジョブ格納部を用意する工程と、
（ｂ）前記印刷ジョブを含む通信データを受信する工程と、
（ｃ）受信した前記通信データが特定のポート番号を指定している場合に、前記通信データに含まれる前記印刷ジョブを前記印刷ジョブ格納部に格納する工程と、
（ｄ）送信された前記印刷ジョブの全てが前記印刷ジョブ格納部に入りきったか否かを判定する工程と、
（ｅ）前記印刷ジョブの全てが前記印刷ジョブ格納部に入りきったと判定した場合に、前記ネットワークに接続された印刷装置の中から前記分散先印刷装置を決定する工程と、
（ｆ）決定した各分散先印刷装置において、それぞれ、１部ずつの印刷がなされるよう、前記印刷ジョブ格納部に格納された前記印刷ジョブを前記分散印刷装置に分散する工程と、
を備える印刷ジョブ分散方法。
【請求項１４】
請求項１３に記載の印刷ジョブ分散方法において、
前記工程（ｆ）は、前記分散先印刷装置に分散する際に、前記特定のポート番号とは異なるポート番号を指定して前記印刷ジョブを送信する工程を含むことを特徴とする印刷ジョブ分散方法。
【請求項１５】
ネットワークを介して送信される印刷ジョブを、前記ネットワークに接続された印刷装置のうち、分散先となる１以上の分散先印刷装置に分散するための印刷ジョブ分散方法であって、
（ａ）印刷ジョブ格納部を用意する工程と、
（ｂ）前記印刷ジョブを受信する工程と、
（ｃ）受信した前記印刷ジョブが特定の印刷プロトコルで送信されてきた場合に、前記印刷ジョブを前記印刷ジョブ格納部に格納する工程と、
（ｄ）送信された前記印刷ジョブの全てが前記印刷ジョブ格納部に入りきったか否かを判定する工程と、
（ｅ）前記印刷ジョブの全てが前記印刷ジョブ格納部に入りきったと判定した場合に、前記ネットワークに接続された印刷装置の中から前記分散先印刷装置を決定する工程と、
（ｆ）決定した各分散先印刷装置において、それぞれ、１部ずつの印刷がなされるよう、前記印刷ジョブ格納部に格納された前記印刷ジョブを前記分散印刷装置に分散する工程と、
を備える印刷ジョブ分散方法。
【請求項１６】
請求項１５に記載の印刷ジョブ分散方法において、
前記工程（ｆ）は、前記分散先印刷装置に分散する際、前記特定の印刷プロトコルとは異なる印刷プロトコルで前記印刷ジョブを送信する工程を含むことを特徴とする印刷ジョブ分散方法。
【請求項１７】
請求項１３ないし請求項１６のうちの任意の１つに記載の印刷ジョブ分散方法において、
（ｇ）送信された前記印刷ジョブが印刷部数情報を含むと共に、該印刷部数情報の示す部数がｍ部（但し、ｍは２以上の整数）である場合に、各分散先印刷装置で印刷された累積の部数が前記ｍ部となったか否かを判定する工程と、
（ｈ）前記累積の部数が前記ｍ部となったと判定するまで、前記工程（ｅ）と前記工程（ｆ）を繰り返す工程と、
をさらに備える印刷ジョブ分散方法。
【請求項１８】
請求項１３ないし請求項１７のうちの任意の１つに記載の印刷ジョブ分散方法において、
前記工程（ｅ）は、前記印刷装置の中から、オンライン状態であり、かつ、印刷ジョブを受信中でなく、印刷中でもない印刷装置を候補印刷装置として検索し、該候補印刷装置の中から前記分散先印刷装置を決定する工程を含むことを特徴とする印刷ジョブ分散方法。
【請求項１９】
請求項１３ないし請求項１６のうちの任意の１つに記載の印刷ジョブ分散方法において、
（ｇ）前記工程（ｆ）において前記印刷ジョブの全てが前記印刷ジョブ格納部に入りきらなっかったと判定した場合であって、送信された前記印刷ジョブが印刷部数情報を含むと共に、該印刷部数情報の示す部数がｍ部（但し、ｍは２以上の整数）である場合に、前記ネットワークに接続された印刷装置の中から前記分散先印刷装置を決定する工程と、
（ｈ）決定した各分散先印刷装置に割り当てるべき分散部数を、それぞれ、それら分散部数の総和が前記ｍ部となるよう、決定する工程と、
（ｉ）各分散先印刷装置において、それぞれ、決定した前記分散部数だけ印刷がなされるよう、前記印刷ジョブを前記分散先印刷装置に分散する工程と、
をさらに備える印刷ジョブ分散方法。
【請求項２０】
分散印刷制御装置によって、ネットワークを介して送信される印刷ジョブを、前記ネットワークに接続された印刷装置のうち、分散先となる１以上の分散先印刷装置に分散させるためのコンピュータプログラムであって、
前記印刷ジョブを含む通信データを受信する手順と、
受信した前記通信データが特定のポート番号を指定している場合に、前記通信データに含まれる前記印刷ジョブを、前記分散印刷制御装置の備える印刷ジョブ格納部に格納する手順と、
前記印刷ジョブの全てが前記印刷ジョブ格納部に入りきった場合に、前記ネットワークに接続された印刷装置の中から前記分散先印刷装置を決定する手順と、
決定した各分散先印刷装置において、それぞれ、１部ずつの印刷がなされるよう、前記印刷ジョブ格納部に格納された前記印刷ジョブを前記分散印刷装置に分散する手順と、
を前記分散印刷制御装置の備えるコンピュータに実行させるためのコンピュータプログラム。
【請求項２１】
請求項２０に記載のコンピュータプログラムにおいて、
前記前記分散印刷装置に分散する手順は、前記分散先印刷装置に分散する際に、前記特定のポート番号とは異なるポート番号を指定して前記印刷ジョブを送信する手順を含むことを特徴とするコンピュータプログラム。
【請求項２２】
分散印刷制御装置によって、ネットワークを介して送信される印刷ジョブを、前記ネットワークに接続された印刷装置のうち、分散先となる１以上の分散先印刷装置に分散させるためのコンピュータプログラムであって、
前記印刷ジョブを受信する手順と、
受信した前記印刷ジョブが特定の印刷プロトコルで送信されてきた場合に、前記分散印刷制御装置の備える印刷ジョブ格納部に格納する手順と、
前記印刷ジョブの全てが前記印刷ジョブ格納部に入りきった場合に、前記ネットワークに接続された印刷装置の中から前記分散先印刷装置を決定する手順と、
決定した各分散先印刷装置において、それぞれ、１部ずつの印刷がなされるよう、前記印刷ジョブ格納部に格納された前記印刷ジョブを前記分散印刷装置に分散する手順と、
を前記分散印刷制御装置の備えるコンピュータに実行させるためのコンピュータプログラム。
【請求項２３】
請求項２２に記載のコンピュータプログラムにおいて、
前記前記分散印刷装置に分散する手順は、前記分散先印刷装置に分散する際に、前記特定の印刷プロトコルとは異なる印刷プロトコルで前記印刷ジョブを送信する手順を含むことを特徴とするコンピュータプログラム。
【請求項２４】
請求項２０ないし請求項２３のうちの任意の１つに記載のコンピュータプログラムにおいて、
送信された前記印刷ジョブが印刷部数情報を含むと共に、該印刷部数情報の示す部数がｍ部（但し、ｍは２以上の整数）である場合に、各分散先印刷装置で印刷された累積の部数が前記ｍ部となるまで、前記分散先印刷装置を決定する手順と前記印刷ジョブを前記分散先印刷装置に分散する手順を繰り返す手順と、
をさらに前記コンピュータに実行させるためのコンピュータプログラム。
【請求項２５】
請求項２０ないし請求項２４のうちの任意の１つに記載のコンピュータプログラムにおいて、
前記分散先印刷装置を決定する手順は、前記印刷装置の中から、オンライン状態であり、かつ、印刷ジョブを受信中でなく、印刷中でもない印刷装置を候補印刷装置として検索し、該候補印刷装置の中から前記分散先印刷装置を決定する手順を含むことを特徴とするコンピュータプログラム。
【請求項２６】
請求項２０ないし請求項２３のうちの任意の１つに記載のコンピュータプログラムにおいて、
送信された前記印刷ジョブの全てが前記印刷ジョブ格納部に入りきらなっかった場合であって、送信された前記印刷ジョブが印刷部数情報を含むと共に、該印刷部数情報の示す部数がｍ部（但し、ｍは２以上の整数）である場合に、前記ネットワークに接続された印刷装置の中から前記分散先印刷装置を決定する手順と、
決定した各分散先印刷装置に割り当てるべき分散部数を、それぞれ、それら分散部数の総和が前記ｍ部となるよう、決定する手順と、
各分散先印刷装置において、それぞれ、決定した前記分散部数だけ印刷がなされるよう、前記印刷ジョブを前記分散先印刷装置に分散する手順と、
をさらに前記コンピュータに実行させるためのコンピュータプログラム。
【請求項２７】
請求項２０ないし請求項２６のうちの任意の１つに記載のプログラムを記録したコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ネットワークに接続された１以上の印刷装置に印刷ジョブを分散して、分散印刷を行う技術に関する。
【背景技術】
【０００２】
近年、複数のプリンタを同一ネットワークに接続し、ユーザが複数のプリンタを使い分けることができる印刷システムが普及しつつある。複数部の印刷を行う場合、印刷ジョブを各プリンタに分散し、並行処理することにより、短時間で印刷を完了する技術、いわゆる分散印刷も提案されている（例えば、特許文献１参照）。分散印刷は、ネットワーク上に設けられた分散印刷用の専用サーバが、印刷ジョブの分散先および印刷部数を制御するのが通常である。
【０００３】
【特許文献１】特開２００２−２１５３６９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかし、従来技術では、分散印刷を実現するために専用サーバを含めた大がかりなシステムが必要となっていた。
【０００５】
本発明は、かかる課題を解決するためになされたものであり、簡易なシステムで、分散印刷を実現することを目的とする。
【課題を解決するための手段】
【０００６】
上記した目的の少なくとも一部を達成するために、本発明の第１の分散印刷制御装置は、  ネットワークを介して送信される印刷ジョブを、前記ネットワークに接続された印刷装置のうち、分散先となる１以上の分散先印刷装置に分散することが可能な分散印刷制御装置であって、
前記印刷ジョブを格納するための印刷ジョブ格納部と、
制御部と、
を備え、
前記制御部は、特定のポート番号を指定して前記印刷ジョブが送信されてきた場合に、前記印刷ジョブを前記印刷ジョブ格納部に格納すると共に、送信された前記印刷ジョブの全てが前記印刷ジョブ格納部に入りきったら、前記ネットワークに接続された印刷装置の中から前記分散先印刷装置を決定し、各分散先印刷装置において、それぞれ、１部ずつの印刷がなされるよう、前記印刷ジョブ格納部に格納された前記印刷ジョブを前記分散先印刷装置に分散することを要旨とする。
【０００７】
このように、本発明では、第１の分散印刷制御装置が、分散印刷を全て制御しているため、専用サーバを用いることなく、簡易なシステムで分散印刷を実現することが可能である。
【０００８】
また、第１の分散印刷制御装置では、送信された印刷ジョブの全てが印刷ジョブ格納部に入りきった場合には、分散先印刷装置を決定し、格納された印刷ジョブを分散先印刷装置に分散して、各分散先印刷装置において、それぞれ、１部ずつ分散印刷を行わせるため、仮に、いずれかの分散先印刷装置において、エラーなどが発生し、印刷に失敗したとしても、高々、１部だけの失敗にとどめることができる。
【０００９】
さらに、本発明では、分散印刷を実行するために、例えば、コンピュータ等に特別なソフトウェアをインストールしたりする必要がなく、また、分散印刷を行う場合、ユーザは、コンピュータ等から分散印刷制御装置に印刷ジョブを送信する際に、コンピュータ等において、ポート番号の指定を特定のポート番号に変更するだけでよいため、ユーザの負担を大幅に軽減することができる。
【００１０】
本発明の第１の分散印刷制御装置において、前記分散先印刷装置に分散する際、前記特定のポート番号とは異なるポート番号を指定して前記印刷ジョブを送信することが好ましい。
【００１１】
このように構成することにより、例えば、分散印刷制御装置が特定の印刷装置に内蔵されていて、分散先印刷装置の１つとしてその特定印刷装置が含まれている場合に、印刷ジョブをその特定印刷装置に分散しても、そのときに指定されるポート番号は特定のポート番号とは異なるため、その分散した印刷ジョブを、特定の番号ポートを指定して送信されてきた印刷ジョブと判断することがなく、さらに再分散，再々分散など、無限に分散するようなことがない。
【００１２】
本発明の第２の分散印刷制御装置は、ネットワークを介して送信される印刷ジョブを、前記ネットワークに接続された印刷装置のうち、分散先となる１以上の分散先印刷装置に分散することが可能な分散印刷制御装置であって、
特定の印刷プロトコルで前記印刷ジョブが送信されてきた場合に、前記印刷ジョブを前記印刷ジョブ格納部に格納すると共に、送信された前記印刷ジョブの全てが前記印刷ジョブ格納部に入りきったら、前記ネットワークに接続された印刷装置の中から前記分散先印刷装置を決定し、各分散先印刷装置において、それぞれ、１部ずつの印刷がなされるよう、前記印刷ジョブ格納部に格納された前記印刷ジョブを前記分散先印刷装置に分散することを要旨とする。
【００１３】
従って、第１の分散印刷制御装置の場合と同様に、第２の分散印刷制御装置が、分散印刷を全て制御しているため、専用サーバを用いることなく、簡易なシステムで分散印刷を実現することが可能である。
【００１４】
また、第２の分散印刷制御装置でも、送信された印刷ジョブの全てが印刷ジョブ格納部に入りきった場合には、各分散先印刷装置において、それぞれ、１部ずつ分散印刷を行わせるため、仮に、いずれかの分散先印刷装置において、エラーなどが発生し、印刷に失敗したとしても、高々、１部だけの失敗にとどめることができる。
【００１５】
さらに、分散印刷を実行するために、例えば、コンピュータ等に特別なソフトウェアをインストールしたりする必要がなく、また、分散印刷を行う場合、ユーザは、コンピュータ等から分散印刷制御装置に印刷ジョブを送信する際に、コンピュータ等において、印刷プロトコルの指定を特定の印刷プロトコルに変更するだけでよいため、ユーザの負担を大幅に軽減することができる。
【００１６】
本発明の第２の分散印刷制御装置において、前記分散先印刷装置に分散する際、前記特定の印刷プロトコルとは異なる印刷プロトコルで前記印刷ジョブを送信することが好ましい。
【００１７】
このように構成することにより、例えば、分散印刷制御装置が特定の印刷装置に内蔵されていて、分散先印刷装置の１つとしてその特定印刷装置が含まれている場合に、印刷ジョブをその特定印刷装置に分散しても、そのときに用いられる印刷プロトコルは特定の印刷プロトコルとは異なるため、その分散した印刷ジョブを、特定の印刷プロトコルで送信されてきた印刷ジョブと判断することがなく、さらに再分散，再々分散など、無限に分散するようなことがない。
【００１８】
本発明の分散印刷制御装置において、前記制御部は、送信された前記印刷ジョブが印刷部数情報を含むと共に、該印刷部数情報の示す部数がｍ部（但し、ｍは２以上の整数）である場合に、各分散先印刷装置で印刷された累積の部数が前記ｍ部となるまで、前記印刷装置の中からの前記分散先印刷装置の決定と、決定した分散先印刷装置への前記印刷ジョブの分散と、を繰り返すことが好ましい。
【００１９】
このように、印刷装置の中からの分散先印刷装置の決定と、決定した分散先印刷装置への印刷ジョブの分散と、を繰り返すことにより、例えば、エラーの発生していない印刷実行可能な印刷装置などを、毎回、新たな分散先印刷装置として決定し、それら分散先印刷装置に印刷ジョブを分散することができる。また、累積の印刷部数がｍ部になるまで繰り返すことにより、最終的に、送信された印刷ジョブに含まれる印刷部数情報どおりの部数を、各分散先印刷装置での累積として得ることができる。
【００２０】
本発明の分散印刷制御装置において、前記制御部は、前記印刷装置の中から前記分散先印刷装置を決定する際、前記印刷装置の中から、オンライン状態であり、かつ、印刷ジョブを受信中でなく、印刷中でもない印刷装置を候補印刷装置として検索し、該候補印刷装置の中から前記分散先印刷装置を決定することが好ましい。
【００２１】
このようにして、分散先印刷装置を決定することにより、エラーを発生している印刷装置や、エラーを発生する可能性のある印刷装置を、分散先印刷装置から排除することができ、印刷に失敗した印刷装置に繰り返し印刷ジョブを送信したりすることを避けることができる。
【００２２】
本発明の分散印刷制御装置において、前記制御部は、送信された前記印刷ジョブの全てが前記印刷ジョブ格納部に入りきらなかった場合であって、送信された前記印刷ジョブが印刷部数情報を含むと共に、該印刷部数情報の示す部数がｍ部（但し、ｍは２以上の整数）である場合に、前記ネットワークに接続された印刷装置の中から前記分散先印刷装置を決定すると共に、各分散先印刷装置に割り当てるべき分散部数を、それぞれ、それら分散部数の総和が前記ｍ部となるよう、決定し、各分散先印刷装置において、それぞれ、決定した前記分散部数だけ印刷がなされるよう、前記印刷ジョブを前記分散先印刷装置に分散するようにしもよい。
【００２３】
このように、送信された前記印刷ジョブの全てが印刷ジョブ格納部に入りきらなかった場合でも、各分散先印刷装置において、それぞれ、決定した分散部数だけ印刷がなされるよう、印刷ジョブを分散先印刷装置に分散することにより、各分散先印刷装置において、それぞれ、決定した分散部数分の分散印刷を実行させることができる。また、分散部数の総和がｍ部となるよう決定することにより、各分散先印刷装置で印刷される部数の合計として、送信された印刷ジョブに含まれる印刷部数情報どおりの部数を得ることができる。
【００２４】
本発明の分散印刷制御装置において、前記ネットワークに接続された印刷装置のうち、少なくとも１つの特定印刷装置に、内蔵または接続されていてもよい。
【００２５】
特定印刷装置に内蔵または接続された分散印刷制御装置において、前記制御部は、前記分散先印刷装置として、前記特定印刷装置を決定することを許容することが好ましい。
【００２６】
このように構成することにより、特定印刷装置自身を分散先印刷装置の候補に組み入れることができ、分散先印刷装置の選択範囲を広げることができる。
【００２７】
特定印刷装置に内蔵または接続された分散印刷制御装置において、前記制御部は、前記印刷装置の中から前記分散先印刷装置を決定する際、前記印刷装置の中から、前記特定印刷装置と同一機種の印刷装置を抽出し、該同一機種の印刷装置の中から、前記分散先印刷装置を決定することが好ましい。
【００２８】
分散印刷制御装置が特定印刷装置に内蔵または接続されている場合、分散印刷制御装置に送信されてくる印刷ジョブは、特定印刷装置用の印刷ジョブとして送信されてくるため、その印刷ジョブが分散される分散先印刷装置も、特定印刷装置と同一機種であれば、それら分散先印刷装置において、印刷ジョブのデータ変換などをすることなく、適正な印刷を行わせることができる。
【００２９】
特定印刷装置に内蔵または接続された分散印刷制御装置において、分散先指定ファイルを有すると共に、
前記制御部は、前記印刷装置の中から、前記特定印刷装置と同一機種の印刷装置を抽出する際、前記分散先指定ファイルの指定内容に基づいた範囲内で、前記同一機種の印刷装置を抽出することが好ましい。
【００３０】
このように、分散先指定ファイルを用いることにより、分散先印刷装置の候補を、予め、所望の印刷装置に絞り込むことができる。
【００３１】
なお、本発明は、上記した分散印刷制御装置としての構成の他、その分散印刷制御装置を内蔵する印刷装置としても構成することができる。また、そのような装置発明の態様に限ることなく、印刷ジョブ分散方法などの方法発明としての態様で実現することも可能である。さらには、それら方法や装置を構築するためのコンピュータプログラムとしての態様や、そのようなコンピュータプログラムを記録した記録媒体としての態様や、上記コンピュータプログラムを含み搬送波内に具現化されたデータ信号など、種々の態様で実現することも可能である。
【００３２】
本発明をコンピュータプログラムまたはそのプログラムを記録した記録媒体等として構成する場合には、印刷装置を制御するプログラム全体として構成するものとしてもよいし、本発明の機能を果たす部分のみを構成するものとしてもよい。また、記録媒体としては、フレキシブルディスクやＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ、光磁気ディスク、ＩＣカード、ＲＯＭカートリッジ、パンチカード、バーコードなどの符号が印刷された印刷物、コンピュータの内部記憶装置（ＲＡＭやＲＯＭなどのメモリ）および外部記憶装置などコンピュータが読み取り可能な種々の媒体を利用できる。
【発明を実施するための最良の形態】
【００３３】
以下、本発明の実施の形態を、実施例に基づいて、下記の項目に分けて説明する。
Ａ．第１の実施例：
Ａ１．システム概要：
Ａ２．プリンタの構成：
Ａ３．通常印刷処理：
Ａ４．分散印刷処理：
Ａ５．実施例の効果：
Ｂ．第２の実施例：
Ｂ１．プリンタの構成：
Ｂ２．通常印刷処理：
Ｂ３．分散印刷処理：
Ｂ４．実施例の効果：
Ｃ．変形例：
【００３４】
Ａ．第１の実施例：
Ａ１．システム概要：
図１は本発明の第１の実施例としてのプリンタＰＲＴ１を備える印刷システムの構成を示す説明図である。この印刷システムでは、図示するように、クライアントＰＣ（以下、クライアントと略す）ＣＬ、複数のプリンタＰＲＴ１〜ＰＲＴ４がローカルエリアネットワーク（ＬＡＮ）に接続されている。各機器間の通信は、ＴＣＰ／ＩＰプロトコルをベースとしているため、各機器には、それぞれ、ＩＰアドレスが予め固定で割り振られている。説明の便宜上、クライアントＣＬには「ＩＰｃ」、プリンタＰＲＴ１〜ＰＲＴ４には、それぞれ「ＩＰ１」〜「ＩＰ４」なるアドレスが設定されているものとする。なお、厳密に言えば、これらＩＰアドレスは、クライアントＣＬ，プリンタＰＲＴ１〜ＰＲＴ４自体に設定されているわけではなく、ＴＣＰ／ＩＰのネットワークから見た場合のノード（すなわち、具体的には、ＴＣＰ／ＩＰ通信を行うためにネットワークに接続されているネットワークボードなど）に設定されている。
【００３５】
これらプリンタのうち、プリンタＰＲＴ１には、カスタムネットワークボードＣＮＢが取り付けられている。このカスタムネットワークボードＣＮＢは、受信した印刷ジョブを他のプリンタに分散して、分散印刷を実行するための分散印刷制御機能を備えており、請求項における分散印刷制御装置に相当する。一方、他のプリンタには、それぞれ、標準のネットワークボード（図示せず）が取り付けられている。
【００３６】
一例として図中には、クライアントＣＬからプリンタＰＲＴ１に、印刷ジョブを含む通信データＤＴ０が送信される場合を例示した。
【００３７】
図２はこのような印刷ジョブを含む通信データの構成を概念的に示す説明図である。図２に示すように、通信データは、大きく分けて、ヘッダと、印刷ジョブデータと、に分かれている。
【００３８】
このうち、ヘッダには、その通信データの発信元である機器のＩＰアドレス（発信元ＩＰアドレス）と、その機器内における発信元であるソフトウェアを特定するポート番号（発信元ポート番号）と、を含む他、その通信データの送信先である機器のＩＰアドレス（送信先ＩＰアドレス）と、その機器内における送信先であるソフトウェアを特定するポート番号（送信先ポート番号）とを含んでいる。発信元である機器のソフトウェアから発信された通信データは、送信先ＩＰアドレスに従って、そのＩＰアドレスを有する機器に送信され、さらに、受信したその機器内では、送信先ポート番号に従って、その番号のポートで待機しているソフトウェアに渡される。
【００３９】
一方、印刷ジョブデータは、ジョブ制御言語の部分と、印刷コマンドと、に分かれており、このうち、ジョブ制御言語部分には、印刷部数情報として、印刷部数を表すＱＴ値が記載されている。
【００４０】
なお、ＴＣＰ／ＩＰの場合、通信データは、通常、バケットで通信される。従って、実際には、一連の印刷ジョブデータは、時分割された上で、各時分割データの前に上記ヘッダを付けて、それぞれ、送信されることになる。
【００４１】
図１に戻って、通信データＤＴ０には、送信先ＩＰアドレスとして「ＩＰ１」が、送信先ポート番号として「１９１００」が、ＱＴ値（すなわち、印刷部数）として「１００部」が、それぞれ記載されている。
【００４２】
本実施例では、印刷プロトコルとして無手順プロトコルを用いている。無手順プロトコルでは、通常、ボート番号として「９１００」が割り当てられているが、本実施例では、クライアントＣＬから分散印刷制御機能を有するプリンタＰＲＴ１に印刷ジョブを送信する際、ボート番号として通常の「９１００」ではなく、「１９１００」を用いる。
【００４３】
プリンタＰＲＴ１のカスタムネットワークボードＣＮＢは、この通信データＤＴ０を受信すると、ポート番号「１９１００」に待機しているソフトウェアに、印刷ジョブデータを渡す。本実施例では、ポート番号「１９１００」には、分散印刷制御機能を実現するための分散印刷ソフトウェアが待機している。それにより、その分散印刷ソフトウェアに従ってＣＰＵにより実現される機能部が、まず、印刷ジョブデータを印刷ジョブ格納部（図示せず）に格納し、クライアントＣＬから送信された印刷ジョブデータの全てがその印刷ジョブ格納部に入りきった場合には、ＬＡＮに接続されているプリンタの中から、オンライン状態であり、かつ、印刷ジョブを受信中でなく、印刷中でもないプリンタを検索し、分散先プリンタを決定する。例えば、その分散先プリンタとして、プリンタＰＲＴ２〜ＰＲＴ４の他、自己のプリンタＰＲＴ１を決定されたとすると、上記機能部は、印刷ジョブデータに含まれるＱＴ値を「１部」に変更すると共に、送信先ポート番号を「１９１００」ではなく、「９１００」に変更した上で、それら分散先のプリンタに、それぞれ、印刷ジョブを含む通信データＤＴ１〜ＤＴ４を送信する。
【００４４】
従って、例えば、通信データＤＴ２には、送信先ＩＰアドレスとして「ＩＰ２」が、送信先ポート番号として「９１００」が、ＱＴ値として「１部」が、それぞれ記載されている。
【００４５】
プリンタＰＲＴ２の標準ネットワークボードは、この通信データＤＴ２を受信すると、ポート番号「９１００」に待機しているソフトウェアに、印刷ジョブデータを渡す。ポート番号「９１００」は、前述したとおり、印刷プロトコルである無手順プロトコルに対して、通常割り当てられているポート番号であるので、印刷ジョブデータは、プリンタＰＲＴ２内の印刷制御ソフトウェアに渡されて、その印刷ジョブに従った印刷が実行される。
【００４６】
他のプリンタＰＲＴ３，ＰＲＴ４は、もちろんのこと、分散印刷制御機能を有するＰＲＴ１においても、同様に、送信された印刷ジョブに従った印刷が実行される。
【００４７】
従って、各プリンタＰＲＴ１〜ＰＲＴ４では、各「１部」ずつの印刷が実行されることになり、システム全体で、合計「４部」の分散印刷が実行されることになる。
【００４８】
続いて、上記機能部は、再度、ＬＡＮに接続されているプリンタの中から、オンライン状態であり、かつ、印刷ジョブを受信中でなく、印刷中でもないプリンタを検索して、分散先プリンタを決定し、印刷ジョブデータに含まれるＱＴ値を「１部」に、送信先ポート番号を「９１００」にそれぞれ変更した上で、それら分散先のプリンタに、それぞれ、印刷ジョブを含む通信データを送信する。そして、各分散先プリンタにおいて、その印刷ジョブに従って、各「１部」ずつの印刷を実行する。以下、このような処理を、システム全体での累積の印刷部数が「１００部」になるまで、繰り返し、実行する。
【００４９】
すると、最終的には、システム全体において、合計「１００部」の分散印刷が実行されることになる。
【００５０】
Ａ２．プリンタの構成：
図３は図１におけるプリンタＰＲＴ１の構成を主として示す説明図である。プリンタＰＲＴ１は、プリンタ本体ＰＲＢと、上述したカスタムネットワークボードＣＮＢと、を備えている。このうち、プリンタ本体ＰＲＢは、主として、プリンタエンジン４１と、プリンタコントローラ４２と、を備えている。プリンタエンジン４１は、実際に印刷を行う機構部分である。プリンタコントローラ４２は、カスタムネットワークボードＣＮＢから印刷ジョブデータを受け取り、その印刷ジョブに従ってプリンタエンジン４１を制御し、印刷を実行させる。
【００５１】
一方、本発明の特徴部分であるカスタムネットワークボードＣＮＢは、主として、ＣＰＵ２０と、メモリ３０と、を備えている。また、この他、実際にネットワーク通信を行うための通信用インタフェースなども備えているが、説明の便宜上、省略されている。
【００５２】
ＣＰＵ２０は、メモリ３０より、上記した分散印刷ソフトウェアなどのプログラムを読み出して、実行することにより、図示した各機能ブロックとして機能する。なお、各機能ブロックをハードウェア的に構築しても構わない。このようなＣＰＵ２０が、請求項に記載の制御部に相当する。
【００５３】
これら機能ブロックのうち、ＴＣＰ／ＩＰ解釈部２１は、ＴＣＰ／ＩＰプロトコルを解釈して、ネットワークを介して外部との通信を行う。具体的には、受信した通信データに含まれる送信先ＩＰアドレスや送信先ポート番号を検出したり、送信する通信データに送信先ＩＰアドレスや送信先ポート番号を付与したりする。無手順プロトコル解釈部２２Ａ，２２Ｂは、印刷プロトコルである無手順プロトコルを解釈する。本実施例では、説明の便宜上、通信データが、送信先ポート番号として通常の「９１００」で送信されている場合には、無手順プロトコル解釈部２２Ｂが機能し、特定の「１９１００」で送信されている場合には、無手順プロトコル解釈部２２Ａが機能するものとしている。
【００５４】
また、分散先決定部２３は、分散印刷を行う際に、ＬＡＮ上から、分散先となるべきプリンタを候補プリンタとして検索し、それら候補プリンタの中から分散先プリンタを決定する。部数決定部２４は、指定されている総印刷部数から、各分散先プリンタに割り当てるべき分散部数を決定する。分散処理部２５は、印刷ジョブデータに含まれる印刷部数を示すＱＴ値を書き換えた上で、各分散プリンタに印刷ジョブデータを分配する。
【００５５】
一方、メモリ３０は、上記したプログラムを格納する他、各種データを格納するために、印刷ジョブ格納部３１や分散先指定ファイル格納部３２を備えている。このうち、印刷ジョブ格納部３１は、送信された印刷ジョブデータを一時的に格納するための格納部である。また、分散先指定ファイル格納部３２は分散先指定ファイルを格納する。この分散先指定ファイルは、ＬＡＮに接続されている複数のプリンタの中で、分散印刷における分散先として使用したいプリンタを、前もって、指定して限定しておきたい場合に用いる。従って、そのような指定が不要な場合には、分散先指定ファイル格納部３２には何も格納されない。
【００５６】
さて、図３において、その他、クライアントＣＬにおいては、アプリケーション１３の他、機能ブロックとして、無手順プロトコル解釈部１２やＴＣＰ／ＩＰ解釈部１１を備えている。また、プリンタＰＲＴ２においては、プリンタエンジン５４やプリンタコントローラ５３の他、機能ブロックとして、無手順プロトコル解釈部５２やＴＣＰ／ＩＰ解釈部５１を備えている。このうち、無手順プロトコル解釈部１２，無手順プロトコル解釈部５２は、プリンタＰＲＴ１において、送信先ポート番号として通常の「９１００」で送信された通信データを扱う無手順プロトコル解釈部２２Ｂと同じ機能を有している。また、ＴＣＰ／ＩＰ解釈部１１，５１も、プリンタＰＲＴ１におけるＴＣＰ／ＩＰ解釈部２１と、プリンタエンジン５４やプリンタコントローラ５３も、プリンタＰＲＴ１におけるプリンタエンジン４１やプリンタコントローラ４２と、それぞれ同一の機能や構成を有している。
【００５７】
なお、図１に示すプリンタＰＲＴ３，４については、図３におけるプリンタＰＲＴ２と同様の構成を有している。
【００５８】
Ａ３．通常印刷処理：
本発明の特徴部分である分散印刷処理を説明する前に、通常の印刷処理について簡単に説明する。なお、印刷ジョブを、クライアントＣＬからプリンタＰＲＴ１に送信し、プリンタＰＲＴ１のみで印刷を実行する場合を例として説明する。この場合、印刷ジョブは、図３において、点線で示す経路をたどって転送される。なお、クライアントＣＬにおけるプリンタドライバ（図示せず）において、印刷プロトコルの設定は、無手順プロトコルに設定されているものとする。
【００５９】
ユーザがクライアントＣＬに印刷命令を出すと、クライアントＣＬでは、アプリケーション１３が、印刷ジョブを、無手順プロトコル解釈部１２，ＴＣＰ／ＩＰ解釈部１１を介して、プリンタＰＲＴ１に送信する。このとき、無手順プロトコル解釈部１２は、印刷プロトコルである無手順プロトコルに従って、印刷ジョブを含む通信データを送信し、また、ＴＣＰ／ＩＰ解釈部１１は、その通信データの送信先ＩＰアドレスとして、プリンタＰＲＴ１の「ＩＰ１」を指定すると共に、送信先ポート番号として、無手順プロトコルに通常割り当てられている「９１００」を指定する。
【００６０】
プリンタＰＲＴ１では、ＴＣＰ／ＩＰ解釈部２１が、通信データに含まれる送信先ＩＰアドレス「ＩＰ１」に従って、その通信データを受信し、さらに、その通信データに含まれる送信先ポート番号が「９１００」であるので、「９１００」で送信された通信データを扱う無手順プロトコル解釈部２２Ｂに渡す。無手順プロトコル解釈部２２Ｂは、無手順プロトコルに従って、印刷ジョブを含む通信データを受け取り、印刷ジョブをプリンタコントローラ４２に渡す。プリンタコントローラ４２は、印刷ジョブのデータに含まれるＱＴ値から印刷部数を読み取り、指定されている部数だけ、プリンタエンジン４１に印刷を実行させる。
【００６１】
Ａ４．分散印刷処理：
次に、本発明の特徴部分である分散印刷処理について詳細に説明する。まず、前提として、ユーザにより、プリンタＰＲＴ１の電源が投入されると、プリンタ本体ＰＲＢ及びカスタムネットワークボードＣＮＢが起動して、分散先決定部２３が、プリンタコントローラ４２から、自己のプリンタＰＲＴ１の機種名を取得する。具体的には、分散先決定部２３が、送信先ＩＰアドレスとして、自己のプリンタＰＲＴ１のＩＰアドレス「ＩＰ１」を指定して、ＳＮＭＰ（Simple Network Management Protocol）で機種名を問い合わせることにより、ＣＰＵ２０が、バスを介してプリンタコントローラ４２に機種名を要求し、その応答を受け取ることにより、取得する。
【００６２】
以上の前提を踏まえた上で、印刷ジョブを、クライアントＣＬからプリンタＰＲＴ１に送信し、そのプリンタＰＲＴ１の他、プリンタＰＲＴ２〜ＰＲＴ４で分散印刷を実行し得る場合を例として説明する。
【００６３】
分散印刷を行う際には、ユーザは、クライアントＣＬにおけるプリンタドライバにおいて、印刷プロトコルの設定が、無手順プロトコルに設定されていることを確認した上で、ポート番号の設定を、通常の「９１００」から特定の「１９１００」に変更する。すなわち、本実施例では、ここでのポート番号の設定を切り換えることにより、通常の「９１００」では通常印刷を、特定の「１９１００」では分散印刷を、それぞれ選択することになる。
【００６４】
そこで、ユーザがクライアントＣＬに、印刷部数「１００部」として印刷命令を出すと、クライアントＣＬでは、アプリケーション１３が、印刷部数を示すＱＴ値を「１００部」とした印刷ジョブを、無手順プロトコル解釈部１２，ＴＣＰ／ＩＰ解釈部１１を介して、プリンタＰＲＴ１に送信する。このとき、無手順プロトコル解釈部１２は、印刷プロトコルである無手順プロトコルに従って、印刷ジョブを含む通信データを送信し、また、ＴＣＰ／ＩＰ解釈部１１は、その通信データの送信先ＩＰアドレスとして、プリンタＰＲＴ１の「ＩＰ１」を指定すると共に、送信先ポート番号として、通常の「９１００」ではなく、「１９１００」を指定する。
【００６５】
これにより、クライアントＣＬからプリンタＰＲＴ１に、図１に示すような通信データＤＴ０が送信される。すなわち、通信データＤＴ０には、送信先ＩＰアドレスとして「ＩＰ１」が、送信先ポート番号として「１９１００」が、ＱＴ値（すなわち、印刷部数）として「１００部」が、それぞれ記載されている。
【００６６】
図４はプリンタＰＲＴ１における主要機能ブロックの処理手順を示すフローチャートである。具体的には、分散処理部２５，分散先決定部２３及び部数決定部２４が実行する処理である。
【００６７】
プリンタＰＲＴ１では、ＴＣＰ／ＩＰ解釈部２１が、通信データＤＴ０に含まれる送信先ＩＰアドレス「ＩＰ１」に従って、その通信データを受信し、さらに、その通信データに含まれる送信先ポート番号が「１９１００」であるので、今度は、無手順プロトコル解釈部２２Ｂではなく、「１９１００」で送信された通信データを扱う無手順プロトコル解釈部２２Ａに渡す。
【００６８】
一方、分散処理部２５は、ポート番号「１９１００」に、印刷ジョブが着信するまで待機している（ステップＳ１０２）。無手順プロトコル解釈部２２Ａは、無手順プロトコルに従って、印刷ジョブを含む通信データを受け取ると、その印刷ジョブのデータを、ポート番号「１９１００」で待機している分散処理部２５に渡す。
【００６９】
分散処理部２５は、受信した印刷ジョブデータの先頭から順次受け取って印刷ジョブ格納部３１に格納する（ステップＳ１０４）。
【００７０】
図５は一例として印刷ジョブのデータをエディタで開いて示した説明図である。図５に示すとおり、印刷ジョブデータの前側は、ジョブ制御言語部分となっており、後側は印刷コマンドとなっている。また、ジョブ制御言語部分には、印刷部数情報として、印刷部数を示すＱＴ値が記載されている。図示した例では、"ＱＴ＝２"となっており、ＱＴ値（印刷部数）が「２部」であることを示している。
【００７１】
分散処理部２５は、格納した印刷ジョブデータにＱＴ値が見つかるまで（ステップＳ１０６）、受信した印刷ジョブデータを印刷ジョブ格納部３１に格納し続ける。その後、ＱＴ値が見つかると、分散処理部２５は、印刷ジョブデータの印刷ジョブ格納部３１部への格納を停止し、見つかったＱＴ値から総印刷部数ｍを取得し（ステップＳ１０８）、その総印刷部数ｍが「１部」であるかどうか判定する（ステップＳ１１０）。判定の結果、総印刷部数ｍが「１部」である場合には、ステップＳ１２４の処理に進むが、「２部」以上である場合には、ステップＳ１１２の処理に進む。この場合、ＱＴ値（印刷部数）として、前述したとおり「１００部」が記載されている（"ＱＴ＝１００"）ので、その「１００部」を、分散印刷すべき総印刷部数ｍとして取得することになり、「２部」以上であるので、ステップＳ１１２に進むことになる。
【００７２】
次に、ステップＳ１１２では、分散処理部２５は、印刷ジョブデータの印刷ジョブ格納部３１部への格納を再開し、受信した印刷ジョブデータを印刷ジョブ格納部３１に格納する。そして、分散処理部２５は、受信した印刷ジョブデータが、印刷ジョブ格納部３１に入りきったか否かを判定し（ステップＳ１１４）、入りきった場合には、さらに、送信されてきた印刷ジョブデータの全てを受信したか否かを判定する（ステップＳ１１６）。判定の結果、未だ、印刷ジョブデータの全てを受信していない場合には、ステップＳ１１２の処理に戻り、分散処理部２５は、引き続き、受信した印刷ジョブデータを印刷ジョブ格納部３１に格納し、印刷ジョブデータの全てを受信するまで、ステップＳ１１２からステップＳ１１６までの処理を繰り返す。その後、印刷ジョブデータの全てを受信するまでの間に、受信した印刷ジョブデータが、印刷ジョブ格納部３１に入りきらなかった場合には、後述する第２の分散印刷処理が実行される（ステップＳ１２０）。反対に、印刷ジョブデータの全てを受信して、その印刷ジョブデータの全てが印刷ジョブ格納部３１に入りきった場合には、後述する第１の分散印刷処理が実行される（ステップＳ１１８）。
【００７３】
即ち、本実施例では、図４に示す広義の分散印刷処理は、その中でさらに、狭義の分散印刷処理である第１の分散印刷処理と第２の分散印刷処理に分かれており、それらの処理は、送信された印刷ジョブデータの全てを印刷ジョブ格納部３１に格納したか否かに応じて、選択的に実行される。
【００７４】
図６は第１の分散印刷処理ルーチンの処理手順を示すフローチャートである。この処理ルーチンが開始されると、分散先決定部２３は、まず、共通前処理を実行する（ステップＳ２０２）。この共通前処理は、この第１の分散印刷処理においてだけでなく、後述する第２の分散印刷処理においても、共通に実行される前処理である。
【００７５】
図７は共通前処理の処理手順を示すフローチャートである。この共通前処理では、分散先決定部２３は、まず、分散先指定ファイル格納部３２に、分散先指定ファイルが格納されているか否かを検出する（ステップＳ３０２）。分散先指定ファイルが格納されている場合には、前もって、分散先として使用したいプリンタの候補が指定されていることになる。
【００７６】
図８は分散先指定ファイルの内容を示す説明図である。図８に示すように、分散先指定ファイルには、分散先として使用したいプリンタのＩＰアドレスが列挙して記載されている。このような分散先指定ファイルは、例えば、サービスマンが、プリンタＰＲＴ１を設置して初期設定する際に、そのプリンタＰＲＴ１に設定用コンピュータなどを接続して、インストールすることにより、分散先指定ファイル格納部３２に格納することができる。また、ＬＡＮを介してインストールするようにしてもよい。なお、このような分散先指定ファイルを用いる場合、分散先として自己のプリンタＰＲＴ１も使用したい場合には、自己プリンタＰＲＴ１のＩＰアドレス「ＩＰ１」も、分散先指定ファイルに記載しておく必要がある。
【００７７】
さて、分散先指定ファイル格納部３２に分散先指定ファイルが格納されている場合には、分散先決定部２３は、その分散先指定ファイルを読み出して、記載されているプリンタのＩＰアドレスをリストアップする（ステップＳ３０４）。
【００７８】
反対に、分散先指定ファイルが格納されていない場合には、分散先決定部２３は、ＳＮＭＰなどを利用して、ＬＡＮに対し、ブロードキャストでＬＡＮに接続されている各機器のＩＰアドレスを問い合わせ、応答されたＩＰアドレスをリストアップする（ステップＳ３０６）。
【００７９】
次に、分散先決定部２３は、ＳＮＭＰで、リストアップしたＩＰアドレスの各機器に対し、その機種名を問い合わせ、応答された機種名に基づいて、自己のプリンタＰＲＴ１と同一機種のプリンタを抽出する（ステップＳ３０８）。このように、自己のプリンタＰＲＴ１と同一機種のプリンタを、分散先プリンタの候補として抽出するのは、分散印刷を行う際に、各分散先プリンタにおいて、印刷ジョブのデータ変換などをすることなく、適正な印刷を行わせるためである。この結果、各分散先プリンタでの印刷物の品質、例えば、解像度やフォントなどを統一することができる。カラー印刷や両面印刷指定も統一して実行する。
【００８０】
なお、既述したとおり、分散先決定部２３は、プリンタＰＲＴ１の電源投入時に、プリンタＰＲＴ１の機種名を既に取得しているので、それに基づいて、自己のプリンタＰＲＴ１と同一機種のプリンタを抽出する。
【００８１】
また、分散先指定ファイルで指定されているＩＰアドレスの機器に対しても、機種名の問い合わせを行うのは、次の理由による。すなわち、分散先指定ファイル作成後に、機器の入れ換えなどにより、分散先指定ファイルに記載されていたＩＰアドレスが、自己のプリンタＰＲＴ１と別機種のプリンタに割り振られたり、プリンタ以外の機器に割り振られたりする可能性があるので、自己のプリンタＰＲＴ１と同一機種であるかの確認を行うためである。さらに、分散先指定ファイルで指定されているＩＰアドレスの機器が、実際に電源が投入されていて、ネットワーク経路が到達可能であることの確認も同時に行っている。
【００８２】
さて、以上のようにして、図７に示す共通前処理が終了したら、図６に戻って、部数決定部２４が、次に、図４のステップＳ１０８で取得した総印刷部数ｍを、残存印刷部数ｒとして設定する（ステップＳ２０４）。ここで、残存印刷部数ｒとは、システム全体で、まだ印刷しなければならない残りの印刷部数のことである。
【００８３】
次に、分散先決定部２３は、前述した共通前処理で抽出したプリンタに対し、ＳＮＭＰなどで、動作状態の問い合わせを行い、その応答結果に基づいて、次の３つの条件の全てを満たすプリンタを候補プリンタとして選択する（ステップＳ２０６）。
１）オンライン状態である。
２）印刷ジョブデータを受信中でない。
３）印刷ジョブデータを印刷中でない。
【００８４】
このうち、１）の「オンライン状態である。」という条件を課すことによって、用紙切れやトナー切れ（あるいはインク切れ）、あるいは紙詰まりなど、エラーを発生していて、すぐには印刷できないプリンタを、分散先プリンタの候補から排除することができる。また、２）の「印刷ジョブデータを受信中でない。」とは、対象となるプリンタが、プリンタＰＲＴ１から送信された印刷ジョブデータもちろんのこと、他の機器（コンピュータなど）から送信された印刷ジョブデータも受信している最中でないことを言い、また、３）の「印刷ジョブデータを印刷中でない。」とは、受信した印刷ジョブデータを印刷している最中ではないことを言う。オンライン状態にあるプリンタであっても、印刷ジョブデータを受信中または印刷中のプリンタは、印刷中や、印刷完了時に、紙詰まりや、用紙切れ，トナー切れなどのエラーを発生し得るので、これら２），３）の条件を課すことによって、そのような可能性のあるプリンタを、分散先プリンタの候補から排除することができる。
なお、共通前処理で抽出したプリンタの中に自己プリンタＰＲＴ１が含まれている場合、その自己プリンタＰＲＴ１についても、上記３つの条件の全てを満たせば、候補プリンタとして選択されることになる。
【００８５】
次に、分散先決定部２３は、上記した候補プリンタとして、１台以上のプリンタを選択したか否かを判定し（ステップＳ２０８）、選択されている場合には、後述するタイマ（図示せず）をリセットする（ステップＳ２１０）。そして、部数決定部２４は、選択されている候補プリンタの台数ｎを取得し（ステップＳ２１２）、残存印刷部数ｒが、候補プリンタの台数ｎより多いか否かを判定する（ステップＳ２１４）。残存印刷部数ｒの方が多い場合には、分散先決定部２３は、そのｎ台の候補プリンタ全てを分散先プリンタとして決定する（ステップ２１６）。前述したとおり、図１中に示した例では、分散先プリンタとして、自己のプリンタＰＲＴ１と、他のプリンタＰＲＴ２〜ＰＲＴ４の合計４台のプリンタを決定している。
【００８６】
第１の分散印刷処理では、決定した各分散先プリンタにおいて、それぞれ、１部ずつ分散印刷を行うようにしている。そこで、分散処理部２５は、印刷ジョブ格納部３１に格納している印刷ジョブデータのうち、ＱＴ値のみを「１部」に変更して、その印刷ジョブデータを各分散先プリンタにそれぞれ送信する（ステップＳ２１８）。従って、例えば、図１中に示した例では、印刷ジョブデータに記載されている"ＱＴ＝１００"を"ＱＴ＝１"に変更して、その印刷ジョブデータを４台の分散先プリンタに送信することになる。また、この場合、クライアントＣＬから送信された印刷ジョブデータの全てが印刷ジョブ格納部３１に入りきっているので、その印刷ジョブデータの全てが各分散先プリンタにそれぞれ送信されることになる。
【００８７】
こうして、分散処理部２５は、受信した印刷ジョブを、ＱＴ値のみ「１部」に変更して、無手順プロトコル解釈部２２Ｂ，ＴＣＰ／ＩＰ解釈部２１を介して、各分散先プリンタにそれぞれ送信することになる。このとき、無手順プロトコル解釈部２２Ｂは、印刷プロトコルである無手順プロトコルに従って、その印刷ジョブを含む通信データを送信する。また、ＴＣＰ／ＩＰ解釈部２１は、その通信データの送信先ＩＰアドレスとして、各分散先プリンタのＩＰアドレスをそれぞれ指定すると共に、送信先ポート番号としては、受信した際のポート番号「１９１００」ではなく、無手順プロトコルで通常割り当てるボート番号「９１００」を指定する。
【００８８】
例えば、図１中に示した例では、分散先プリンタとしてプリンタＰＲＴ１〜ＰＲＴ４が決定されているため、各々の分散先プリンタに送信される通信データＤＴ１〜ＤＴ４では、送信先ＩＰアドレス，送信先ポート番号，ＱＴ値は以下のように指定される。
【００８９】
プリンタＰＲＴ１への通信データＤＴ１→「ＩＰ１」，「９１００」，「１部」
プリンタＰＲＴ２への通信データＤＴ２→「ＩＰ２」，「９１００」，「１部」
プリンタＰＲＴ３への通信データＤＴ３→「ＩＰ３」，「９１００」，「１部」
プリンタＰＲＴ２への通信データＤＴ４→「ＩＰ４」，「９１００」，「１部」
【００９０】
分散先プリンタの１つであるプリンタＰＲＴ２では、図３に示すように、ＴＣＰ／ＩＰ解釈部５１が、通信データＤＴ２に含まれる送信先ＩＰアドレス「ＩＰ２」に従って、その通信データＤＴ２を受信し、さらに、その通信データＤＴ２に含まれる送信先ポート番号が「９１００」であるので、無手順プロトコル解釈部２２Ｂに渡す。無手順プロトコル解釈部５２は、無手順プロトコルに従って、印刷ジョブを含む通信データを受け取り、印刷ジョブをプリンタコントローラ５３に渡す。プリンタコントローラ５３は、印刷ジョブのデータに含まれるＱＴ値から印刷部数として「１部」を読み取り、指定されているその部数、即ち、「１部」だけ、プリンタエンジン５４に、印刷ジョブに従った印刷を実行させる。
【００９１】
他の分散先プリンタであるプリンタＰＲＴ３，ＰＲＴ４においても、同様にして、指定された印刷部数「１部」だけ、印刷ジョブに従った印刷が実行される。
【００９２】
また、分散先プリンタである自己のプリンタＰＲＴ１では、ＴＣＰ／ＩＰ解釈部２１が、送信した通信データＤＴ１を、その通信データＤＴ１に含まれる送信先ＩＰアドレス「ＩＰ１」に基づいて受信する。さらに、ＴＣＰ／ＩＰ解釈部２１は、その通信データＤＴ１に含まれる送信先ポート番号が「９１００」であるので、通常印刷の場合と同様に、「９１００」で送信された通信データを扱う無手順プロトコル解釈部２２Ｂに渡す。無手順プロトコル解釈部２２Ｂは、無手順プロトコルに従って、印刷ジョブを含む通信データを受け取り、印刷ジョブをプリンタコントローラ４２に渡す。プリンタコントローラ４２は、印刷ジョブのデータに含まれるＱＴ値から印刷部数として「１部」を読み取り、指定されているその部数「１部」だけ、プリンタエンジン４１に、印刷ジョブに従った印刷を実行させる。
【００９３】
以上のようにして、分散先プリンタであるプリンタＰＲＴ１〜ＰＲＴ４では、それぞれ、「１部」ずつの印刷が実行されることになり、システム全体で、合計「４部」の分散印刷が実行されることになる。すなわち、今回、システム全体で印刷された部数は、ステップＳ２１６で決定された分散先プリンタの台数、すなわち、最終的な候補プリンタの台数ｎと等しくなる。
【００９４】
図６に戻って、次に、部数決定部２４は、現在の残存印刷部数ｒから、今回印刷された部数ｎを減じて、その差を新たな残存印刷部数ｒとして設定する（ステップＳ２２０）。そして、部数決定部２４は、その残存印刷部数ｒが「０部」であるか否かを判定する（ステップＳ２２２）。「０部」でない場合には、ステップＳ２０６に戻って、分散先決定部２３は、共通前処理で抽出したプリンタに対し、再度、動作状態の問い合わせを行い、その応答結果に基づいて、上記条件の全てを満たすプリンタを候補プリンタとして選択する。
【００９５】
ところで、ステップＳ２１６で決定された分散先プリンタは、ステップＳ２１８における印刷ジョブデータの送信からほとんど時間が経っていない場合には、印刷ジョブデータを受信中または印刷中である可能性が高いので、そのようなときに、分散先決定部２３が、ステップＳ２０６において、再度、候補プリンタの選択を行ったとしても、候補プリンタとして１台のプリンタも選択していない可能性がある。
【００９６】
そこで、そのように、分散先決定部２３が、１台のプリンタも選択していない場合には（ステップＳ２０８）、まず、タイマ（図示せず）の計時動作を開始させ（ステップＳ２２６）、その後、例えば、５秒などの一定時間待機する（ステップＳ２２８）。そして、分散先決定部２３は、タイマによる計時開始から、例えば、５分など所定時間経過したか否かを判定し（ステップＳ２３０）、未だその時間を経過していなければ、ステップＳ２０６に戻って、候補プリンタの選択を実行する。こうして、分散先決定部２３は、候補プリンタとして１台以上のプリンタを選択するまで、同様の処理を繰り返す。なお、この間、タイマの計時動作は継続させる（ステップＳ２２６）。このように、所定の期間、上記の処理を繰り返すことにより、その期間中に、受信中や印刷中であったプリンタが印刷を完了して、再度の印刷を実行することが可能となった場合や、または、用紙切れであったプリンタに用紙が補充されて、オンライン状態になったり、電源がオフ状態であったプリンタに電源が投入され、電源オンの状態になったりして、印刷を実行することが可能となった場合には、候補プリンタとしてそれらのプリンタを選択することが可能となる
【００９７】
しかし、タイマによる計時開始から所定時間経過しても、候補プリンタとして１台のプリンタも選択できない場合には、分散先決定部２３は、タイマをリセットした上で（ステップＳ２３２）、自己のプリンタＰＲＴ１を、無条件で分散先プリンタとして決定する（ステップＳ２３４）。
【００９８】
次に、分散処理部２５は、印刷ジョブ格納部３１に格納している印刷ジョブデータのうち、ＱＴ値を、残存印刷部数である「ｒ部」に変更して、その印刷ジョブデータを分散先プリンタである自己プリンタＰＲＴ１に送信する（ステップＳ２３６）。
【００９９】
こうして、分散処理部２５は、受信した印刷ジョブを、ＱＴ値のみを「ｒ部」に変更して、無手順プロトコル解釈部２２Ｂ，ＴＣＰ／ＩＰ解釈部２１を介して、分散先プリンタである自己プリンタＰＲＴ１に送信することになる。このとき、無手順プロトコル解釈部２２Ｂは、印刷プロトコルである無手順プロトコルに従って、その印刷ジョブを含む通信データを送信する。また、ＴＣＰ／ＩＰ解釈部２１は、その通信データの送信先ＩＰアドレスとして、自己プリンタＰＲＴ１のＩＰアドレス「ＩＰ１」を指定すると共に、送信先ポート番号としては、無手順プロトコルで通常割り当てるボート番号「９１００」を指定する。
【０１００】
また、分散先プリンタである自己のプリンタＰＲＴ１では、ＴＣＰ／ＩＰ解釈部２１が、送信した通信データＤＴ１を、その通信データＤＴ１に含まれる送信先ＩＰアドレス「ＩＰ１」に基づいて受信する。さらに、ＴＣＰ／ＩＰ解釈部２１は、その通信データＤＴ１に含まれる送信先ポート番号が「９１００」であるので、通常印刷の場合と同様に、「９１００」で送信された通信データを扱う無手順プロトコル解釈部２２Ｂに渡す。無手順プロトコル解釈部２２Ｂは、無手順プロトコルに従って、印刷ジョブを含む通信データを受け取り、印刷ジョブをプリンタコントローラ４２に渡す。プリンタコントローラ４２は、印刷ジョブのデータに含まれるＱＴ値から印刷部数として「ｒ部」を読み取り、指定されているその部数「ｒ部」だけ、プリンタエンジン４１に、印刷ジョブに従った印刷を実行させる。
【０１０１】
以上のようにして、所定時間中に候補プリンタとして１台のプリンタも選択されない場合には、分散先プリンタとして自己プリンタＰＲＴ１を決定し、その自己プリンタＰＲＴにおいて、残っている全ての印刷部数（即ち、残存印刷部数ｒ）分の、印刷を実行して、ＣＰＵ２０は、図６に示す第１の分散印刷処理ルーチンを終了する。
【０１０２】
一方、ステップＳ２０６からステップＳ２２２までの処理が繰り返されて、システム全体で印刷された累積の部数が、総印刷部数ｍに近づくと、残存印刷部数ｒも少なくなり、ステップＳ２１４において、ついには、残存印刷部数ｒが、候補プリンタの台数ｎより少なくなる場合がある。その場合には、全ての候補プリンタを分散先プリンタとして決定する必要はなく、残存印刷部数ｒ分の台数だけ、分散先プリンタを決定すればよいので、分散先決定部２３は、その残存印刷部数ｒを候補プリンタの台数ｎとして設定し（ステップＳ２２４）、その残存印刷部数ｒ分の台数に、候補プリンタを絞り込む。その上で、分散先決定部２３は、新たに設定したｎ（＝ｒ）台の候補プリンタを分散先プリンタとして決定する（ステップ２１６）。
【０１０３】
そして、分散処理部２５は、前述したとおり、印刷ジョブ格納部３１に格納している印刷ジョブデータのうち、ＱＴ値のみを「１部」に変更して、その印刷ジョブデータを各分散先プリンタにそれぞれ送信する（ステップＳ２１８）。そして、部数決定部２４も、前述したとおり、現在の残存印刷部数ｒから、今回印刷された部数ｎを減じて、その差を新たな残存印刷部数ｒとして設定し（ステップＳ２２０）、その残存印刷部数ｒが「０部」であるか否かを判定する（ステップＳ２２２）。しかし、上記の如く、今回印刷された部数ｎは、残存印刷部数ｒと等しいので（ｎ＝ｒ）、残存印刷部数ｒから部数ｎを減じて得られる差は「０」となって、新たに設定される残存印刷部数ｒは「０部」となるため、部数決定部２４は、残存印刷部数ｒが「０部」であると判定する。
【０１０４】
こうして、システム全体において、各分散先プリンタで印刷された累積の印刷部数は、「ｍ部」となり、総印刷部数ｍを全て印刷したことになるので、ＣＰＵ２０は、図６に示す第１の分散印刷処理ルーチンを終了する。
【０１０５】
以上のようにして、第１の分散印刷処理ルーチンを終了すると、ＣＰＵ２０は、図４の処理に戻り、図４の一連の処理も終了する。
【０１０６】
図９は第２の分散印刷処理ルーチンの処理手順を示すフローチャートである。前述したとおり、クライアントＣＬから送信された印刷ジョブデータの全てを受信するまでの間に、受信した印刷ジョブデータが、印刷ジョブ格納部３１に入りきらなかった場合には、第２の分散印刷処理が実行される（図１のステップＳ１２０）。そこで、図９に示す処理ルーチンが開始されると、分散先決定部２３は、第１の分散印刷処理と同様に、まず、共通前処理を実行する（ステップＳ２０２）。共通前処理については、図７で述べた内容と同じであるので、その説明は省略する。
【０１０７】
次に、分散先決定部２３は、共通前処理で抽出したプリンタに対し、ＳＮＭＰなどで、動作状態の問い合わせを行い、その応答結果に基づいて、オンライン状態にあるプリンタを候補プリンタとして選択する（ステップＳ４０２）。これにより、用紙切れなど、エラーを起こしていて、すぐには印刷できないプリンタを、分散先プリンタの候補から排除することができる。
なお、共通前処理で抽出したプリンタの中に自己プリンタＰＲＴ１が含まれている場合、その自己プリンタＰＲＴ１についても、オンライン状態であれば、候補プリンタとして選択されることになる。
【０１０８】
次に、分散先決定部２３は、上記した候補プリンタとして、１台以上のプリンタを選択したか否かを判定し（ステップＳ４０４）、未だ１台のプリンタも選択していない場合には、自己のプリンタＰＲＴ１を、無条件で候補プリンタとして選択する（ステップＳ４１４）。
【０１０９】
こうして、分散先決定部２３は、以上のようにして選択したプリンタを、分散先プリンタとして決定する（ステップＳ４１６）。前述したとおり、図１中に示した例では、分散先プリンタとして、自己のプリンタＰＲＴ１と、他のプリンタＰＲＴ２〜ＰＲＴ４の合計４台のプリンタを決定している。
【０１１０】
第２の分散印刷処理では、決定した各分散先プリンタにおいて、それぞれ、割り当てた分散部数だけ、分散印刷を行うようにしている。そこで、部数決定部２４は、分散先プリンタの台数ｓと、ステップＳ１０８で取得した総印刷部数ｍとに基づいて、各分散先プリンタに割り当てるべき分散部数を決定する。本実施例では、各分散先プリンタに対し、できる限り均等に割り当てられるように、かつ、その総計が総印刷部数ｍと等しくなるように、各々の分散部数を決定している。
【０１１１】
従って、前述したとおり、図１中に示した例では、分散先プリンタの台数が４台で、総印刷部数は「１００部」であるので、各分散先プリンタに割り当てるべき分散部数を、各々、「２５部」ずつと決定することになる。
【０１１２】
但し、分散先プリンタの台数や総印刷部数の値によっては、当然に、各分散先プリンタで、分散部数が均等にならない場合も生じる。従って、そのことを踏まえた上で、具体的には、次のようにして分散部数の決定を行っている。
【０１１３】
すなわち、分散先プリンタの台数をｍ台、総印刷部数をｍ部として、ｓ台の分散先プリンタのうち、ｘ番目のプリンタに割り当てるべき分散部数をａxとすると、その分散部数ａxは式（１）に従って決定する。
【０１１４】
【数１】
2005215925.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プリンタなど、ＱＴ値を用いて印刷部数の指定を行うことが不可能なプリンタに対しても十分対応することができる。
【図面の簡単な説明】
【０１７５】
【図１】本発明の第１の実施例としてのプリンタＰＲＴ１を備える印刷システムの構成を示す説明図である。
【図２】印刷ジョブを含む通信データの構成を概念的に示す説明図である。
【図３】図１におけるプリンタＰＲＴ１の構成を主として示す説明図である。
【図４】プリンタＰＲＴ１における主要機能ブロックの処理手順を示すフローチャートである。
【図５】印刷ジョブのデータをエディタで開いて示した説明図である。
【図６】第１の分散印刷処理ルーチンの処理手順を示すフローチャートである。
【図７】共通前処理の処理手順を示すフローチャートである。
【図８】分散先指定ファイルの内容を示す説明図である。
【図９】第２の分散印刷処理ルーチンの処理手順を示すフローチャートである。
【図１０】本発明の第２の実施例としてのプリンタＰＲＴ１の構成を主として示す説明図である。
【符号の説明】
【０１７６】
１１...ＴＣＰ／ＩＰ解釈部
１２...無手順プロトコル解釈部
１３...アプリケーション
１４...ＬＰＲ解釈部
２０...ＣＰＵ
２１...ＴＣＰ／ＩＰ解釈部
２２Ａ，２２Ｂ...無手順プロトコル解釈部
２３...分散先決定部
２４...部数決定部
２５...分散処理部
２６...ＬＰＲ解釈部
３０...メモリ
３１...印刷ジョブ格納部
３２...分散先指定ファイル格納部
４１...プリンタエンジン
４２...プリンタコントローラ
５１...ＴＣＰ／ＩＰ解釈部
５２...無手順プロトコル解釈部
５３...プリンタコントローラ
５４...プリンタエンジン
ＣＬ...クライアント
ＣＮＢ...カスタムネットワークボード
ＰＲＢ...プリンタ本体
ＰＲＴ１〜４...プリンタ
【図１】
2005215925.tif 000004
【図２】
2005215925.tif 000005
【図３】
2005215925.tif 000006
【図４】
2005215925.tif 000007
【図５】
2005215925.tif 000008
【図６】
2005215925.tif 000009
【図７】
2005215925.tif 000010
【図８】
2005215925.tif 000011
【図９】
2005215925.tif 000012
【図１０】
2005215925.tif 000013