(57)【要約】【課題】ホスト機の改修なしに障害がある印刷ジョブの認識を実現すること。【解決手段】中継装置３０は、ホスト機から受け取った印刷データのページがセパレータであるか否かを特定する第１の特定部と、セパレータであると特定された印刷データから印刷ジョブの識別情報を特定する第２の特定部と、印刷ジョブの識別情報と、ホスト機からプリンタ装置へ中継する印刷データとを関連付けて記録する記録部とを有する。【選択図】図６
2018083358.tif 000002
【特許請求の範囲】
【請求項１】
ホスト機から受け取った印刷データのページがセパレータであるか否かを特定する第１の特定部と、
前記セパレータであると特定された印刷データから印刷ジョブの識別情報を特定する第２の特定部と、
前記印刷ジョブの識別情報と、前記ホスト機からプリンタ装置へ中継する印刷データとを関連付けて記録する記録部と、
を有することを特徴とする中継装置。
【請求項２】
前記セパレータ上で前記印刷ジョブの識別情報に対応する文字が出現する行の位置および桁の位置が定義されたセパレータ情報を記憶するセパレータ情報記憶部をさらに有し、
前記第１の特定部は、前記印刷データに含まれる行データのうち前記セパレータ情報の行の位置に対応する行データにおいて前記セパレータ情報の桁の位置に対応する文字コードが所定の文字又は所定の文字種であるか否かにより、前記印刷データのページが前記セパレータであるか否かを特定することを特徴とする請求項１に記載の中継装置。
【請求項３】
前記印刷ジョブの識別情報の文字列に含まれる文字ごとに前記セパレータ上で文字コードをサンプリングする行の位置および桁の位置が定義されたセパレータ情報記憶部をさらに有し、
前記第２の特定部は、前記印刷ジョブの識別情報の文字列に含まれる文字ごとに、前記印刷データに含まれる行データのうち前記セパレータ情報の行の位置に対応する行データにおいて前記セパレータ情報の桁の位置に対応する文字コードをサンプリングし、前記文字ごとにサンプリングされた文字コードを前記文字列に組み立てることにより、前記印刷ジョブの識別情報を特定することを特徴とする請求項１に記載の中継装置。
【請求項４】
前記第１の特定部は、前記セパレータが特定されてから前記印刷データに含まれる改ページの制御コードが検出される回数を計測することにより、前記印刷ジョブの総ページ数をさらに特定し、
前記記録部は、前記印刷ジョブの総ページ数をさらに関連付けて記録することを特徴とする請求項１、２または３に記載の中継装置。
【請求項５】
前記印刷データが改ページコードによりページ単位に区切られた印刷ページデータから印刷イメージデータを生成する生成部と、
前記印刷イメージデータが前記プリンタ装置で印刷される印刷状況を監視する監視部とをさらに有し、
前記記録部は、前記印刷状況に対応する印刷ジョブの状態と、前記印刷ジョブの識別情報とを関連付けて記録することを特徴とする請求項１〜４のいずれか１つに記載の中継装置。
【請求項６】
前記監視部により前記プリンタ装置における障害の発生が検知された場合、前記記録部により記録された印刷ジョブの識別情報を前記ホスト機に接続される入出力装置に出力することを特徴とする請求項５に記載の中継装置。
【請求項７】
前記監視部により前記プリンタ装置における障害の発生が検知された場合、前記記録部により記録された印刷ジョブの識別情報に対応する印刷イメージデータを前記プリンタ装置へ再送することにより、再印刷を行う再印刷実行部をさらに有することを特徴とする請求項５に記載の中継装置。
【請求項８】
ホスト機から受け取った印刷データのページがセパレータであるか否かを特定し、
前記セパレータであると特定された印刷データから印刷ジョブの識別情報を特定し、
前記印刷ジョブの識別情報と、前記ホスト機からプリンタ装置へ中継する印刷データとを関連付けて記録する、
処理をコンピュータが実行することを特徴とする中継方法。
【請求項９】
ホスト機から受け取った印刷データのページがセパレータであるか否かを特定し、
前記セパレータであると特定された印刷データから印刷ジョブの識別情報を特定し、
前記印刷ジョブの識別情報と、前記ホスト機からプリンタ装置へ中継する印刷データとを関連付けて記録する、
処理をコンピュータに実行させることを特徴とする中継プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、中継装置、中継方法及び中継プログラムに関する。
【背景技術】
【０００２】
基幹業務システムなどに用いられる大型のコンピュータシステムでは、一側面として、ホスト機用のプリンタ装置により印刷が実現される場合がある。ここで言う「コンピュータシステム」は、メインフレーム、ホストコンピュータあるいは汎用機などと呼ばれる場合もある。これらを総称して以下では「ホスト機」と記載する場合がある。
【０００３】
このホスト機用のプリンタ装置は、ホスト機のＩ／Ｏ（Input／Output）制御を行うチャネルに接続される。例えば、チャネルは、ホスト機からプリンタ装置へ印刷ジョブが供給された場合、当該印刷ジョブで指定されるページ数と、プリンタ装置で印刷されたページ数とを比較することにより、印刷状況を監視する。このとき、印刷ジョブの実行中にプリンタ装置で障害の発生が検出された場合、チャネルは、当該印刷ジョブの再送などの対応を実施することができる。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１４−４９７７４号公報
【特許文献２】特開２００３−１３６７８５号公報
【特許文献３】特開２００２−３３９２３号公報
【特許文献４】特開２００８−２０１０５７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、上記の技術では、ホスト機に汎用のプリンタ装置が接続される場合、障害がある印刷ジョブを認識することができないことがある。
【０００６】
すなわち、ホスト機のチャネルは、専用のプリンタ装置との間で独自のプロトコルがインタフェースとして採用されることがあり、汎用のプリンタ装置が提供するインタフェースに対応しないホスト機も多い。このようなホスト機に汎用のプリンタ装置が接続される場合、ホスト機がプリンタ装置へ供給する印刷ジョブのうちいずれの印刷ジョブに障害があるのかは認識できない。そうであるからと言って、基幹業務システム等が運用されるホスト機では、汎用のプリンタ装置が提供するインタフェースに対応するための改修を実施する時間と労力のコストが高く、ホスト機の改修を実施するのが実質的に困難な場合がある。
【０００７】
１つの側面では、本発明は、ホスト機の改修なしに障害がある印刷ジョブの認識を実現できる中継装置、中継方法及び中継プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００８】
一態様では、中継装置は、ホスト機から受け取った印刷データのページがセパレータであるか否かを特定する第１の特定部と、前記セパレータであると特定された印刷データから印刷ジョブの識別情報を特定する第２の特定部と、前記印刷ジョブの識別情報と、前記ホスト機からプリンタ装置へ中継する印刷データとを関連付けて記録する記録部と、を有する。
【発明の効果】
【０００９】
ホスト機の改修なしに障害がある印刷ジョブの認識を実現できる。
【図面の簡単な説明】
【００１０】
【図１】図１は、実施例１に係る印刷システムの一例を示す図である。
【図２】図２は、印刷データの一例を示す図である。
【図３】図３は、印刷イメージデータの一例を示す図である。
【図４】図４は、印刷シーケンスの一例を示す図である。
【図５】図５は、セパレータの一例を示す図である。
【図６】図６は、実施例１に係る中継装置の機能的構成を示すブロック図である。
【図７】図７は、データ通知処理の手順の一例を示すフローチャートである。
【図８】図８は、行データ関連処理の手順の一例を示すフローチャートである。
【図９】図９は、セパレータ特定部の機能的構成を示すブロック図である。
【図１０】図１０は、セパレータに対応する印刷データの一例を示す図である。
【図１１】図１１は、定義データの一例を示す図である。
【図１２】図１２は、数字の花文字の一覧を示す図である。
【図１３】図１３は、英字の花文字の一覧を示す図である。
【図１４】図１４は、セパレータ特定テーブルの構成例を示す図である。
【図１５】図１５は、ジョブ特定テーブルの構成例を示す図である。
【図１６】図１６は、フラグ設定処理の手順の一例を示すフローチャートである。
【図１７】図１７は、第１の特定処理の手順の一例を示すフローチャートである。
【図１８】図１８は、第２の特定処理の手順の一例を示すフローチャートである。
【図１９】図１９は、ジョブ管理部の機能的構成を示すブロック図である。
【図２０】図２０は、ジョブ状態の遷移の一例を示す図である。
【図２１】図２１は、ジョブ管理キューの一例を示す図である。
【図２２】図２２は、ジョブ管理キューの一例を示す図である。
【図２３】図２３は、ジョブ管理テーブルの一例を示す図である。
【図２４】図２４は、印刷イメージデータ処理部の機能的構成を示すブロック図である。
【図２５】図２５は、ジョブ番号の特定から印刷イメージデータのスプールまでの処理に関するシーケンスの一例を示す図である。
【図２６】図２６は、ジョブ管理テーブルの構成例を示す図である。
【図２７】図２７は、ディレクトリ構造の一例を示す図である。
【図２８】図２８は、ディレクトリ構造の一例を示す図である。
【図２９】図２９は、ディレクトリ構造の一例を示す図である。
【図３０】図３０は、印刷シーケンスの一例を示す図である。
【図３１】図３１は、印刷シーケンスの一例を示す図（１）である。
【図３２】図３２は、印刷シーケンスの一例を示す図（２）である。
【図３３】図３３は、印刷状況監視処理の手順の一例を示すフローチャートである。
【図３４】図３４は、ジョブ管理処理の手順の一例を示すフローチャートである。
【図３５】図３５は、実施例１及び実施例２に係る中継プログラムを実行するコンピュータのハードウェア構成例を示す図である。
【発明を実施するための形態】
【００１１】
以下に添付図面を参照して本願に係る中継装置、中継方法及び中継プログラムについて説明する。なお、この実施例は開示の技術を限定するものではない。そして、各実施例は、処理内容を矛盾させない範囲で適宜組み合わせることが可能である。
【実施例１】
【００１２】
［印刷システムの構成］
図１は、実施例１に係る印刷システムの一例を示す図である。図１に示すように、印刷システム１には、ホスト機１０と、中継装置３０と、プリンタ装置５０とが含まれる。
【００１３】
ホスト機１０は、基幹業務システムなどに用いられるコンピュータシステムである。ここで言う「コンピュータシステム」には、一例として、メインフレーム、ホストコンピュータあるいは汎用機などがその範疇に含まれる。
【００１４】
プリンタ装置５０は、イメージデータを所定の媒体に印刷する装置である。このプリンタ装置５０には、いわゆるメインフレーム専用のプリンタ装置を採用せずともよく、汎用のプリンタ装置を採用できる。すなわち、プリンタ装置５０には、ホスト機のＩ／Ｏ（Input／Output）制御を行うチャネルと接続するための独自のインタフェースを有さずともかまわず、汎用のネットワーク対応のプリンタ装置を採用することができる。
【００１５】
このように汎用のプリンタ装置がプリンタ装置５０としてホスト機１０に接続される場合、ホスト機１０がプリンタ装置５０へ供給する印刷ジョブに障害が発生すると、いずれの印刷ジョブに障害があるのかが認識できない事態に陥る。
【００１６】
このような障害がある印刷ジョブの認識をホスト機１０の改修なしに実現するために、本実施例に係る印刷システム１では、ホスト機１０及びプリンタ装置５０を接続する中継装置３０が実装される。
【００１７】
中継装置３０は、ホスト機１０から送出される印刷データをプリンタ装置５０に中継する装置である。一側面として、中継装置３０は、メインフレーム専用のプリンタ装置と同様に、シリアル転送の光チャネルリンク２を介してホスト機１０のＩ／Ｏ制御を行うチャネルと接続される。他の側面として、中継装置３０は、任意のネットワーク４を介してプリンタ装置５０と接続される。なお、ネットワークには、有線または無線を問わず、インターネットを始め、ＬＡＮ（Local  Area  Network）やＶＰＮ（Virtual  Private  Network）などの任意の種類の通信網を採用できる。
【００１８】
ここで、ホスト機１０の改修が行われない場合、印刷ジョブがホスト機１０側で管理される現状の下、ホスト機１０から中継装置３０へ印刷データが送出される。このように、ホスト機１０から送出される印刷データには、文字、バーコード、画像データ、図形、オーバレイや改ページ等の各種の制御コードのように、印刷に用いるデータしか含まれない。それ故、中継装置３０は、ホスト機１０により発行された印刷データから印刷ジョブを認識することはできない。
【００１９】
図２は、印刷データの一例を示す図である。図２には、ジョブＡに関する各ページの印刷データが示されている。さらに、図２には、ジョブＡの１ページ目から１０ページ目までの印刷データのうち１ページ目の印刷データの構造例が抜粋して示されている。図２に示すように、１ページ目の印刷データには、行ごとに文字、バーコードや画像などの各種の制御コードが含まれると共に、最終行には改ページコードが含まれる。図２に示す１ページ目の印刷データが印刷される場合、図３に示す印刷イメージデータが得られる。
【００２０】
図３は、印刷イメージデータの一例を示す図である。図３に示すように、１ページ目の１行目には、図２に示す文字コマンドの座標にしたがって文字列「ＡＢＣＤ」とそれに継続する文字列「ＰＲＩＮＴ＿ＤＡＴＡ」とが描画される。２行目には、図２に示す文字コマンドの座標にしたがって文字列「ＰＲＩＮＴ＿ＤＡＴＡ」が描画される。これに後続して、バーコードコマンドにしたがってバーコードがさらに描画される。さらに後続して、太陽と月のマークを表す画像が描画される。なお、図３には、ホスト機から指定される改行コードの図示が省略されている。
【００２１】
図４は、印刷シーケンスの一例を示す図である。図４には、ホスト機１０から送出されるジョブＡ及びジョブＢの印刷データが中継装置３０を介してプリンタ装置５０へ中継される場合の印刷シーケンスが示されている。図４に示す通り、ホスト機１０から中継装置３０へジョブＡの各ページの印刷データが送出されると共に、ジョブＡの各ページの印刷データに後続してジョブＢの各ページの印刷データが送出される。これにより、中継装置３０では、ページごとに印刷データが取得される度に、印刷データから印刷イメージデータを生成した上で印刷イメージデータがプリンタ装置５０へ伝送される。例えば、ジョブＡの１ページ目の印刷データがホスト機１０から中継装置３０へ伝送された場合、図２に示す印刷データから図３に示す印刷イメージデータが中継装置３０により生成された後、印刷イメージデータが中継装置３０からプリンタ装置５０へ伝送される。これらジョブＡ及びジョブＢの印刷データの送出が終了した後、ジョブＡの印刷状況の問合せ及びジョブＢの印刷状況の問合せがホスト機１０から中継装置３０へ行われる。
【００２２】
その後、中継装置３０が印刷状況を確認するために、ホスト機１０からの印刷データを参照することができるが、その印刷データには、図２に例示する通り、文字、バーコード、画像や改ページなどの制御コードが含まれるに過ぎない。それ故、ホスト機１０側でチャネルが中継装置３０へ送出する印刷データのジョブを特定することはできても、中継装置３０側で中継装置３０がプリンタ装置５０へ送出する印刷イメージデータのジョブを特定することはできない。すなわち、図４に示す例では、ホスト機１０からジョブＡ及びジョブＢの印刷データが送出されるが、中継装置３０はプリンタ装置５０へ送出する印刷イメージデータのジョブは特定できない。
【００２３】
このような状況の下、印刷状況、例えば印刷完了や印刷障害などに関する通知がプリンタ装置５０から中継装置３０へ行われたとしても、中継装置３０側でプリンタ装置５０から受け取った通知がいずれのジョブに関する通知であるのかを特定するのは困難である。例えば、図４の例で言えば、ある印刷イメージデータの印刷時にジャム等の障害が発生したとしても、その障害がジョブＡまたはジョブＢのいずれのジョブで障害が発生したのかを特定することはできない。また、図４の例とは異なり、ホスト機１０から送出されたジョブが仮に１つであったとしても、ホスト機１０から送出されたジョブが１つであるという事実を中継装置３０側で特定することはできない。それ故、中継装置３０は、障害が発生したジョブをホスト機１０へ通知することもできず、ホスト機１０からホスト機１０にチャネル接続されたコンソールへ障害が発生したジョブの再印刷を促すメッセージ等を出力することも困難になる。このように、ホスト機１０側の改修が実施されない場合、障害が発生したジョブの再送などの対応を実施することが困難になる。
【００２４】
このことから、本実施例では、ホスト機１０の改修なしに障害があるジョブを中継装置３０に認識させるために、ホスト機１０が標準装備する「セパレータ」と呼ばれるページを印刷する機能をジョブの特定に利用する。
【００２５】
ここで言う「セパレータ」とは、印刷ジョブを分離するページを指す。例えば、所定のフォーマットにしたがってジョブ番号を含む各種の情報が印刷媒体、例えば用紙上に印刷されたセパレータが印刷ジョブの先頭、最後もしくはその両方に挿入される。以下では、あくまで一例として、文字をドット代わりに用いて配列することにより同一の文字の形状が一回り大きいサイズで表現された装飾文字、いわゆる花文字を用いて、ジョブ番号に対応する文字列に含まれる各文字が印刷される場合を例示して説明を行うこととする。
【００２６】
図５は、セパレータの一例を示す図である。図５には、ジョブ番号が「Ｊ１２３４」である印刷ジョブのセパレータが示されている。図５に示すように、セパレータには、上から順に、ジョブ番号の花文字、印刷開始時間、印刷終了時間が配置されたフォーマットが採用されている。図５に示す通り、ジョブ番号の花文字には、ジョブ番号に対応する文字列に含まれる文字や記号などのシンボルごとに、当該シンボルがシンボルの輪郭を形成する構成要素として用いられる。例えば、ジョブ番号「Ｊ１２３４」のうち「Ｊ」の花文字は、文字「Ｊ」をドットに見立て文字「Ｊ」が連なる配列形状が文字「Ｊ」の字体を象るように文字「Ｊ」を配置することにより形成される。この他、ジョブ番号「Ｊ１２３４」に含まれる数字「１」、「２」、「３」及び「４」についても、同様にして花文字が形成される。図５には、英数字の花文字が例示されているが、他の種類の文字、例えばひらがな、カタカナ及び漢字などの他、他の記号、例えば句読点、疑問符、感嘆符、終止符や引用符なども同様にして花文字を形成することができる。
【００２７】
このようなセパレータの印刷データがホスト機１０から中継装置３０へ送出される場合、中継装置３０がセパレータに含まれるジョブ番号を特定することにより、印刷イメージデータが属するジョブが中継装置３０に認識された状態で中継装置３０からプリンタ装置５０への印刷イメージデータの伝送を実施することができる。ジョブ番号の特定方法の詳細は後述するが、セパレータのフォーマットは、予め定められた既知のものである上、セパレータの印刷データは、テキストデータである。このため、改ページコードが検出される度に次のページの一部、例えば数行のデータを参照すれば、そのページがセパレータであるのかを特定することができる。そして、ページがセパレータである場合、セパレータの書式にしたがってジョブ番号が記述された領域を特定することにより、ジョブ番号も特定することができる。
【００２８】
［中継装置３０の構成］
図６は、実施例１に係る中継装置３０の機能的構成を示すブロック図である。図６に示すように、中継装置３０は、印刷データ処理部３１と、セパレータ特定部３２と、ジョブ管理部３３と、印刷イメージデータ処理部３４とを有する。
【００２９】
図６に示す印刷データ処理部３１、セパレータ特定部３２、ジョブ管理部３３及び、印刷イメージデータ処理部３４などの機能部は、ＭＰＵ（Micro  Processing  Unit）やＣＰＵ（Central  Processing  Unit）などのプロセッサにより仮想的に実現される。すなわち、プロセッサがＲＡＭ（Random  Access  Memory）等のメモリ上に上記ジョブ番号を実行する中継プログラムをプロセスとして展開することにより、上記の機能部が仮想的に実現される。ここでは、プロセッサの一例として、ＣＰＵやＭＰＵを例示したが、汎用型および特化型を問わず、任意のプロセッサにより上記の機能部が実現されることとしてもかまわない。この他、上記の機能部は、ＡＳＩＣ（Application  Specific  Integrated  Circuit）やＦＰＧＡ（Field  Programmable  Gate  Array）などのハードワイヤードロジックによって実現されることとしてもかまわない。
【００３０】
また、図６には、上記の機能部および上記の機能部に対するデータの入出力の関係を表す実線が例示されているが、これはあくまで例示であり、中継装置３０の機能的構成が図６に示す例以外の機能的構成を有することを妨げない。すなわち、中継装置３０は、上記の機能部以外の他の機能部を有することとしてもかまわない。例えば、中継装置３０は、図６では図示が省略されているが、中継装置３０及び他の装置の間を接続する通信インタフェース、例えば光チャネルリンク２に接続するためのインタフェースやネットワーク４に接続するためのインタフェースなどを有することができる。また、図６に示すデータの入出力の関係は、少なくとも一方から他方へデータが伝送されることが示されており、必ずしも双方向にデータの授受が行われずともかまわない。
【００３１】
［印刷データ処理部３１］
印刷データ処理部３１は、ホスト機１０から送出される印刷データに各種の処理を実行する処理部である。
【００３２】
一実施形態として、印刷データ処理部３１は、ホスト機１０から送出される印刷データを図示しない光チャネルリンク２に接続するインタフェースを介して受信する。その後、印刷データ処理部３１は、ホスト機１０から受信された印刷データをページごとまたは行ごとにセパレータ特定部３２および印刷イメージデータ処理部３４へ出力する。ここで、印刷イメージデータの生成には、オーバレイ、画像、図形、バーコードや文字などの全ての種類のデータが用いられる一方で、セパレータの特定には、文字コードを含む行データが用いられる。なぜなら、セパレータは、テキストデータであるので、オーバレイ、画像、図形やバーコードなどの制御コードはセパレータに含まれないからである。このことから、印刷データ処理部３１は、ホスト機１０から受信された印刷データをそのまま印刷イメージデータ処理部３４へ通知する一方で、セパレータ特定部３２には通知するデータと通知しないデータを取捨選択して通知を行う。
【００３３】
［データ通知処理］
以下、図７及び図８を用いて、印刷データ処理部３１がセパレータ特定部３２および印刷イメージデータ処理部３４へデータを通知するデータ通知処理について説明する。図７は、データ通知処理の手順の一例を示すフローチャートである。図７に示す処理は、一例として、ホスト機１０から印刷データが受信された場合に実行される。図７に示すように、印刷データ処理部３１は、ホスト機１０から受信された印刷データに含まれる制御コードの種類を解析し、当該印刷データに含まれる制御コードの種類が「オーバレイ」であるか否かを判定する（ステップＳ１０１）。
【００３４】
このとき、制御コードの種類が「オーバレイ」でない場合（ステップＳ１０１Ｎｏ）、印刷データ処理部３１は、制御コードの種類が「画像」であるか否かをさらに判定する（ステップＳ１０２）。そして、制御コードの種類が「画像」でもない場合（ステップＳ１０２Ｎｏ）、印刷データ処理部３１は、制御コードの種類が「図形」であるか否かをさらに判定する（ステップＳ１０３）。また、制御コードの種類が「図形」でもない場合（ステップＳ１０３Ｎｏ）、印刷データ処理部３１は、制御コードの種類が「バーコード」であるか否かをさらに判定する（ステップＳ１０４）。
【００３５】
ここで、制御コードの種類が「バーコード」でもない場合（ステップＳ１０４Ｎｏ）、解析中の制御コードの種類が「文字」、「改行」又は「改ページ」であることが判明する。この場合、印刷データ処理部３１は、改行コード、改ページコード、又は、文字コードからそれに後続して出現する改行コードまでの一連のコードを含む行データに対し、図８を用いて後述する「行データ関連処理」を実行する（ステップＳ１０５）。その後、印刷データ処理部３１は、行データ等を印刷イメージデータ処理部３４へ送信し（ステップＳ１０６）、処理を終了する。
【００３６】
一方、制御コードの種類が「オーバレイ」、「画像」、「図形」または「バーコード」である場合（ステップＳ１０１Ｙｅｓ、ステップＳ１０２Ｙｅｓ、ステップＳ１０３Ｙｅｓ又はステップＳ１０４Ｙｅｓ）、オーバレイ、画像、図形又はバーコードの制御コードが印刷データ処理部３１により印刷イメージデータ処理部３４へ送信される（ステップＳ１０６）。これによって、印刷イメージデータ処理部３４では、オーバレイ、画像、図形またはバーコードが描画された描画データが生成される。
【００３７】
なお、図７に示すステップＳ１０１〜ステップＳ１０６の処理は、ホスト機１０から受信した印刷データに含まれる最後の制御コードが解析されるまで繰り返し行われる。
【００３８】
［行データ関連処理］
図８は、行データ関連処理の手順の一例を示すフローチャートである。図８に示す処理は、図７に示すステップＳ１０４の分岐でＮｏと判定された場合に実行される。図８に示すように、制御コードの種類が改ページでない場合（ステップＳ２０１Ｎｏ）、印刷データ処理部３１は、前回の改ページコードが検出されてからの行数が所定の用紙長を超えるか否かを判定する（ステップＳ２０２）。
【００３９】
このとき、前回の改ページコードが検出されてからの行数が所定の用紙長を超える場合（ステップＳ２０２Ｙｅｓ）、行データに対応する描画を現在のページに続く次のページに実施させる必要がある。このため、印刷データ処理部３１は、ホスト機１０の代わりに中継装置３０の内部で改ページコードを生成し（ステップＳ２０３）、当該改ページコードをセパレータ特定部３２へ送信する（ステップＳ２０４）。
【００４０】
これと共に、印刷データ処理部３１は、印刷イメージデータ処理部３４へ送信する改ページコードを生成する（ステップＳ２０５）。そして、印刷データ処理部３１は、ステップＳ２０４の改ページコードの挿入により次のページに改められた後、セパレータの特定に用いられる行データをセパレータ特定部３２へ送信する（ステップＳ２０６）。続いて、印刷データ処理部３１は、印刷イメージデータ処理部３４へ送信する行データを生成し（ステップＳ２０７）、処理を終了する。
【００４１】
このように、ステップＳ２０２Ｙｅｓの分岐を経由する場合、図７に示したステップＳ１０６では、ステップＳ２０５で生成された改ページコードと共に、ステップＳ２０７で生成された行データが印刷イメージデータ処理部３４へ送信される。
【００４２】
一方、前回の改ページコードが検出されてからの行数が所定の用紙長を超えない場合（ステップＳ２０２Ｎｏ）、行データに対応する描画を次のページに改めずともかまわない。この場合、印刷データ処理部３１は、ステップＳ２０３〜ステップＳ２０５の処理をスキップし、セパレータの特定を実施させるための行データをセパレータ特定部３２へ送信し（ステップＳ２０６）、印刷イメージデータ処理部３４へ送信する行データを生成し（ステップＳ２０７）、処理を終了する。
【００４３】
このように、ステップＳ２０２Ｎｏの分岐を経由する場合、図７に示すステップＳ１０６では、改ページコードは挿入されず、ステップＳ２０７で生成された行データだけが印刷イメージデータ処理部３４に送信される。
【００４４】
また、制御コードの種類が改ページである場合（ステップＳ２０１Ｙｅｓ）、印刷データ処理部３１は、セパレータの特定に用いられる改ページコードをセパレータ特定部３２へ送信する（ステップＳ２０８）。続いて、印刷データ処理部３１は、印刷イメージデータ処理部３４へ送信する改ページコードを生成し（ステップＳ２０９）、処理を終了する。
【００４５】
［セパレータ特定部３２］
セパレータ特定部３２は、ホスト機１０から受け取った印刷データから当該印刷データに割り当てられた印刷ジョブの識別情報を特定する処理部である。
【００４６】
図９は、セパレータ特定部３２の機能的構成を示すブロック図である。図９に示すように、セパレータ特定部３２は、セパレータ情報記憶部３２Ａと、第１の特定部３２Ｂと、第２の特定部３２Ｃとを有する。
【００４７】
セパレータ情報記憶部３２Ａは、セパレータの特定及びジョブ番号の特定に用いられるセパレータ情報を記憶する記憶部である。
【００４８】
一実施形態として、セパレータ情報記憶部３２Ａの実装には、ＭＰＵやＣＰＵなどのハードウェアプロセッサが読取可能なＲＡＭ等のメモリ上のワークエリアの一部を用いることができる。このような主記憶装置に限らず、セパレータ情報記憶部３２Ａの実装には、ＭＰＵやＣＰＵなどのハードウェアプロセッサが読取可能なＳＳＤ（Solid  State  Drive）を始め、ＨＤＤ（Hard  Disk  Drive）や光ディスクなどの補助記憶装置が有する記憶領域の一部を用いることとしてもかまわない。この他、セパレータ情報記憶部３２Ａの実装には、ＭＰＵやＣＰＵなどのハードウェアプロセッサがアクセス可能なリームバブルメディアの記憶領域の一部を用いることとしてもかまわない。
【００４９】
ここでは、一例として、図５に示すセパレータがジョブの先頭に挿入される場合に用いられるセパレータ情報の生成方法について例示する。例えば、図５に示すセパレータがジョブの先頭に挿入されるとしたとき、セパレータ特定部３２には、図１０に示す印刷データが印刷データ処理部３１から送信されることになる。
【００５０】
図１０は、セパレータに対応する印刷データの一例を示す図である。図１０に示すセパレータには、ジョブ番号を表す花文字「Ｊ１２３４」と、印刷開始時間「ＪＯＢ  ＳＴＡＲＴ  ２０１５  ０９：００：００」と、印刷終了時間「ＪＯＢ  ＥＮＤ  ２０１５  ０９：０２：１７」との３つのパーツが含まれる。
【００５１】
このようなセパレータがジョブの先頭に挿入される場合、一例として、下記（１）〜（５）の５つの条件を満たすか否かにより、ホスト機１０から送出される印刷データが改ページコードによりページ単位に区切られた印刷ページデータごとにセパレータであるか否かを特定することができる。
【００５２】
（１）１行目における５桁目の文字が半角の「Ｊ」であり、かつ以降の文字が半角スペースまたは数値であること
（２）５行目における１桁目と５桁目の文字が半角の「Ｊ」であり、かつ以降の文字が半角スペースまたは数値であること
（３）７行目における２桁目〜４桁目の文字が半角の「Ｊ」であり、かつ以降の文字が半角スペースまたは数値であること
（４）１０行目における１桁目〜９桁目の文字が「ＪＯＢ  ＳＴＡＲＴ」であること
（５）１５行目における１桁目〜７桁目の文字が「ＪＯＢ  ＥＮＤ」であること
【００５３】
さらに、ページがセパレータであると特定された上で、セパレータと特定された印刷ページデータからは、一例として、次のようにしてジョブ番号を特定することができる。すなわち、７行目の１、２、３、４、１０、１１、１２、１３、１６、１７、１８、１９、２２、２３、２４、２５、２８、２９、３０及び３１の各桁に含まれる文字コードを収集することによりジョブ番号に含まれる各文字を抽出した上で、ジョブ番号の文字列を組み立てる。
【００５４】
これらセパレータの特定及びジョブ番号の特定を実現するアルゴリズムが定義されたデータを図１１に示す。図１１は、定義データの一例を示す図である。図１１に示す定義データは、ジョブ番号がジョブの頭文字「Ｊ」と４桁の数字とにより命名される規則の下、セパレータの特定及びジョブ番号の特定を実現するアルゴリズムが定義されている。
【００５５】
ここで、図１１に示すマーク「□」は、空白を表す。図１１に示すマーク「△」は、行データの１桁目から開始される指定文字列の比較を終了する位置であり、かつ文字種の判定を開始する位置であることを意味する。図１１に示すマーク「▽」は、指定文字列の比較または文字種の判定を終了する位置であることを意味する。図１１に示すマーク「◇」は、行データに含まれる文字のサンプリングを実施する行であると共に、指定文字列の比較または文字種の判定を終了する位置であることを表す。図１１に示す英大文字「Ｅ」は、セパレータデータの終了を意味する。図１１に示す薄いハッチングは、ジョブ番号の花文字が印刷される範囲を指す。図１１に示す濃いハッチングは、ジョブ番号を組み立てるために、行データから文字をサンプリングする桁の位置を指す。
【００５６】
図１１に示す定義データの例で言えば、１行目、５行目、７行目、１０行目及び１５行目で指定文字列の比較および文字種の判定、又は、指定文字列の比較を実行することが定義されている。
【００５７】
例えば、１行目の行データの場合、１行目の行データの１桁目から５桁目までの５文字と、次のような指定文字列とが比較される。すなわち、セパレータページの１行目では、ジョブ番号の先頭に付与される頭文字「Ｊ」の花文字の構成要素が５桁目に出現する。このことから、行データに含まれる１桁目から４桁目の文字コードがスペースに対応し、かつ５桁目の文字コードが「Ｊ」に対応するか否か、すなわち１桁目から５桁目の文字が指定文字列「□□□□Ｊ」と一致するか否かが判定される。さらに、１行目の行データの６桁目から３３桁目までの文字種がジョブ番号のうち頭文字「Ｊ」を除く４桁の数字もしくは数字間を埋めるスペースであるか否かも判定される。
【００５８】
５行目の行データの場合、５行目の行データの１桁目から５桁目までの５文字と、次のような指定文字列とが比較される。すなわち、セパレータページの５行目では、ジョブ番号の先頭に付与される頭文字「Ｊ」の花文字の構成要素が１桁目および５桁目に出現する。このことから、行データに含まれる１桁目の文字コードが「Ｊ」に対応し、２桁目から４桁目までの文字コードがスペースに対応し、かつ５桁目の文字コードが「Ｊ」に対応するか否か、すなわち１桁目から５桁目の文字が指定文字列「Ｊ□□□Ｊ」と一致するか否かが判定される。さらに、５行目の行データの６桁目から３３桁目までの文字種がジョブ番号のうち頭文字「Ｊ」を除く４桁の数字もしくは数字間を埋めるスペースであるか否かも判定される。
【００５９】
７行目の行データの場合、７行目の行データの１桁目から５桁目までの５文字と、次のような指定文字列とが比較される。すなわち、セパレータページの７行目では、ジョブ番号の先頭に付与される頭文字「Ｊ」の花文字の構成要素が２桁目、３桁目および４桁目に連続して出現する。このことから、行データに含まれる１桁目の文字コードがスペースに対応し、２桁目から４桁目までの文字コードが「Ｊ」に対応し、かつ５桁目の文字コードがスペースに対応するか否か、すなわち１桁目から５桁目の文字が指定文字列「□ＪＪＪ□」と一致するか否かが判定される。さらに、７行目の行データの６桁目から３３桁目までの文字種がジョブ番号のうち頭文字「Ｊ」を除く４桁の数字もしくは数字間を埋めるスペースであるか否かも判定される。
【００６０】
１０行目の行データの場合、１０行目の行データの１桁目から９桁目までの９文字と、次のような指定文字列とが比較される。すなわち、セパレータページの１０行目からは、印刷開始時間の打ち出しを開始し、印刷開始時間の６０進数の数値の前段に「ＪＯＢ□ＳＴＡＲＴ」の見出しが付与されることがフォーマットで規定されている。このことから、１０行目の行データに含まれる１桁目から９桁目の文字が指定文字列「ＪＯＢ□ＳＴＡＲＴ」と一致するか否かが判定される。
【００６１】
１５行目の行データの場合、１５行目の行データの１桁目から７桁目までの７文字と、次のような指定文字列とが比較される。すなわち、セパレータページの１５行目からは、印刷終了時間の打ち出しを開始し、印刷終了時間の６０進数の数値の前段に「ＪＯＢ□ＥＮＤ」の見出しが付与されることがフォーマットで規定されている。このことから、１５行目の行データに含まれる１桁目から７桁目の文字が指定文字列「ＪＯＢ□ＥＮＤ」と一致するか否かが判定される。
【００６２】
これら１行目、５行目、７行目、１０行目及び１５行目の全ての行で行データに含まれる文字列と指定文字列とが一致し、かつ文字種が数字またはスペースである場合、改ページコードに後続する各行データがセパレータに対応する印刷データである可能性が高いと識別できる。
【００６３】
また、図１１に示す定義データの例で言えば、濃いハッチングで示された通り、７行目の１桁目〜４桁目、１０桁目〜１３桁目、１６桁目〜１９桁目、２２桁目〜２５桁目および２８桁目〜３１桁目で文字コードのサンプリングを実施することが定義されている。
【００６４】
このようなサンプリングの桁位置の絞り込みには、花文字の構成要素となる数字または英字が図１１に濃いハッチングで示された４桁分の範囲に少なくとも１文字以上含まれるという英数字の花文字の特性が利用される。
【００６５】
図１２は、数字の花文字の一覧を示す図である。図１２には、７行×５桁の範囲のブロックに数字をドット状に配置することにより、数字「０」〜「９」の花文字が形成される例が示されている。図１２に示すように、数字「０」〜「９」のいずれの花文字の場合でも、７行目の１桁目〜４桁目のブロックの少なくともいずれか１つのブロックにドットとして用いる数字が含まれることがわかる。
【００６６】
図１３は、英字の花文字の一覧を示す図である。図１３には、７行×５桁の範囲のブロックに大文字のアルファベットをドット状に配置することにより、アルファベット「Ａ」〜「Ｚ」の花文字が形成される例が示されている。図１３に示すように、アルファベット「Ａ」〜「Ｚ」のいずれの花文字の場合でも、７行目の１桁目〜４桁目のブロックの少なくともいずれか１つのブロックにドットとして用いる英字が含まれることがわかる。
【００６７】
これらのことから、花文字から花文字の構成要素の文字を抽出するには、必ずしも花文字が印刷される範囲の全体から文字コードをサンプリングせずともよく、ジョブ番号の採番に使用されうる文字種の間で花文字の構成要素が共通して配置される桁位置、例えば図１１に示す濃いハッチング部分に絞り込んで文字コードのサンプリングを実施できることがわかる。
【００６８】
上記の定義データは、所定の変換プログラムを用いることにより、コンピュータがセパレータの特定およびジョブ番号の特定に使用しやすいテーブル形式のデータへ変換することができる。
【００６９】
例えば、図１１に示す定義データは、上記の変換プログラムへの入力を通じて、図１４に示すセパレータ特定テーブル３２Ａ１と、図１５に示すジョブ特定テーブル３２Ａ２とへ変換することができる。
【００７０】
図１４は、セパレータ特定テーブル３２Ａ１の構成例を示す図である。図１４に示すように、セパレータ特定テーブル３２Ａ１には、図１１を用いて説明を行った指定文字列の比較および図１１を用いて説明を行った文字種の判定に用いる情報が定義されている。具体的には、セパレータ特定テーブル３２Ａ１には、行、比較文字数、指定文字列、判定開始位置、判定終了位置、正規表現およびサンプリングフラグなどの項目が含まれる。
【００７１】
ここで言う「行」とは、改ページコードの直後に続く先頭の行データからの行数により識別される行インデックスを指す。また、「比較文字数」とは、指定文字列との比較を行う文字数を指す。また、「指定文字列」とは、行データと比較する文字列を指し、図１１に示す定義データにより指定される。また、「判定開始位置」とは、文字種の判定を開始する位置を指す。また、「判定終了位置」とは、文字種の判定を終了する位置を指す。これら判定開始位置および判定終了位置は、一例として、ページの側端の一方から他方へ水平方向に起算される桁数により表される。また、「正規表現」とは、１または複数の文字種が正規化された文字列を指し、例えば、図１４に示す“［０−９￥ｓ］”は、数字またはスペースを表す正規表現である。また、「サンプリングフラグ」とは、文字コードのサンプリングを実施するか否かを定める変数を指す。例えば、「０」または「１」の２値が設定されるとしたとき、フラグが「０」であるならばサンプリングが無効とされる一方で、フラグが「１」であるならばサンプリングが有効とされる。
【００７２】
図１５は、ジョブ特定テーブル３２Ａ２の構成例を示す図である。図１５に示すように、ジョブ特定テーブル３２Ａ２には、サンプリングが行われた文字をジョブ番号に組み立てるのに用いる情報が定義されている。具体的には、ジョブ特定テーブル３２Ａ２には、ジョブ名長さ、サンプル数およびサンプルの桁位置などの項目が含まれる。ここで言う「ジョブ名長さ」とは、ジョブ名の長さを指し、例えば、ジョブ番号の文字列を構成する文字の総数により表現される。また、「サンプル数」とは、ジョブ番号の文字列を構成する文字１つにつきサンプリングが実施される回数を指す。また、「サンプル桁位置」とは、サンプリングが実施された桁位置を指す。
【００７３】
これらセパレータ特定テーブル３２Ａ１及びジョブ特定テーブル３２Ａ２がセパレータ情報としてセパレータ情報記憶部３２Ａに登録される。例えば、セパレータ情報は、中継装置３０が出荷されるまでの過程でセパレータ情報記憶部３２Ａに登録しておくことができる。この他、中継装置３０に接続された図示しない外部装置から任意のタイミングで配信されたセパレータ情報をセパレータ情報記憶部３２Ａに登録したり、セパレータ情報記憶部３２Ａに記憶されたセパレータ情報に上書き更新したりすることができる。
【００７４】
図９の説明に戻り、第１の特定部３２Ｂは、ホスト機１０から受け取った印刷データのページがセパレータであるか否かを特定する処理部である。
【００７５】
一実施形態として、第１の特定部３２Ｂは、セパレータ情報記憶部３２Ａに記憶されたセパレータ情報のうちセパレータ特定テーブル３２Ａ１を参照して、印刷データ処理部３１が出力する印刷ページデータごとにセパレータであるか否かを特定する。
【００７６】
ここでは、一例として、図１４に示すセパレータ特定テーブル３２Ａ１の各レコードに定義された条件、すなわち上記（１）〜上記（５）の５つの条件を判定することにより、印刷データ処理部３１が出力する印刷ページデータの中から、図５に示すセパレータに対応する印刷ページデータを特定する場合を例示する。
【００７７】
例えば、印刷データ処理部３１が出力する行データの行インデックスが「１」である場合、第１の特定部３２Ｂは、上から１番目のレコードの定義にしたがって、次のような処理を実行する。すなわち、第１の特定部３２Ｂは、１行目の行データの１桁目から５桁目の文字が指定文字列「□□□□Ｊ」と一致するか否かを判定する。これら両者が一致する場合、第１の特定部３２Ｂは、１行目の行データの６桁目から３３桁目までの文字種が数字またはスペースであるか否かをさらに判定する。
【００７８】
また、印刷データ処理部３１が出力する行データの行インデックスが「５」である場合、第１の特定部３２Ｂは、上から２番目のレコードの定義にしたがって、次のような処理を実行する。すなわち、第１の特定部３２Ｂは、５行目の行データの１桁目から５桁目の文字が指定文字列「Ｊ□□□Ｊ」と一致するか否かを判定する。これら両者が一致する場合、第１の特定部３２Ｂは、５行目の行データの６桁目から３３桁目までの文字種が数字またはスペースであるか否かをさらに判定する。
【００７９】
また、印刷データ処理部３１が出力する行データの行インデックスが「７」である場合、第１の特定部３２Ｂは、上から３番目のレコードの定義にしたがって、次のような処理を実行する。すなわち、第１の特定部３２Ｂは、７行目の行データの１桁目から５桁目の文字が指定文字列「□ＪＪＪ□」と一致するか否かを判定する。これら両者が一致する場合、第１の特定部３２Ｂは、７行目の行データの６桁目から３３桁目までの文字種が数字またはスペースであるか否かをさらに判定する。
【００８０】
また、印刷データ処理部３１が出力する行データの行インデックスが「１０」である場合、第１の特定部３２Ｂは、上から４番目のレコードの定義にしたがって、１０行目の行データに含まれる１桁目から９桁目の文字が指定文字列「ＪＯＢ□ＳＴＡＲＴ」と一致するか否かを判定する。
【００８１】
さらに、印刷データ処理部３１が出力する行データの行インデックスが「１５」である場合、第１の特定部３２Ｂは、上から５番目のレコードの定義にしたがって、１５行目の行データに含まれる１桁目から７桁目の文字が指定文字列「ＪＯＢ□ＥＮＤ」と一致するか否かを判定する。
【００８２】
これら１行目、５行目、７行目、１０行目及び１５行目の行データが図１４に示すセパレータ特定テーブル３２Ａ１に定義された条件を満たす場合、印刷データ処理部３１により出力された印刷ページデータがセパレータであると特定できる。
【００８３】
第２の特定部３２Ｃは、セパレータであると特定された印刷データから印刷データに割り当てられた印刷ジョブの識別情報を特定する処理部である。
【００８４】
一実施形態として、第２の特定部３２Ｃは、図１５に示すジョブ特定テーブル３２Ａ２に定義された条件にしたがって組み立てを実施することにより、セパレータページの行データからサンプリングされた文字コードから、ジョブの頭文字「Ｊ」と４桁の数字との組合せにより命名されるジョブ番号を特定する。例えば、第２の特定部３２Ｃは、図１５に示すジョブ特定テーブル３２Ａ２に定義されたサンプル数「４」にしたがって、７行目の行データの１、２、３、４、１０、１１、１２、１３、１６、１７、１８、１９、２２、２３、２４、２５、２８、２９、３０及び３１の各桁位置からサンプリングされる文字コードのサンプルを１桁目〜４桁目、１０桁目〜１３桁目、１６桁目〜１９桁目、２２桁目〜２５桁目および２８桁目〜３１桁目の５つのサブサンプルに分離する。さらに、第２の特定部３２Ｃは、図１５に示すジョブ特定テーブル３２Ａ２に定義されたジョブ名長さ「５」にしたがって、５つに分離されたサブサンプルごとにジョブ番号の文字列を構成する文字を１文字ずつ抽出した上で各文字を桁数の昇順に組み立てる。
【００８５】
［フラグ設定処理］
図１６を用いて、セパレータ特定部３２が実行する処理内容について説明する。図１６は、フラグ設定処理の手順の一例を示すフローチャートである。図１６に示すフラグ設定処理には、セパレータ特定フラグ、セパレータ不一致フラグ及び比較中フラグの３つのフラグが用いられる。
【００８６】
ここで言う「セパレータ特定フラグ」は、印刷ページデータがセパレータであると特定されたか否かを示すフラグである。例えば、フラグが「ＯＮ」である場合、印刷ページデータがセパレータと判明した状態を指す一方で、フラグが「ＯＦＦ」である場合、印刷ページデータがセパレータと判明していない状態を指す。
【００８７】
また、「セパレータ不一致フラグ」は、印刷ページデータがセパレータと不一致であると特定されたか否かを示すフラグである。例えば、フラグが「ＯＮ」である場合、印刷ページデータがセパレータと不一致であると判明した状態を指す一方で、フラグが「ＯＦＦ」である場合、印刷ページデータがセパレータと不一致であると判明していない状態を指す。
【００８８】
また、「比較中フラグ」は、行データとセパレータ特定テーブル３２Ａ１との比較が継続中であるか否かを示すフラグである。例えば、フラグが「ＯＮ」である場合、行データとセパレータ特定テーブル３２Ａ１との比較が継続中である状態を指す一方で、フラグが「ＯＦＦ」である場合、行データとセパレータ特定テーブル３２Ａ１との比較が継続中でない状態を指す。
【００８９】
図１６に示すように、セパレータ特定部３２は、印刷データ処理部３１が出力する行データを受信するのを待機する（ステップＳ３０１）。続いて、セパレータ特定部３２は、印刷データ処理部３１から受信した行データが先頭、すなわち改ページコードが検出された直後の１行目であるか否かを判定する（ステップＳ３０２）。
【００９０】
ここで、行データが先頭でない場合（ステップＳ３０２Ｎｏ）、セパレータ特定フラグ、セパレータ不一致フラグ及び比較中フラグの確認が行われる。このとき、セパレータ特定フラグがＯＮ状態であるか、セパレータ不一致フラグがＯＮ状態であるか、あるいは比較中フラグがＯＦＦ状態である場合（ステップＳ３０３Ｙｅｓ、ステップＳ３０４ＹｅｓまたはステップＳ３０５Ｙｅｓ）、印刷ページデータがセパレータと判明しているか、あるいはセパレータと不一致であると判明しており、後続する行データとセパレータ特定テーブル３２Ａ１との比較が実施されずともよいことが判明する。
【００９１】
この場合、改ページコードが受信されるまで（ステップＳ３０６Ｎｏ）、ステップＳ３０１の処理に戻り、ステップＳ３０２の分岐でＮｏを経由し、ステップＳ３０３Ｙｅｓ、ステップＳ３０４ＹｅｓまたはステップＳ３０５Ｙｅｓのいずれかの分岐を経由する経路をループすることにより、改ページコードの受信待機が継続される。
【００９２】
一方、改ページコードが受信されると（ステップＳ３０６Ｙｅｓ）、セパレータ特定部３２は、セパレータ特定フラグ、セパレータ不一致フラグ及び比較中フラグをＯＦＦ状態に設定し（ステップＳ３０７）、ステップＳ３０１に移行する。このようなセパレータ特定フラグ、セパレータ不一致フラグ及び比較中フラグのリセットにより、次のページに備える。
【００９３】
ステップＳ３０２の分岐に戻り、行データが先頭である場合（ステップＳ３０２Ｙｅｓ）、セパレータ特定部３２は、行データに含まれる文字コードと指定文字列との比較や行データに含まれる文字種の判定などにより、セパレータの特定を行う「第１の特定処理」を実行する（ステップＳ４００−１）。なお、上記の「第１の特定処理」の説明は、図１７を用いて後述する。
【００９４】
また、行データが先頭でなくとも（ステップＳ３０２Ｎｏ）、セパレータ特定フラグ、セパレータ不一致フラグ及び比較中フラグの状態が次の条件を満たす場合、セパレータ特定部３２は、「第１の特定処理」を実行する（ステップＳ４００−２）。すなわち、セパレータ特定フラグがＯＮ状態でなく、セパレータ不一致フラグがＯＮ状態でなく、かつ比較中フラグがＯＦＦ状態でない場合（ステップＳ３０３Ｎｏ、ステップＳ３０４ＮｏまたはステップＳ３０５Ｎｏ）、印刷ページデータがセパレータであるともセパレータと不一致であるとも判明していない状態であることがフラグにより識別できる。この場合にも、「第１の特定処理」が実行される。
【００９５】
これら先頭の行データに対して行われるステップＳ４００−１の「第１の特定処理」および先頭以外の行データに対して行われるステップＳ４００−２の「第１の特定処理」の間で「第１の特定処理」の内容に変りはないが、「第１の特定処理」の終了後に実施される処理に違いがある。
【００９６】
例えば、ステップＳ４００−１の「第１の特定処理」が実行された後、「第１の特定処理」で先頭の行データとセパレータ特定テーブル３２Ａ１との比較結果が不一致であると判定されなかった場合（ステップＳ３０８Ｎｏ）、セパレータ特定部３２は、比較中フラグをＯＮ状態に設定し（ステップＳ３０９）、ステップＳ３０１の処理に移行する。
【００９７】
これは、１行目の行データが入力された段階では、セパレータ特定テーブル３２Ａ１の定義と一致する比較結果が得られたとしても、印刷ページがセパレータであると確定することもできず、後続する行、すなわち図１４の例で言えば５行目、７行目、１０行目および１５行目で継続して上記の第１の特定処理を実施するために、比較中フラグをＯＮ状態に設定し、印刷データ処理部３１から後続の行データが受信されるのを待機する。
【００９８】
一方、ステップＳ４００−２の「第１の特定処理」が実行された後、「第１の特定処理」で先頭以外の行データとセパレータ特定テーブル３２Ａ１との比較結果が不一致であると判定されなかった場合（ステップＳ３１０Ｎｏ）、次のような処理を実行する。すなわち、セパレータ特定部３２は、ステップＳ３０１で受信された行データの行インデックスがセパレータ特定テーブル３２Ａ１により指定文字列の比較および文字種の判定の実施が定義された最終行、すなわち１５行目に対応するか否かを判定する（ステップＳ３１１）。
【００９９】
このとき、行インデックスがセパレータ特定の最終行に対応しない場合（ステップＳ３１１Ｎｏ）、セパレータ特定の最終行に到達するまでにセパレータ特定テーブル３２Ａ１の定義と一致する比較結果が得られたとしても、最終行の行データとセパレータ特定テーブル３２Ａ１の定義とが一致するという最終行の比較結果が得られるまでは、印刷ページがセパレータであると確定することもできない。このため、ステップＳ３０１で受信された行データに後続する行データ、すなわち図１４の例で言えば５行目、７行目、１０行目および１５行目の行データで継続して上記の第１の特定処理を実施するために、ステップＳ３０１に戻り、印刷データ処理部３１から後続の行データが受信されるのを待機する。
【０１００】
また、行インデックスがセパレータ特定の最終行に対応する場合（ステップＳ３１１Ｙｅｓ）、図１４に示すセパレータ特定テーブル３２Ａ１により指定文字列の比較および文字種の判定の実施が定義された全ての行データ、すなわち１行目、５行目、７行目、１０行目および１５行目の行データが上記（１）〜上記（５）の５つの条件を満たすと判断できるので、印刷ページがセパレータであると確定できる。
【０１０１】
この場合、セパレータ特定部３２は、セパレータ特定フラグをＯＮ状態に設定し（ステップＳ３１２）、図１８を用いて後述する「第２の特定処理」により文字コードのサンプルから組み立てられたジョブ番号をジョブ管理部３３へ通知し（ステップＳ３１３）、ステップＳ３０１へ移行する。このように印刷ページがセパレータであると確定しても３つのフラグのリセットが保留されるのは、セパレータの最終行、すなわち図１０の例では３５行目と、セパレータ特定テーブル３２Ａ１で比較および判定の実施が定義された最終行、すなわち図１４に示す例では１５行目とが必ずしも一致するとは限らないからである。このため、ステップＳ３０３の分岐でＹｅｓを経由させることにより上記の「第１の特定処理」の実施が回避されつつ、改ページコードの受信が待機される。
【０１０２】
また、「第１の特定処理」で行データとセパレータ特定テーブル３２Ａ１との比較結果が不一致であると判定された場合（ステップＳ３０８ＹｅｓまたはステップＳ３１０Ｙｅｓ）、印刷ページがセパレータと不一致であると判明する。この場合、次に改ページコードが受信されない限り、印刷データ処理部３１から後続して受信する行データがセパレータページに対応する行データでないことも判明する。それ故、セパレータ特定部３２は、次に改ページコードが受信されるまで上記の「第１の特定処理」が実施されるのを回避するために、セパレータ不一致フラグをＯＮ状態に設定すると共に比較中フラグをＯＦＦ状態に設定し（ステップＳ３１４）、ステップＳ３０１に移行する。
【０１０３】
［第１の特定処理］
図１７を用いて、第１の特定部３２Ｂが実行する処理内容について説明する。図１７は、第１の特定処理の手順の一例を示すフローチャートである。図１７に示す第１の特定処理は、図１６に示したステップＳ４００−１及びステップＳ４００−２の処理に対応する。
【０１０４】
図１７に示すように、第１の特定部３２Ｂは、ステップＳ３０１で受信された行データの行インデックスと、セパレータ特定テーブル３２Ａ１に定義された行インデックス、すなわち図１４の例では「１」、「５」、「７」、「１０」及び「１５」とを比較する（ステップＳ４０１）。
【０１０５】
このとき、セパレータ特定テーブル３２Ａ１に定義された行インデックスの中に行データの行インデックスと一致する行インデックスが存在しない場合（ステップＳ４０２Ｎｏ）、指定文字列の比較や文字種の判定は実施されない。この場合、第１の特定部３２Ｂは、比較不要の戻り値をセパレータ特定部３２へ出力し（ステップＳ４０３）、処理を終了する。
【０１０６】
このように比較不要の戻り値が出力された場合、セパレータ特定部３２では、比較不要の戻り値が一致の戻り値と同等に扱われる。すなわち、セパレータ特定部３２では、ステップＳ３０８やステップＳ３１０の分岐で比較結果が「一致」と解釈され、ステップＳ３０８Ｎｏ又はステップＳ３１０Ｎｏに対応する後続処理が実行される。
【０１０７】
一方、セパレータ特定テーブル３２Ａ１に定義された行インデックスの中に行データの行インデックスと一致する行インデックスが存在する場合（ステップＳ４０２Ｙｅｓ）、第１の特定部３２Ｂは、ステップＳ３０１で受信された行データの１桁目から比較文字数分の文字コード群を抽出した上で文字コード群に対応する文字列と指定文字列とを比較する（ステップＳ４０４）。
【０１０８】
例えば、行インデックスが「１」である場合、行データの１桁目から５文字分の文字コードが抽出された上で指定文字列「        Ｊ」と一致するか否かが判定される。また、行インデックスが「５」である場合、行データの１桁目から５文字分の文字コードが抽出された上で指定文字列「Ｊ      Ｊ」と一致するか否かが判定される。また、行インデックスが「７」である場合、行データの１桁目から５文字分の文字コードが抽出された上で指定文字列「  ＪＪＪ  」と一致するか否かが判定される。また、行インデックスが「１０」である場合、行データの１桁目から９文字分の文字コードが抽出された上で指定文字列「ＪＯＢ  ＳＴＡＲＴ」と一致するか否かが判定される。また、行インデックスが「１５」である場合、行データの１桁目から７文字分の文字コードが抽出された上で指定文字列「ＪＯＢ  ＥＮＤ」と一致するか否かが判定される。
【０１０９】
そして、行データから抽出された文字コード群に対応する文字列と指定文字列とが一致しない場合（ステップＳ４０５Ｎｏ）、第１の特定部３２Ｂは、不一致の戻り値をセパレータ特定部３２へ出力し（ステップＳ４０６）、処理を終了する。
【０１１０】
このように不一致の戻り値が出力された場合、セパレータ特定部３２では、ステップＳ３０８やステップＳ３１０の分岐で比較結果が「不一致」と解釈され、ステップＳ３０８Ｙｅｓ又はステップＳ３１０Ｙｅｓに対応する後続処理が実行される。
【０１１１】
また、行データから抽出された文字コード群に対応する文字列と指定文字列とが一致する場合（ステップＳ４０５Ｙｅｓ）、第１の特定部３２Ｂは、次のような処理を実行する。すなわち、第１の特定部３２Ｂは、セパレータ特定テーブル３２Ａ１に定義された判定開始位置から判定終了位置までの文字コードを行データから抽出した上で、各文字コードに対応する文字が正規表現で指定された範囲に含まれるか否かを判定する（ステップＳ４０７）。
【０１１２】
例えば、行インデックスが「１」、「５」または「７」である場合、行データの６桁目から３３桁目までの文字コードが抽出された上で、各文字コードに対応する文字が正規表現で指定された範囲「０−９￥ｓ」に含まれるか否かが判定される。
【０１１３】
このとき、各文字コードに対応する文字が正規表現に含まれない場合（ステップＳ４０８Ｎｏ）、第１の特定部３２Ｂは、不一致の戻り値をセパレータ特定部３２へ出力し（ステップＳ４０６）、処理を終了する。
【０１１４】
このように不一致の戻り値が出力された場合、セパレータ特定部３２では、ステップＳ３０８やステップＳ３１０の分岐で比較結果が「不一致」と解釈され、ステップＳ３０８Ｙｅｓ又はステップＳ３１０Ｙｅｓに対応する後続処理が実行される。
【０１１５】
なお、セパレータの１０桁目および１５桁目には、印刷開始時間または印刷終了時間に対応する文字列は含まれるが、ジョブ番号の花文字は含まれない。このため、行データの行インデックスが「１０」または「１５」である場合、そもそも文字種の判定が行われずともかまわない。それにもかかわらず、ステップＳ４０８の文字種の判定の結果として不一致の戻り値が出力された場合、セパレータ不一致フラグがＯＮ状態に設定される結果、印刷ページがセパレータであってもセパレータと認識されなくなる不具合が起こる。この不具合を抑制するために、セパレータ特定テーブル３２Ａ１には、行インデックス「１０」及び「１５」の判定開始位置および判定終了位置に「０」が設定される。これによって、文字コードの抽出が抑止されるので、ステップＳ４０７で正規表現と比較される文字コードをＮＵＬＬ値とできる。この結果、行インデックスが「１０」又は「１５」である場合にも、ステップＳ４０８で文字種を実質的に判定せずに、文字コードが正規表現に含まれると擬制できるので、一致の戻り値をセパレータ特定部３２に出力できる。
【０１１６】
一方、各文字コードに対応する文字が正規表現に含まれる場合（ステップＳ４０８Ｙｅｓ）、第１の特定部３２Ｂは、セパレータ特定テーブル３２Ａ１に定義されたサンプリングフラグのうち行データの行インデックスに対応するサンプリングフラグを取得する（ステップＳ４０９）。その上で、第１の特定部３２Ｂは、ステップＳ４０９で取得されたサンプリングフラグに基づいてサンプリングを実施するか否か、すなわちサンプリングフラグが「１」であるか否かを判定する（ステップＳ４１０）。
【０１１７】
このとき、サンプリングフラグが「１」である場合（ステップＳ４１０Ｙｅｓ）、第１の特定部３２Ｂは、ジョブ特定テーブル３２Ａ２に定義されたサンプル桁位置にしたがって行データから文字コードをサンプリングする（ステップＳ４１１）。このようにサンプリングが実施されると、第２の特定部３２Ｃは、ステップＳ４１１でサンプリングされた文字コードのサンプルからジョブ番号を組み立てることによりジョブ番号を特定する「第２の特定処理」を実行する（ステップＳ５００）。その上で、第１の特定部３２Ｂは、一致の戻り値をセパレータ特定部３２へ出力し（ステップＳ４１２）、処理を終了する。
【０１１８】
また、サンプリングフラグが「０」である場合（ステップＳ４１０Ｎｏ）、第１の特定部３２Ｂは、ステップＳ４１１およびステップＳ５００の処理をスキップして、一致の戻り値をセパレータ特定部３２へ出力し（ステップＳ４１２）、処理を終了する。
【０１１９】
このように一致の戻り値が出力された場合、セパレータ特定部３２では、ステップＳ３０８やステップＳ３１０の分岐で比較結果が「一致」と解釈され、ステップＳ３０８Ｎｏ又はステップＳ３１０Ｎｏに対応する後続処理が実行される。
【０１２０】
例えば、図１４に示すセパレータ特定テーブル３２Ａ１には、行インデックス「７」のサンプリングフラグに「１」が設定されている。このため、行データの行インデックスが「７」である場合、行データに含まれる文字コードのうち、ジョブ特定テーブル３２Ａ２に定義されたサンプル桁位置、すなわち１、２、３、４、１０、１１、１２、１３、１６、１７、１８、１９、２２、２３、２４、２５、２８、２９、３０及び３１の各桁位置から文字コードがサンプリングされる。一方、行データの行インデックスが「１」、「５」、「１０」または「１５」である場合、サンプリングフラグに「０」が設定されているので、行データから文字コードはサンプリングされない。
【０１２１】
［第２の特定処理］
図１８を用いて、第２の特定部３２Ｃが実行する処理内容について説明する。図１８は、第２の特定処理の手順の一例を示すフローチャートである。図１８に示す第２の特定処理は、図１７に示したステップＳ５００の処理に対応する。
【０１２２】
ここで、第２の特定処理には、ｊｏｂ＿ｌｅｎ、ｐｏｓ、ｍｏｊｉｌｏｏｐ及びｔｍｐｃｈａｒの４つのレジスタが用いられる。このうち、「ｊｏｂ＿ｌｅｎ」には、ジョブ番号を構成する文字列のうち未だ組み立てが済んでいない文字の長さが保持される。また、「ｐｏｓ」には、ジョブ番号を構成する文字列上で組み立て中の文字の位置が保持される。また、「ｍｏｊｉｌｏｏｐ」には、ジョブ番号の文字列に含まれる文字ごとにサンプリング済みの文字コードの中から空白文字でない文字コードの再抽出を繰り返す回数が保持される。また、「ｔｍｐｃｈａｒ」は、サンプルから再抽出された文字コードが一時的に保持される。また、「ｊｏｂｎａｍｅ」には、ジョブ番号の文字列に対応する位置ごとにｔｍｐｃｈａｒから代入される文字コードが保持される。
【０１２３】
図１８に示すように、第２の特定部３２Ｃは、図１５に示すジョブ特定テーブル３２Ａ２に定義されたジョブ名長さ「５」をｊｏｂ＿ｌｅｎの初期値に設定すると共に、ｐｏｓを初期値、すなわち「０」に設定する（ステップＳ５０１）。
【０１２４】
続いて、第２の特定部３２Ｃは、ｊｏｂ＿ｌｅｎに保持された値が「０」でないか否か、すなわちｊｏｂ＿ｌｅｎ≠０を判定する（ステップＳ５０２）。このステップＳ５０２の判定により、ジョブ番号を構成する文字列の抽出が終了したか否かが識別される。
【０１２５】
このとき、ｊｏｂ＿ｌｅｎに保持された値が「０」でない場合（ステップＳ５０２Ｙｅｓ）、ジョブ番号を構成する文字列の中に未だ抽出されていない文字が残っていることが判明する。この場合、第２の特定部３２Ｃは、ｊｏｂ＿ｌｅｎを１つデクリメントすることにより、未だ組み立てが残っている文字の長さをカウントダウンする（ステップＳ５０３）。
【０１２６】
続いて、第２の特定部３２Ｃは、図１５に示すジョブ特定テーブル３２Ａ２に定義されたサンプル数、すなわちジョブ番号の文字列に含まれる文字単位でサンプリングの実施が規定された回数「４」をｍｏｊｉｌｏｏｐの初期値に設定すると共に、ｔｍｐｃｈａｒに保持された値を「０」に初期化する（ステップＳ５０４）。
【０１２７】
その後、ｍｏｊｉｌｏｏｐに保持された値が「０」になるまで（ステップＳ５０５Ｎｏ）、第２の特定部３２Ｃは、下記のステップＳ５０６〜ステップＳ５０９の処理を繰り返し行う。すなわち、第２の特定部３２Ｃは、ｐｏｓに保持された文字の位置に対応するサンプル桁位置ごとに、図１７に示すステップＳ４１１でサンプリングされた文字コードを取得する（ステップＳ５０６）。
【０１２８】
そして、ステップＳ５０６で取得された文字コードが空白文字でない場合（ステップＳ５０７Ｎｏ）、第２の特定部３２Ｃは、ステップＳ５０６で取得された文字コードとｔｍｐｃｈａｒに保持された値との論理和をｔｍｐｃｈａｒに保存する（ステップＳ５０８）。その上で、第２の特定部３２Ｃは、ｍｏｊｉｌｏｏｐに保持された値を１つデクリメントし（ステップＳ５０９）、ステップＳ５０５に移行する。
【０１２９】
一方、ステップＳ５０６で取得された文字コードが空白文字である場合（ステップＳ５０７Ｙｅｓ）、ステップＳ５０８の処理をスキップし、ｍｏｊｉｌｏｏｐに保持された値を１つデクリメントし（ステップＳ５０９）、ステップＳ５０５に移行する。
【０１３０】
その後、ｍｏｊｉｌｏｏｐに保持された値が「０」になると（ステップＳ５０５Ｙｅｓ）、第２の特定部３２Ｃは、ｊｏｂｎａｍｅが文字コードを保持する文字列上の位置のうちｐｏｓに保持された値に対応する位置にｔｍｐｃｈａｒに保持された文字コードを代入すると共にｐｏｓの値を１つインクリメントし（ステップＳ５１０）、ステップＳ５０２の処理へ移行する。
【０１３１】
そして、ｊｏｂ＿ｌｅｎに保持された値が「０」になると（ステップＳ５０２Ｎｏ）、ジョブ番号を構成する文字列の組み立てが終了したと判断できる。この場合、第２の特定部３２Ｃは、処理を終了する。
【０１３２】
ここで、ステップＳ５０６〜ステップＳ５１０の処理の具体例を示す。例えば、図１０に示すセパレータに対応する印刷データが入力されたとしたとき、図１５に示すジョブ特定テーブルにしたがって７行目の行データからサンプリングされた文字コードは、次の通りとなる。すなわち、１桁目、２桁目、３桁目及び４桁目からサンプリングされた文字コードは「□ＪＪＪ」となる。さらに、１０桁目、１１桁目、１２桁目及び１３桁目からサンプリングされた文字コードは「□１１１」となる。さらに、１６桁目、１７桁目、１８桁目及び１９桁目からサンプリングされた文字コードは「２２２２」となる。さらに、２２桁目、２３桁目、２４桁目及び２５桁目からサンプリングされた文字コードは「□３３３」となる。さらに、２８桁目、２９桁目、３０桁目及び３１桁目からサンプリングされた文字コードは「□□□４」となる。なお、ここでも空白文字は「□」で表記されることとして説明を行っている。
【０１３３】
例えば、ｊｏｂ＿ｌｅｎに保持された値が「４」であり、かつｐｏｓに保持された値が「０」であるとしたとき、ステップＳ５０６では、ジョブ番号を構成する５つの文字列のうちｐｏｓに保持された値「０」、すなわち最初の１文字目のサンプル桁位置に対応する１桁目、２桁目、３桁目及び４桁目の４つの文字コード「□ＪＪＪ」がｍｏｊｉｌｏｏｐの値のカウントダウンにしたがって１つずつ順番に取得される。
【０１３４】
ｍｏｊｉｌｏｏｐの値が「４」である場合、ステップＳ５０６では、１桁目の文字コード「□」が取得される。このように空白文字である場合、ステップＳ５０７の分岐でＹｅｓと判断される。この場合、ステップＳ５０８の処理がスキップされてｍｏｊｉｌｏｏｐの値が「４」から「３」にデクリメントされる。
【０１３５】
続いて、ｍｏｊｉｌｏｏｐの値が「３」である場合、２桁目の文字コード「Ｊ」が取得される。このように２桁目の文字コードは空白文字ではないので、ステップＳ５０７の分岐でＮｏと判断される。この場合、ステップＳ５０８でサンプルである文字コード「Ｊ」とｔｍｐｃｈａｒに保持された値「０（＝初期値）」との論理和「Ｊ」がｔｍｐｃｈａｒに保存された後、ステップＳ５０９でｍｏｊｉｌｏｏｐの値が「３」から「２」にデクリメントされる。
【０１３６】
さらに、ｍｏｊｉｌｏｏｐの値が「２」である場合、３桁目の文字コード「Ｊ」が取得される。このように３桁目の文字コードも空白文字ではないので、ステップＳ５０７の分岐でＮｏと判断される。この場合、ステップＳ５０８でサンプルである文字コード「Ｊ」とｔｍｐｃｈａｒに保持された値「Ｊ」との論理和「Ｊ」がｔｍｐｃｈａｒに保存された後、ステップＳ５０９でｍｏｊｉｌｏｏｐの値が「２」から「１」にデクリメントされる。
【０１３７】
また、ｍｏｊｉｌｏｏｐの値が「１」である場合、４桁目の文字コード「Ｊ」が取得される。このように４桁目の文字コードは空白文字ではないので、ステップＳ５０７の分岐でＮｏと判断される。この場合、ステップＳ５０８でサンプルである文字コード「Ｊ」とｔｍｐｃｈａｒに保持された値「Ｊ」との論理和「Ｊ」がｔｍｐｃｈａｒに保存された後、ステップＳ５０９でｍｏｊｉｌｏｏｐの値が「１」から「０」にデクリメントされる。
【０１３８】
このようにｍｏｊｉｌｏｏｐの値が「０」になると、ステップＳ５１０では、ｊｏｂｎａｍｅが文字コードを保持する文字列上の位置のうちｐｏｓに保持された値「０」に対応する位置にｔｍｐｃｈａｒに保持された文字コード「Ｊ」が代入されると共にｐｏｓの値を「０」から「１」へ１つインクリメントされる。
【０１３９】
これらステップＳ５０６〜ステップＳ５１０の処理がｊｏｂ＿ｌｅｎに保持された値が「０」になるまで繰り返して行われることにより、セパレータからジョブ番号「Ｊ１２３４」が抽出される。
【０１４０】
［ジョブ管理部３３］
ジョブ管理部３３は、ホスト機１０から発行される印刷ジョブの管理を行う処理部である。
【０１４１】
図１９は、ジョブ管理部３３の機能的構成を示すブロック図である。図１９に示すように、ジョブ管理部３３は、ジョブ管理キュー記憶部３３Ａと、ジョブ管理テーブル記憶部３３Ｂと、印刷状況監視部３３Ｃと、ジョブ管理実行部３３Ｄとを有する。
【０１４２】
ジョブ管理キュー記憶部３３Ａは、ジョブ管理キューを記憶する記憶部である。ここで言う「ジョブ管理キュー」とは、ジョブの待ち行列を指す。また、ジョブ管理テーブル記憶部３３Ｂは、ジョブ管理テーブルを記憶する記憶部である。
【０１４３】
一実施形態として、ジョブ管理キュー記憶部３３Ａ及びジョブ管理テーブル記憶部３３Ｂの実装には、ＭＰＵやＣＰＵなどのハードウェアプロセッサが読取可能なＲＡＭ等のメモリ上のワークエリアの一部を用いることができる。
【０１４４】
例えば、ジョブ管理キューには、一例として、ジョブ単位でエンキューされるキューエントリ間を接続するポインタと、後述のジョブ管理テーブル記憶部３３Ｂが有するレコードのインデックスとを含むデータ構造を採用することができる。一方、ジョブ管理テーブルには、一例として、インデックス、ジョブ状態、ジョブ番号及びページ数などが対応付けられたデータを採用することができる。これらジョブ管理キュー及びジョブ管理テーブルには、セパレータ特定部３２によりジョブ番号が特定される度に、キューエントリがエンキューされると共に、ジョブ管理テーブルに有効なレコードが１つ追加される。このインデックスが指定されることにより、ジョブ管理テーブル記憶部３３Ｂから当該インデックスに対応付けられたジョブ状態、ジョブ番号やページ数などを参照することができる。
【０１４５】
ここで言う「ジョブ状態」には、Ｉｎｖａｌｉｄ、Ｄｒａｗ、Ｓｐｏｏｌ、Ｓｅｎｄ、Ｐｒｉｎｔ及びＤｏｎｅの６つの状態が含まれる。このうち、「Ｉｎｖａｌｉｄ」は、テーブルデータの無効状態を指し、ジョブ状態の項目にＩｎｖａｌｉｄが記述されたジョブ管理テーブルのレコードが無効であることを意味する。また、「Ｄｒａｗ」は、描画中を指し、印刷イメージデータの生成中であることを意味する。また、「Ｓｐｏｏｌ」は、データ保存を指し、生成が終了した印刷イメージデータがプリンタ装置５０へ未送信であることを意味する。また、「Ｓｅｎｄ」は、データ送信を指し、印刷イメージデータをプリンタ装置５０へ送信または送信済みである状態を意味する。例えば、複数のジョブの印刷イメージデータがプリンタ装置５０へ送信されると、ジョブ管理テーブルが有する複数のレコードの間でジョブ状態の項目にＳｅｎｄが保持されるケースも存在しうる。また、「Ｐｒｉｎｔ」は、印刷中を指し、プリンタ装置５０が印刷イメージデータを印刷している状態であることを意味する。ここで、プリンタ装置５０では、中継装置３０が発行する印刷ジョブがシリアルに実行されるので、先のＳｅｎｄとは異なり、ジョブ管理テーブルでは１つのレコードにしかジョブ状態の項目にＰｒｉｎｔが保持されることはない。また、「Ｄｏｎｅ」は、印刷完了を指し、プリンタ装置５０で印刷ジョブが完了したが、スプールに印刷イメージデータが残っている状態を指す。
【０１４６】
図２０は、ジョブ状態の遷移の一例を示す図である。図２０に示すように、電源がＯＮ状態になると、ジョブ状態は「Ｉｎｖａｌｉｄ」から開始される。このとき、印刷データ処理部３１から印刷イメージデータ処理部３４へ印刷データが出力されることにより印刷イメージデータの生成が開始されると、ジョブ状態は「Ｉｎｖａｌｉｄ」から「Ｄｒａｗ」へ遷移する。その後、印刷イメージデータの生成が完了し、印刷イメージデータがスプールに保存されると、ジョブ状態は「Ｄｒａｗ」から「Ｓｐｏｏｌ」へ遷移する。そして、スプールからプリンタ装置５０へ印刷イメージデータの送信が開始されると、ジョブ状態は、「Ｓｐｏｏｌ」から「Ｓｅｎｄ」へ遷移する。なお、複数のジョブの印刷イメージデータの送信が開始された場合、待ち行列の先頭であるジョブ以外のジョブ状態は「Ｓｅｎｄ」から「Ｓｐｏｏｌ」へ差し戻すことができる。その後、プリンタ装置５０で印刷が開始されると、ジョブ状態は「Ｓｅｎｄ」から「Ｐｒｉｎｔ」へ遷移する。このとき、証紙ジャム等の障害がプリンタ装置５０から通知された場合、ジョブ状態を「Ｐｒｉｎｔ」から「Ｓｅｎｄ」へ差し戻し、印刷イメージデータの再送を行うこともできる。そして、全ページの印刷が完了すると、ジョブ状態は「Ｐｒｉｎｔ」から「Ｄｏｎｅ」へ遷移する。最後に、スプールに保存された印刷イメージデータが削除された場合、ジョブ状態は「Ｄｏｎｅ」から「Ｉｎｖａｌｉｄ」へ遷移する。このように、ジョブ状態は、「Ｉｎｖａｌｉｄ」を起点に反時計回りに遷移し、印刷イメージデータの削除後に「Ｉｎｖａｌｉｄ」へ戻る。
【０１４７】
図２１は、ジョブ管理キューの一例を示す図である。図２１に示すジョブ管理キューには、ｉｎｄｅｘ「０」で識別されるジョブのキューエントリが１つ存在することを意味する。このジョブ管理キューには、ｉｎｄｅｘ「０」のジョブに後続するジョブは存在しないので、ｎｅｘｔ＿ｐｏｉｎｔｅｒにはｎｕｌｌ値が設定される。また、ｉｎｄｅｘ「０」のジョブは、待ち行列の先頭のジョブでもあるので、先行するジョブも存在しない。よって、ｐｒｅｖ＿ｐｏｉｎｔｅｒにもｎｕｌｌ値が設定される。
【０１４８】
図２２は、ジョブ管理キューの一例を示す図である。図２２に示すジョブ管理キューには、ｉｎｄｅｘ「０」で識別されるジョブのキューエントリ、ｉｎｄｅｘ「１」で識別されるジョブのキューエントリの順に待ち行列が形成されていることを意味する。このうち、ｉｎｄｅｘ「０」のキューエントリには、ｉｎｄｅｘ「１」のキューエントリが後続するが、ｉｎｄｅｘ「０」のキューエントリは待ち行列の先頭であるので、先行するキューエントリは存在しない。このため、ｉｎｄｅｘ「０」のキューエントリのｎｅｘｔ＿ｐｏｉｎｔｅｒには、ｉｎｄｅｘ「１」のキューエントリへのポインタが設定されると共に、ｉｎｄｅｘ「０」のキューエントリのｐｒｅｖ＿ｐｏｉｎｔｅｒには、ｎｕｌｌ値が設定されている。また、ｉｎｄｅｘ「１」のキューエントリには、後続するキューエントリは存在しないが、ｉｎｄｅｘ「０」のキューエントリが先行している。このため、ｉｎｄｅｘ「１」のキューエントリのｎｅｘｔ＿ｐｏｉｎｔｅｒには、ｎｕｌｌ値が設定されると共に、ｉｎｄｅｘ「１」のキューエントリのｐｒｅｖ＿ｐｏｉｎｔｅｒには、ｉｎｄｅｘ「０」のキューエントリへのポインタが設定されている。
【０１４９】
図２３は、ジョブ管理テーブルの一例を示す図である。図２３に示すジョブ管理テーブルには、２つのレコードが示されているが、ｉｎｄｅｘ「１」のレコードにはｊｏｂ＿ｓｔａｔｕｓの項目に「Ｉｎｖａｌｉｄ」が格納されているので、ｉｎｄｅｘ「０」のレコードが有効である例が示されている。このｉｎｄｅｘ「０」のレコードは、ジョブ番号「Ｊ１２３４」の総ページ数が「２３」であり、印刷イメージデータが印刷イメージデータ処理部３４により描画されている状態にあることを意味する。
【０１５０】
図１９の説明に戻り、印刷状況監視部３３Ｃは、印刷状況を監視する処理部である。
【０１５１】
一実施形態として、印刷状況監視部３３Ｃは、所定の間隔、例えば０．５秒や１秒などの間隔で印刷進捗状況、例えば印刷済みのページ数などをプリンタ装置５０に問い合わせる。その後、印刷状況監視部３３Ｃは、印刷進捗状況の問合せに対する応答をプリンタ装置５０から受信した場合、プリンタ装置５０から受信した応答をジョブ管理実行部３３Ｄに出力する。例えば、プリンタ装置５０側で１５ページまで印刷が完了した場合、プリンタ装置５０から印刷進捗状況の応答の一例として「１５ページ印刷」などが返信される。さらに、プリンタ装置５０側で障害が発生した場合、プリンタ装置５０から印刷進捗状況の応答の一例として、障害が発生するまでに印刷が完了したページ数と障害発生のアラートとを含むメッセージ、例えば「１５ページ印刷＋印刷障害：ＪＡＭ発生」などが返信される。
【０１５２】
ジョブ管理実行部３３Ｄは、ジョブ管理を実行する処理部である。このジョブ管理実行部３３Ｄは、記録部の一例である。
【０１５３】
一側面として、ジョブ管理実行部３３Ｄは、ジョブ管理キューやジョブ管理テーブルに対する更新を実施する。具体的には、ジョブ管理実行部３３Ｄは、セパレータ特定部３２によりジョブ番号が特定される度に、ジョブ管理キュー記憶部３３Ａにキューエントリをエンキューすると共に、ジョブ管理テーブル記憶部３３Ｂに記憶されたジョブ管理テーブルに有効なレコードを１つ作成する。この他、ジョブ管理実行部３３Ｄは、印刷イメージデータ処理部３４からの通知にしたがってジョブ管理テーブルに記憶されたジョブ状態を更新したり、プリンタ装置５０から印刷状況監視部３３Ｃを介して通知される印刷状況にしたがってジョブ管理テーブルに記憶されたジョブ状態を更新したりする。また、ジョブ管理実行部３３Ｄは、ジョブに対応する印刷が完了された後に印刷イメージデータがスプールから削除された場合、すなわちジョブ状態が「Ｉｎｖａｌｉｄ」へ遷移されたジョブが存在する場合、次のような処理を行う。すなわち、ジョブ管理実行部３３Ｄは、ジョブ管理キュー記憶部３３Ａにキューエントリのうち当該ジョブのキューエントリがデキューされると共に、ジョブ管理テーブル記憶部３３Ｂに記憶されたジョブ管理テーブルから当該ジョブのレコードが無効な状態に更新される。
【０１５４】
［印刷イメージデータ処理部３４］
印刷イメージデータ処理部３４は、印刷イメージデータに関する各種処理を実行する処理部である。
【０１５５】
図２４は、印刷イメージデータ処理部３４の機能的構成を示すブロック図である。図２４に示すように、印刷イメージデータ処理部３４は、印刷画像生成部３４Ａと、スプーラ３４Ｂと、印刷イメージ送信部３４Ｃとを有する。
【０１５６】
印刷画像生成部３４Ａは、印刷イメージデータを生成する処理部である。
【０１５７】
一実施形態として、印刷画像生成部３４Ａは、印刷データ処理部３１により出力された印刷ページデータに含まれる制御コード、例えば文字コードや改行コードを含む行データの他、オーバレイ、画像、図形またはバーコードのコードなどにしたがって印刷イメージデータを描画する。その後、印刷画像生成部３４Ａは、印刷イメージデータの生成が終了すると、印刷イメージデータの生成が終了したジョブの印刷開始を印刷イメージ送信部３４Ｃに通知する。この印刷イメージデータの生成終了を受けて、ジョブ番号の特定と共にセパレータが検出されてから改ページコードのカウントアップを行っていたセパレータ特定部３２では、印刷イメージデータの生成終了のタイミングまでにカウントアップされた値をジョブの印刷ページの総数として特定できる。
【０１５８】
スプーラ３４Ｂは、印刷イメージデータをスプールに一時的に保存する処理部である。
【０１５９】
一実施形態として、スプーラ３４Ｂは、印刷画像生成部３４Ａにより印刷イメージデータが生成される度に、当該印刷イメージデータに所定のファイル名を付与して保存する。例えば、印刷イメージデータには、ジョブ番号と、印刷イメージデータのページ番号とを含むファイル名を付与することができる。また、スプーラ３４Ｂは、ジョブの印刷が完了された場合、ジョブ管理部３３からの指示にしたがって印刷イメージデータを削除する。
【０１６０】
印刷イメージ送信部３４Ｃは、印刷イメージデータをプリンタ装置５０へ送信する処理部である。
【０１６１】
一実施形態として、印刷イメージ送信部３４Ｃは、印刷画像生成部３４Ａによりジョブの印刷開始が通知された場合、印刷状況の監視の開始をジョブ管理部３３に通知する。さらに、印刷イメージ送信部３４Ｃは、スプーラ３４Ｂにより保存された印刷イメージデータをプリンタ装置５０へ送信する。
【０１６２】
［セパレータ特定とジョブの関係］
図２５は、ジョブ番号の特定から印刷イメージデータのスプールまでの処理に関するシーケンスの一例を示す図である。図２５には、一例として、印刷データ処理部３１がジョブ番号「Ｊ１２３４」の印刷データを出力する場合を例示する。
【０１６３】
図２５に示すように、印刷データ処理部３１からセパレータ特定部３２には、行データが順番に出力される（ステップＳ６０１ａ〜Ｓ６０１ｎ）。このように印刷データ処理部３１からセパレータ特定部３２へ順次出力される行データには、図１６〜図１８を用いて説明したフラグ設定処理、第１の特定処理や第２の特定処理などがセパレータ特定部３２により実施される。この結果、上記の第１の特定処理により印刷ページデータがセパレータであると特定された場合、セパレータ特定部３２は、上記の第２の特定処理により特定されたジョブ番号をジョブ管理部３３に通知する（ステップＳ６０２）。
【０１６４】
このジョブ番号の特定を受けて、ジョブ管理部３３のジョブ管理実行部３３Ｄは、ジョブ管理キュー記憶部３３Ａにキューエントリをエンキューすると共に、ジョブ管理テーブル記憶部３３Ｂに記憶されたジョブ管理テーブルに有効なレコードを１つ作成する（ステップＳ６０３）。
【０１６５】
例えば、セパレータ特定部３２によりジョブ番号「Ｊ１２３４」が特定された場合、ジョブ管理キュー記憶部３３Ａの待ち行列の先頭には、キューエントリがジョブ管理実行部３３Ｄにより１つ作成される。このキューエントリは、待ち行列の先頭であるので、ｉｎｄｅｘとして「０」が割り当てられると共に、ｎｅｘｔ＿ｐｏｉｎｔｅｒ及びｐｒｅｖ＿ｐｏｉｎｔｅｒには「ｎｕｌｌ値」が設定される。これに対応して、ジョブ管理テーブル記憶部３３Ｂでは、ｊｏｂ＿ｓｔａｔｕｓが「Ｉｎｖａｌｉｄ」から「Ｄｒａｗ」へジョブ管理実行部３３Ｄにより更新される。これにより、ｉｎｄｅｘ「０」のレコードが有効化される。さらに、ｉｎｄｅｘ「０」のレコードが持つｊｏｂ＿ｎａｍｅのフィールドには、第２の特定部３２Ｃにより特定されたジョブ番号がジョブ管理実行部３３Ｄにより格納される。
【０１６６】
このようにジョブ管理キュー及びジョブ管理テーブルが更新された後、ジョブ管理部３３のジョブ管理実行部３３Ｄは、ジョブ情報、例えばｉｎｄｅｘ「０」を印刷イメージデータ処理部３４に通知する（ステップＳ６０４）。
【０１６７】
その後、印刷データ処理部３１からセパレータ特定部３２へ改ページコードが出力される（ステップＳ６０５）。このようにセパレータが特定されてからページ数のカウントを開始し、以降に改ページコードが検出される度に改ページコードが検出される回数のカウントがセパレータ特定部３２により実施される。ここでは、セパレータが特定されてから最初の改ページコードであるので、ページ数が「１」にカウントアップされる。
【０１６８】
さらに、印刷データ処理部３１から印刷イメージデータ処理部３４へ印刷ページデータが出力されると共に印刷イメージデータの描画依頼が出力される（ステップＳ６０６及びステップＳ６０７）。
【０１６９】
そして、印刷イメージデータ処理部３４の印刷画像生成部３４Ａは、ステップＳ６０６で受け付けた印刷ページデータから印刷イメージデータを描画する（ステップＳ６０８）。このように描画された印刷イメージデータは、スプーラ３４Ｂによりファイル名が付与された後にスプールへ保存される（ステップＳ６０９）。例えば、セパレータに対応する印刷イメージデータには、ジョブ番号「Ｊ１２３４」と、印刷イメージデータのページ番号「０００００」とを含むファイル名「Ｊ１２３４．０００００」が付与された上で保存される。なお、ここでは、一例として、ページ番号が０ページから起算される場合を示しているが、１ページから始まることとしてもかまわない。
【０１７０】
その後、印刷データ処理部３１からセパレータ特定部３２には、行データが順番に出力される（ステップＳ６１０ａ〜Ｓ６１０ｎ）。最後に、印刷データ処理部３１からセパレータ特定部３２へ改ページコードが出力される（ステップＳ６１１）。ここでは、セパレータが特定されてから２つ目の改ページコードであるので、セパレータ特定部３２によりページ数が「１」から「２」へカウントアップされる。
【０１７１】
さらに、印刷データ処理部３１から印刷イメージデータ処理部３４へ印刷ページデータが出力されると共に印刷イメージデータの描画依頼が出力される（ステップＳ６１２及びステップＳ６１３）。
【０１７２】
そして、印刷イメージデータ処理部３４の印刷画像生成部３４Ａは、ステップＳ６１２で受け付けた印刷ページデータから印刷イメージデータを描画する（ステップＳ６１４）。このように描画された印刷イメージデータは、スプーラ３４Ｂによりファイル名が付与された後にスプールへ保存される（ステップＳ６１５）。このステップＳ６１５で保存される印刷イメージデータは、セパレータが特定されてから２つ目のページであるので、ジョブ番号「Ｊ１２３４」と、印刷イメージデータのページ番号「００００１」とを含むファイル名「Ｊ１２３４．００００１」が付与された上で保存される。
【０１７３】
［ジョブ管理テーブルの例］
上記のステップＳ６１５の処理が行われた時点におけるジョブ管理テーブルの構成例を図２６に示す。図２６は、ジョブ管理テーブルの構成例を示す図である。図２６に示すように、ｉｎｄｅｘ「０」で識別されるレコード以外のレコードには、ｊｏｂ＿ｓｔａｔｕｓには「Ｉｎｖａｌｉｄ」が設定されているので、ｉｎｄｅｘ「０」で識別されるレコードだけが有効であることがわかる。さらに、ｉｎｄｅｘ「０」で識別されるレコードのｊｏｂ＿ｓｔａｔｕｓには、「Ｄｒａｗ」が設定されている。それ故、ｊｏｂ＿ｎａｍｅ「Ｊ１２３４」のジョブは、印刷イメージデータの描画中であり、現在のところ、総ページ数が２ページであることもわかる。
【０１７４】
［印刷イメージデータの格納方法］
スプーラ３４Ｂは、印刷イメージデータの描画が開始されると、スプールのディレクトリの配下にｉｎｄｅｘの番号が付与されたディレクトリを作成し、作成されたディレクトリの配下に印刷画像生成部３４Ａにより描画された印刷イメージデータを格納する。このように印刷イメージデータを保存する場合、スプーラ３４Ｂは、ジョブ番号と、印刷イメージデータのページ番号とを含むファイル名を付与した上で保存する。
【０１７５】
一例として、上記のステップＳ６１５の処理が行われた時点におけるディレクトリ構造の一例を図２７に示す。図２７は、ディレクトリ構造の一例を示す図である。図２７に示すように、ルートからのディレクトリパス「／ｖａｒ／ｔｍｐ／ｊｏｂ／」に作成されたジョブスプール格納ディレクトリの配下にｉｎｄｅｘ「０」の番号が付与されたジョブｉｎｄｅｘディレクトリがスプーラ３４Ｂにより作成されている。このようにｉｎｄｅｘ「０」で識別されるジョブｉｎｄｅｘディレクトリに印刷イメージデータが格納される。すなわち、ステップＳ６０８で描画されたセパレータの印刷イメージデータは、ジョブ番号「Ｊ１２３４」とセパレータのページ番号「０００００」とを含むファイル名「Ｊ１２３４．０００００」が付与された上でディレクトリパス「／ｖａｒ／ｔｍｐ／ｊｏｂ／０／」により指定されるジョブｉｎｄｅｘディレクトリに保存される。さらに、ステップＳ６１４で描画されたセパレータの印刷イメージデータは、ジョブ番号「Ｊ１２３４」と印刷イメージデータのページ番号「００００１」とを含むファイル名「Ｊ１２３４．００００１」が付与された上でディレクトリパス「／ｖａｒ／ｔｍｐ／ｊｏｂ／０／」により指定されるジョブｉｎｄｅｘディレクトリに保存される。このように上記のステップＳ６１５の処理が行われた時点では、ファイル名「Ｊ１２３４．０００００」及びファイル名「Ｊ１２３４．００００１」の２つの印刷イメージデータが格納される。
【０１７６】
他の一例として、上記のステップＳ６１５の処理が行われた後、ｉｎｄｅｘ「０」で識別されるジョブ番号「Ｊ１２３４」についてセパレータを含む２３ページ分の印刷イメージデータの描画が終了した時点におけるディレクトリ構造の一例を図２８に示す。図２８は、ディレクトリ構造の一例を示す図である。図２８に示すように、ディレクトリパス「／ｖａｒ／ｔｍｐ／ｊｏｂ／０／」により指定されるジョブｉｎｄｅｘディレクトリには、セパレータの印刷イメージデータを始めとする２３個の印刷イメージデータ、すなわちファイル名「Ｊ１２３４．０００００」〜ファイル名「Ｊ１２３４．０００２２」の２３個のファイルが格納されていることがわかる。なお、印刷イメージデータの描画が終了した場合、図２６に示すジョブ管理テーブルでは、ｉｎｄｅｘ「０」で識別されるレコードのジョブ状態が「Ｄｒａｗ」から「Ｓｐｏｏｌ」へ更新される。この段階でｉｎｄｅｘ「０」で識別されるレコードの総ページ数は、セパレータ特定部３２により２３ページまで更新されており、これがジョブ番号「Ｊ１２３４」の総ページ数として定まる。
【０１７７】
更なる一例として、ｉｎｄｅｘ「０」で識別されるジョブ番号「Ｊ１２３４」のジョブと、ｉｎｄｅｘ「１」で識別されるジョブ番号「Ｊ１２３２」のジョブとを含む複数のジョブが特定されている状況下のディレクトリ構造の一例を図２９に示す。図２９は、ディレクトリ構造の一例を示す図である。図２９に示すように、ディレクトリパス「／ｖａｒ／ｔｍｐ／ｊｏｂ／０／」により指定されるジョブｉｎｄｅｘディレクトリには、ｉｎｄｅｘ「０」で識別されるジョブ番号「Ｊ１２３４」の印刷イメージデータが格納されている。すなわち、セパレータの印刷イメージデータを始めとする１１個の印刷イメージデータ、すなわちファイル名「Ｊ１２３４．０００００」〜ファイル名「Ｊ１２３４．０００１０」の１１個のファイルが格納されていることがわかる。さらに、ディレクトリパス「／ｖａｒ／ｔｍｐ／ｊｏｂ／１／」により指定されるジョブｉｎｄｅｘディレクトリには、ｉｎｄｅｘ「１」で識別されるジョブ番号「Ｊ１２３２」の印刷イメージデータが格納されている。すなわち、セパレータの印刷イメージデータを始めとする１４個の印刷イメージデータ、すなわちファイル名「Ｊ１２３２．０００００」〜ファイル名「Ｊ１２３２．０００１３」の１４個のファイルが格納されていることがわかる。
【０１７８】
［印刷シーケンス（正常終了）］
次に、印刷が正常に終了する場合の印刷シーケンスを例示する。図３０は、印刷シーケンスの一例を示す図である。図３０には、一例として、ｉｎｄｅｘ「０」で識別されるジョブ番号「Ｊ１２３４」のジョブ状態が「Ｓｐｏｏｌ」から「Ｓｅｎｄ」へ遷移してから印刷が完了するまでの印刷シーケンスが示されている。さらに、図３０でも、ジョブ番号「Ｊ１２３４」は、セパレータを含め、総ページ数が２３ページのジョブである場合を想定して以下の説明を行うこととする。
【０１７９】
図３０に示すように、印刷画像生成部３４Ａから印刷イメージ送信部３４Ｃへジョブの印刷開始が通知される（ステップＳ７０１）。このように印刷開始の通知を受け付けた印刷イメージ送信部３４Ｃは、印刷状況の監視の開始をジョブ管理部３３の印刷状況監視部３３Ｃに通知する（ステップＳ７０２）。
【０１８０】
続いて、印刷状況の監視開始の通知を印刷状況監視部３３Ｃを介して受け付けたジョブ管理実行部３３Ｄは、ジョブ管理テーブルが持つレコードのうちジョブ番号「Ｊ１２３４」に対応するレコードのジョブ状態を「Ｓｐｏｏｌ」から「Ｓｅｎｄ」へ遷移させる。
【０１８１】
また、印刷イメージ送信部３４Ｃは、印刷イメージデータの送信をスプーラ３４Ｂに指示することにより、スプールに保存されたジョブ番号「Ｊ１２３４」の印刷イメージデータをプリンタ装置５０へ送信させる（ステップＳ７０３及びステップＳ７０４）。
【０１８２】
その後、印刷状況監視部３３Ｃは、所定の間隔、例えば０．５秒や１秒などの間隔でプリンタ装置５０に対する印刷進捗状況、例えば印刷済みのページ数などの問合せを開始する（ステップＳ７０５）。この結果、印刷状況監視部３３Ｃは、印刷進捗状況の問合せに対する応答をプリンタ装置５０から受信する（ステップＳ７０６）。
【０１８３】
この結果を受けて、印刷状況監視部３３Ｃは、プリンタ装置５０から受信した印刷進捗状況、例えば１５ページ印刷をジョブ管理実行部３３Ｄに出力する（ステップＳ７０７）。このステップＳ７０７で印刷進捗状況がジョブ管理実行部３３Ｄに出力された時点では、ジョブ管理テーブルに記憶されたジョブ番号「Ｊ１２３４」のジョブ状態は「Ｓｅｎｄ」であるが、ステップＳ７０７で出力された印刷進捗状況から１５ページまで印刷が終了していることが判明する。このため、ジョブ管理実行部３３Ｄは、ジョブ管理テーブルに記憶されたジョブ番号「Ｊ１２３４」のジョブ状態を「Ｓｅｎｄ」から「Ｐｒｉｎｔ」へ更新する（ステップＳ７０８）。
【０１８４】
その後、印刷状況監視部３３Ｃは、ステップＳ７０５に続いて２回目の印刷進捗状況の問合せをプリンタ装置５０に行う（ステップＳ７０９）。この結果、印刷状況監視部３３Ｃは、ステップＳ７０９の印刷進捗状況の問合せに対する応答をプリンタ装置５０から受信する（ステップＳ７１０）。
【０１８５】
このステップＳ７１０の応答を受けて、印刷状況監視部３３Ｃは、プリンタ装置５０から受信した印刷進捗状況、例えば８ページ印刷をジョブ管理実行部３３Ｄに出力する（ステップＳ７１１）。このステップＳ７１１で２回目の印刷進捗状況がジョブ管理実行部３３Ｄに出力された段階で１５ページ＋８ページの印刷が終了し、ジョブ番号「Ｊ１２３４」で指定された総ページ数「２３」の印刷が完了したことが判明する。この場合、ジョブ管理実行部３３Ｄは、ジョブ管理テーブルに記憶されたジョブ番号「Ｊ１２３４」のジョブ状態を「Ｐｒｉｎｔ」から「Ｄｏｎｅ」へ更新する（ステップＳ７１２）。
【０１８６】
このようにジョブ状態が「Ｐｒｉｎｔ」から「Ｄｏｎｅ」へ遷移すると、ジョブ管理実行部３３Ｄは、プリンタ装置５０に対する印刷進捗状況の問合せの終了を印刷状況監視部３３Ｃに通知する（ステップＳ７１３）。
【０１８７】
さらに、ジョブ管理実行部３３Ｄは、ジョブ番号「Ｊ１２３４」に対応するｉｎｄｅｘ「０」で識別されるジョブｉｎｄｅｘディレクトリ、すなわちディレクトリパス「／ｖａｒ／ｔｍｐ／ｊｏｂ／０／」により指定されるジョブｉｎｄｅｘディレクトリに保存された印刷イメージデータの削除をスプーラ３４Ｂに依頼する（ステップＳ７１４）。
【０１８８】
そして、スプーラ３４Ｂにより印刷イメージデータが削除されると、スプーラ３４Ｂからジョブ管理実行部３３Ｄへ印刷イメージデータの削除終了が通知される（ステップＳ７１５）。このように印刷イメージデータの削除が終了すると、ジョブ管理テーブルに記憶されたジョブ番号「Ｊ１２３４」のジョブ状態を「Ｄｏｎｅ」から「Ｉｎｖａｌｉｄ」へ更新し（ステップＳ７１６）、処理を終了する。
【０１８９】
［印刷シーケンス（障害発生）］
次に、印刷時に障害が発生する場合の印刷シーケンスを例示する。図３１及び図３２は、印刷シーケンスの一例を示す図である。図３１及び図３２には、図３０と同様に、ｉｎｄｅｘ「０」で識別されるジョブ番号「Ｊ１２３４」のジョブ状態が「Ｓｐｏｏｌ」から「Ｓｅｎｄ」へ遷移してから印刷が完了するまでの印刷シーケンスが示されている。さらに、図３１及び図３２でも、ジョブ番号「Ｊ１２３４」は、セパレータを含め、総ページ数が２３ページのジョブである場合を想定して以下の説明を行うこととする。なお、プリンタ装置５０に障害、すなわちＪＡＭが発生するまでの処理、すなわち図３１に示すステップＳ７０１〜ステップＳ７０８までの処理は、図３０に示す印刷シーケンスと同様である。
【０１９０】
図３１に示すように、印刷画像生成部３４Ａから印刷イメージ送信部３４Ｃへジョブの印刷開始が通知される（ステップＳ７０１）。このように印刷開始の通知を受け付けた印刷イメージ送信部３４Ｃは、印刷状況の監視の開始をジョブ管理部３３の印刷状況監視部３３Ｃに通知する（ステップＳ７０２）。
【０１９１】
続いて、印刷状況の監視開始の通知を印刷状況監視部３３Ｃを介して受け付けたジョブ管理実行部３３Ｄは、ジョブ管理テーブルが持つレコードのうちジョブ番号「Ｊ１２３４」に対応するレコードのジョブ状態を「Ｓｐｏｏｌ」から「Ｓｅｎｄ」へ遷移させる。
【０１９２】
また、印刷イメージ送信部３４Ｃは、印刷イメージデータの送信をスプーラ３４Ｂに指示することにより、スプールに保存されたジョブ番号「Ｊ１２３４」の印刷イメージデータをプリンタ装置５０へ送信させる（ステップＳ７０３及びステップＳ７０４）。
【０１９３】
その後、印刷状況監視部３３Ｃは、所定の間隔、例えば０．５秒や１秒などの間隔でプリンタ装置５０に対する印刷進捗状況、例えば印刷済みのページ数などの問合せを開始する（ステップＳ７０５）。この結果、印刷状況監視部３３Ｃは、印刷進捗状況の問合せに対する応答をプリンタ装置５０から受信する（ステップＳ７０６）。
【０１９４】
この結果を受けて、印刷状況監視部３３Ｃは、プリンタ装置５０から受信した印刷進捗状況、例えば１５ページ印刷をジョブ管理実行部３３Ｄに出力する（ステップＳ７０７）。このステップＳ７０７で印刷進捗状況がジョブ管理実行部３３Ｄに出力された時点では、ジョブ管理テーブルに記憶されたジョブ番号「Ｊ１２３４」のジョブ状態は「Ｓｅｎｄ」であるが、ステップＳ７０７で出力された印刷進捗状況から１５ページまで印刷が終了していることが判明する。このため、ジョブ管理実行部３３Ｄは、ジョブ管理テーブルに記憶されたジョブ番号「Ｊ１２３４」のジョブ状態を「Ｓｅｎｄ」から「Ｐｒｉｎｔ」へ更新する（ステップＳ７０８）。
【０１９５】
ここで、印刷状況監視部３３Ｃにより、ステップＳ７０５に続いて２回目の印刷進捗状況の問合せがプリンタ装置５０に行われるが（ステップＳ８０１）、この問合せの前にプリンタ装置５０でＪＡＭが発生する。この場合、プリンタ装置５０から印刷状況監視部３３Ｃへ印刷進捗状況、例えば「２ページの印刷＋印刷障害：ＪＡＭ発生」が応答される（ステップＳ８０２）。
【０１９６】
このステップＳ８０２の応答を受けて、印刷状況監視部３３Ｃは、プリンタ装置５０から受信した印刷進捗状況、例えば「２ページの印刷＋印刷障害：ＪＡＭ発生」をジョブ管理実行部３３Ｄに出力する（ステップＳ８０３）。
【０１９７】
その後、印刷状況監視部３３Ｃは、所定の間隔でプリンタ装置５０に対する印刷進捗状況の問合せを継続する（ステップＳ８０４）。この結果、印刷状況監視部３３Ｃは、ステップＳ８０４の印刷進捗状況の問合せに対する応答をプリンタ装置５０から受信する（ステップＳ８０５）。
【０１９８】
この結果を受けて、印刷状況監視部３３Ｃは、プリンタ装置５０から受信した印刷進捗状況、例えば「エラー無し」をジョブ管理実行部３３Ｄに出力する（ステップＳ８０６）。このステップＳ８０６で印刷進捗状況がジョブ管理実行部３３Ｄに出力された時点で、中継装置３０側でプリンタ装置５０が印刷可能な状態に復帰したことを識別できる。ここで、現在までに印刷が終了できたページ数が１５ページであり、ジョブ番号「Ｊ１２３４」で指定された２３ページに足りない。このため、ジョブ管理実行部３３Ｄは、再印刷を開始する。
【０１９９】
この場合、ジョブ管理実行部３３Ｄは、ジョブ番号「Ｊ１２３４」の再印刷を印刷イメージ送信部３４Ｃに依頼すると共に、ジョブ管理テーブルに記憶されたジョブ番号「Ｊ１２３４」のジョブ状態を「Ｐｒｉｎｔ」から「Ｓｅｎｄ」へ更新する（ステップＳ８０７及びステップＳ８０８）。
【０２００】
ステップＳ８０７で再印刷が依頼された印刷イメージ送信部３４Ｃは、印刷イメージデータの送信をスプーラ３４Ｂに指示することにより、スプールに保存されたジョブ番号「Ｊ１２３４」の印刷イメージデータをプリンタ装置５０へ送信させる（ステップＳ８０９及びステップＳ８１０）。
【０２０１】
このステップＳ８０９及びステップＳ８１０が行われる間も、印刷状況監視部３３Ｃは、プリンタ装置５０に対する印刷進捗状況の問合せを継続し（ステップＳ８１１）、印刷進捗状況の問合せに対する応答をプリンタ装置５０から受信するが（ステップＳ８１２）、ステップＳ８０５で応答が得られた時点からプリンタ装置５０に状態の変化はない。
【０２０２】
さらに、図３２に示すように、印刷状況監視部３３Ｃは、所定の間隔でプリンタ装置５０に対する印刷進捗状況の問合せを継続する（ステップＳ８１３）。この結果、印刷状況監視部３３Ｃは、ステップＳ８１３の印刷進捗状況の問合せに対する応答をプリンタ装置５０から受信する（ステップＳ８１４）。
【０２０３】
この結果を受けて、印刷状況監視部３３Ｃは、プリンタ装置５０から受信した印刷進捗状況、例えば１５ページ印刷をジョブ管理実行部３３Ｄに出力する（ステップＳ８１５）。このステップＳ８１５で印刷進捗状況がジョブ管理実行部３３Ｄに出力された時点では、再印刷の印刷イメージデータの送信により、ジョブ管理テーブルに記憶されたジョブ番号「Ｊ１２３４」のジョブ状態は「Ｓｅｎｄ」にあるが、ステップＳ８１５で出力された印刷進捗状況から再印刷が１５ページまで終了していることが判明する。このため、ジョブ管理実行部３３Ｄは、ジョブ管理テーブルに記憶されたジョブ番号「Ｊ１２３４」のジョブ状態を「Ｓｅｎｄ」から「Ｐｒｉｎｔ」へ更新する（ステップＳ８１６）。
【０２０４】
その後、印刷状況監視部３３Ｃは、ステップＳ８１３に続いて再印刷から２回目の印刷進捗状況の問合せをプリンタ装置５０に行う（ステップＳ８１７）。この結果、印刷状況監視部３３Ｃは、ステップＳ８１７の印刷進捗状況の問合せに対する応答をプリンタ装置５０から受信する（ステップＳ８１８）。
【０２０５】
このステップＳ８１８の応答を受けて、印刷状況監視部３３Ｃは、プリンタ装置５０から受信した印刷進捗状況、例えば８ページ印刷をジョブ管理実行部３３Ｄに出力する（ステップＳ８１９）。このステップＳ８１９で再印刷から２回目の印刷進捗状況がジョブ管理実行部３３Ｄに出力された段階で１５ページ＋８ページの再印刷が終了し、ジョブ番号「Ｊ１２３４」で指定された総ページ数「２３」の印刷が完了したことが判明する。この場合、ジョブ管理実行部３３Ｄは、ジョブ管理テーブルに記憶されたジョブ番号「Ｊ１２３４」のジョブ状態を「Ｐｒｉｎｔ」から「Ｄｏｎｅ」へ更新する（ステップＳ８２０）。
【０２０６】
このようにジョブ状態が「Ｐｒｉｎｔ」から「Ｄｏｎｅ」へ遷移すると、ジョブ管理実行部３３Ｄは、プリンタ装置５０に対する印刷進捗状況の問合せの終了を印刷状況監視部３３Ｃに通知する（ステップＳ８２１）。
【０２０７】
さらに、ジョブ管理実行部３３Ｄは、ジョブ番号「Ｊ１２３４」に対応するｉｎｄｅｘ「０」で識別されるジョブｉｎｄｅｘディレクトリ、すなわちディレクトリパス「／ｖａｒ／ｔｍｐ／ｊｏｂ／０／」により指定されるジョブｉｎｄｅｘディレクトリに保存された印刷イメージデータの削除をスプーラ３４Ｂに依頼する（ステップＳ８２２）。
【０２０８】
そして、スプーラ３４Ｂにより印刷イメージデータが削除されると、スプーラ３４Ｂからジョブ管理実行部３３Ｄへ印刷イメージデータの削除終了が通知される（ステップＳ８２３）。このように印刷イメージデータの削除が終了すると、ジョブ管理テーブルに記憶されたジョブ番号「Ｊ１２３４」のジョブ状態を「Ｄｏｎｅ」から「Ｉｎｖａｌｉｄ」へ更新し（ステップＳ８２４）、処理を終了する。
【０２０９】
［印刷状況監視処理］
図３３を用いて、印刷状況監視部３３Ｃが実行する処理内容について説明する。図３３は、印刷状況監視処理の手順の一例を示すフローチャートである。図３３に示すように、印刷状況監視部３３Ｃは、印刷イメージ送信部３４Ｃから印刷状況の監視開始が通知されるのを待機する（ステップＳ９０１）。そして、印刷状況監視部３３Ｃは、プリンタ装置５０に印刷進捗状況を問い合わせる間隔を計測するタイマを起動する（ステップＳ９０２）。
【０２１０】
続いて、印刷状況監視部３３Ｃは、印刷進捗状況、例えば印刷済みのページ数などの問合せをプリンタ装置５０に問い合わせる（ステップＳ９０３）。そして、印刷状況監視部３３Ｃは、印刷進捗状況の問合せに対する応答の待機状態に移行する（ステップＳ９０４）。その後、印刷状況監視部３３Ｃは、ステップＳ９０３の印刷進捗状況の問合せに対する応答をプリンタ装置５０から受信する（ステップＳ９０５）。
【０２１１】
その上で、印刷状況監視部３３Ｃは、プリンタ装置５０から受信した応答から印刷済みのページ数を取得する（ステップＳ９０６）。そして、印刷状況監視部３３Ｃは、ステップＳ９０６で取得された印刷進捗状況、例えば１５ページ印刷をジョブ管理実行部３３Ｄに出力する（ステップＳ９０７）。
【０２１２】
その後、印刷状況監視部３３Ｃは、タイマのタイムアウト、あるいはジョブ管理実行部３３Ｄからの印刷進捗状況の問合せの終了通知のうちいずれかを待機する（ステップＳ９０８）。このとき、ジョブ管理実行部３３Ｄから印刷進捗状況の問合せの終了が通知される前にタイマがタイムアウトした場合（ステップＳ９０９Ｎｏ）、印刷状況の監視は終了されず、印刷進捗状況の問合せが継続される。この場合、ステップＳ９０３の処理へ移行し、ステップＳ９０４〜ステップＳ９０８までの処理を繰り返し実行する。
【０２１３】
一方、ジョブ管理実行部３３Ｄから印刷進捗状況の問合せの終了が通知された場合（ステップＳ９０９Ｙｅｓ）、印刷状況の監視は終了される。この場合、印刷状況監視部３３Ｃは、タイマを停止し（ステップＳ９１０）、印刷状況の監視を終了する。その後、ステップＳ９０１の処理へ移行する。
【０２１４】
［ジョブ管理処理］
図３４を用いて、ジョブ管理実行部３３Ｄが実行する処理内容について説明する。図３４は、ジョブ管理処理の手順の一例を示すフローチャートである。図３４に示すジョブ管理処理は、一例として、印刷状況監視部３３Ｃにより印刷状況の監視が開始されるのに連動して、ジョブ管理テーブルのジョブ状態が「Ｓｐｏｏｌ」から「Ｓｅｎｄ」へ遷移された場合に開始される。
【０２１５】
図３４に示すように、ジョブ管理実行部３３Ｄは、印刷状況監視部３３Ｃから印刷進捗状況が通知されるのを待機する（ステップＳ１００１）。そして、印刷状況監視部３３Ｃから通知された印刷進捗状況に障害発生が含まれない場合（ステップＳ１００２Ｎｏ）、ジョブ管理実行部３３Ｄは、前回に印刷進捗状況が通知されてから印刷済みのページ数に進捗があるか否かを判定する（ステップＳ１００３）。なお、印刷済みのページ数に進捗がない場合（ステップＳ１００３Ｎｏ）、ステップＳ１００１の処理に移行する。
【０２１６】
ここで、印刷済みのページ数に進捗がある場合（ステップＳ１００３Ｙｅｓ）、ジョブ管理実行部３３Ｄは、ジョブ管理テーブルに定義されたジョブのうち印刷中のジョブに対応する総ページ数を参照する（ステップＳ１００４）。
【０２１７】
その上で、ジョブ管理実行部３３Ｄは、総ページ数から印刷済みのページ数が減算された残りページ数が「０」であるか否かを判定する（ステップＳ１００５）。そして、残りページ数が「０」でない場合（ステップＳ１００５Ｎｏ）、ステップＳ１００１の処理に移行する。このとき、印刷済みのページ数が「０」から「０」以外の値に変化する進捗である場合、ジョブ管理テーブルのジョブ状態を「Ｓｅｎｄ」から「Ｐｒｉｎｔ」へ更新する処理が挿入された上でステップＳ１００１に移行する。
【０２１８】
一方、残りページ数が「０」である場合（ステップＳ１００５Ｙｅｓ）、印刷が完了したと判断する。この場合、ジョブ管理実行部３３Ｄは、プリンタ装置５０に対する印刷進捗状況の問合せの終了を印刷状況監視部３３Ｃに通知する（ステップＳ１００６）。この他、ジョブ管理実行部３３Ｄは、ジョブ管理テーブルのジョブ状態を「Ｐｒｉｎｔ」から「Ｄｏｎｅ」へ更新する処理も併せて行う。
【０２１９】
さらに、ジョブ管理実行部３３Ｄは、印刷が完了したジョブに関する印刷イメージデータの削除をスプーラ３４Ｂに依頼し（ステップＳ１００７）、スプーラ３４Ｂから印刷イメージデータの削除終了が応答されるのを待機する。
【０２２０】
その後、スプーラ３４Ｂから印刷イメージデータの削除終了が応答されると（ステップＳ１００８）、ジョブ管理実行部３３Ｄは、次のような処理を実行する。すなわち、ジョブ管理実行部３３Ｄは、ジョブ管理テーブルに記憶されたジョブのうち印刷イメージデータの削除が終了したジョブのジョブ状態を「Ｄｏｎｅ」から「Ｉｎｖａｌｉｄ」へ更新することにより、当該ジョブのレコードを削除し（ステップＳ１００９）、ステップＳ１００１の処理へ移行する。
【０２２１】
また、印刷状況監視部３３Ｃから通知された印刷進捗状況に障害発生が含まれる場合（ステップＳ１００２Ｙｅｓ）、ジョブ管理実行部３３Ｄは、プリンタ装置５０から印刷状況監視部３３Ｃを介して印刷進捗状況が後続して通知されるのを待機する（ステップＳ１０１０）。その後、エラー無しを含む印刷進捗状況が通知されるまで（ステップＳ１０１１Ｙｅｓ）、後続する印刷進捗状況の通知を待機する（ステップＳ１０１０）。
【０２２２】
そして、エラー無しを含む印刷進捗状況が通知されると（ステップＳ１０１１Ｎｏ）、ジョブ管理実行部３３Ｄは、ジョブ管理テーブルに定義されたジョブ番号のうちジョブ状態が「Ｐｒｉｎｔ」であるジョブ番号を取得する（ステップＳ１０１２）。その上で、ジョブ管理実行部３３Ｄは、ステップＳ１０１２で取得されたジョブ番号の再印刷を印刷イメージ送信部３４Ｃに依頼し（ステップＳ１０１３）、ステップＳ１００１の処理に移行する。このように再印刷が行われる場合、印刷イメージデータが改めてプリンタ装置５０へ送信されるので、ジョブ管理テーブルのジョブ状態を「Ｐｒｉｎｔ」から「Ｓｅｎｄ」へ更新する処理も併せて行う。
【０２２３】
［効果の一側面］
上述してきたように、本実施例に係る中継装置３０は、ホスト機１０が標準装備する「セパレータ」と呼ばれるページを印刷する機能を利用し、ホスト機１０から送出される印刷データからセパレータを特定してセパレータからジョブ番号を特定する。その上で、本実施例に係る中継装置３０は、印刷ページデータから印刷イメージデータを描画してプリンタ装置５０へ送信する一方で、ジョブ番号ごとに当該ジョブ番号に対応する印刷イメージデータの印刷状況を監視する。それ故、プリンタ装置５０で障害が発生した場合でも、いずれのジョブの実行中に障害が発生したかを特定できる。したがって、本実施例に係る中継装置３０によれば、ホスト機１０の改修なしに障害がある印刷ジョブの認識を実現できる。
【実施例２】
【０２２４】
さて、これまで開示の装置に関する実施例について説明したが、本発明は上述した実施例以外にも、種々の異なる形態にて実施されてよいものである。そこで、以下では、本発明に含まれる他の実施例を説明する。
【０２２５】
［コンソール等への報知］
上記の実施例１では、プリンタ装置５０で障害が発生した場合、障害がある印刷ジョブの再印刷が自動的に行われる例を説明したが、必ずしも再印刷が自動的に行われずともかまわない。例えば、ホスト機１０に接続されたコンソール等に障害がある印刷ジョブを通知することもできる。このとき、コンソールには、一例として、ジョブ番号、総ページ数及び印刷済みのページ数のうち少なくともいずれか１つもしくはこれらの組合せを通知することができる。これによって、コンソールを操作するオペレータ等は、障害があった印刷ジョブを識別することができる結果、コンソールからホスト機１０へ再印刷を指示することができる。
【０２２６】
［分散および統合］
また、図示した各装置の各構成要素は、必ずしも物理的に図示の如く構成されておらずともよい。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。例えば、印刷データ処理部３１、セパレータ特定部３２、ジョブ管理部３３または印刷イメージデータ処理部３４を中継装置３０の外部装置としてネットワーク経由で接続するようにしてもよい。また、印刷データ処理部３１、セパレータ特定部３２、ジョブ管理部３３または印刷イメージデータ処理部３４を別の装置がそれぞれ有し、ネットワーク接続されて協働することで、上記の中継装置３０の機能を実現するようにしてもよい。
【０２２７】
［中継プログラム］
また、上記の実施例で説明した各種の処理は、予め用意されたプログラムをコンピュータで実行することによって実現することができる。そこで、以下では、図３５を用いて、上記の実施例と同様の機能を有する中継プログラムを実行するコンピュータの一例について説明する。
【０２２８】
図３５は、実施例１及び実施例２に係る中継プログラムを実行するコンピュータのハードウェア構成例を示す図である。図３５に示すように、コンピュータ１００は、操作部１１０ａと、スピーカ１１０ｂと、カメラ１１０ｃと、ディスプレイ１２０と、通信部１３０とを有する。さらに、このコンピュータ１００は、ＣＰＵ１５０と、ＲＯＭ１６０と、ＨＤＤ１７０と、ＲＡＭ１８０とを有する。これら１１０〜１８０の各部はバス１４０を介して接続される。
【０２２９】
ＨＤＤ１７０には、図３５に示すように、上記の実施例１で示した印刷データ処理部３１、セパレータ特定部３２、ジョブ管理部３３及び印刷イメージデータ処理部３４と同様の機能を発揮する中継プログラム１７０ａが記憶される。この中継プログラム１７０ａは、図６に示した印刷データ処理部３１、セパレータ特定部３２、ジョブ管理部３３及び印刷イメージデータ処理部３４の各構成要素と同様、統合又は分離してもかまわない。すなわち、ＨＤＤ１７０には、必ずしも上記の実施例１で示した全てのデータが格納されずともよく、処理に用いるデータがＨＤＤ１７０に格納されればよい。なお、ここでは、補助記憶装置の一例として、ＨＤＤ１７０を例示したが、ＳＳＤなどのフラッシュメモリを実装することとしてもかまわない。また、中継プログラムは、必ずしも補助記憶装置に格納されておらずともよく、ＲＯＭ等の半導体メモリ素子に記憶されることとしてもかまわない。
【０２３０】
このような環境の下、ＣＰＵ１５０は、ＨＤＤ１７０から中継プログラム１７０ａを読み出した上でＲＡＭ１８０へ展開する。この結果、中継プログラム１７０ａは、図３５に示すように、中継プロセス１８０ａとして機能する。この中継プロセス１８０ａは、ＲＡＭ１８０が有する記憶領域のうち中継プロセス１８０ａに割り当てられた領域にＨＤＤ１７０から読み出した各種データを展開し、この展開した各種データを用いて各種の処理を実行する。例えば、中継プロセス１８０ａが実行する処理の一例として、図７、図８、図１６〜図１８、図２５、図３０〜図３４に示す処理などが含まれる。なお、ＣＰＵ１５０では、必ずしも上記の実施例１で示した全ての処理部が動作せずともよく、実行対象とする処理に対応する処理部が仮想的に実現されればよい。また、ＣＰＵ１５０は、あくまでハードウェアプロセッサの一例であり、他のプロセッサ、例えばＭＰＵ等が代わりに用いられることとしてもかまわない。
【０２３１】
なお、上記の中継プログラム１７０ａは、必ずしも最初からＨＤＤ１７０やＲＯＭ１６０に記憶されておらずともかまわない。例えば、コンピュータ１００に挿入されるフレキシブルディスク、いわゆるＦＤ、ＣＤ−ＲＯＭ、ＤＶＤディスク、光磁気ディスク、ＩＣカードなどの「可搬用の物理媒体」に中継プログラム１７０ａを記憶させる。そして、コンピュータ１００がこれらの可搬用の物理媒体から中継プログラム１７０ａを取得して実行するようにしてもよい。また、公衆回線、インターネット、ＬＡＮ、ＷＡＮなどを介してコンピュータ１００に接続される他のコンピュータまたはサーバ装置などに中継プログラム１７０ａを記憶させておき、コンピュータ１００がこれらから中継プログラム１７０ａを取得して実行するようにしてもよい。
【符号の説明】
【０２３２】
１      印刷システム
１０      ホスト機
３０      中継装置
３１      印刷データ処理部
３２      セパレータ特定部
３２Ａ    セパレータ情報記憶部
３２Ａ１  セパレータ特定テーブル
３２Ａ２  ジョブ特定テーブル
３２Ｂ    第１の特定部
３２Ｃ    第２の特定部
３３      ジョブ管理部
３３Ａ    ジョブ管理キュー記憶部
３３Ｂ    ジョブ管理テーブル記憶部
３３Ｃ    印刷状況監視部
３３Ｄ    ジョブ管理実行部
３４      印刷イメージデータ処理部
３４Ａ    印刷画像生成部
３４Ｂ    スプーラ
３４Ｃ    印刷イメージ送信部
５０      プリンタ装置
【図１】
2018083358.tif 000003
【図２】
2018083358.tif 000004
【図３】
2018083358.tif 000005
【図４】
2018083358.tif 000006
【図５】
2018083358.tif 000007
【図６】
2018083358.tif 000008
【図７】
2018083358.tif 000009
【図８】
2018083358.tif 000010
【図９】
2018083358.tif 000011
【図１０】
2018083358.tif 000012
【図１１】
2018083358.tif 000013
【図１２】
2018083358.tif 000014
【図１３】
2018083358.tif 000015
【図１４】
2018083358.tif 000016
【図１５】
2018083358.tif 000017
【図１６】
2018083358.tif 000018
【図１７】
2018083358.tif 000019
【図１８】
2018083358.tif 000020
【図１９】
2018083358.tif 000021
【図２０】
2018083358.tif 000022
【図２１】
2018083358.tif 000023
【図２２】
2018083358.tif 000024
【図２３】
2018083358.tif 000025
【図２４】
2018083358.tif 000026
【図２５】
2018083358.tif 000027
【図２６】
2018083358.tif 000028
【図２７】
2018083358.tif 000029
【図２８】
2018083358.tif 000030
【図２９】
2018083358.tif 000031
【図３０】
2018083358.tif 000032
【図３１】
2018083358.tif 000033
【図３２】
2018083358.tif 000034
【図３３】
2018083358.tif 000035
【図３４】
2018083358.tif 000036
【図３５】
2018083358.tif 000037