(57)【要約】【課題】印刷装置において迅速かつ正確に印刷ジョブを把握する。【解決手段】印刷装置は、ＰＤＬの種類を印刷データの先頭部分から判断して（Ｓ１３０１）、ホストコンピュータとのインターフェースから印刷データを獲得し（Ｓ１３０２）、セッションが完了したか、あるいは。一定時間データを受信できなかったか、あるいは、ＰＤＬの終端を見つけた場合には、ＰＤＬの終端が確定する。一方、いずれにも該当しない場合には、獲得した印刷データを受信バッファに格納する。その際、ＰＤＬの終端の直後のデータであれば、ジョブ識別子が新たに付されて受信バッファ格納される印刷データは受信バッファと対応付けられて管理される（Ｓ１３０７）。【選択図】図１１
2004001408.tif 000002
【特許請求の範囲】
【請求項１】
印刷データを受信する受信手段と、
受信した印刷データを格納する受信バッファと、
前記受信バッファの前段にあって、前記受信手段により受信した印刷データについて、その終端位置を判定しつつ前記受信バッファに格納し、終端位置であると判定された場合、その位置を印刷ジョブ間の境界として、印刷ジョブごとに対応づけられた固有の識別子を記録する印刷ジョブ検出手段と
を備えることを特徴とする印刷制御装置。
【請求項２】
前記印刷ジョブ検出手段は、受信した印刷データがページ記述言語で記述されている場合に、引数部を飛び越して印刷データに含まれる終端命令を検索し、該終端命令の位置を印刷ジョブの終端位置と判定することを特徴とする請求項１に記載の印刷制御装置。
【請求項３】
前記印刷ジョブ検出手段は、受信した印刷データがページ記述言語で記述されている場合に、印刷データに含まれる明確な終端命令を検索し、該明確な終端命令の位置を印刷ジョブの終端位置と判定することを特徴とする請求項１に記載の印刷制御装置。
【請求項４】
前記印刷ジョブ検出手段は、受信した印刷データがページ記述言語で記述されている場合に、当該ページ記述言語が明確な終端命令を含まない場合には、印刷データに含まれる終端命令を引数部を飛び越して検索し、当該ページ記述言語が明確な終端命令を含む場合には、印刷データに含まれる明確な終端命令を検索し、検索された終端命令の位置を印刷ジョブの終端位置と判定することを特徴とする請求項１に記載の印刷制御装置。
【請求項５】
前記受信手段は、さらに、印刷ジョブとセッションとを関連づけた通信手順により印刷データを受信し、前記印刷ジョブ検出手段は、前記通信手順におけるセッションの境界を印刷ジョブの終端位置と判定し、判定できない場合に、印刷データに含まれる終端命令を検索することを特徴とする請求項２乃至４のいずれか１項に記載の印刷制御装置。
【請求項６】
前記印刷ジョブ検出手段は、前記受信手段による印刷データの受信の間隔が一定時間あいた場合に、その位置を印刷ジョブの境界とし、一定時間あかない場合に、印刷データに含まれる終端命令を検索することを特徴とする請求項２乃至４のいずれか１項に記載の印刷制御装置。
【請求項７】
印刷ジョブの識別子と共に印刷ジョブに対する操作命令を受信した場合、前記識別子に対応する印刷ジョブに対して、前記操作命令により特定される操作を施すことを特徴とする請求項１又は２に記載の印刷制御装置。
【請求項８】
コンピュータを、
印刷データを受信する受信手段と、
受信した印刷データを格納する受信バッファと、
前記受信バッファの前段にあって、前記受信手段により受信した印刷データについて、その終端位置を判定しつつ前記受信バッファに格納し、終端位置であると判定された場合、その位置を印刷ジョブ間の境界として、印刷ジョブごとに対応づけて固有の識別子を記録する印刷ジョブ検知手段と
して機能させるためのコンピュータプログラム。
【請求項９】
印刷データを受信する受信工程と、
前記受信工程により受信した印刷データについて、その終端位置を判定しつつ受信バッファに格納し、終端位置であると判定された場合、その位置を印刷ジョブ間の境界として、印刷ジョブごとに対応づけて固有の識別子を記録する印刷ジョブ検知工程と
を備えることを特徴とする印刷制御方法。
【請求項１０】
ヘッダが付加された印刷データから構成される印刷ジョブと、前記ヘッダが付加されていない印刷データから構成される印刷ジョブとを処理可能な印刷制御装置であって、
データを受信する受信手段と、
ジョブの開始を示す前記ヘッダに応じて、印刷ジョブを識別するための識別子を発行し、前記受信手段により受信した前記ヘッダが付加されていない印刷データを解析して印刷データの終端位置を検索し、印刷データの終端位置に応じて識別子を発行する印刷ジョブ検出手段と
を備えることを特徴とする印刷制御装置。
【請求項１１】
前記印刷ジョブ検出手段は、受信した印刷データがページ記述言語で記述されている場合に、引数部を飛び越して終端命令を検索し、検索によって見つかった終端命令の位置を印刷ジョブの終端位置と判定することを特徴とする請求項１０に記載の印刷制御装置。
【請求項１２】
前記印刷ジョブ検出手段は、受信した印刷データがページ記述言語で記述されている場合に、印刷データに含まれる明確な終端命令を検索し、検索によって見つかった明確な終端命令の位置を印刷ジョブの終端位置と判定することを特徴とする請求項１０に記載の印刷制御装置。
【請求項１３】
受信した印刷データを格納する受信バッファを有し、
前記印刷ジョブ検出手段は、印刷データの終端位置を検索しつつ印刷データを前記受信バッファに格納することを特徴とする請求項１０乃至１２のいずれかに記載の印刷制御装置。
【請求項１４】
前記印刷ジョブ検出手段は、印刷データを示す前記ヘッダに応じて、印刷データを前記受信バッファに格納することを特徴とする請求項１３に記載の印刷制御装置。
【請求項１５】
ヘッダが付加された印刷データから構成される印刷ジョブと、前記ヘッダが付加されていない印刷データから構成される印刷ジョブとを処理するためのコンピュータプログラムであって、コンピュータを、
ジョブの開始を示す前記ヘッダに応じて、印刷ジョブを識別するための識別子を発行し、受信した前記ヘッダが付加されていない印刷データを解析して印刷データの終端位置を検索し、印刷データの終端位置に応じて識別子を発行する印刷ジョブ検知手段と
して機能させるためのコンピュータプログラム。
【請求項１６】
ヘッダが付加された印刷データから構成される印刷ジョブと、前記ヘッダが付加されていない印刷データから構成される印刷ジョブとを処理するための印刷制御方法であって、
データを受信する受信工程と、
ジョブの開始を示す前記ヘッダに応じて、印刷ジョブを識別するための識別子を発行する第１発行工程と、
前記受信工程により受信した前記ヘッダが付加されていない印刷データを解析して印刷データ終端位置を検索する検索工程と、
印刷データの終端位置に応じて識別子を発行する第２発行工程と
を備えることを特徴とする印刷制御方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、例えばホストコンピュータにより印刷データを生成して印刷装置に送信し、印刷を行うための印刷システムに関し、また、そのシステムにおける印刷制御装置及び印刷制御方法に関する。
【０００２】
【従来の技術】
従来、この種の印刷システムにおいては、印刷データをただ印刷するだけではなく、一連の印刷データの要求単位（以下印刷ジョブと呼ぶ）の状態を確認し、ユーザの要求に従って、印刷取り消し操作、停止および復帰操作、割込み操作など印刷ジョブに対する操作（これらをまとめてジョブ操作と呼ぶことにする）を可能とすることによって、高度な操作環境を提供し、利用者の便宜に寄与するような印刷システムが多数提案されている。
【０００３】
これらの操作に関してはＩＳＯ−１０１７５（Ｄｏｃｕｍｅｎｔ　Ｐｒｉｎｔｉｎｇ　Ａｐｐｌｉｃａｔｉｏｎ）において抽象概念としては提案されている。
【０００４】
印刷取り消し操作とは、ユーザが識別子で指定したジョブだけを取り消して他のジョブの印刷を継続するための操作である。停止および復帰操作とは、ユーザが行う停止操作によって識別子で指定したジョブの印刷処理を停止し、他のジョブを先行して印刷せしめ、ユーザが行う復帰操作によって、前記停止したジョブの再開を指示するための操作をいう。割り込み操作とは、識別子で指定したジョブを最優先で印刷を行うために、先行しているジョブを停止状態にし、前記指定したジョブの印刷後に先行ジョブを復帰させるための操作である。
【０００５】
これらの操作に必要な前提条件として、予めジョブの始まりと終わりを明確に認識して、ジョブに対して固有の識別子を発行することがある。なぜならすべての操作を識別子を指定して行うからである。
【０００６】
ここで識別子はいつ割り当てられるか、ということが重要になってくる。例えば印刷装置における処理の途中、例えばページ記述言語（以下ＰＤＬと略す）解釈部で識別子が割り当てられるとした場合、印刷ジョブの受信及び受信バッファへの格納はＰＤＬ解釈部の前段にあたるために、受信バッファに格納されている印刷ジョブにはまだ識別子が割り当てられていない。そのため、ジョブ操作の対象となる印刷ジョブは、ＰＤＬ解釈部により識別子が割りあてられた印刷ジョブに限定され、ジョブ操作のタイミングも限定されてしまう。なお、或るものの「前段」とは、本明細書においてはそのものの前に在るものを意味している。「後段」も同様である。
【０００７】
一方、ホストコンピュータで印刷ジョブにジョブ識別子を割り振ることもできる。しかし、ホストコンピュータで割りあてられたジョブの識別子は印刷装置にとって一意のものではなく、実際に識別子を与えられても印刷装置は前記ジョブ操作を行うことができない。そこで、前記ジョブ操作の対象となる印刷ジョブを特定するための識別子としては、印刷装置が生成するものを使用することになる。ここで問題になるのは、印刷装置はいつどのように識別子を割り当てるか、ということである。
【０００８】
ジョブの境界についての判断を明確化するためには、データそのものを分析（パース）して、ジョブの開始位置、終了位置を確実に認識することが必要である。最も簡単なのはジョブのＰＤＬの解釈時に識別子を割り当てることである。この方法はジョブの開始、終了を認識するという点においては確実である。しかし、一般的にＰＤＬの解釈は描画データを生成するなど、印刷装置にとってはもっとも負荷が高いところであるため、この識別子の割り当て処理を、印刷装置において受信バッファに格納する処理の前段に配置すると局所的に受信効率が低下し、印刷処理自体のパフォーマンスを大きく損なう可能性がある。なお通常は、ＰＤＬ解釈の前段に比較的容量の大きな受信バッファを配置することが必要である。受信効率を低下させないようにするためである。
【０００９】
図１は従来のＰＤＬ型の印刷装置におけるコントローラの動作を説明する概念図である。図１において、データ受信部１０１はホストから所定の通信媒体を介してデータの受信を行う。受信バッファ１０２は受信部から送られてきたデータを一時的に蓄積する。描画生成部１０３は受信バッファ１０２からＰＤＬデータを取り出して翻訳処理を行い、印刷可能な中間データに変換する。中間データバッファ１０４は描画生成部１０３によって生成された中間データを格納する。描画部１０５は中間データをリアルタイムに描画して所定のプリンタエンジンに送信する。コントローラはこれらの要素から構成される。受信バッファ１０２は、ＲＡＭによって構成された比較的小さいバッファ容量のものと、ハードディスク（以下、ＨＤＤと略す）のような二次記憶装置を使用した大規模バッファ容量のものとがある。前記のようにＰＤＬ解釈時にジョブに識別子を割り当てると想定した場合、図１においてジョブ操作可能と書かれた範囲に含まれる印刷ジョブには識別子が割り当てられている。そのため、それら印刷ジョブに対する操作が可能である。しかし、その前段の受信バッファ１０２に収められた印刷ジョブについては、まだ識別子が割り当てられてないためにジョブ操作を行うことができない。受信バッファ１０２がＨＤＤで構成される場合を想定すると、数多くの印刷ジョブが受信バッファ１０２に貯まり、その結果ほとんどの印刷ジョブに対しては、ユーザはジョブ操作ができない、ということになる。
【００１０】
この問題に対応するために、特開２０００−１３５８２０号公報において、ジョブパケットを用いたパケット方式による印刷方法の提案が記載されている。これによれば、印刷ジョブを通常のＰＤＬで記述してそれをジョブパケットに分割して送信し、このジョブパケットを受信バッファの前段のプリプロセッサで処理させることによって、受信バッファの前段でジョブの開始位置、終了位置を把握させるものである。ジョブパケットはヘッダとボディから構成されており、ヘッダにはパケットの役割とパケットのサイズが記述され、パケットの役割の中にはジョブ開始、ジョブ終了に対応したコードが記述される。
【００１１】
ジョブパケットを解釈するプリプロセッサはジョブパケットのヘッダを解釈してジョブパケットの役割を検知し、実際のデータは後段に渡すだけなので、ほとんどの受信データを解釈しなくて済む。ＰＤＬのパーシングに比べて極めて軽い処理でパケットを判断して印刷ジョブを区切り、各印刷ジョブにジョブ識別子（オブジェクトＩＤとも呼ぶ）を付与することが可能である。これによって、印刷ジョブを早期に区別し、なおかつ、パフォーマンスを落とさないことが可能となっている。そして、印刷装置において付与したオブジェクトＩＤを用いて印刷ジョブを特定し、ジョブに対する操作を行うことができる。
【００１２】
図２はジョブパケット型の印刷装置におけるコントローラの動作を説明する概念図である。図２は図１に加えて、プリプロセッサ２０６を追加しただけである。プリプロセッサ２０６はパケット化された印刷ジョブを受け取り、パケットの役割がジョブの開始であった場合、一意なジョブ識別子を割り振って後段にＰＤＬデータを渡す。
【００１３】
【発明の解決しようとする課題】
上記のようにパケット方式による印刷データの転送方法に従えば、受信バッファへの格納以前に印刷ジョブを区別することによって高度な印刷ジョブ操作が可能となり、また印刷ジョブ受信パフォーマンスを落とさない、という２点について両立が可能となっている。
【００１４】
しかしその一方、パケット方式をサポートしない従来方式との互換のためや他言語のエミュレーションのために、印刷装置はパケット化によらない従来のＰＤＬ転送方式もサポートする必要がある。しかしこの場合、前述したようにＰＤＬ解釈を行うまでは印刷ジョブの区切りを認識できないため、高度な印刷ジョブ操作に制限がかかってしまう。
【００１５】
本発明は上記従来例に鑑みて成されたもので、ページ記述言語で記述された印刷ジョブを正確にジョブ単位に区切り、各印刷ジョブをジョブ毎に管理することができる印刷制御装置及び印刷制御方法及び印刷システムを提供することを目的とする。また、パケット方式での印刷ジョブに対してはより早い段階でジョブ識別子を発行できるようにすると共に、パケット方式でない印刷ジョブに対してもできるだけ早い段階でジョブ識別子を発行できるようにすることを目的とする。
【００１６】
【課題を解決するための手段】
上記目的を達成するために本発明は次のような構成からなる。
【００１７】
印刷データを受信する受信手段と、
受信した印刷データを格納する受信バッファと、
前記受信バッファの前段にあって、前記受信手段により受信した印刷データについて、その終端位置を判定しつつ前記受信バッファに格納し、終端位置であると判定された場合、その位置を印刷ジョブ間の境界として、印刷ジョブごとに対応づけられた固有の識別子を記録する印刷ジョブ検出手段と
を備える。
【００１８】
この構成により、受信した印刷データを印刷ジョブ単位に区切り、印刷ジョブ毎に管理できる。
【００１９】
更に好ましくは、前記印刷ジョブ検出手段は、受信した印刷データがページ記述言語で記述されている場合に、引数部を飛び越して印刷データに含まれる終端命令を検索し、該終端命令の位置を印刷ジョブの終端位置と判定する。
【００２０】
更に好ましくは、前記印刷ジョブ検出手段は、受信した印刷データがページ記述言語で記述されている場合に、印刷データに含まれる明確な終端命令を検索し、該明確な終端命令の位置を印刷ジョブの終端位置と判定する。
【００２１】
更に好ましくは、前記印刷ジョブ検出手段は、受信した印刷データがページ記述言語で記述されている場合に、当該ページ記述言語が明確な終端命令を含まない場合には、印刷データに含まれる終端命令を引数部を飛び越して検索し、当該ページ記述言語が明確な終端命令を含む場合には、印刷データに含まれる明確な終端命令を検索し、検索された終端命令の位置を印刷ジョブの終端位置と判定する。
【００２２】
更に好ましくは、前記受信手段は、さらに、印刷ジョブとセッションとを関連づけた通信手順により印刷データを受信し、前記印刷ジョブ検出手段は、前記通信手順におけるセッションの境界を印刷ジョブの終端位置と判定し、判定できない場合に、印刷データに含まれる終端命令を検索する。
【００２３】
更に好ましくは、前記印刷ジョブ検出手段は、前記受信手段による印刷データの受信の間隔が一定時間あいた場合に、その位置を印刷ジョブの境界とし、一定時間あかない場合に、印刷データに含まれる終端命令を検索する。
【００２４】
更に好ましくは、印刷ジョブの識別子と共に印刷ジョブに対する操作命令を受信した場合、前記識別子に対応する印刷ジョブに対して、前記操作命令により特定される操作を施す。
【００２５】
あるいは、本発明は、コンピュータを、
印刷データを受信する受信手段と、
受信した印刷データを格納する受信バッファと、
前記受信バッファの前段にあって、前記受信手段により受信した印刷データについて、その終端位置を判定しつつ前記受信バッファに格納し、終端位置であると判定された場合、その位置を印刷ジョブ間の境界として、印刷ジョブごとに対応づけて固有の識別子を記録する印刷ジョブ検知手段と
して機能させるためのコンピュータプログラムにもある。
【００２６】
あるいは本発明は、印刷データを受信する受信工程と、
前記受信工程により受信した印刷データについて、その終端位置を判定しつつ受信バッファに格納し、終端位置であると判定された場合、その位置を印刷ジョブ間の境界として、印刷ジョブごとに対応づけて固有の識別子を記録する印刷ジョブ検知工程と
を備えることを特徴とする印刷制御方法にもある。
【００２７】
あるいは本発明は、ヘッダが付加された印刷データから構成される印刷ジョブと、前記ヘッダが付加されていない印刷データから構成される印刷ジョブとを処理可能な印刷制御装置であって、
データを受信する受信手段と、
ジョブの開始を示す前記ヘッダに応じて、印刷ジョブを識別するための識別子を発行し、前記受信手段により受信した前記ヘッダが付加されていない印刷データを解析して印刷データの終端位置を検索し、印刷データの終端位置に応じて識別子を発行する印刷ジョブ検出手段と
を備えることを特徴とする印刷制御装置にもある。
【００２８】
更に好ましくは、前記印刷ジョブ検出手段は、受信した印刷データがページ記述言語で記述されている場合に、引数部を飛び越して終端命令を検索し、検索によって見つかった終端命令の位置を印刷ジョブの終端位置と判定する。
【００２９】
更に好ましくは、前記印刷ジョブ検出手段は、受信した印刷データがページ記述言語で記述されている場合に、印刷データに含まれる明確な終端命令を検索し、検索によって見つかった明確な終端命令の位置を印刷ジョブの終端位置と判定する。
【００３０】
更に好ましくは、受信した印刷データを格納する受信バッファを有し、
前記印刷ジョブ検出手段は、印刷データの終端位置を検索しつつ印刷データを前記受信バッファに格納する。
【００３１】
更に好ましくは、前記印刷ジョブ検出手段は、印刷データを示す前記ヘッダに応じて、印刷データを前記受信バッファに格納する。
【００３２】
あるいは本発明は、ヘッダが付加された印刷データから構成される印刷ジョブと、前記ヘッダが付加されていない印刷データから構成される印刷ジョブとを処理するためのコンピュータプログラムであって、コンピュータを、
ジョブの開始を示す前記ヘッダに応じて、印刷ジョブを識別するための識別子を発行し、受信した前記ヘッダが付加されていない印刷データを解析して印刷データの終端位置を検索し、印刷データの終端位置に応じて識別子を発行する印刷ジョブ検知手段と
して機能させるためのコンピュータプログラムにもある。
【００３３】
あるいは本発明は、ヘッダが付加された印刷データから構成される印刷ジョブと、前記ヘッダが付加されていない印刷データから構成される印刷ジョブとを処理するための印刷制御方法であって、
データを受信する受信工程と、
ジョブの開始を示す前記ヘッダに応じて、印刷ジョブを識別するための識別子を発行する第１発行工程と、
前記受信工程により受信した前記ヘッダが付加されていない印刷データを解析して印刷データ終端位置を検索する検索工程と、
印刷データの終端位置に応じて識別子を発行する第２発行工程と
を備えることを特徴とする印刷制御方法にもある。
【００３４】
【発明の実施の形態】
本発明の実施形態を図面を参照して説明する。
【００３５】
［第１実施形態］
＜印刷システムの構成（図３）＞
図３は本発明第１の実施形態の印刷システムの構成を示す模式図である。
【００３６】
図３において、印刷システムは、ホストコンピュータ３００，所定の通信媒体３１０，印刷装置３２０から構成される。なお、通信媒体３１０はＩＥＥＥ１２８４インターフェイスやＵＳＢのようなローカルインターフェイスでも、イーサネット（登録商標）のようなネットワークインターフェイスでも構わない。
【００３７】
印刷装置３２０はさらに、通信媒体３１０と実際に通信して印刷データを受信するインターフェイス３２１、受信した印刷データを検査してパケット化されたデータか、ＰＤＬで送られたデータかを判断するパケット判断部３２２、パケット化されたデータのパケットを解釈して、ＰＤＬ部を受信バッファに送るパケット解釈部３２３、ＰＤＬデータを一時的に蓄積しておく受信バッファ３２４、パケット化されないＰＤＬデータを検索して、ＰＤＬ名を確定するＰＤＬ確定部３２６、ＰＤＬデータの終端位置を検知するＰＤＬ終端確定部３２７、ＰＤＬの解釈を行って、描画データを生成するトランスレータ部３２８、描画データを一時的に蓄えておく中間バッファ３２９、中間バッファから描画データを取り出して描画を行い、エンジンに転送する描画部３２５、既知の印刷手段により描画結果を物理用紙に印刷を行うエンジン部３３０から構成される。エンジン部３３０は、例えば電子写真方式のエンジンであっても、インクジェット方式のエンジンであっても良い。
【００３８】
ホストコンピュータ３００はドライバと呼ばれる特定の印刷データを生成するソフトウェアにより、ユーザがグラフィカルユーザインターフェース（ＧＵＩ）で生成した所望の画像から印刷データを生成して、印刷装置３２０に送信する。このとき、印刷データとして、ＰＤＬをパケット化されたデータを生成する場合と、パケット化されないＰＤＬデータを生成する場合がある。
【００３９】
印刷データは通信媒体３１０を介して印刷装置３２０に送信される。インターフェイス３２１によって印刷データが受信されると、パケット判断部３２２に渡され、印刷データがパケット形式なのかどうか判断される。
【００４０】
図１２は、図３の印刷システムのハードウエア構成を示す図である。図１２の構成において、印刷装置３２０のＣＰＵ１２によりプログラムを実行することで、図３の印刷装置における各構成を実現すると共に、後述する図６及び図１１の手順を実現している。
【００４１】
図１２において、ホストコンピュータ３００は、ＲＯＭ３のプログラム用ＲＯＭに記憶された文書処理プログラム等に基づいて図形、イメージ、文字、表（表計算等を含む）等が混在した文書処理を実行するＣＰＵ１を備え、システムバス４に接続される各デバイスをＣＰＵ１が統括的に制御する。ＲＡＭ２は、ＣＰＵ１の主メモリ、ワークエリア等として機能する。キーボードコントローラ（ＫＢＣ）５は、キーボード９や不図示のポインティングデバイスからのキー入力を制御する。ＣＲＴコントローラ（ＣＲＴＣ）６は、ＣＲＴディスプレイ１０の表示を制御する。ディスクコントローラ（ＤＫＣ）７は、ブートプログラム、種々のアプリケーション、フォントデータ、ユーザファイル、編集ファイル等を記憶するハードディスク（ＨＤ）、フロッピー（登録商標）ディスク（ＦＤ）等の外部メモリ１１とのアクセスを制御する。プリンタコントローラ（ＰＲＴＣ）８は、所定の双方向インターフェース（双方向Ｉ／Ｆ）３１０を介して印刷装置３２０に接続されて、印刷装置３２０との通信制御処理を実行する。
【００４２】
印刷装置３２０において、プリンタＣＰＵ１２は、ＲＯＭ１３のプログラム用ＲＯＭに記憶された制御プログラム等に記憶された制御プログラム等に基づいてシステムバス１５に接続される各種のデバイスとのアクセスを統括的に制御し、印刷部Ｉ／Ｆ１６を介して接続される印刷部（プリンタエンジン）１７に出力情報としての画像信号を出力する。ＣＰＵ１２は双方向Ｉ／Ｆ３１０を介してホストコンピュータとの通信処理が可能となっており、印刷装置３２０内の情報等をホストコンピュータ３００に通知可能に構成されている。ＲＡＭ１９はＣＰＵ２１の主メモリ、ワークエリア等として機能するＲＡＭである。入力部１８はホストコンピュータ３０００と双方向インターフェース２１を介して印刷状態情報などのステータス情報などの交信を制御し、内部の情報等をホストコンピュータ３００に通知可能に構成されている。メモリコントローラ（ＭＣ）２０は、ブートプログラム、種々のアプリケーション、フォントデータ、ユーザファイル、編集ファイル等を記憶するハードディスク（ＨＤ）、フロッピー（登録商標）ディスク（ＦＤ）等の外部メモリ１４とのアクセスを制御する。操作部１０１２は、表示パネルやキーボードを含んでおり、オペレータへの情報の提供や、オペレータからの指示の入力を行わせる。
【００４３】
＜ＰＤＬデータの構成（図４）＞
パケット化されないＰＤＬデータとパケット化されたＰＤＬデータの説明を行う。図４（Ａ）はパケット化されないＰＤＬデータの一例を示す模式図である。ＰＤＬデータは便宜上、Ａ、Ｂ、Ｃの３パートに分かれているとする。図４（Ｂ）は図４（Ａ）のＰＤＬデータをパケット化したものである。パケット化されたＰＤＬデータにおいては、パートＡ，Ｂ，Ｃの上にそれぞれヘッダ４０１と呼ばれる付加情報がつけられている。ヘッダ４０１と実データ４０２との組み合わせをパケットと呼んでいる。
【００４４】
図４（Ｃ）は１つのパケットの構造の詳細を説明する模式図である。図４（Ｃ）において、説明を単純にするために簡易化されたパケットでは、ヘッダとして６バイトの情報が収められている。第０〜１バイトにはパケットであることを識別するための識別文字４１１（本実施形態では値が０ｘＣＤＣＡ）が含まれ、第２〜３バイト目はパケットの役割を示すオペレーションコード４１２が入る。例えば、ジョブの先頭を示す場合には０ｘ０００１、終了を示す場合には０ｘ０００２などのコードが入れられてパケットの役割が判別できる。第４〜５バイト目は次に続くデータ部のサイズ（ボディサイズ）４１３を記述している。後述するパケット解釈部３２３は、このサイズ分のデータを受信バッファに投入し、また、前記役割を示すコードにより、データの構文解釈なしに、印刷データの開始位置、終了位置が判断できる。なお、データ部のサイズは２バイトで記述されるため、０〜６５５３５バイトまで表せる。印刷データがこれより大きい場合には、図４（Ｂ）のＡ，Ｂ，Ｃにようにパケットに分割する必要がある。
【００４５】
パケット判断部３２２はインターフェイス３２１から印刷データが送られてくると、その先頭の２バイトが図４（Ｃ）の識別文字４１１と一致しているか調べ、一致している場合にはパケット化されたＰＤＬデータと見なして、印刷データをパケット解釈部３２３に転送する。一致していない場合にはＰＤＬ確定部３２６に転送する。この判断を正確に行うためには、判断に使用する識別文字（本例では０ｘＣＤＣＡ）としてはＰＤＬデータに含まれない文字列（コード列）を選択する必要がある。パケット解釈部３２３はパケット化されたデータを解釈し、役割を示すコードがジョブ開始を示していた場合には、ジョブ識別子を獲得して、その識別子をキーとして受信バッファ３２４に転送する。このとき、ヘッダ部分は取り除かれる。
【００４６】
図１３はパケット判断部３２２の動作を説明するフローチャートである。パケット判断部３２２は印刷ジョブが受信される度に起動され、印刷ジョブがパケット型なのか従来型（パケット化されていないＰＤＬ）なのかを判断するために使用される。
【００４７】
処理が開始されるとステップ１３１においてインターフェース３２１から印刷ジョブを受信する。ステップ１３２において受信できたか否か判定し、受信できた場合はステップ１３３へ分岐し、受信できなかった場合はステップ１３１に戻る。
【００４８】
印刷ジョブを受信できた場合は、ステップ１３３においてデータの先頭が識別文字列（０ｘＣＤＣＡ）と一致しているかを判定する。一致している場合はステップ１３５でパケット解釈部３２３を呼び、一致しない場合はステップ１３４でＰＤＬ確定部３２６を呼ぶ。
【００４９】
パケット判断部３２２は、ステップ１３４，ステップ１３５においてパケット解釈部３２３あるいはＰＤＬ確定部３２６を呼んで終了する。なお、印刷ジョブのタイプを判断する条件として印刷ジョブの先頭にある２バイトの識別文字（０ｘＣＤＣＡ）を用いているが、従来型のＰＤＬ部と誤認識しないように、より長い識別文字列を用いても構わない。
【００５０】
＜パケット化されたＰＤＬデータの処理＞
図１４は、印刷ジョブがパケット型と認識された場合に図１３のステップ１３５で呼ばれるパケット解釈部３２３の動作を説明するためのフローチャートである。
【００５１】
パケット解釈部３２３の動作が開始されると、ステップ１４０１においてパケットを受信し、ステップ１４０２においてパケットに含まれているオペレーションコードを解釈する。オペレーションコードは、本実施形態においては、ジョブ開始命令、属性設定命令、ＰＤＬ送信命令、ジョブ終了命令のいずれかに合致するものとする。なお、ジョブ属性はジョブの印刷条件を示すパラメータ等を含む。ジョブの印刷条件とは、印刷データを作成したアプリケーションプログラムやオペレータ等により指定される、プリンタにおける処理のパラメータである。印刷条件には、例えば、給紙トレイの指定や排紙トレイの指定、片面印刷／両面印刷の指定、カラー／モノクロの指定、部数の指定、ページレイアウトの指定等、プリンタにおいてＰＤＬから実際に印刷を行う際に必要とされる各種パラメータが含まれる。そのほか、プリンタの機能に応じて、ソートやステイプル処理を行ういわゆるフィニッシャが有する機能を指定するパラメータ等も含まれる。
【００５２】
ステップ１４０３においてオペレーションコードがジョブ開始命令と一致するか判定し、一致した場合、ステップ１４０４においてジョブ識別子を獲得し、印刷ジョブに対してジョブ識別子を発行する。そしてステップ１４０５においてジョブの印刷条件を示すジョブ属性を格納する属性領域を確保し、ステップ１４０６において属性領域に初期値を設定する。ジョブ識別子としては、たとえば読み出しごとに一定値が加算されるカウンタから読み出した値を用いたり、あるいはさらにそのカウンタ値に読み出した日時等を付したり、あるいはプリンタに固有の識別名を付した値を利用することができる。いずれにしても、そのプリンタにおいて固有の値であれば、その値をジョブ識別子として利用できる。
【００５３】
ステップ１４０７においてオペレーションコードが属性設定命令と一致すると判定された場合、ステップ１４０８においてパケットのデータ部４１４に設定される属性識別子を解釈し、ステップ１４０９で、その値に従って属性領域に属性値を設定する。属性識別子と属性値とは、後述する図８（２）または（３）に示すコマンド文字列とパラメータと同様の関係にあり、属性識別子の値を判定することで、その属性値の長さや設定すべき領域等が決定できる。なお、属性領域に設定された属性値は、後で実行されるＰＤＬデータの展開や印刷動作の際に参照される。属性領域は、たとえばトランスレータ部３２８や描画部３２５等に設けられる。
【００５４】
ステップ１４１０においてオペレーションコードがＰＤＬ送信命令と一致すると判定された場合は、ステップ１４１１において、ステップ１４０４で獲得されたジョブ識別子をキーとしてデータ部４１４の内容、すなわちＰＤＬの実体データが受信バッファ３２４に格納される。
【００５５】
図１５は、受信バッファ３２４の構成を示す模式図である。本実施形態では、受信バッファ３２４は単なるメモリではなくひとつの独立したオブジェクトを構成している。そのため、他の処理ユニット、たとえばパケット解釈部３２３やＰＤＬ終端確定部３２７やトランスレータ部３２８、描画部３２５等は、受信バッファに対してたとえば「書き込み」や「読み出し」のメッセージをジョブ識別子とともに渡すことで、メッセージに応じた処理を遂行する。
【００５６】
受信バッファ３２４は、ジョブの識別子毎に受信データを管理しており、あたかもジョブ識別子ごとに複数の受信バッファが存在するかのように扱われている。図１５においては、一例としてジョブ識別子Ａ，Ｂ，Ｃの３つの印刷ジョブが格納されている状態を示している。ジョブ管理領域１５０１は、ジョブ識別子Ａのジョブが管理される領域を示している。ジョブ管理領域１５０１には、ジョブ識別子Ａとジョブ識別子Ａのジョブの実体的なデータに対するリンクとが格納されている。リンクの先には、その印刷ジョブに含まれる印刷データを格納する受信バッファブロックがチェーンされている。受信バッファブロックは固定サイズあるいは可変サイズであり、リンクフィールドを有する。このリンクに終端コードが格納されていれば印刷データはそこまでであり、ポインタが格納されていれば、さらに受信バッファブロックがリンクされ、そこに印刷データの続きが格納されている。このように、ひとつの印刷ジョブに含まれる印刷データを格納する受信バッファブロックは、ジョブ管理領域からのリンクチェーンによって関連づけられている。
【００５７】
また、ジョブ管理領域自体は、あらかじめ定められた一定の領域に整列配置されていても良いし、各ジョブ権利領域がリンクされて管理されていても良い。後者の場合には、先頭（単なるリンクのみであってもよい）の位置のみが予め決められていれば、追加されるジョブ管理領域は動的に配置できるためにその数が限定されることはない。
【００５８】
この構成により、受信バッファ３２４は、与えられたジョブ識別子を、受信バッファ３２４内のジョブ管理領域に格納されたジョブ識別子と順次比較し、その一致を判定することで、ジョブ識別子に対応する印刷データ（ＰＤＬデータ）を認識できる。
【００５９】
さらに、空き領域についても、空き領域用のジョブ管理領域１５０４が用意されており、利用可能な空き受信バッファブロックがリンクされている。新たな受信バッファブロックが必要とされたなら、この空き受信バッファブロックから必要な受信バッファブロックが確保されて利用される。なお、ジョブ管理領域が動的に割り当てられる場合には、ジョブ管理領域についてもこの空き受信バッファブロックから確保できる。
【００６０】
たとえば、新規の印刷ジョブを受信バッファ３２４に格納する場合には、パケット解釈部３２３は、新規に獲得したジョブ識別子およびＰＤＬデータと共に、これらＰＤＬデータの書き込みを要求するメッセージを受信バッファ３２４に渡す。受信バッファ３２４はジョブ管理領域を検索し、渡されたジョブ識別子の有無を判定する。その結果、与えられたジョブ識別子がなければ新たにジョブ管理領域を確保し、ジョブ識別子を書き込む。そして、受信バッファ３２４の空き領域を管理するジョブ管理領域１５０４から受信バッファブロックを１個取得し、ジョブ管理領域にチェーンされている最後の受信バッファブロックにリンクを張り、新たにリンクされた受信バッファブロックにデータを書き込む。これを、渡されたデータ全てを格納するまで繰り返す。
【００６１】
また、たとえば、所望の印刷ジョブを受信バッファ３２４から読み出す場合には、読み出しを行うユニットは、読み出される印刷ジョブのジョブ識別子と共に、読み出したデータを格納するアドレスおよびデータの読み出しを要求するメッセージを受信バッファ３２４に渡す。受信バッファ３２４はジョブ管理領域を検索し、渡されたジョブ識別子の有無を判定する。その結果、与えられたジョブ識別子があれば、そのジョブ識別子を含むジョブ管理領域にリンクされた受信バッファブロックからデータを順次読み出して、指定されたアドレスから格納する。
【００６２】
このようにして、受信バッファ３２４は、複数の印刷ジョブに対してジョブ識別子をキーとして読み書きに対応することが可能である。
【００６３】
なお、本実施形態では受信バッファをオブジェクトとして構成しているが、受信バッファを単なるメモリとして、他のユニットが、上述した受信バッファの動作を遂行することによっても上記構成を実現できる。
【００６４】
＜パケット化されていないＰＤＬデータの処理＞
さて一方、パケット判断部３２２によりパケットと認識されなかった場合には、ＰＤＬ確定部３２６に印刷データが転送される。ＰＤＬ確定部３２６がＰＤＬを確定するためには２種類の方法があり、一つはジョブ制御言語（ＪＬ）を解釈して確定する方法と、印刷データの先頭部を検索して、もっともそれらしいＰＤＬを類推する方法である。
【００６５】
ジョブ制御言語はＰＤＬを拡張するために定義されており、通常ＰＤＬデータの先頭部に付加されている。図５はジョブ制御言語の一例である。”＜ＥＳＣ＞％−１２３４５Ｘ”書かれた行はＵＥＬ（Ｕｎｉｖｅｒｓａｌ　Ｅｘｉｔ　Ｌａｎｇｕａｇｅ）といわれ、ジョブを強制的に完了させる文字である。
【００６６】
”＠ＰＪＬ”で始まる行はジョブ制御言語の記述を示してる。”ＥＮＴＥＲ　ＬＡＮＧＵＡＧＥ”はジョブ制御言語のコマンドであり、それ以下に続くデータが、”ＬＩＰＳ”という名前のＰＤＬであることを示している。それ以降はＰＤＬデータ（実データ）が送信され、再びＵＥＬが来ることによりジョブは完了する。このようなデータの場合、”ＥＮＴＥＲ　ＬＡＮＧＵＡＧＥ”に続く文字列でこのデータのＰＤＬ名が判別可能である。
【００６７】
ジョブ制御言語が含まれていない印刷データの場合には、上記のような判断基準が使えない。この場合には、ジョブの先頭データを各ＰＤＬ毎にある類推判定処理により、ＰＤＬを確定する。この処理はＰＤＬ毎に特定のパターンマッチングによりマッチした場合はそのＰＤＬのデータと判断する方法である。
【００６８】
＜ＰＤＬ終端確定部による処理（図６）＞
上記２つの方法によりＰＤＬ名が確定すると、印刷データはさらにＰＤＬ終端確定部３２７に転送される。このとき、ＰＤＬ確定部３２６はＰＤＬ名をキーとしてＰＤＬ終端確定部３２７を呼び出す。
【００６９】
図６はＰＤＬ終端確定部３２７の動作を説明するフローチャートである。ＰＤＬ終端確定部３２７は、印刷データを受信したときに、パケット判断部３２２によって前記印刷データがパケット化されていないと認識されたときに、ＰＤＬ確定部３２６によってＰＤＬ名が確定された後に呼び出される。この時、ＰＤＬ名がキーとして与えられる。なお、本実施形態においては、ＰＤＬとしてＬＩＰＳという言語と、ＰｏｓｔＳｃｒｉｐｔ（ＰＳ）という言語とを例として説明する。なお、この処理によって、描画データを生成するためのＰＤＬデータの解釈と比較して、効率的に素早くＰＤＬデータの解釈を行うことができる。
【００７０】
図６において、ステップ８０１においてＰＤＬ終端確定部３２７はキーすなわちＰＤＬ名がＬＩＳＰＳという名称であるか判定し、ＬＩＰＳであると判定された場合には、当該ＬＩＰＳ用の終端確定処理に入り、ステップ８０２においてインターフェイスから印刷データを獲得し、ステップ８０３においてＬＩＰＳの終端が見つかったかどうかを検索する。
【００７１】
ステップ８０４においてＰＤＬの終端を検知した場合には処理を完了する。完了した後は、印刷ジョブに対してジョブ識別子を発行する。また、その後の印刷データは受信バッファ３２４に格納される。終端が見つからなかった場合には、ステップ８０５において印刷データを受信バッファ３２４に書きこむ。書き込みは図１５について説明した方法と同様の方法で行われる。このようにＰＤＬ終端確定部３２７は、印刷ジョブの終端の確定と共にその処理を終了する。印刷データの終端を認識した際には、その時点で終端確定処理されていた印刷ジョブ（すなわちその終端部分を含む印刷ジョブ）に対してジョブ識別子、すなわちオブジェクトＩＤを付与する。印刷ジョブは、オブジェクトＩＤが付与された時点で前述した削除や中断あるいは優先順位の変更等のジョブ操作の対象たり得る。
【００７２】
さて、ＰＤＬ名がＬＩＰＳでない場合には、ステップ８０６においてＰＤＬ名がＰＳかどうかを判断し、ＰＤＬ名がＰＳである場合には、ＰＳ用の終端確定処理に入り、ステップ８０７においてインターフェイスから印刷データを獲得し、ステップ８０８においてＰＳの終端が見つかったかどうかを検索する。
【００７３】
ステップ８０９において終端を検知した場合には処理を完了する。終端が見つからなかった場合にはステップ８１０において印刷データを受信バッファ３２４に書きこむ。この際の処理も、ステップ８０５における処理と同様である。
【００７４】
図１０は、２つの印刷ジョブ「ジョブ１」「ジョブ２」が格納された受信バッファ３２４の一例を示す図である。受信バッファ３２４は、印刷ジョブをその識別子で管理するためのジョブ管理領域１００１と、印刷データの実体を格納するためのデータ部とを含む。データ部は、所定サイズの受信バッファブロックに分割されており、使用済みバッファブロックと使用中バッファブロックとがポインタにより管理される。
【００７５】
印刷ジョブを管理するためのジョブ管理領域１００１には、ＰＤＬ終端確定部３２７が呼び出されて最初に処理する印刷データについて付与されたジョブ識別子が記録される。また、ジョブ識別子に対応してポインタが備えられ、そのジョブ識別子に対応する印刷ジョブの先頭の印刷データが格納された受信バッファブロックにリンクしている。各受信バッファブロックにもポインタが備えられ、複数の受信バッファブロックにまたがる印刷データを格納する際には、このポインタによって受信バッファブロックをリンクする。最後の受信バッファブロックは、そのポインタに書かれたコードによって識別可能である。また、印刷データが読み出され、あるいは廃棄されて不要になった空きブロックは、空きブロックを管理するためのジョブ管理領域（ポインタ）１０２１にリンクされて、空きブロックとして管理される。
【００７６】
なお、印刷ジョブ全体を、ポインタの連鎖をたどらずに把握するため、末尾のバッファブロックへのポインタを管理部に設けても良い。
【００７７】
図１０の例では、印刷ジョブ「ジョブ１」には受信バッファブロック１００２，１００３が連鎖的にリンクされ、「ジョブ２」には受信バッファブロック１０１２がリンクされている。リンクされた受信バッファブロックに印刷データの実体が格納され、それがジョブ管理領域１００１により管理されている。なお、図１０では各受信バッファブロックを模式的に示しているが、実際のメモリ上では受信バッファブロックは連続したメモリ領域に確保した方がメモリの使用効率がよい。
【００７８】
また、図１０のバ受信ッファはＨＤＤのようなファイルメモリを利用すればより簡単に実現できる。というのは、例えばＭＳＤＯＳにおけるＦＡＴのように、セクタをブロックとみなせば、各ブロックの配置を管理する手段が、本例ではポインタであるのにたいしてビットマップであるというような相違はあるものの、図１０の管理手法はファイル管理の手法と本質的に同一なためである。
【００７９】
さらにまた、トランスレータ部３２８は、この受信バッファ３２４からＰＤＬコマンドを読み出して中間データに変換した後、例えば図１０の受信バッファと同様の形式で管理される中間バッファに中間データを格納する。中間バッファにおいてもまた印刷ジョブは最初に付されたジョブ識別子によりかんりされる。このため、中間データに変換された印刷ジョブも又、ジョブ識別子により管理できる。
【００８０】
なお図６のフローチャートでは２種類のＰＤＬによる終端検知を行っているが、それ以上のＰＤＬに関しても同様の手順で終端を検知する仕組みを取り入れることが可能である。
【００８１】
＜印刷ジョブの終端検知処理（図７，８，９）＞
次に、実際にＰＤＬ毎に終端を検知する方式について説明する。今、取り扱おうとしているＰＤＬの終端文字列は、図７（Ａ）で示すように”ＥＯＪ”というＡＳＣＩＩ文字列から構成されるとする。ＰＤＬ終端確定部はこの文字列を単純に前方検索すればいいかというと、それでは問題がある。図７（Ｂ）は文字列印刷命令の一例を示す図である。文字列印刷命令には、最初に文字印刷命令のコマンド文字、次に文字列のパラメータ長、そして実際に印刷する文字列が入っているとすると、実際に印刷する文字列の中に”ＥＯＪ”という文字そのものが入っている場合もあり得る。そのため、単純な前方検索に従っていては、終端文字列がこの文字列中の文字と一致して、誤ってジョブの終端を検知してしまう可能性がある。よって単純な前方検索だけではなく、ＰＤＬの構文を解釈しつつ、終端を検知しなくてはいけない。
【００８２】
図８はＰＤＬのコマンド並びのタイプを示したものである。いずれのタイプでも先頭にコマンド文字列が含まれており、この文字列によって当該コマンドのタイプを判別可能である。コマンドのタイプには３種類ある。（１）コマンド文字列そのもので完了する単一形式のもの、（２）コマンド文字列と、固定長のパラメータで完了する固定長形式のもの、（３）コマンド文字列と、次に続くパラメータのサイズを示すパラメータ長、実際のパラメータから構成される可変長形式のもの、である。図８は３種類のコマンドを示す図である。例えば終端コマンド”ＥＯＪ”はコマンド文字列のみから構成されるコマンドであり、図８（１）のタイプに相当する。なお”コマンド文字列”の長さ及び”パラメータ長”の長さはそれぞれ固定長であるものとする。
【００８３】
終端検知はこのコマンド文字列のみを検索できるように、図８（２）の固定長パラメータの場合はパラメータ部分を検索対象外とするようにパラメータ部分を読み飛ばし、図８（３）の可変長パラメータの場合はパラメータ長およびパラメータ部分を検索対象外とするようにパラメータ部分を読み飛ばすといったように、構文解釈を行いながら終端文字列を探すことにより、確実に印刷ジョブの終端を検知することが可能である。
【００８４】
すなわち、印刷ジョブ終端確定部３２７は、図５に示したジョブ制御言語の”ＥＮＴＥＲ　ＬＡＮＧＵＡＧＥ”コマンドに引き続く実データを解析する。”ＥＮＴＥＲ　ＬＡＮＧＵＡＧＥ＝”コマンドの直後はＰＤＬのコマンドであるから、これから順次解析を開始する。
（ａ）まず、インターフェースからコマンドをフェッチし、そのコマンドが属するところのＰＤＬの辞書を参照して、終端文字列”ＥＯＪ”か否かを判定する。
（ｂ）終端文字列であれば、その直前のブロックまでが印刷ジョブを構成する実データである。したがって印刷ジョブの終端は確定される。その終端文字列を受信バッファ３２４に格納して処理を終了する。
（ｃ）終端文字列でなければ、図８のタイプ（１），（２），（３）のうち、どのコマンドであるか判定する。
（ｄ）タイプ（１）であれば、そのコマンドを受信バッファに格納し、その直後のコマンドについて（ａ）から繰り返す。
（ｅ）タイプ（２）であれば、その直後のパラメータ長はコマンドに応じて決められているから、コマンド及びパラメータを受信バッファに格納し、そのパラメータの直後のコマンドについて（ａ）から繰り返す。
（ｆ）タイプ（３）であれば、その直後のパラメータ長で指定される長さのパラメータを含めてコマンドを受信バッファに格納し、そのパラメータの直後のコマンドについて（ａ）から繰り返す。
【００８５】
以上の（ａ）から（ｆ）が、図６のステップ８０２〜８０５およびステップ８０７〜８１０それぞれにおいて実行される。
【００８６】
なお、格納する印刷データ、すなわちコマンド及びパラメータ等が印刷ジョブの先頭のデータである場合には、上述の通り、ジョブ管理領域を新たに１ジョブ分確保し、そこにジョブ識別子を記録し、新たに確保した受信バッファブロックをリンクする。そのバッファブロックにデータが格納される。
【００８７】
格納しようとするデータが受信バッファブロックの終端を越えてしまう場合には、前述したように新たな空き受信バッファブロックを確保して、それにリンクをつなぎ、その受信バッファブロックに印刷データを格納する。
【００８８】
図９は印刷データの一例である。構文解釈による終端文字列の検索を行うと、図のパラメータ部分は検索対象外となるため、たとえパラメータの一部に”ＥＯＪ”の文字列が付加されていても、これを終端と誤認識することはないのである。
【００８９】
このようにして、印刷ジョブは印刷装置において識別子を付与されてから受信バッファ３２４に格納される。ここで例えば印刷ジョブのジョブ識別子を要求するコマンドがホストコンピュータから送信されてきたものとする。すると、印刷装置は、ジョブ管理領域１００１に記録された印刷ジョブのジョブ識別子をホストコンピュータに返す。たとえばジョブ管理領域１００１に、印刷ジョブの送信元ホストコンピュータを識別するためのホスト識別子を記録しておくことで、要求元のホストコンピュータが発行した印刷ジョブについてのみジョブ識別子を応答することができる。このようにしてホストコンピュータは、印刷装置において処理待ち状態にある、或いは処理中の印刷ジョブのジョブ識別子を獲得できる。さらに、たとえばジョブ管理領域１００１に、印刷ジョブの送信元ホストコンピュータが印刷ジョブに付与した識別子を併せて記録しておくことで、要求元のホストコンピュータに対して、そのホストコンピュータが付与した識別子と印刷装置が付与したジョブ識別子とを対応づけてホストコンピュータに応答することができる。ただし、ホストコンピュータの付与した識別子は、印刷装置においては一意的でない可能性はある。
【００９０】
こうして印刷ジョブのジョブ識別子を獲得したホストコンピュータは、そのジョブ識別子により印刷ジョブを特定して、印刷ジョブを削除する削除命令や印刷ジョブを一時中断する中断命令、中断したジョブを再実行させる復帰命令等のコマンドを印刷装置に送信できる。これらジョブ操作のコマンドを受信した印刷装置は、そのコマンドを識別すると、コマンドとともに入力されている、指定されたジョブ識別子によって受信バッファ３２４及び中間バッファ３２９のジョブ管理領域を検索して印刷ジョブを特定し、指定された操作、例えば削除や中断を特定された印刷ジョブについて行う。
【００９１】
以上のように、本発明第１の実施形態によれば、受信バッファの前段において、パケット化されていないＰＤＬデータのＰＤＬ確定およびＰＤＬ終端確定処理によって、印刷装置により行われる処理の早期の段階、すなわち受信バッファに格納する段階で印刷ジョブの開始位置および終了位置を認識し、個々のジョブにジョブ識別子を割り当てることが可能となる。そのため、印刷装置の受信バッファにいったん格納された印刷ジョブに対して、印刷ジョブの取り消し、割込み、停止、復帰といった操作が可能となる。
【００９２】
さらに、このような印刷ジョブに対するコマンドのためのチャネルを、印刷ジョブのチャネルと異なるチャネルとしておくことで、印刷データをホストコンピュータから送信している場合でも、そのホストコンピュータから印刷ジョブを操作する命令を印刷装置に対して発行することが可能となる。すなわち、印刷ジョブと印刷ジョブに対する操作とを非同期におこなえるようになる。そのため、印刷ジョブに対する操作を、その操作のための命令後、迅速に実行することができる。
【００９３】
［第２実施形態］
第１実施形態におけるＰＤＬ終端認識処理は構文解釈を伴う複雑なものである。ＰＤＬによっては構文自体がプログラム言語化されており、条件分岐やＰＤＬ取り込み（ｉｎｃｌｕｄｅ）処理が許されている。そのため、このようなＰＤＬについて終端認識処理を行えば、その処理は一層複雑化する場合がある。一方、ＰＤＬ終端認識処理は受信バッファの前段にあるため、あまり処理が重いようでは受信パフォーマンスに影響し、引いては印刷装置全体のパフォーマンス低下を招くことになってしまう。ＰＤＬ終端認識処理は処理が単純である方がシステム全体としては望ましい。そこで本実施形態では、つぎのようにＰＤＬ終端認識処理の単純化を図ることで、システム全体のパフォーマンスの低下を防止する。
【００９４】
ＰＤＬによっては特定の文字コードを終端として使用している場合がある。例えばＰｏｓｔＳｃｒｉｐｔではＡＳＣＩＩモードの時にはＣｏｎｔｒｏｌ−Ｄ（０ｘ０４）コードが終端コードとして扱われる。Ｃｏｎｔｒｏｌ−Ｄは他のコマンド文字列としてもパラメータとしても入ってくることはないので、構文解釈を行わずに単純にこの文字コードを前方検索していけばよい。このような構文解釈を必要としない終端コードを明確な終端コードと呼ぶことにする。このように１文字だけの単純検索を行うことにより、単純かつ高速ながら、第１実施形態と同様の効果を得ることが可能となる。
【００９５】
また、同様にＰｏｓｔＳｃｒｉｐｔのＴＢＣＰモードにおいては、Ｃｏｎｔｒｏｌ−Ａ　Ｍ（０ｘ０１　０ｘ４ｄ）を明確な終端コードとしている。この場合は２文字の単純検索を行うことによって第１実施形態と同様の効果を得ることが可能となる。
【００９６】
この手順を第１実施形態における図６の手順に適用すれば、次のようになる。すなわち、ステップ８０８において構文解析処理を行わず、単に、そのＰＤＬによって決められている明確な終端コード、すなわちＡＳＣＩＩモードであれば”Ｃｏｎｔｒｏｌ−Ｄ”コードを、ＴＢＣＰモードであれば”Ｃｏｎｔｒｏｌ−Ａ”＋”Ｍ”コードを検索する。この結果、明確な終端コードが見つかれば、そこが印刷ジョブの区切り目となり、ステップ８０９で「ＹＥＳ」に分岐する。
【００９７】
本実施形態は、もちろんＰｏｓｔＳｃｒｉｐｔに限らず、明確な終端コードが定義されているＰＤＬであればどのようなものであれ、本実施形態と同様の要領で明確な終端コードを前方検索することで、印刷ジョブの区切りを容易に発見することができる。したがって、印刷装置において各印刷ジョブに対して識別子を付与し、印刷ジョブ毎のデータを識別子に対応づけて管理することができるとともに、そのための処理によって処理効率を低下させることがない。
【００９８】
［第３実施形態］
ＰＤＬによっては、構文解釈が複雑で、なおかつ第２実施形態のような明確な終端コードが存在しない場合がある。このような場合はデータ転送の足回りとして利用しているプロトコル、すなわち、データ転送を実現するために採用されているプロトコルスタックの下層レイヤのセッションの開始、終了をジョブの開始、終了として用いてもよい。この場合には、セッションの開始・終了と印刷ジョブの開始・終了とがそれぞれ関連づけられている必要がある。
【００９９】
なお、下層レイヤとしては、例えばＯＳＩ（ＯｐｅｎＳｙｓｔｅｍｓＩｎｔｅｒｃｏｎｎｅｃｔｉｏｎ（開放型システム間相互接続））のトランスポート層（端末間のトランスペアレントなデータ転送を行う層）に相当するレイヤを用いることができる。この場合には、トランスポート層に相当するレイヤにセッションの概念がない例えばＩＥＥＥ１２８４やＵＳＢのようなローカルインターフェースについては、本実施形態の方法は採用できない。逆に言えば、ＴＣＰ／ＩＰプロトコルスタックのＴＣＰ（ＴｒａｎｓｍｉｓｓｉｏｎＣｏｎｔｒｏｌＰｒｏｔｏｃｏｌ）のようにセッションの概念が存在するプロトコルを用いてホストコンピュータ−印刷装置が接続されている場合には、ＴＣＰレイヤのセッションの開始・終了を印刷ジョブの開始・終了と対応づけることで、セッションの区切り目を判定することで、印刷ジョブの区切り目を判定することができ、各印刷ジョブについて識別子を付与することが可能となる。
【０１００】
あるいは、ホストコンピュータからのデータ転送がある一定時間なかった場合は、タイムアウトとみなしてジョブの完了位置とさせてもよい。
【０１０１】
図１１は、図６の手順を本実施形態用に変更したもののフローチャートである。
【０１０２】
図１１において、ＬＩＰＳの場合はステップ１３０２においてインターフェイスから印刷データの取得を試みるが、ここでセッションの終了を検知する、すなわちＥＯＦ（エンドオブファイル）を受信した場合には、ステップ１３０３において分岐し、ジョブの完了と判定する。あるいは一定時間印刷データの受信ができなかった場合にはステップ１３０４において分岐し、ジョブの完了とする。そのいずれでも印刷ジョブの終端が検出できなければ、ステップ１３０５において、第１実施形態のように構文解析により終端コマンドを検出するか、あるいは、明確な終端コードを有するＰＤＬであれば、第２実施形態のように終端コードを前方検索することで、印刷ジョブの区切り目を判定できる。区切り目を判定することで、個々の印刷ジョブを確定して識別子を付与し、識別子により印刷ジョブを管理することが可能となる。ジョブの終端でなければ、獲得したデータを受信バッファ３２４に格納する。
【０１０３】
これは、ステップ１３０１においてＰＤＬがＰＳであると判定された場合にも同様である。
【０１０４】
このように、セッションの開始、終了やタイムアウトを併用することにより、構文解釈が行いづらいＰＤＬ形式においても、ジョブの終端を検知することが可能である。また、セッションの開始・終了およびタイムアウトにより印刷ジョブの終端を判定できない場合にも、ＰＤＬに含まれる終端命令を検出して、印刷ジョブをジョブ毎に管理することができる。
【０１０５】
なお、本実施形態では、セッションの終了を判定し、それにより印刷ジョブの終端が判定できなければタイムアウトの判定をし、それでも印刷ジョブの終端が判定できなければ、第１または第２実施形態の手順で印刷ジョブの終端を判定するものとしている。しかしながら、第１又は第２実施形態の手順で判定を行う前に、セッションの終了による判定のみを行っても良いし、タイムアウトのみによる終端の判定を行っても良い。
【０１０６】
以上説明したように、実施形態記載の発明によれば、パケット型の印刷データだけではなく、従来型のＰＤＬデータにおいても、受信した印刷データを受信バッファの前段において印刷ジョブ単位に区切り、印刷ジョブ毎に管理できる。
【０１０７】
また、実施形態記載の発明によれば、引数部を飛び越すことで迅速に印刷データを印刷ジョブ単位に区切ることができる。
【０１０８】
また、実施形態記載の発明によれば、単純な前方検索で印刷データを迅速に印刷ジョブ単位に区切り、印刷ジョブ毎に管理できる。
【０１０９】
また、実施形態記載の発明によれば、印刷データを記述したページ記述言語に応じて、最適な印刷ジョブの終端位置の判定の仕方を用いて、迅速かつ正確に印刷データを印刷ジョブ単位に区切り、印刷ジョブ毎に管理できる。
【０１１０】
また、実施形態記載の発明によれば、印刷データの内容を判定せずに、迅速に受信した印刷データを印刷ジョブ単位に区切り、印刷ジョブ毎に管理できる。
【０１１１】
また、実施形態記載の発明によれば、印刷データの内容を判定せずに、受信した印刷データを迅速に印刷ジョブ単位に区切り、印刷ジョブ毎に管理できる。
【０１１２】
また、実施形態記載の発明によれば、識別子の応答を受けた側では、その識別子を用いて当該印刷制御装置に格納された印刷ジョブを管理できる。
【０１１３】
また、実施形態記載の発明によれば、識別子の応答を受けた側では、その識別子を用いて当該印刷制御装置に対して操作命令を発効し、その命令によって印刷ジョブを管理できる。
【０１１４】
また、実施形態記載の発明によれば、ホストコンピュータから送信した印刷データについて、印刷装置により印刷ジョブを把握して、印刷ジョブ毎の操作を可能とする。
【０１１５】
また、実施形態記載の発明によれば、ホストコンピュータから送信した印刷データについて、ＰＤＬの構文解析により終端を確定することで、迅速かつ正確な終端の判定が可能となる。
【０１１６】
また、実施形態記載の発明によれば、ホストコンピュータから送信した印刷データについて、ＰＤＬの前方検索により終端を確定することで、迅速かつ正確な終端の判定が可能となる。
【０１１７】
【発明の効果】
以上説明したように、本発明によれば、受信した印刷データを受信バッファの前段においても印刷ジョブ単位に区切ることができ、より早い段階から印刷ジョブの管理をすることができる。また、ヘッダが付加された印刷ジョブに対してはより早い段階でジョブ識別子を発行できるようにすると共に、前記ヘッダが付加されていない印刷ジョブに対してもできるだけ早い段階でジョブ識別子を発行できるようにすることを目的とする。
【図面の簡単な説明】
【図１】従来のＰＤＬ型の印刷装置におけるコントローラの動作を説明する概念図である。
【図２】ジョブパケット型の印刷装置におけるコントローラの動作を説明する概念図である。
【図３】本発明の実施形態である印刷システムの構成を示す模式図である。
【図４】（Ａ）パケット化されないＰＤＬデータの一例を示す模式図である。
（Ｂ）（Ａ）のＰＤＬデータをパケット化した模式図である。
（Ｃ）１つのパケットの構造の詳細を説明する模式図である。
【図５】ジョブ制御言語の表記の一例を示す図である。
【図６】ＰＤＬ終端確定部３２７の動作を説明するフローチャートである。
【図７】（Ａ）ＰＤＬの終端を示す終端コマンドの一例を示す図である。
（Ｂ）文字列印刷命令を示す表記の一例を示す図である。
【図８】一般的なＰＤＬにおけるコマンド体系を示す図である。
【図９】ＰＤＬコマンドを組み合わせたＰＤＬデータの一例である。
【図１０】受信バッファに格納されたＰＤＬデータの一例である。
【図１１】第３実施形態において改良されたＰＤＬ終端確定部の動作を説明するフローチャートである。
【図１２】印刷システムのハードウエア構成を示す図である。
【図１３】ＰＤＬ判断部の動作を説明するフローチャートである。
【図１４】ＰＤＬ解釈部の動作を説明するフローチャートである。
【図１５】受信バッファに格納されたＰＤＬデータの構造の一例である。
【符号の説明】
３００　ホストコンピュータ
３１０　所定の通信媒体
３２０　印刷装置
３２１　インターフェイス
３２２　パケット判断部
３２３　パケット解釈部
３２４　受信バッファ
３２５　描画部
３２６　ＰＤＬ確定部
３２７　ＰＤＬ終端確定部
３２８　トランスレータ部
３２９　中間バッファ
３３０　エンジン部
【図１】
2004001408.tif 000003
【図２】
2004001408.tif 000004
【図３】
2004001408.tif 000005
【図４】
2004001408.tif 000006
【図５】
2004001408.tif 000007
【図６】
2004001408.tif 000008
【図７】
2004001408.tif 000009
【図８】
2004001408.tif 000010
【図９】
2004001408.tif 000011
【図１０】
2004001408.tif 000012
【図１１】
2004001408.tif 000013
【図１２】
2004001408.tif 000014
【図１３】
2004001408.tif 000015
【図１４】
2004001408.tif 000016
【図１５】
2004001408.tif 000017