【手続補正書】
【提出日】平成16年4月13日(2004.4.13)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【発明の名称】用紙排出プログラムを記録した媒体、データ識別プログラムを記録した媒体、用紙排出装置、データ識別装置、用紙排出方法およびデータ識別方法
【特許請求の範囲】
【請求項１】印刷ジョブがスプーラによってキャンセルされたときに印刷装置にて印刷用紙を排出させる用紙排出プログラムを記録した媒体であって、
上記スプーラが出力するスプールデータ中の後尾データを参照するスプールデータ参照機能と、
上記スプーラによるキャンセル時に起動され、上記スプールデータ参照機能による参照後尾データにおいて所定態様のデータの有無を検出するデータ検出機能と、
同データ検出機能によって所定態様のデータが検出されなかったときに上記印刷装置に対して用紙排出コマンドを出力する用紙排出コマンド出力機能とをコンピュータに実現させることを特徴とする用紙排出プログラムを記録した媒体。
【請求項２】上記請求項１に記載の用紙排出プログラムを記録した媒体であって、
上記スプールデータ参照機能は、上記所定態様データの検出に必要なビット数のデータを参照することを特徴とする用紙排出プログラムを記録した媒体。
【請求項３】上記請求項１または請求項２のいずれかに記載の用紙排出プログラムを記録した媒体であって、
上記スプールデータ参照機能は上記参照する後尾データを格納可能であることを特徴とする用紙排出プログラムを記録した媒体。
【請求項４】上記請求項１〜請求項３のいずれかに記載の用紙排出プログラムを記録した媒体において、
上記データ検出機能は、印刷ジョブの終了を示すデータを検出することを特徴とする用紙排出プログラムを記録した媒体。
【請求項５】中間転送データ中に含まれうる所定態様のデータを識別するためのデータ識別プログラムを記録した媒体であって、
中間転送データを取得する中間転送データ取得機能と、
同中間転送データ取得機能が取得した中間転送データ中の所定位置を参照する中間転送データ参照機能と、
同中間転送データ参照機能が参照する所定位置のデータが所定態様のデータであるか否かを判別するデータ態様判別機能とをコンピュータに実現させることを特徴とするデータ識別プログラムを記録した媒体。
【請求項６】印刷ジョブがスプーラによってキャンセルされたときに印刷装置にて印刷用紙を排出させる用紙排出装置であって、
上記スプーラが出力するスプールデータ中の後尾データを参照するスプールデータ参照手段と、
上記スプーラによるキャンセル時に起動され、上記スプールデータ参照手段による参照後尾データにおいて所定態様のデータの有無を検出するデータ検出手段と、
同データ検出手段によって所定態様のデータが検出されなかったときに上記印刷装置に対して用紙排出コマンドを出力する用紙排出コマンド出力手段とをコンピュータに実現させることを特徴とする用紙排出装置。
【請求項７】上記請求項６に記載の用紙排出装置であって、
上記スプールデータ参照手段は、上記所定態様データの検出に必要なビット数のデータを参照することを特徴とする用紙排出装置。
【請求項８】上記請求項６または請求項７のいずれかに記載の用紙排出装置であって、
上記スプールデータ参照手段は上記参照する後尾データを格納可能であることを特徴とする用紙排出装置。
【請求項９】上記請求項６〜請求項８のいずれかに記載の用紙排出装置において、
上記データ検出手段は、印刷ジョブの終了を示すデータを検出することを特徴とする用紙排出装置。
【請求項１０】中間転送データ中に含まれうる所定態様のデータを識別するためのデータ識別装置であって、
中間転送データを取得する中間転送データ取得手段と、
同中間転送データ取得手段が取得した中間転送データ中の所定位置を参照する中間転送データ参照手段と、
同中間転送データ参照手段が参照する所定位置のデータが所定態様のデータであるか否かを判別するデータ態様判別手段とをコンピュータに実現させることを特徴とするデータ識別装置。
【請求項１１】印刷ジョブがスプーラによってキャンセルされたときに印刷装置にて印刷用紙を排出させる用紙排出方法であって、
上記スプーラが出力するスプールデータ中の後尾データを参照するスプールデータ参照工程と、
上記スプーラによるキャンセル時に起動され、上記スプールデータ参照工程による参照後尾データにおいて所定態様のデータの有無を検出するデータ検出工程と、
同データ検出工程によって所定態様のデータが検出されなかったときに上記印刷装置に対して用紙排出コマンドを出力する用紙排出コマンド出力工程とをコンピュータに実現させることを特徴とする用紙排出方法。
【請求項１２】上記請求項１１に記載の用紙排出方法であって、
上記スプールデータ参照工程は、上記所定態様データの検出に必要なビット数のデータを参照することを特徴とする用紙排出方法。
【請求項１３】上記請求項１１または請求項１２のいずれかに記載の用紙排出方法であって、
上記スプールデータ参照工程は上記参照する後尾データを格納可能であることを特徴とする用紙排出方法。
【請求項１４】上記請求項１１〜請求項１３のいずれかに記載の用紙排出方法において、
上記データ検出工程は、印刷ジョブの終了を示すデータを検出することを特徴とする用紙排出方法。
【請求項１５】中間転送データ中に含まれうる所定態様のデータを識別するためのデータ識別方法であって、
中間転送データを取得する中間転送データ取得工程と、
同中間転送データ取得工程が取得した中間転送データ中の所定位置を参照する中間転送データ参照工程と、
同中間転送データ参照工程が参照する所定位置のデータが所定態様のデータであるか否かを判別するデータ態様判別工程とをコンピュータに実現させることを特徴とするデータ識別方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、用紙排出プログラムを記録した媒体、データ識別プログラムを記録した媒体、用紙排出装置、データ識別装置、用紙排出方法およびデータ識別方法に関する。
【０００２】
【従来の技術】
コンピュータから文書や図面等をプリンタにて印刷するためには、通常コンピュータ上でドライバ，スプーラおよびランゲージモニタ等が連携して印刷データをプリンタに転送している。すなわち、ドライバが生成する印刷データをスプーラが一時的にスプールし、ランゲージモニタがプリンタの状態を監視するなどして適正量のデータを適正タイミングでプリンタに供給する。
【０００３】
【発明が解決しようとする課題】
上述した従来の印刷実行においては、以下の問題があった。すなわち、利用者が印刷を取り消すときに、ドライバにて印刷を取り消せば当該ドライバがプリンタにおいてキャンセル処理を行うためのコマンドを出力することができるものの、スプーラにデータが転送されてから利用者が印刷を取り消した場合には、プリンタが適正なキャンセル処理を行うことができずに印刷用紙が排出されない場合があった。かかる場合にはプリンタ自体に備える排出ボタンにて印刷用紙を排出することなども考えられるが、当該排出ボタンを設けないような低コストのプリンタではかかる排出は不可能であり、電源を切ってからプリンタのカバーを開けて印刷用紙を取り出す必要がある。
【０００４】
本発明は、上記課題にかんがみてなされたもので、スプーラによる印刷キャンセルがなされたときも利用者の手を煩わすことなくプリンタに印刷用紙を排出させることが可能な用紙排出プログラムを記録した媒体、データ識別プログラムを記録した媒体、用紙排出装置、データ識別装置、用紙排出方法およびデータ識別方法の提供を目的とする。
【０００５】
【課題を解決するための手段】
上記目的を達成するため、請求項１にかかる発明は、印刷ジョブがスプーラによってキャンセルされたときに印刷装置にて印刷用紙を排出させる用紙排出プログラムを記録した媒体であって、上記スプーラが出力するスプールデータ中の後尾データを参照するスプールデータ参照機能と、上記スプーラによるキャンセル時に起動され、上記スプールデータ参照機能による参照後尾データにおいて所定態様のデータの有無を検出するデータ検出機能と、同データ検出機能によって所定態様のデータが検出されなかったときに上記印刷装置に対して用紙排出コマンドを出力する用紙排出コマンド出力機能とをコンピュータに実現させる構成としてある。
【０００６】
上記のように構成した請求項１にかかる発明においては、上記データ検出機能がスプーラによる印刷ジョブのキャンセル時に起動されるようになっており、当該キャンセル時にスプールデータ中の後尾データに所定態様のデータがあるか否かを検出する。そして、所定態様のデータが検出されなかったときに上記印刷装置に対して用紙排出コマンドを出力する。すなわち、印刷ジョブを終了させるためには通常ドライバがその終了を示す何らかのデータをスプールデータの最後に所定態様で付し、正常に印刷を終了するとかかる所定態様データによって印刷装置において適正に用紙が排出される。
【０００７】
しかし、スプーラにおいて印刷ジョブをキャンセルしたときには、途中でスプールデータの送信が停止し、上記所定態様のデータは印刷装置に送信されない。そこで、データ検出機能によって上記所定態様データが検出されないときに用紙排出コマンドを出力する。従って、このようなスプーラによるキャンセル時にも印刷装置において用紙が排出されずに停止したままになることはない。尚、このデータ検出機能は上記スプーラによるキャンセル時に起動されるので、スプーラが処理を実行中にたまたま処理が滞ってしばらくデータが送信されなかった場合に用紙排出コマンドを出力してしまうようなことはない。
【０００８】
また、上述のようにスプーラによるキャンセル時にデータ検出機能が実行されるように構成するためには様々な態様が考えられ、例えば、ランゲージモニタ等のモジュールとして構成され、スプーラによるキャンセル時に実行されるＥｎｄＤｏｃＰｏｒｔ関数の処理の一部として実現することなどが考えられる。
【０００９】
このように、データ検出機能にて所定態様のデータの有無を検出するためには、上記スプールデータ参照機能においてスプールデータの後尾データを参照することができればよい。その構成としては、例えば、上記所定態様データの検出に必要なビット数のデータを参照する構成とすることができる。この場合、さらには参照する後尾データを格納可能に構成すると好適である。
【００１０】
すなわち、上記スプーラは通常大きな印刷データを処理する際には当該印刷データをいくつかのファイルに分割して印刷装置に対して出力する。この場合、偶然一番最後の出力データが上記所定態様データのビット数に満たないものであることもあり得る。そこで、分割して出力されるデータの後尾データを格納しておけば、当該格納データと一番最後の出力データとを使用して所定態様データのビット数分のデータを参照することが可能になる。さらに、このように参照する所定態様データは種々のものが考えられるが、その好適な一例として、通常ドライバによってスプールデータの最後尾に付与される印刷ジョブの終了を示すデータを使用することができる。
【００１１】
また、このように転送データ中において所定態様のデータの有無を検出し、当該検出結果に応じて何らかの処理を実行する手法は、上述の印刷装置における排紙処理に限られず種々のものにて採用可能である。そこで、請求項５に記載の発明は、中間転送データ中に含まれうる所定態様のデータを識別するためのデータ識別プログラムを記録した媒体であって、中間転送データを取得する中間転送データ取得機能と、同中間転送データ取得機能が取得した中間転送データ中の所定位置を参照する中間転送データ参照機能と、同中間転送データ参照機能が参照する所定位置のデータが所定態様のデータであるか否かを判別するデータ態様判別機能とをコンピュータに実現させる構成としてある。
【００１２】
上記のように構成した請求項５にかかる発明においては、中間転送データ中に含まれうる所定態様のデータを識別する。すなわち、中間転送データを取得して当該所定データが記載されうる所定位置を参照し、当該位置に所定態様のデータがあるか否かを判別する。この結果、転送データをすべてスキャンすることなく所定態様のデータを発見することが可能になり、当該所定態様のデータに基づいて何らかの処理を実行する場合の処理が非常に簡単になり、その処理も高速になる。
【００１３】
むろん、以上述べてきた記録媒体は、磁気記録媒体であってもよいし光磁気記録媒体であってもよいし、今後開発されるいかなる記録媒体においても全く同様に考えることができる。また、一次複製品、二次複製品などの複製段階については全く問う余地無く同等である。上記媒体とは異なるが、供給方法として通信回線を利用して行なう場合であれば通信回線が伝送媒体となって本発明が利用されることになる。
さらに、一部がソフトウェアであって、一部がハードウェアで実現されている場合においても発明の思想において全く異なるものではなく、一部を記録媒体上に記憶しておいて必要に応じて適宜読み込まれるような形態のものとしてあってもよい。
【００１４】
このように、スプーラが出力するスプールデータ中の後尾データを参照して所定態様のデータの有無を検出する手法は実体のあるコンピュータおいて実現され、その意味で本発明をそのような装置としても適用可能であることは容易に理解できる。このため、請求項６〜請求項１０にかかる発明においても、基本的には同様の作用となる。むろん、このような装置は単独で実施される場合もあるし、ある機器に組み込まれた状態で他の方法とともに実施されることもあるなど、発明の思想としてはこれに限らず、各種の態様を含むものであって、適宜、変更可能である。
【００１５】
また、このような用紙排出プログラムは、かかる制御に従って処理を進めていく上でその根底にはその手順に発明が存在するということは当然であり、方法としても適用可能であることは容易に理解できる。このため、請求項１１〜請求項１５にかかる発明においても、基本的には同様の作用となる。すなわち、必ずしも実体のある媒体などに限らず、その方法としても有効であることに相違はない。
【００１６】
【発明の効果】
以上説明したように請求項１、請求項６、請求項１１にかかる発明によれば、印刷ジョブがスプーラによってキャンセルされた場合でも的確に印刷用紙を排出させることができる。
また、請求項２、請求項７、請求項１２にかかる発明によれば、簡単に所定態様のデータの有無を検出することができる。
さらに、請求項３、請求項８、請求項１３にかかる発明によれば、確実に所定態様のデータの有無を検出することができる。
さらに、請求項４、請求項９、請求項１４にかかる発明によれば、簡易な構成によりスプーラによるキャンセル時の処理を行うことができる。
さらに、請求項５、請求項１０、請求項１５にかかる発明によれば、中間転送データのすべてをスキャンすることなく所定態様のデータを検出することができる。
【００１７】
【発明の実施の形態】
以下、図面にもとづいて本発明の実施形態を説明する。
図１はコンピュータに周辺機器として印刷装置が接続されている状態の概略ハードウェア構成を示しており、図２は本発明がコンピュータにおいて複数のモジュールからなる用紙排出プログラムとして実現された場合における概略構成図を示している。
【００１８】
まず、図１に示す概略ハードウェア構成について説明する。コンピュータ１０は演算処理の中枢をなすＣＰＵ１１を備えており、このＣＰＵ１１はシステムバス１２を介してＢＩＯＳなどの記載されたＲＯＭ１３やＲＡＭ１４にアクセス可能となっている。また、システムバス１２には外部記憶装置としてのハードディスクドライブ１５とフロッピーディスクドライブ１６とＣＤ−ＲＯＭドライブ１７とが接続されており、ハードディスクドライブ１５に記憶されたＯＳ２０やアプリケーションプログラム（ＡＰＬ）５０がＲＡＭ１４に転送され、ＣＰＵ１１はＲＯＭ１３とＲＡＭ１４に適宜アクセスしてソフトウェアを実行する。すなわち、ＲＡＭ１４を一時的なワークエリアとして種々のプログラムを実行する。
【００１９】
シリアル通信用Ｉ／Ｏ１９ａにはキーボード４１やマウス４２の操作用入力機器が接続され、図示しないビデオボードを介して表示用のディスプレイ１８も接続されている。さらに、印刷装置３０とはパラレル通信用Ｉ／Ｏ１９ｂを介して接続可能となっている。また、本コンピュータ１０の構成は簡略化して説明しているが、パーソナルコンピュータとして一般的な構成を有するものを採用することができる。むろん、本発明が適用されるコンピュータはパーソナルコンピュータに限定されるものではない。この実施例はいわゆるデスクトップ型コンピュータであるが、ノート型であるとか、モバイル対応のものであっても良い。また、コンピュータ１０と印刷装置３０との接続インタフェースも上記パラレル通信用Ｉ／Ｏ１９ｂに限る必要はなくＵＳＢ接続やＳＣＳＩ接続等種々の接続態様を採用可能であるし、今後開発されるいかなる接続態様であっても同様である。
【００２０】
この例では各プログラムの類はハードディスクドライブ１５に記憶されているが、記録媒体はこれに限定されるものではない。例えば、フロッピーディスク１６ａであるとか、ＣＤ−ＲＯＭ１７ａであってもよい。これらの記録媒体に記録されたプログラムはフロッピーディスクドライブ１６やＣＤ−ＲＯＭドライブ１７を介してコンピュータ１０にて読み込まれ、ハードディスクドライブ１５にインストールされる。そして、ハードディスクドライブ１５を介してＲＡＭ１４上に読み込まれてコンピュータを制御することになる。
【００２１】
また、記録媒体はこれに限らず、光磁気ディスクなどであってもよい。さらに、半導体デバイスとしてフラッシュカードなどの不揮発性メモリなどを利用することも可能であるし、モデムや通信回線を介して外部のファイルサーバにアクセスしてダウンロードする場合には通信回線が伝送媒体となって本発明が利用される。印刷装置３０は図示しないＣＰＵ，ファームウェア等を備えており、当該ファームウェアに記載されたプログラムに従って上記コンピュータ１０から送信される印刷データを所定のＩ／Ｏを介して受信する。そして、印刷装置３０では当該データに基づいて所定のモータでヘッドや印刷用紙搬送機構を駆動しつつ印刷を実行する。
【００２２】
一方、本実施形態にかかるコンピュータ１０では、プリンタドライバ（ＰＲＴＤＲＶ）２１とスプーラ２２とランゲージモニタ２３とがＯＳ２０に組み込まれている。図２に示すように、ＡＰＬ５０において利用者は上記キーボード４１やマウス４２を介して文書や図面等を作成し、印刷装置３０にて印刷を実行するための指示を出すことが可能である。ＰＲＴＤＲＶ２１は同ＡＰＬ５０からの制御信号によってＡＰＬ５０の扱うデータを印刷用データに変換する処理等を担い、印刷データはスプーラ２２に対して出力される。また、ＰＲＴＤＲＶ２１はこの印刷データの出力時にデータの最後尾に「ｎ」ビットで印刷ジョブの終了を示すコマンドデータを付加するようになっている。
【００２３】
スプーラ２２はＰＲＴＤＲＶ２１から入力される印刷データを上記ハードディスクドライブ１５にスプールするようになっており、さらに当該スプールデータは同スプーラ２２によって所定の容量毎に分割され、各分割データ毎に上記ランゲージモニタ２３に渡される。ランゲージモニタ２３は上記パラレル通信用Ｉ／Ｏ１９ｂを介して上記印刷装置３０に対して受領分割データを出力するようになっている。すなわち、スプーラ２２とランゲージモニタ２３とが連携して、上記印刷装置３０のの印刷進捗状況に応じて印刷データを出力するようになっている。
【００２４】
より具体的には、ランゲージモニタ２３にはＳｔａｒｔＤｏｃＰｏｒｔ関数，ＷｒｉｔｅＰｏｒｔ関数２３ａ，ＥｎｄＤｏｃＰｏｒｔ関数２３ｂ等種々の関数が備えられており、スプーラ２２がその処理に応じて適切な関数を実行することによって印刷処理が進行する。印刷開始時にはＯｐｅｎＰｏｒｔ関数とＳｔａｒｔＤｏｃＰｏｒｔ関数とが実行され、上記ＰＲＴＤＲＶ２１の処理対象である印刷装置３０がその装置名やポート名で指定されるなどして、上記パラレル通信用Ｉ／Ｏ１９ｂを介する双方向通信可能状態が確保される。
【００２５】
スプーラ２２がランゲージモニタ２３に対して上記分割データを出力する際にはＷｒｉｔｅＰｏｒｔ関数２３ａが実行されるようになっている。例えば、一回の印刷ジョブにかかる印刷データを４つに分割して出力する際には、当該ＷｒｉｔｅＰｏｒｔ関数２３ａが４回実行され、ランゲージモニタ２３はかかる分割データ毎にパラレル通信用Ｉ／Ｏ１９ｂを介して印刷装置３０に対してデータを送信する。また、本実施形態にかかるＷｒｉｔｅＰｏｒｔ関数２３ａにおいては上記各分割データの後尾の「ｎ」ビットのデータをセーブデータとして上記ＲＡＭ１４に格納するようになっている。尚、分割して入力されるデータが「ｎ」ビットに満たないときは、後述するように印刷データ全体として後ろから「ｎ」ビットのデータをセーブデータとして確保する。
【００２６】
印刷ジョブの終了時およびスプーラ２２における印刷ジョブのキャンセル時には上記ランゲージモニタ２３においてはＥｎｄＤｏｃＰｏｒｔ関数２３ｂとＣｌｏｓｅＰｏｒｔ関数とが実行され、上記パラレル通信用Ｉ／Ｏ１９ｂの解放等の処理がなされる。ＥｎｄＤｏｃＰｏｒｔ関数２３ｂにおいては上記セーブデータが上記印刷ジョブの終了を示すコマンドデータと一致するか否かを判別するようになっており、両者が一致しないときにパラレル通信用Ｉ／Ｏ１９ｂを介して印刷用紙排出のためのリセットコマンドを出力させる。
【００２７】
すなわち、ＥｎｄＤｏｃＰｏｒｔ関数２３ｂがスプーラ２２によるキャンセル時に起動された場合には、スプーラ２２はデータの送信を途中で中断するので印刷ジョブの終了を示すコマンドデータがランゲージモニタ２３に入力されず、当該コマンドを印刷装置３０に出力することができない。この場合は、上記セーブデータが上記印刷ジョブの終了を示すコマンドデータと一致しないので、リセットコマンドを出力させて印刷用紙を排出させる。一方、ＥｎｄＤｏｃＰｏｒｔ関数２３ｂが印刷ジョブの終了時に起動された場合には、上記セーブデータが上記印刷ジョブの終了を示すコマンドデータと一致するので、リセットコマンドを出力させることはない。
【００２８】
図３はかかる構成において上記ＷｒｉｔｅＰｏｒｔ関数２３ａが実行する上記セーブデータにかかる処理のフローを示している。ここで、上記分割データはスプーラ２２によって所定の容量に分けられるものであり、最後に入力される分割データの前までは一つの印刷データについて等容量である。しかし、印刷データは常に等容量に分割できるわけではないので、等分割できない部分は最後の分割データで調整するようになっている。また、スプーラ２２によって途中で印刷ジョブがキャンセルされたときにはデータの送信は途中で中断される。従って、最後に入力されるデータあるいはスプーラ２２がキャンセルした時点でのデータに関してはそれ以前の分割データと等容量になるとは限らない。
【００２９】
そこで、以降はいずれの場合であっても上記ＷｒｉｔｅＰｏｒｔ関数２３ａに実際に入力される各データをバッファデータと呼ぶことにし、そのサイズを「ｍ」ビットとする。同図の説明において同バッファデータの後ろに［ｘ］と付し、バッファデータが最初から何番目のビットのものかを示すものとしてある。従って、バッファデータ［ｘ］という表記において当該「ｘ」は「１〜ｍ」の整数である。また、上記セーブデータの後ろにも同様に［ｘ］と付してあり、当該セーブデータが最初から何番目のものかを示し、セーブデータ［ｘ］という表記において当該「ｘ」は「１〜ｎ」の整数である。
【００３０】
本ＷｒｉｔｅＰｏｒｔ関数２３ａは、上記バッファデータとそのサイズ「ｍ」とをパラメタとして付与されつつ起動されるようになっており、図３に示すフローにおいては、分割データが上述の「ｎ」ビットに満たない場合も含めて後にＥｎｄＤｏｃＰｏｒｔ関数２３ｂで適正な判別が行えるようにセーブデータを確保するための処理を行っている。このためにまず、ステップＳ１００では上記分割データサイズ「ｍ」が上記印刷ジョブの終了を示すコマンドサイズ「ｎ」より小さいか否かを判別する。
【００３１】
同ステップＳ１００にてバッファデータサイズ「ｍ」が上記印刷ジョブの終了を示すコマンドサイズ「ｎ」より小さいと判別されないときには、ステップＳ１１０〜Ｓ１１６の処理によって上記バッファデータの後尾「ｎ」ビットのデータをセーブデータとして上記ＲＡＭ１４に格納する。具体的には、ステップＳ１１０にて当該処理に使用するカウンタ「ｉ」に「１」を代入して初期化し、ステップＳ１１２にてセーブデータ［ｉ］にバッファデータ［ｍ−ｎ＋ｉ］を代入する。
【００３２】
ここで、バッファデータの「ｍ−ｎ＋１」番目というのは当該バッファデータの後尾「ｎ」ビットの先頭である。従って、上記ステップＳ１１２の処理によってセーブデータ［ｉ］の先頭がバッファデータの後尾「ｎ」ビットの先頭になる。
【００３３】
ステップＳ１１４ではカウンタ「ｉ」をインクリメントし、ステップＳ１１６にてカウンタ「ｉ」が終了コマンドサイズ「ｎ」より大きいか否かを判別する。そして、同ステップＳ１１６にてカウンタ「ｉ」が終了コマンドサイズ「ｎ」より大きいと判別されるまでステップＳ１１２以降の処理を繰り返す。すなわち、セーブデータ［１］〜［ｎ］までのすべてに対し、バッファデータの後尾データを格納する。
【００３４】
上記ステップＳ１００にてバッファデータサイズ「ｍ」が上記印刷ジョブの終了を示すコマンドサイズ「ｎ」より小さいと判別された時には、ステップＳ１２０〜Ｓ１３６の処理によって、前バッファデータの後尾と現バッファデータとを併せて正味「ｎ」ビット分のセーブデータを確保する。ここで、前バッファデータとは、上記各分割データの処理を実行するためにＷｒｉｔｅＰｏｒｔ関数２３ａが複数回起動されるが、現在起動されているＷｒｉｔｅＰｏｒｔ関数２３ａの直前に起動されていたものにおけるバッファデータを意味している。
【００３５】
具体的には、ステップＳ１２０にて当該処理に使用するカウンタ「ｉ」に「１」を代入して初期化し、ステップＳ１２２にてセーブデータ［ｉ］に前セーブデータ［ｍ＋ｉ］を代入する。前回のＷｒｉｔｅＰｏｒｔ関数２３ａによって格納された前セーブデータ［ｉ］は「ｎ」ビットである。従って、セーブデータの先頭は前セーブデータの「ｍ＋１」番目である。
【００３６】
上記ステップＳ１２２における処理の後ステップＳ１２４にてカウンタ「ｉ」をインクリメントし、ステップＳ１２６にて同カウンタ「ｉ」が「ｎ−ｍ」より大きいか否かを判別する。そして、同ステップＳ１２６にてカウンタ「ｉ」が「ｎ−ｍ」より大きいと判別されるまで上記ステップＳ１２２〜ステップＳ１２６までの処理を繰り返す。この結果、上記前セーブデータ［ｍ＋１］〜［ｎ］までがセーブデータ［１］〜［ｎ−ｍ］までとして新たに確保される。
【００３７】
さらに、ステップＳ１３０にて当該処理に使用するカウンタ「ｉ」に再び「１」を代入して初期化し、ステップＳ１３２にてセーブデータ［ｎ−ｍ＋ｉ］に現バッファデータ［ｉ］を代入する。すなわち、上述のステップＳ１２２〜ステップＳ１２６にて生成したセーブデータ［１］〜［ｎ−ｍ］の次に現バッファデータの先頭を対応させて代入する。ステップＳ１３４ではカウンタ「ｉ」をインクリメントし、ステップＳ１３６にて同カウンタ「ｉ」が「ｍ」より大きいか否かを判別する。
【００３８】
そして、同ステップＳ１３６にてカウンタ「ｉ」が「ｍ」より大きいと判別されるまで上記ステップＳ１３２〜ステップＳ１３６までの処理を繰り返す。この結果、上記バッファデータ［１］〜［ｍ］までがセーブデータ［ｎ−ｍ＋１］〜［ｎ］までとして新たに確保される。すなわち、上述の処理によって前セーブデータの後尾の必要ビット数分と現バッファデータとをあわせたものが現セーブデータとして確保され、結果としてセーブデータが「ｎ」ビットになる。
【００３９】
図４はかかる構成において上記ＥｎｄＤｏｃＰｏｒｔ関数２３ｂが実行する上記セーブデータと終了コマンドとの比較にかかる処理のフローを示している。ステップＳ２００では、上記ＲＡＭ１４に格納されているセーブデータを参照し、当該ランゲージモニタがデフォルトで有している上記終了コマンドデータと上記参照データとを比較する。同ステップＳ２００にて両者が一致すると判別されたときには、終了コマンドデータ等を付すなどの処理を特に実行することはなく、通常のＥｎｄＤｏｃＰｏｒｔ関数２３ｂの機能を実行する。
【００４０】
上記ステップＳ２００にて両者が一致すると判別されないときには、ステップＳ２１０にてパラレル通信用Ｉ／Ｏ１９ｂを介して印刷用紙排出のためのリセットコマンドを出力させる。本ＥｎｄＤｏｃＰｏｒｔ関数２３ｂが起動されるのは上述のように印刷ジョブの終了時およびスプーラ２２における印刷ジョブのキャンセル時である。印刷ジョブの終了時には上述のＷｒｉｔｅＰｏｒｔ関数２３ａの処理によってセーブデータが終了コマンドになっているので、ＥｎｄＤｏｃＰｏｒｔ関数２３ｂにて何ら処理を行わなくても当該終了コマンドが上記印刷装置３０に出力される。
【００４１】
一方、スプーラ２２における印刷ジョブのキャンセル時には印刷データが最後まで出力されず、上述のＷｒｉｔｅＰｏｒｔ関数２３ａの処理によって取得したセーブデータは終了コマンドになっていない。しかし、ステップＳ２１０の処理によってリセットコマンドが印刷装置３０に対して出力されるので、印刷装置３０において印刷用紙の途中まで印字した段階で適切に当該印刷用紙が排出される。
【００４２】
次に上記構成およびフローによって実現される印刷ジョブ処理の具体例を説明する。ここでは、スプーラ２２にて印刷ジョブのキャンセルを実行した場合の例を示す。ＰＲＴＤＲＶ２１は上記ＡＰＬ５０にて印刷指示等がなされたときに、上記所定の処理を実行して当該処理データをひとまとまりの状態でスプーラ２２に出力する。このとき、ＰＲＴＤＲＶ２１は印刷データの後尾に終了コマンドを付している。
【００４３】
同印刷データが与えられると同スプーラ２２はこの印刷データをスプールするとともに所定の容量毎に分割し、これらを印刷データ列の順番通りに出力していく。
【００４４】
ランゲージモニタ２３においては、スプーラ２２が分割データを出力するたびに上記ＷｒｉｔｅＰｏｒｔ関数２３ａが実行される。本具体例においては、２番目の分割データの処理においてバッファデータサイズは終了コマンドサイズより大きいので上記ステップＳ１００の判別によりバッファデータの後尾「ｎ」ビットをセーブデータ［ｉ］とする。尚、ランゲージモニタ２３が取得した１番目と２番目の分割データは上記パラレル通信用Ｉ／Ｏ１９ｂに対して出力されるので、上記印刷装置３０においては、これら１番目と２番目の分割データに基づく印刷は実行される。
【００４５】
上述のようにスプーラ２２にて印刷ジョブのキャンセルが実行された場合には、ランゲージモニタ２３にて上記ＥｎｄＤｏｃＰｏｒｔ関数２３ｂが起動される。ここで、上記セーブデータは上記終了コマンドではないのでステップＳ２００の判別を経てステップＳ２１０において上記リセットコマンドを出力させる。従って、印刷装置３０においては上記１番目と２番目の分割データに基づく印刷が実行された後に印刷用紙が排出され、スプーラ２２におけるキャンセル時において印刷装置３０の印刷が途中で停止して印刷用紙が中途半端に送られたままになることはない。
【００４６】
さらに、他の具体例として、スプーラ２２によってキャンセルが実行されることなく最後まで印刷ジョブを実行し、かつ、分割データの最後が終了コマンドサイズに満たない場合を説明する。この場合、上述の例と同様にＰＲＴＤＲＶ２１が上記ＡＰＬ５０にて印刷指示等がなされたときに上記所定の処理を実行し、当該処理データの後尾に終了コマンドを付しつつひとまとまりの状態でスプーラ２２に出力する。
【００４７】
同印刷データが与えられると同スプーラ２２はこの印刷データをスプールするとともに所定の容量毎に分割し、これらを印刷データ列の順番通りに出力していく。ランゲージモニタ２３においては、スプーラ２２が分割データを出力するたびに上記ＷｒｉｔｅＰｏｒｔ関数２３ａが実行される。スプーラ２２が入力された印刷データを４つに分割し、４番目の分割データが終了コマンドサイズに満たないような具体例においては、４番目の分割データの処理においてバッファデータサイズは終了コマンドサイズより小さいので上記ステップＳ１００の判別により３番目の分割データのセーブデータを使用して、ステップＳ１２０〜Ｓ１２６の処理において必要なビット数のデータをセーブデータ［ｉ］の先頭から順に格納し、ステップＳ１３０〜Ｓ１３６の処理において４番目のバッファデータを加えてセーブデータ［ｉ］とする。
【００４８】
本具体例においては、スプーラ２２においてキャンセルが実行されることなく印刷ジョブの処理が進行するので、ランゲージモニタ２３は分割データの１番目から４番目までのすべてを上記パラレル通信用Ｉ／Ｏ１９ｂに出力する。従って、印刷装置３０では印刷用紙の排出処理を含めて適正に印刷を実行する。また、スプーラ２２が４番目の分割データまでのすべてを出力すると、ランゲージモニタ２３においてはＥｎｄＤｏｃＰｏｒｔ関数２３ｂが実行されるが、同ＥｎｄＤｏｃＰｏｒｔ関数２３ｂのステップＳ２００ではセーブデータが終了コマンドと一致すると判別するので、上記リセットコマンドを出力することはない。
【００４９】
このように、本発明においてはスプーラによるキャンセル時にスプールデータ中の後尾データを参照し、当該参照後尾データに所定態様のデータが検出されなかったときに、印刷用紙に対して用紙排出コマンドを出力する。従って、スプーラによる印刷キャンセルがなされたときも利用者の手を煩わすことなくプリンタに印刷用紙を排出させることができる。
【図面の簡単な説明】
【図１】コンピュータに周辺機器として印刷装置が接続されている状態の概略ハードウェア構成の概略図である。
【図２】用紙排出プログラムのモジュールの概略構成図である。
【図３】ＷｒｉｔｅＰｏｒｔ関数が実行するセーブデータにかかる処理のフローチャートである。
図４】ＥｎｄＤｏｃＰｏｒｔ関数が実行するセーブデータと終了コマンドとの比較にかかる処理のフローチャートである。
【符号の説明】
１０…コンピュータ
１１…ＣＰＵ
１２…システムバス
１３…ＲＯＭ
１４…ＲＡＭ
１５…ハードディスクドライブ
１６…フロッピーディスクドライブ
１６ａ…フロッピーディスク
１７…ＣＤ−ＲＯＭドライブ
１７ａ…ＣＤ−ＲＯＭ
１８…ディスプレイ
１９ａ…シリアル通信用Ｉ／Ｏ
１９ｂ…パラレル通信用Ｉ／Ｏ
２０…ＯＳ
２１…ＰＲＴＤＲＶ
２２…スプーラ
２３…ランゲージモニタ
２３ａ…ＷｒｉｔｅＰｏｒｔ関数
２３ｂ…ＥｎｄＤｏｃＰｏｒｔ関数
３０…印刷装置
４１…キーボード
４２…マウス
５０…ＡＰＬ


【手続補正２】
【補正対象書類名】図面
【補正対象項目名】図１
【補正方法】変更
【補正の内容】
【図１】
2001216114.tif 000001
【手続補正３】
【補正対象書類名】図面
【補正対象項目名】図２
【補正方法】変更
【補正の内容】
【図２】
2001216114.tif 000002
【手続補正４】
【補正対象書類名】図面
【補正対象項目名】図３
【補正方法】変更
【補正の内容】
【図３】
2001216114.tif 000003
【手続補正５】
【補正対象書類名】図面
【補正対象項目名】図４
【補正方法】変更
【補正の内容】
【図４】
2001216114.tif 000004
【手続補正６】
【補正対象書類名】図面
【補正対象項目名】図５
【補正方法】削除
【補正の内容】
【手続補正７】
【補正対象書類名】図面
【補正対象項目名】図６
【補正方法】削除
【補正の内容】
【手続補正８】
【補正対象書類名】図面
【補正対象項目名】図７
【補正方法】削除
【補正の内容】
【手続補正９】
【補正対象書類名】図面
【補正対象項目名】図８
【補正方法】削除
【補正の内容】