(57)【特許請求の範囲】
【請求項１】
ページセット及びページを含む階層構造化文書を処理する方法であって、ここにおいて、ページセットはゼロ個以上のページ及びゼロ個以上のページセットからなり、ページセットの少なくとも一つは選択されたページを持ち、
ページ又はページセットが処理される都度、ピクチャー／ページセットスタックに一つのエントリーをプッシュするステップ、
選択されたページを持つページセットが処理される時に、その選択されたページに関するエントリーを含むＦＩＦＯデータ構造を持つ、前記ピクチャー／ページセットスタックよりプロローグデータを介して参照されるページ選択データ構造を生成するステップ、
及び、
ページセットの選択されたページを処理し、その後に、該ページセットに対応するページ選択データ構造のＦＩＦＯデータ構造より該処理されたページに関するエントリーを削除するステップ、を有することを特徴とする階層構造文書化処理方法。
【請求項２】
ページセット及びページを含む階層構造化文書を処理する方法であって、ここにおいて、ページセットはネストされたゼロ個以上のページ及びゼロ個以上のページセットからなり、各ページは対応したページセットに従属し、ページセットの少なくとも一つは選択されたページを持ち；
ページ又はページセットに出会う都度、ピクチャー／ページセットスタックに一つのエントリーをプッシュするステップ（Ａ）；
選択されたページを持つページセットを処理する時に、該ページセットの選択されたページに関するエントリーを含むＦＩＦＯデータ構造を持つ、前記ピクチャー／ページセットスタックよりプロローグデータを介して参照されるページ選択データ構造を生成するステップ（Ｂ）；
及び、
ページを処理するステップ（Ｃ）を有し；
前記ステップ（Ｂ）で生成された各ページ選択データ構造は１つのページセット及び該ページセットに従属するページに対応し、また、各ページ選択データ構造はページ数カウント用のページインデックスを持ち、
前記ステップ（Ｃ）において；
処理しようとするページが従属するページセットをカレント・ページセットに設定するステップ（ｃ１）、
カレント・ページセットに対応するページ選択データ構造の持つページインデックスをインクリメントするステップ（ｃ２）、
カレント・ページセットに対応するページ選択データ構造の持つページインデックスの値が、該ページ選択データ構造の持つＦＩＦＯデータ構造の選択されたページに関するエントリーに記述されたページ範囲に該当するか判定するステップ（ｃ３）、
上記ステップ（ｃ３）でページインデックスの値がページ範囲に該当すると判定されたときに、カレント・ページセットが従属する他のページセットがあるか判定するステップ（ｃ４）、
上記ステップ（ｃ４）でカレント・ページセットが従属する他のページセットがあると判定されたときに、該他のページセットをカレント・ページセットに設定するステップ（ｃ５）、
を順次実行し、上記ステップ（ｃ５）から上記ステップ（ｃ２）に戻り、
上記ステップ（ｃ２）でページインデックスの値がページ範囲に該当しないと判定されるか、上記ステップ（ｃ４）でカレント・ページセットが従属する他のページセットがないと判定されるまで、上記ステップ（ｃ２）から上記ステップ（ｃ５）までの処理ループを繰り返し実行することを特徴とする階層構造文書化処理方法。
【発明の詳細な説明】
【０００１】
【産業上の利用分野】
本発明は、テキスト、グラフィック成分及び／またはイメージのある文書のコンピュータ制御による印刷、表示、その他の出力（presentation）に係り、特に、階層構造化ページ記述言語文書における選択されたページの処理方法に関する。
【０００２】
なお、本出願は、米国特許出願第０８／０８７，５７１号（１９９３年７月２日受理，”Ｍethod  and  Ｓystem  to  Ｈandle  Ｃontext  of  Ｉnterpretation  in  a  Ｄocument  Ｐrocessing  Ｌanguage”）の一部継続出願であり、当該米国特許出願第０８／０８７，５７１号は米国特許出願第０７／９３１，８０８号（１９９２年８月１１日受理，”Ａ  Ｍethod  and  Ｓystem  to  Ｈandle  Ｄictionary  Ｇeneration  and  Ｃontext  Ｄeclaration  in  a  Ｄocument  Ｐrocessing  Ｌanguage”）の一部継続出願であり、当該米国特許出願第０７／９３１，８０８号は、米国特許出願第０７／８７６，６０１号（１９９２年４月３０日受理，”Ｍethod  and  Ａpparatus  to  Ｍanage  Ｐicture  and  Ｐageset  for  Ｄocument  Ｐrocessing”）及び米国特許出願第０７／８７９，２５１号（１９９２年４月３０日受理，”Ｍethod  and  Ｓystem  to  Ｈandle  Ｉnclusion  of  Ｅxternal  Ｆiles  into  a  Ｄocument  Ｐrocessing  Ｌanguage”）の一部継続出願であり、当該各米国特許出願は引用により本明細書に組み込まれる。
【０００３】
【従来の技術】
一つの標準化ページ記述言語（ＳＰＤＬ）が提案され、国際標準化機構（ＩＳＯ）で国際規格として開発中である。この草案は、ＩＳＯ／ＩＥＣ  ＤＩＳ  １０１８０：”Ｉnformation  Ｐrocessing  Ｔext−Ｃommunication  Ｓtandard  Ｐage  Ｄescription  Ｌanguage”として知られ、ニューヨークの米国規格協会（ＡＮＳＩ）より入手可能であるが、ここに引用することにより本明細書に組み込まれる。この草案の現行版は１９９１年３月付である。
【０００４】
階層的に構造化されたページ記述言語文書の一つの利点は、文書のあるページあるいは部分だけを印刷し、あるいは出力のための処理をしたい時に、文書全体の処理をする必要はなく、当該印刷したい部分より階層の高い部分だけを処理すればよいことである。これに対し、ポストスクリプト（ＰostＳcript）のような一般的なページ記述言語文書は、希望する部分を印刷できるようにするには、その前に、当該部分より前の部分全体の処理を必要とする。これは、文書が大きくなった場合、処理時間及び通信時間が非常に大きくなる可能性がある。
【０００５】
現行草案に述べられているＳＰＤＬ規格に従うシステムに必要とされる機能の一つは、文書生成命令（Ｄocument  Ｐroduction  Ｉnstruction）でページ選択（page  selection）を行なうことである。しかし、ページがネストされ、出力すべきページを様々な階層レベルから選択する必要がある場合には、ネストされたレベルの選択されたページの管理が煩雑になることがある。
【０００６】
１９９１年３月付ＳＰＤＬ草案のセクション６．６は、ＳＰＤＬに使用される高レベル構造エレメントについて記述している。本セクションに述べられている３つの主要機能エレメントのうち、本発明はピクチャー（picture）とページセット（pageset）を対象にしている。草案のＳＰＤＬ規格の述べるところによれば、ピクチャーは、単一のエンティティ（entity）と見做し得る一つのイメージを記述する。このイメージは、１ページ分のイメージでもよいし、ページの部分的なイメージでもよい。ページセットは、０個または１個以上のページを記述する。
【０００７】
ページはそれ自体のＳＰＤＬ構造エレメントを持たないが、他のピクチャーに従属しないピクチャーはページとして定義される。さて、図１に様々なページの例が示されている。図１に示されている各ピクチャーは、ピクチャー１１６を別にすれば、一つのページである。ピクチャー１１６以外の全てのピクチャーはページセットにのみ従属し、他のピクチャーには従属していない。したがって、ピクチャー１０４，１０６，１１２，１１４，１１８，１２２，１２４，１２６，１３２，１３４はそれぞれ、ページと見做される。ＳＰＤＬにはピクチャー及びページセット構造エレメントについて詳細な要件があるが、これらの詳細は本発明を理解する上で重要でない。
【０００８】
本出願人は、階層構造化ページ記述言語文書においてＳＰＤＬで要求されるようなページ選択をする従来システムを全く知らない。Ａdobe  Ｓystems社によるポストスクリプトは、ページ選択の機能を持たない。Ｘerox社のインタープレス（Ｉnterpress）はページ選択命令を持っており、これについてはＳimon  ＆  Ｓhuster社発行”Ｉnterpress  Ｔhe  Ｓource  Ｂook”(１９８８）のpp.３５２−−３５４に述べられている。しかしながら、本出願人は、インタープレスで記述された文書の階層構造とページ選択命令との相互作用を明らかにする従来技術を知らない。
【０００９】
【発明が解決しようとする課題】
本発明の一つの目的は、階層構造化ページ記述言語文書におけるページ選択処理を効率的に行なう手段を提供することである。
【００１０】
【課題を解決するための手段】
本発明は、上記目的及びその他の目的を達成するため、ページ選択処理のためにスタック及びＦＩＦＯデータ構造を利用する。以下、本発明の構成を後記実施例と関連付けるため少しく具体的に述べる。
【００１１】
文書の各階層レベルは、ピクチャー／ページセットスタック（picture／pageset  stack）内に置かれた１つの対応エントリーを持つ。ピクチャー／ページセットスタック内の当該エントリーは、１個または２個以上のポインタである。各階層レベルの１つのポインタは、文書の処理中に用いられる各種パラメータに関連した情報を持つ１つのページセット／ピクチャープロローグデータ構造（pageset／picture  prologue  data  structure）を指す。ページセット／ピクチャープロローグデータ構造の一つのエントリーは、一つのページ選択データ構造（pageselect  data  structure）を指すポインタである。ページ選択データ構造は、どのページが処理中であるかを示すページインデックス用のエントリー、選択ページレンジＦＩＦＯデータ構造（selection  page  range  ＦＩＦＯ  data  structure）へのポインタ、及びページの選択があったかを示すエントリーを有する。
【００１２】
選択ページレンジＦＩＦＯデータ構造は２つのカラムを持ち、そのうちの左側のカラムはレンジの開始ページを示し、右側のカラムはレンジの終了ページを示す。１ページしか選択されていないときは、選択されたページの開始ページと終了ページは両方とも、当該選択されたページのページ番号になる。
【００１３】
普通、ページセット／ピクチャープロローグデータ構造のページ選択データ構造へのポインタはヌル（null）を指している。しかし、ページセット構造エレメント内のページ選択が処理されている時には、ページ選択データ構造へのポインタは、ヌルではなく、あるページ選択データ構造を指す。あるページが処理すべく選択される時に、選択ページレンジＦＩＦＯデータ構造は、ある特定の階層レベルのどのページが選択されたかを管理する。一つの選択されたページが処理された後、当該ページが単一のページであるか、あるいはページレンジの終わりのページであるならば、選択ページレンジＦＩＦＯデータ構造の一つのエントリーがポップされる。
【００１４】
【作用】
図１に、様々な階層レベルに選択ページを有するＳＰＤＬ文書の例が示されているが、この階層構造の最高位のページセットであるページセット１０２は、ページ１，３，５，７，８が出力すべく選択されている。ページセット１０８は、ページ２，３が印刷すべく選択されている。したがって、ページセット１０２の選択されたページ３を出力しようとする時には、どのピクチャーがページ３であるか確認するため、ページ１に相当するピクチャー１０４、ページ２に相当するピクチャー１０６、及びページセット１０８を調べなければならない。ページセット１０８はページ２，３だけが選択されているので、ピクチャー１１２はページセット１０２のページ３ではない。ページセット１０８の最初のページは、ページ番号２で、これはピクチャー１１４に相当する。よって、ページセット１０２のページ３は、ピクチャー１１４である。
【００１５】
本発明によれば、かかる階層構造を有する文書のページ選択処理を、スタックとＦＩＦＯデータ構造を用いて効率的に行なうことができる。なお、スタック及び各種データ構造とページ選択処理との関係については、後記実施例に関する記述中において詳細に説明する。
【００１６】
【実施例】
さて添付図面を参照するが、複数の図にわたって同一の参照番号は同一部または対応部を示している。図１に、ページ選択命令を含むＳＰＤＬ文書の例が示されているが、図１の意図するところは、本発明が解決する問題点を明確に理解できるよう、ＳＰＤＬ文書内の主要な構造エレメントを示すことである。なお、図１の構造は完全なＳＰＤＬ文書を示さず、主要な階層構造エレメントの一部を示しているに過ぎない。
【００１７】
図１において、ページセット１０２はページ１，３，５，７，８が選択されており、ページセット１０８はページ２，３が選択されており、ページセット１２０はページ１，２，３，６が選択されていることが分かる。ページは、他のどのピクチャーにも従属しないピクチャー構造エレメントである。例えば、ピクチャー１０４，１０６，１１２，１１４，１１８，１２２，１２４，１２６，１２８，１３２，１３４は、それぞれページである。しかし、ピクチャー１１６は、ピクチャー１１４に従属しているのでページではない。
【００１８】
ページセット１０２はページ１，３，５，７，８が選択されている。ページ１はピクチャー１０４に相当し、ページ２（選択されていない）はピクチャー１０６に相当する。図１において、ピクチャーを囲むブロックの右上隅に記された数字は、ページセット１０２に対するページ番号を示す。各ピクチャーのブロックの右下隅に記した数字は、当該ピクチャーの直ぐ上のページセットに対するページ番号を示す。ページセット１０２の連続した選択ページを確認するためには、ページセット１０８のページを処理しなければならない。ページセット１０８はページ２，３が選択されているが、これらのページはピクチャー１１４，１１８にそれぞれ相当する。ページセット１０２の選択されたピクチャー３は、ページセット１０８の最初の選択されたページであるピクチャー１１４に相当する。ピクチャー１１８は、ページセット１０８の選択されたページ３に対応し、かつページセット１０２のページ４（選択されていない）に対応する。
【００１９】
ページセット１０２の選択されたページ５，７，８を確定するには、ページセット１２０を処理しなければならない。ページセット１２０はページ１，２，３，６が選択されている。これらのページはそれぞれピクチャー１２２，１２４，１２６，１３４に相当する。ピクチャー１２２はページセット１０２の選択されたページ５に相当し、ピクチャー１２６はページセット１０２の選択されたページ７に相当する。ページセット１０２の選択されたページ８を確定するためには、ページセット１２０及びページセット１３０の選択されたページを処理しなければならない。ページセット１３０はページ選択がない。デフォルトで、ページセット１３０の全ページが選択される。しかし、ページセット１２０は、ページ１，２，３，６のページ選択を有する。ピクチャー１３２，１３４の左上隅に記された数字はページセット１２０に対するページ番号を示している。ピクチャー１３４は、ページセット１２０の選択されたページ６に相当し、かつページセット１０２の選択されたページ８に相当する。
【００２０】
ページセット１０２についてページ１，２だけが選択されているならば、ページ選択処理は単純で、ピクチャー１０４，１０６を選択することになる。しかし、ページ選択命令のネストにより、処理は複雑化する。文書の選択されたページ及び階層レベルの管理に使用されるデータ構造について、次に説明する。
【００２１】
図２はピクチャー／ページセットスタック(picture／pageset  stack)２０２及びページセット／ピクチャープロローグデータ構造(pageset／picture  prologue  data  structure)２５０を示す。処理されている文書の各階層レベルは、ピクチャー／ページセットスタック２０２にエントリー２０４のような一つのエントリーをプッシュさせる。ピクチャー／ページセットスタックのエントリー２０４は、プロローグデータ構造へのポインタ２０６とＣＣＩデータ構造へのポインタ２０８を含んでいる。ＣＣＩデータ構造へのポインタは、コンテント(content)部の処理中でなければヌルを指しており、その後、あるＣＣＩデータ構造を指す。ＣＣＩデータ構造及びＣＣＩデータ構造へのポインタの働きに関する知識は本発明を理解する上で重要ではないが、ＣＣＩデータ構造の詳細な説明は本出願人による係属中の米国特許出願第０８／０８７,５７１（１９９３年７月２日受理,”Ｍethod  and  Ｓystem  to  Ｈandle  Ｃontext  of  Interpretation  in  a  ＤocumentＰrocessing  Ｌanguage”）に見ることができる。ページセット／ピクチャープロローグデータ構造２５０は、文書を処理するために用いられる各種パラメータに関する情報を記憶している。ページセット／ピクチャープロローグデータ構造における本発明に関係したエントリーは、ページ選択データ構造へのポインタ２５２である。このポインタは、ページセット内のページ選択が処理されている時にはあるページ選択データ構造を指すが、それ以外の時にはヌルを指す。ピクチャー／ページセットスタック及びページセット／ピクチャープロローグデータ構造の働きの詳細な説明は、本出願人による係属中の米国特許出願第０８／０８７，５７１（１９９３年７月２日受理，”Ｍethod  and  Ｓystem  to  Ｈandle  Ｃontext  of  Interpretation  in  a  Ｄocument  Ｐrocessing  Ｌanguage”）に見ることができ、当該特許出願は引用により本明細書に組み込まれる。
【００２２】
文書生成命令（Ｄocument  Ｐroduction  Instruction；”ＤＰＩ”）は、従属のページ選択命令を持つことができるＳＰＤＬ構造エレメントである。ＤＰＩは、媒体指定、アボートポリシー（abort  policy）、フィニシング（finishing）、コピー数、ページ選択等の種々の生成関連命令を制御する。ページ選択命令は開始ページと終了ページを示す整数ペアの系列からなる。例えば、ページ選択命令は（１，２），（５，９），（１１，１１）のようなペアを持つことができる。上記ペアにおいて、（１，２）は最初にリストされているので最初に処理されるべきである。したがって、後入れ先出し（Ｌast-Ｉn  Ｆirst-Ｏut；ＬＩＦＯ）データ構造ではなく、先入れ先出し（Ｆirst-Ｉn  Ｆirst-Ｏut；ＦＩＦＯ）データ構造（後述）を用いるのが好ましい。しかし、本発明はＦＩＦＯデータ構造だけに限定されるものではない。図２に示されたページセット／ピクチャープロローグデータ内にＤＰＩのためのエントリーが存在することがあるが、これは本発明を理解する上で重要ではないので示されていない。
【００２３】
ページ選択命令はＤＰＩ命令であるので、ページセット／ピクチャープロローグデータ構造２５０（プロローグデータ構造とも呼ぶ）のページ選択データ構造へのポインタ２５２は、ページ選択データ構造を含むか参照するＤＰＩデータ構造へのポインタともなり得る。したがって、図２に示されたデータ構造は典型例と考えるべきである。
【００２４】
ＳＰＤＬエレメントであるピクチャービギン（picture  begin）またはページセットビギン（pageset  begin）に出会った時に、プロローグデータ構造２５０のページ選択データ構造へのポインタ２５２はヌルに設定される。ピクチャーの処理中には、ページ選択データ構造へのポインタはヌルを指したままである。しかし、ページセット内のページ選択が処理される時には、ページ選択データ構造へのポインタ２５２は、後述のように、あるページ選択データ構造を指す。ＤＰＩ構造エレメント中にページ選択構造エレメントが存在しない時は、ページ選択データ構造へのポインタ２５２はヌルであり、デフォルトで全ての従属ページが選択される。
【００２５】
図３は、ページセット／ピクチャープロローグデータ構造２５０のページ選択データ構造へのポインタ２５２により指されるページ選択データ構造３０２を示している。ページ選択データ構造は、ページセット構造エレメント内でページ選択構造エレメントに出会った時に生成される。ページインデックス（page  index）３０４はページセット中の特定のページ位置を管理する。ページ選択データ構造の生成時に、ページインデックスはゼロに設定される。選択ページレンジＦＩＦＯデータ構造へのポインタ３０６は、選択ページレンジＦＩＦＯデータ構造３５０を指す。ページが全然選択されないと（すなわち、ページ選択構造エレメントがページが選択されないことを特に指示すると）、ポインタ３０６はヌルを指し、選択ページレンジＦＩＦＯデータ構造は生成されない。PROC_PAGESETエントリー３０８の内容は”ＹＥＳ”または”ＮＯ”の値（value）である。選択ページレンジＦＩＦＯデータ構造（以下、選択ページレンジＦＩＦＯと呼ぶ）へのポインタ３０６がヌルを指しページが全然選択されないことを示しているときには、PROC_PAGESETは”ＮＯ”である。選択ページレンジＦＩＦＯへのポインタ３０６がヌルでなく、ある選択ページレンジＦＩＦＯを指すときは、PROC_PAGESETは”ＹＥＳ”である。なお、実際的には、PROC_PAGESETエントリー３０８は直接的にポインタ３０６に対応するので、ページ選択データ構造内にPROC_PAGESETエントリーを設ける必要はない。しかし、このPROC_PAGESETエントリーは、前述の如く、本発明プロセスの動作説明を簡単にする。
【００２６】
選択ページレンジＦＩＦＯ３５０の中には左カラムと右カラムがある。左カラムは、１つのレンジの開始ページが入っており、その右カラムには同レンジの終了ページが入っている。例えば、ページ選択コマンドによりページ１〜３が選択されたとすると、エントリー３５１にはページ１が、エントリー３５２にはページ３が、それぞれ入ることになる。ある１つのページ、例えばページ４が選択されると、カラムの開始ページと対応した終了ページが両方とも同一ページ（この場合はページ４）を記憶することになろう。選択ページレンジＦＩＦＯは、最初に処理されるページ（例えばページ１）が同データ構造に初めにプッシュされ、そして、最初に同データ構造よりポップされる（すなわち、最初に入ったページは最初に出ていくページである）という点で、ＦＩＦＯデータ構造である。しかし、ＦＩＦＯデータ構造と機能的に等価な動作をする別種のデータ構造を使用することも可能である。
【００２７】
ページ選択レンジＦＩＦＯ３５０のトップエントリーには選択された最低ページ番号が入っており、そのボトムエントリーには最高ページ番号が入っている。選択されたページが処理される時に、同ＦＩＦＯのトップエントリーに相当する最低ページ番号がポップされて処理される。ページセットによりページが全く選択されなければ、選択ページレンジＦＩＦＯを生成する必要はない。
【００２８】
図４は、ページに出会った時（他のピクチャーに従属しないピクチャービギンに出会った時）に呼び出されるプロセスを示している。パーサー（parser）／文法解析プロセス（parsing process）は、まずピクチャーの始まりのためのタグの存在を確かめることによってページが存在するか判定する。ピクチャービギンに出会った後は、pic_levelを調べることにより、そのピクチャーがページであるか判定することができる（すなわち、他のピクチャーに従属しないピクチャーはページである）。これについては、本出願人による係属中の米国特許出願第０７／８７６，６０１号（１９９２年４月３０日受理）に述べられており、当該出願は引用することによって本明細書に組み込まれる。
【００２９】
ＳＰＤＬ文書の新たなページ（他のピクチャーに従属しないピクチャー）に出会った時に、図４のプロセスが呼び出される。ステップ４００は、ページセットがあるか判定する。１ページ文書の場合を別にすれば、ページは常にページセットの一部である。したがって、１ページ文書があって、そのページがページセットの一部でないときには、処理の流れはステップ４００からステップ４０８に進み、そのページが処理されるべきであることを表示する。それ以外の場合は、ページセットがあるので処理の流れはステップ４００よりステップ４０１へ進む。
【００３０】
ステップ４０１は、直ぐ上位のページセットに対するページ選択データ構造へのポインタがヌルであるか判定する。それがヌルであれば、ページセット内の全ページが選択され、処理の流れはステップ４０４に進み、ここで図５及び図６に示すページ選択チェックルーチンにおいて付加的な処理が行なわれるが、これについては後述する。直ぐ上位のページセットに対するページ選択データ構造へのポインタがヌルでなければ、処理の流れはステップ４０２に進みPROC_PAGESETが”ＮＯ”であるか判定される。PROC_PAGESETが”ＮＯ”であれば、処理の流れはステップ４１２に進み、リターンコードにより現在のページがスキップされるべきであることを表示する。その理由は、PROC_PAGESETが”ＮＯ”の時には、全然ページが選択されていないので、当該ページをスキップしなければならないからである。
【００３１】
ステップ４０２でPROC_PAGESETは”ＮＯ”でないと判定されたときには、処理の流れはステップ４０４へ進み、図５及び図６に示したページ選択チェックルーチンが呼び出される。
【００３２】
図５に示すプロセスにおいて、ステップ５０２は直ぐ上位のページセット（すなわち処理中のページの直ぐ上のページセット）をカレント・ページセット（current pageset）に設定する。したがって、直ぐ上位のページセットに関するデータ構造が、チェック及び処理されるデータ構造となる。
【００３３】
ステップ５０４はカレント・ページセットのプロローグデータ構造内のページ選択データ構造へのポインタを読み出す。ステップ５０６で、このポインタがヌルであると判定されたときには（すなわち、全ページが選択される）、処理の流れは図６に示すプロセスＢへ進む。このページ選択データ構造へのポインタがヌルでないときには、処理の流れはステップ５０８に進み、ページ選択データ構造３０２内のPROC_PAGESET３０８が”ＹＥＳ”であるか判定される。PROC_PAGESETが”ＹＥＳ”でなければ、ページは全然選択されず、したがって、ステップ５１４は現在のページが選択されない旨の表示を呼出プロセスへ返す。PROC_PAGESETが”ＹＥＳ”ならば、ステップ５１０でページインデックスが１だけインクリメントされる。前述のように、各ページ選択データ構造が生成される時に、ページインデックスは初期値の０であり、選択されたページが処理されるに従ってページ毎にページインデックスはインクリメントされる。
【００３４】
ステップ５１２は、ページインデックスが選択ページレンジＦＩＦＯのトップエントリーにある開始ページと終了ページの範囲内であるか判定する。ページインデックスが、この開始ページと終了ページの範囲内でないときには、当該ページは選択されていないので、ステップ５１４がpage_select＝”ＮＯ”を返す。ページインデックスが選択ページレンジＦＩＦＯのトップにある開始ページと終了ページの範囲内であるときには、処理の流れは図６に示すプロセスＣへ進む。
【００３５】
図６において、ステップ５１６はページインデックスがＦＩＦＯのトップエントリーの終了ページと等しいか判定する。等しくないときには、当該ページセットの他のページを処理しなければならないので、処理の流れはステップ５２４へ進む。ページインデックスがＦＩＦＯのトップエントリーの終了ページと等しいときには、当該処理中のレンジは終了したので、ステップ５１８が選択ページレンジＦＩＦＯのトップエントリーをポップする。
【００３６】
次に、ステップ５２０は選択ページレンジＦＩＦＯがヌルであるか判定する。ヌルであるならば、選択ページレンジＦＩＦＯにはエントリーが残っていないので、ステップ５２２はPROC_PAGESETを”ＮＯ”に設定する。また、選択ページレンジＦＩＦＯはもはや存在しないので、選択ページレンジＦＩＦＯへのポインタはヌルを指す。図５のステップ５０６、図６のステップ５１６，５２０，５２２よりステップ５２４に進むが、このステップは、ピクチャー／ページセットスタックにほかのページセットがあるか（すなわち、現在のページの階層構造における当該ページの直ぐ上位のページセットよりも上位のページセットが存在するか）判定する。存在しないときには、ページが選択されるので、カレント・ページの処理は終了しpage_select＝”ＹＥＳ”が呼出プロセスへ返される。処理されるべき他のページセットが存在するときは、ステップ５２８が今処理を終えたページセットより階層的に上にある次のページセットをカレント・ページセットに設定し、処理の流れは図５に示されたステップ５０４へ進む。
【００３７】
図５及び図６に示したプロセスの終了後、図４のステップ４０６が実行され、返されたpage_select変数を調べることによって該ページが選択されているか判定する。選択されているときにはステップ４０８が当該ページの処理を続けるリターンコードを設定し、選択されていないときにはステップ４１２が現在ページの処理をスキップするリターンコードを設定する。
【００３８】
本発明に用いられるデータ構造及び処理について述べたが、次に、本発明により図１の構造を処理する間に生成されるデータ構造について述べる。図７は、図１のページセット１０２の処理後のデータ構造を示す。ピクチャー／ページセットスタック２０２のプロローグデータ構造へのポインタ２０６はプロローグデータ構造２５０を指す。プロローグデータ構造２５０のページ選択データ構造へのポインタ２５２は、ページ選択データ構造３０２を指す。当該ページセットがまだ全然処理されていない時には、ページ選択データ構造３０２のページインデックスは０に設定されている。ポインタ３０６が指す選択ページレンジＦＩＦＯ３５０は、ページ１，３，５，７，８が選択されていることを表わしている。ポインタ３０６がヌルを指さないので、ページ選択データ構造３０２のPROC_PAGESETエントリー３０８は図７に示されるように”ＹＥＳ”に設定されている。
【００３９】
次に図１のピクチャー１０４に出会い、一つのエントリーがピクチャー／ページセットスタック２０２に格納され、そのプロローグデータ構造へのポインタ２１０はプロローグデータ構造２６０を指し、またＣＣＩデータ構造へのポインタ２１２はヌルを指す。プロローグデータ構造２６０はピクチャー１０４のために生成されたものであり、また、エレメント１０４はピクチャーであるから、ページ選択データ構造を指すポインタ２６２はヌルを指すよう設定される。
【００４０】
そして、図４に示したプロセスが呼び出される。ページセット１０２があるので、処理の流れはステップ４００からステップ４０１へ進む。ステップ４０１で、ページ選択データ構造へのポインタ２５２がヌルではないと判定されるので、処理の流れはステップ４０２へ進む。ステップ４０２において、ページ選択データ構造３０２内のPROC_PAGESET３０８が”ＮＯ”でないので、図５及び図６に示すプロセスが呼び出される。
【００４１】
図５において、ステップ５０２はページセット１０２をカレント・ページセットに設定し、ステップ５０４はページセット１０２のページ選択データ構造へのポインタ２５２を読み出す。そして、ステップ５０６はポインタ２５２がヌルでないと判定するので、次にステップ５０８はPROC_PAGESET３０８を調べ、ステップ５１０はページインデックスを１にインクリメントする。このデータ構造が図８に示されている。
【００４２】
ステップ５１２はページインデックス（＝１）が選択ページレンジＦＩＦＯ３５０のトップエントリーにある開始ページ１と終了ページ１の間にあると判定する。そして、処理の流れはステップ５１６へ進み、ページインデックスがＦＩＦＯのトップにある終了ページと等しいと判定する。したがって、ステップ５１８において選択ページレンジＦＩＦＯ３５０のトップエントリーがポップされ、当該データ構造は図９に示す如くになる。
【００４３】
ステップ５２０が選択ページレンジＦＩＦＯがヌルでないと判定し、処理の流れはステップ５２４へ進む。ピクチャー／ページセットスタックには他の上位のページセットが存在しないので、ステップ５２６はページ選択変数PAGE_SELECT＝”ＹＥＳ”を返す。処理の流れは図４のステップ４０６に戻り、ステップ４０８が処理継続のコードを返す。したがって、ピクチャー１０４を構成している構造エレメント（図示されていないが、トークンシーケンスエレメントに見られるコンテント部等）が処理される。
【００４４】
ピクチャー１０４とそれに従属したエレメント（図示されていない）の処理が終わると、ピクチャー１０４に対応したプロローグデータ構造は削除され、ピクチャー／ページセットスタックよりポインタ２１０，２１２を含むエントリーがポップされる。
【００４５】
次に、ピクチャー１０６が処理される。プロローグデータ構造２６０を指すポインタ２１０とヌルを指すポインタ２１２を有する、ピクチャー１０６対応のエントリーがピクチャー／ページセットスタック２０２に格納される。なお、本例においては、特定の階層レベルの特定のデータ構造は、処理全体を通して同一の参照番号を持ち、このことは他の構造エレメントが処理されるとしても同様である。例えば、ピクチャー１０４，１０６は同一の階層レベルにあるので、それらピクチャーに関するピクチャー／ページセットスタック及びプロローグデータ構造上のエントリーは同一の参照番号を持つ。
【００４６】
ピクチャー１０６の処理時に、処理の流れはステップ４００からステップ４０２へ進み、PROC_PAGESET３０８は”ＹＥＳ”であると判定する。そこで処理の流れは図５に示したプロセスへ進み、ステップ５０２でページセット１０２がカレント・ページセットに設定される。ステップ５０４がページ選択データ構造へのポインタ２５２を読み出し、ステップ５０６がポインタ２５２がヌルでないと判定する。ステップ５０８がPROC_PAGESET３０８が”ＹＥＳ”であると判定するので、図１０に示されるように、ページインデックス３０４は１から２にインクリメントされる。
【００４７】
ステップ５１２は、ページインデックス３０４が選択ページレンジＦＩＦＯ３５０のトップエントリーの開始ページと終了ページの間にはないと判定するので、処理の流れはステップ５１４へ進み、PAGE_SELECTは”ＮＯ”に設定される。処理の流れは図４のステップ４０６へ進む。ピクチャー１０６に相当するページは選択されていないので、ステップ４１２は、ピクチャー１０６相当ページがスキップされるべきことを表示するリターンコードを設定する。よって、ピクチャー１０６に従属したエレメント（図示されていない）は処理されず、ピクチャー／ページセットスタック２０２よりポインタ２１０，２１２を持つエントリーがポップされる。
【００４８】
次に、ページセット１０８が処理され、ポインタ２１０，２１２を持つ一つのエントリーがピクチャー／ページセットスタック２０２にプッシュされる。ページ選択データ構造を指すポインタ２６２はページ選択データ構造３１２を指すが、このページ選択データ構造は、エレメント１０８がページセットであるのでデフォルト値を持っている。ページセット１０８のページ２，３が選択されていることを表わす選択ページレンジＦＩＦＯ３６０が生成される。このようなデータ構造が図１１に示されている。
【００４９】
つぎに、ピクチャー１１２に相当するページが処理される。ポインタ２１４，２１６を持つ一つのエントリーがピクチャー／ページセットスタック２０２に格納される。ポインタ２１４はプロローグデータ構造２７０を指すが、該データ構造のポインタ２７２はヌルを指しておりページ選択データ構造を指さない。これは、エレメント１１２がピクチャーであるからである。図４のプロセスが呼び出され、処理の流れはステップ４００，４０１，４０２からステップ４０４へ進み、図５及び図６に示すプロセスが呼び出される。
【００５０】
図５において、ステップ５０２はページセット１０８をカレント・ページセットに設定する。ステップ５０４はページ選択データ構造へのポインタ２６２を読み出し、ステップ５０６は同ポインタ２６２がヌルでないと判定する。ステップ５０８はPROC_PAGESET３１８がＹＥＳであると判定し、ステップ５１０でページインデックス３１４を０から１へインクリメントする。このようなデータ構造が図１２に示されている。
【００５１】
ステップ５１２はページインデックス３１４が選択ページレンジＦＩＦＯ３６０のトップエントリーの開始ページと終了ページの間にないと判定するので、ステップ５１４がPAGE_SELECT＝”ＮＯ”を返す。ステップ４０６は該ページが選択されていないと判定するので、ステップ４１２は該ページをスキップするリターンコードを設定する。そして、プロローグデータ構造２７０が削除され、ピクチャー／ページセットスタックよりポインタ２１４，２１６を持つエントリーがポップされる。
【００５２】
次に、ピクチャー１１４が処理され、ポインタ２１４，２１６を持つ一つのエントリーがピクチャー／ページセットスタック２０２にプッシュされる。プロローグデータ構造へのポインタ２１４はプロローグデータ構造２７０を指す。このプロローグデータ構造のポインタ２７２は、エレメント１１４がピクチャーであるので、ヌルを指しページ選択データ構造を指さない。そして、図４に示したプロセスが呼び出され、処理の流れは図５のステップ５０６へ進み、ポインタ２６２はヌルでないと判定される。ステップ５０８はPROC_PAGESET３１８が”ＹＥＳ”であると判定するので、ステップ５１０でページインデックス３１４が１から２にインクリメントされる。そして、ステップ５１２はページインデックス３１４が２と３の間であると判定するので、処理の流れは図６に示したプロセスＣに進む。
【００５３】
図６において、ステップ５１６はページインデックス３１４がＦＩＦＯ３６０のトップの終了ページである３でないと判定し、処理の流れはステップ５２４へ進む。ステップ５２４は別のページセット（ピクチャー／ページセットスタック２０２のボトムエントリーに対応するページセット１０２）があると判定するので、ステップ５２８がピクチャー／ページセットスタック２０２のボトムエントリーに対応するページセットをカレント・ページセットに設定する。
【００５４】
処理の流れはステップ５０４へ進みポインタ２５２が取得され、ステップ５０８はPROC_PAGESETがＹＥＳであると判定する。したがって、ページインデックス３０４は２から３へインクリメントされる。この時のデータ構造は図１３に示す通りである。
【００５５】
処理の流れはステップ５１６へ進み、同ステップはページインデックス３０４がＦＩＦＯ３５０のトップの終了ページ３に等しいと判定し、したがって、ステップ５１８で選択ページレンジＦＩＦＯ３５０のトップエントリーがポップされる。この時、データ構造は図１４に示す如くである。
【００５６】
ステップ５２０は選択ページレンジＦＩＦＯがヌルでないと判定し、処理の流れはステップ５２４へ進み、同ステップがこれ以上のページセットがピクチャー／ページセットスタックにないと判定するので、ステップ５２６はPAGE_SELECT＝”ＹＥＳ”を返す。図４のステップ４０６は該ページが選択されていると判定し、したがってステップ４０８は処理を継続させるリターンコードを設定し、ピクチャー１１４の下のピクチャー１１６等の構造エレメントが処理される。ピクチャー１１４とピクチャー１１６の処理後に、プロローグデータ構造２７０が削除され、ピクチャー／ページセットスタックよりポインタ２１４，２１６を持つトップエントリーがポップされる。
【００５７】
次にピクチャー１１８が処理される。ピクチャー１１８と出会った時に、ピクチャー／ページセットスタック２０２に、ポインタ２１４，２１６を持つ一つのエントリーがプッシュされる。ポインタ２１４は生成されたプロローグデータ構造２７０を指す。図４に示すプロセスが呼び出され、そして処理の流れは図５及び図６へ進み、ページセット１０８がカレント・ページセットに設定され、ページ選択データ構造へのポインタ２６２が調べられ、ステップ５０６は同ポインタがヌルでないと判定する。ステップ５０８はPROC_PAGESET３１８が”ＹＥＳ”であると判定し、ページインデックス３１４はステップ５１０で２から３へとインクリメントされる。ステップ５１２はページインデックス３１４がＦＩＦＯ３６０の２と３の間であると判定し、処理の流れはステップ５１６へ進み、同ステップはページインデックスがＦＩＦＯ３６０の終了ページであると判定する。処理の流れはステップ５１８へ進み、ここでページ選択データ構造３１２の選択ページレンジＦＩＦＯ３６０よりトップエントリーがポップされる。このエントリーは当該ＦＩＦＯに残っていた唯一のエントリーであるので、該ＦＩＦＯはヌルであり、したがって、ステップ５２２はPROC_PAGESET３１８を”ＮＯ”に設定する。ステップ５２４は、さらにページセット（ページセット１０２に対応するページセット）があると判定するので、ステップ５２８はピクチャー・／ページセットスタック２０２のボトムエントリーに相当するページセット１０２に対応するページセットをカレント・ページセットに設定する。
【００５８】
処理の流れはステップ５０４に進みポインタ２５２を読み出し、そしてステップ５０６はポインタ２５２がヌルでないと判定する。ステップ５０８はPROC_PAGESET３０８を調べ、それが”ＹＥＳ”であると判定するので、ページインデックス３０４は３から４へインクリメントされる。この時、データ構造は図１５に示すとおりである。
【００５９】
ステップ５１２はページインデックス３０４が開始ページ５と終了ページ５の間ではないと判定する。したがって、ステップ５１４はPAGE_SELECT＝”ＮＯ”を返し、ステップ４１２はピクチャー１１８がスキップされるべきことを表示するリターンコードを設定する。
【００６０】
ページセット１０８の下にはもう構造エレメントが存在しないので、ページセット１０８の処理は終わる。その結果、プロローグデータ構造２６０とページ選択データ構造３１２が消去され、ピクチャー／ページセットスタック２０２上のポインタ２１０，２１２を持つエントリーはポップされる。
【００６１】
次にページセット１２０が処理される。ページ１，２，３，６が選択されたページセット１２０に出会った時に、ポインタ２１０，２１２を持つ一つのエントリーがピクチャー／ページセットスタック２０２に格納される。プロローグデータ構造２６０が生成され、そのページ選択データ構造へのポインタ２６２で生成されたページ選択データ構造３１２を指す。このページ選択データ構造３１２は、ページインデックス３１４＝０、PROC_PAGESET＝”ＹＥＳ”（ページが選択されていることを示している）、２つのエントリーを有する選択ページレンジＦＩＦＯ３６０を持つ。このＦＩＦＯの最初のエントリーはページ１が選択されたレンジの開始ページで、ページ３が終了ページであることを示し、２番目のエントリーはページ６が選択されていることを示す。データ構造は図１６に示すとおりである。
【００６２】
次にピクチャー１２２が処理され、したがって、ポインタ２１４，２１６を持つ一つのエントリーがピクチャー／ページセットスタック２０２にプッシュされる。エレメント１２２はピクチャーであるので、プロローグデータ構造２７０のページ選択データ構造へのポインタ２７２はヌルを指す。次に、図４に示したプロセスが呼び出され、そして処理の流れは図５及び図６に示したプロセスに進んでページセット１２０がカレント・ページセットに設定され、ステップ５０４がポインタ２６２を読み出し、ステップ５０６がポインタ２６２はヌルでないと判定する。ステップ５０８がPROC_PAGESET＝”ＹＥＳ”であると判定するので、ページインデックス３１４は０から１にインクリメントされる。ステップ５１２がページインデックス３１４は選択ページレンジＦＩＦＯ３６０のトップエントリーにある開始ページと終了ページの範囲であると判定し、処理の流れは図６のステップ５１６に進む。
【００６３】
ステップ５１６がページインデックスは終了ページではないと判定し、処理の流れはステップ５２４に進み、同ステップはピクチャー／ページセットスタック２０２にさらにページセット（ページセット１０２に対応するページセット）があると判定する。ステップ５２８でページセット１０２に対応するページセットがカレント・ページセットに設定され、処理の流れは図５のステップ５０４へ進む。ステップ５０４はポインタ２５２を読み出し、ステップ５０６は同ポインタがヌルでないと判定する。ステップ５０８はPROC_PAGESET３０８が”ＹＥＳ”であると判定し、したがってステップ５１０はページインデックス３０４を４から５へインクリメントする。この時、データ構造は図１７に示すとおりである。
【００６４】
ステップ５１２はページインデックス３０４がＦＩＦＯ３５０のトップエントリーの開始ページと終了ページの範囲内であると判定し、ステップ５１６はページインデックス３０４がＦＩＦＯ３５０の終了ページと等しいと判定する。したがって、ステップ５１８はページレンジＦＩＦＯ３５０のトップエントリーをポップする。ＦＩＦＯ３５０はヌルでないので、処理の流れはステップ５２０からステップ５２４へ進み、ピクチャー／ページセットスタック２０２にはもうページセットがないと判定しステップ５２６はpage_select＝”ＹＥＳ”を返す。
【００６５】
ステップ４０６は該ページが選択されていると判定し、ステップ４０８は該ページの処理を継続するリターンコードを設定する。ピクチャー１２２の処理後、プロローグデータ構造が削除され、ピクチャー／ページセットスタック２０２上のポインタ２１４，２１６に対応するエントリーがポップされる。
【００６６】
次に、ピクチャー１２４が処理され、ポインタ２１４，２１６を持つ一つのエントリーがスタックにプッシュされ、またプロローグデータ構造２７０が生成される。図４に示したプロセスが呼び出され、そして処理の流れは図５へ進み、ステップ５０８はPROC_PAGESET３１８が”ＹＥＳ”であると判定し、ページインデックス３１４は１から２にインクリメントされ、データ構造は図１８に示すようになる。
【００６７】
ピクチャー１２４の処理後、ピクチャー１２６が処理され、ページインデックス３１４は２から３へインクリメントされ、ページインデックス３０４は６から７へインクリメントされ、データ構造は図１９に示す如くとなる。
【００６８】
ページセット１３０及びピクチャー１３２，１３４の処理についての説明は、簡略化のため省略する。これら構造エレメントの処理は、図４乃至図６に示したフローチャートを用いて、前述の構造エレメントに対する処理と同様に行なわれるからである。なお、ページセット１３０が処理される時には、格別に選択されたページはないので、デフォルトで各ページが選択される。したがって、ページセット１３０に対するプロローグデータ構造のページ選択データ構造へのポインタはヌルを指すことになる。図５のステップ５０６に進むと、処理の流れは図６のステップ５２４へ進む。ページセット１３０に対してはページ選択データ構造も選択ページレンジＦＩＦＯもないので、ページセット１３０の処理の間、ステップ５０８〜５２２はスキップされる。
【００６９】
図２０はネットワークとそれに接続された各種装置を示しており、それらのいずれも本発明を使用できる。ネットワーク７１４に接続されるプリンタ７０２は、プリンタコントローラ７０６とプリントエンジン７０４を有する。ワークステーション７０８、並びにプリンタ７１２に接続されたプリントサーバー７１０も、ネットワーク７１４に接続されている。
【００７０】
図２１はプリンタ７０２のプリンタコントローラ７０６の詳細を示している。このプリンタコントローラ７０６はホストインターフェイス７２６を介してホスト７２８に接続される。ホスト７２８はどのようなコンピュータでもよく、場合によってはワークステーション７０８であってもよい。ワークステーション７０８は、例えばネットワーク７１４、シリアルプリンタケーブル、パラレルプリンタケーブルを介し、ホスト７２８に接続される。プリンタコントローラ７０６はＣＰＵ７２０、ＲＡＭ７２２、本発明のプロセスを実現するＲＯＭ７２４、プリントエンジンインターフェイス７３２、これらのプリンタコントローラ要素を接続するシステムバス７３０も含む。プリントエンジンインターフェイス７３２はラスタライズしたイメージデータを、ビデオ及びその他の信号としてプリントエンジン７０４へ出力する。
【００７１】
図２２はワークステーション７０８の構成を示す。ワークステーション７０８はＣＰＵ７５０、ＲＡＭ７５２、ＲＯＭ７５４、キーボード７５８及びマウス７６０と接続された入力コントローラ７５６を含む。プリントエンジンインターフェイス７６４がプリントエンジン７６２に直接接続され、同エンジンはプリントエンジンインターフェイス７６４により送られて来るラスタライズされたイメージデータのビデオ・制御信号を受信する。ワークステーション７０８はさらに、ハードディスク７６８及びフロッピードライブ７７０に接続されたディスクコントローラ７７２、ネットワーク７１４（例えばＥthernet，登録商標）との接続のための通信コントローラ７７４、外部ハードディスク７８０に例えばＳＣＳＩバスにより接続されかつプリンタ７７８に例えばＲＳ−２３２ケーブルにより接続されたＩ／Ｏコントローラ７７６を含む。ワークステーション７０８は、ＣＲＴ７８４と接続されたディスプレイコントローラ７８２も含む。システムバス７６６はワークステーション内部の各エレメントを接続する。
【００７２】
処理し印刷すべきＳＰＤＬファイルは、ワークステーション７０８によって直接作成することができ、あるいは、まずワークステーション７０８により作成してから例えばハードディスク７６８もしくは７８０、フロッピードライブ７７０またはＲＡＭ７５２のいずれかに格納することができる。その後、このＳＰＤＬファイルをＣＰＵ７５０により印刷処理することができ、ＳＰＤＬファイルをラスタライズされたイメージデータへ加工し、このイメージデータはバス７６６を介してプリントエンジンインターフェイス７６４へ送られ、最終的にビデオ制御信号の形でプリントエンジン７６２へ送られることにより同イメージがプリントエンジン７６２により印刷される。
【００７３】
図２３に示されたプリントサーバー７１０の基本構成はワークステーション７０８と非常に似ている。プリントサーバー７１０はネットワーク７１４より送られて来たＳＰＤＬファイルを通信コントローラ８１８で受信する。ＣＰＵ８００は、本発明のプロセスに従って、受信したファイルがバイナリもしくはクリアテキストのＳＰＤＬフォーマットまたは他のエンコーディングフォーマットのいずれであるかを判定する。次に、このファイルはＣＰＵにより処理れさ、システムバス８１４を介しプリンタインターフェイス８１６へ、そしてプリンタ７１２へ送られる。ＣＰＵ８００は文書を様々なフォーマットへ加工できる。例えば、ＳＰＤＬ文書をポストスクリプト表現に加工してプリンタ７１２へ送ることができる（プリンタ７１２がポストスクリプト互換であるとして）。あるいは、ＣＰＵ８００はＳＰＤＬファイルをいずれかのエスケープ型言語へ加工することができる。例えば、ヒューレットパッカード（ＨＰ）社のレーザージェット（登録商標）シリーズプリンタのネイティブ言語（例えばＰＣＬ）に加工することができ、当然この場合にはプリンタ７１２がＨＰレーザージェット互換であると仮定することができる。また、ＣＰＵ８００によりＳＰＤＬ文書を、ドットマトリクスプリンタ、インクジェットプリンタ、サーマルプリンタ、その他のラスター可能プリンタに使用されるフォーマットへ加工することも可能である。また、ＣＰＵ８００によりＳＰＤＬ文書をラスターイメージに加工し、このイメージデータをプリンタ７１２内部のプリントエンジンへ送ることも可能である。
【００７４】
明らかなように、以上の説明に照らし、本発明の様々な修正及び変形が可能である。例えば、本発明は特定のシンタックスのページ記述言語に限定されるものではなく、本明細書に述べたと同様の機能を達成するページ記述言語に対して使用できる。さらに、ピクチャー／ページセットスタックは、一続きのリンクリストを用いて等価なものを実現し得る。また、選択ページレンジＦＩＦＯデータ構造は、最高ページ番号を最初にプッシュし、最低ページ番号を最後にプッシュするスタックを用いて等価なものを実現することもできる。したがって、このスタックからページがポップされる時、このポッピングは本明細書で説明したところのＦＩＦＯデータ構造からのポッピングと同等である。さらに、ＦＩＦＯデータ構造は、一続きのリンクリストを用いて等価なものを実現することもできる。
【００７５】
【発明の効果】
実施例に関連して詳細に述べたことから明らかなように、本発明によれば、スタックとＦＩＦＯデータ構造を用いることによって、階層構造を有する文書のページ選択処理を効率的に行なうことができ、その結果、文書の印刷その他出力のための処理の効率を向上できる等の効果を得られる。
【図面の簡単な説明】
【図１】様々な階層レベルに選択ページを有するＳＰＤＬ文書の例を示す図である。
【図２】本発明に用いられるピクチャー／ページセットスタック及びページセット／ピクチャープロローグデータ構造を示す図である。
【図３】選択ページレンジＦＩＦＯデータ構造を指すページ選択データ構造を示す図である。
【図４】一つのページに出会うたびに当該ページが処理すべく選択されているか判定するために本発明で用いられるプロセスを示すフローチャートである。
【図５】あるページが処理すべく選択されていることを判定するため図２に示したプロセスにより呼び出されるページ選択チェックルーチンの一部を示すフローチャートである。
【図６】図５に示したページ選択チェックルーチンの残りの部分を示すフローチャートである。
【図７】図１のページセット１０２の処理後のデータ構造を示す図である。
【図８】図１のピクチャー１０４に出会った時のデータ構造を示す図である。
【図９】図１のピクチャー１０４の処理中のデータ構造を示す図である。
【図１０】図１のピクチャー１０６の処理後のデータ構造を示す図である。
【図１１】図１のページセット１０８の処理後のデータ構造を示す図である。
【図１２】図１のピクチャー１１２の処理後のデータ構造を示す図である。
【図１３】図１のピクチャー１１４の処理後のデータ構造を示す図である。
【図１４】図１のピクチャー１１４に続く処理時のデータ構造を示す図である。
【図１５】図１のピクチャー１１８の処理後のデータ構造を示す図である。
【図１６】図１のページセット１２０の処理時のデータ構造を示す図である。
【図１７】図１のピクチャー１２２の処理時のデータ構造を示す図である。
【図１８】図１のピクチャー１２４の処理後のデータ構造を示す図である。
【図１９】図１のピクチャー１２６の処理後のデータ構造を示す図である。
【図２０】本発明を利用するためのコンピュータネットワークを示すブロック図である。
【図２１】本発明を利用するためのプリンタコントローラを示すブロック図である。
【図２２】本発明を利用するためのワークステーションを示すブロック図である。
【図２３】本発明を利用するためのプリントサーバを示すブロック図である。
【符号の説明】
１０２，１０８，１２０，１３０  ページセット
１０４，１０６，１１２，１１４，１１６，１１８  ピクチャー
１２２，１２４，１２６，１２８，１３２，１３４  ピクチャー
２０２  ピクチャー／ページセットスタック
２５０，２６０，２７０  ページセット／ピクチャープロローグデータ構造
２５２，３０２，３１２  ページ選択データ構造
３５０，３６０  選択ページレンジＦＩＦＯデータ構造
７０２  プリンタ
７０４  プリントエンジン
７０６  プリンタコントローラ
７０８  ワークステーション
７１０  プリントサーバー
７１２  プリンタ
７１４  ネットワーク
７２０  ＣＰＵ
７２２  ＲＡＭ
７２４  ＲＯＭ
７２６  ホストインターフェイス
７２８  ホスト
７３２  プリントエンジンインターフェイス
７５０  ＣＰＵ
７５２  ＲＡＭ
７５４  ＲＯＭ
７５６  入力コントローラ
７５８  キーボード
７６０  マウス
７６２  プリントエンジン
７６４  プリントエンジンインターフェイス
７６６  システムバス
７６８  ハードディスク
７７０  フロッピードライブ
７７２  ディスクコントローラ
７７４  通信コントローラ
７７６  Ｉ／Ｏコントローラ
７７８  プリンタ
７８０  ハードディスク
７８２  ディスプレイコントローラ
７８４  ＣＲＴ
８００  ＣＰＵ
８０２  ＲＡＭ
８０４  ＲＯＭ
８０６  入力コントローラ
８０８  キーボード
８１０  ディスクコントローラ
８１２  ハードディスク
８１４  システムバス
８１６  プリンタインターフェイス
８１８  通信コントローラ
８２０  Ｉ／Ｏコントローラ
８２２  ＳＣＳＩ装置
８２４  ディスプレイコントローラ
８２６  ＣＲＴ
【図１】
0003605155.tif 000002
【図２】
0003605155.tif 000003
【図３】
0003605155.tif 000004
【図４】
0003605155.tif 000005
【図５】
0003605155.tif 000006
【図６】
0003605155.tif 000007
【図７】
0003605155.tif 000008
【図８】
0003605155.tif 000009
【図９】
0003605155.tif 000010
【図１０】
0003605155.tif 000011
【図１１】
0003605155.tif 000012
【図１２】
0003605155.tif 000013
【図１３】
0003605155.tif 000014
【図１４】
0003605155.tif 000015
【図１５】
0003605155.tif 000016
【図１６】
0003605155.tif 000017
【図１７】
0003605155.tif 000018
【図１８】
0003605155.tif 000019
【図１９】
0003605155.tif 000020
【図２０】
0003605155.tif 000021
【図２１】
0003605155.tif 000022
【図２２】
0003605155.tif 000023
【図２３】
0003605155.tif 000024