(57)【要約】【目的】レコード抽出条件等をテーブルとすることによって，抽出条件の変更に容易に対応できるようにする。【構成】データ抽出装置は，与えられる抽出条件から，比較条件を表す演算子，演算子で比較される入力ファイル１１中のデータ項目を識別する項目番号およびリテラル値を記述した比較条件テーブル１２と，比較条件ごとに，入力ファイル１１中のデータ項目のデータとリテラル値との間の比較が比較条件を満たす場合の次に判定すべき比較条件を示す真ポインタ，比較条件を満たさない場合の次に判定すべき比較条件を示す偽ポインタおよび比較条件に従う判定で抽出処理を終了することを示す終了ポインタを記述した比較処理制御テーブル１３を作成する（ステップ３０００）。比較条件テーブル１２と比較処理制御テーブル１３とに基づいて入力ファイル１１から抽出条件に合致するレコードが抽出される（ステップ４０００）。【選択図】　図５
2004046382.tif 000002
【特許請求の範囲】
【請求項１】
与えられる抽出条件に基づいて，その抽出条件に含まれる１または複数の比較条件のそれぞれについて，比較条件を表す演算子，上記演算子によって比較されるべき入力データ・ファイル中のデータのデータ項目を識別するデータ項目識別符号，および上記データ項目のデータと比較されるべきリテラル値を記述した比較条件テーブルを作成する手段，
上記比較条件ごとに，入力データ・ファイル中のデータ項目のデータと上記リテラル値との間の比較が比較条件を満たす場合における次に判定すべき比較条件を特定する真ポインタ，入力データ・ファイル中のデータ項目のデータと上記リテラル値との間の比較が比較条件を満たさない場合における次に判定すべき比較条件を特定する偽ポインタ，および比較条件に従う判定で抽出処理を終了することを示す終了ポインタを記述した比較処理制御テーブルを作成する手段，ならびに
入力データ・ファイル中の各レコードについて，上記比較条件テーブルに基づいて，データ項目識別符号によって識別されるデータ項目のデータと，上記リテラル値とを上記演算子に従って比較して真偽を判定し，真偽判定の結果に応じて比較処理制御テーブルの記述に従って，さらなる比較と真偽判定を繰返し，終了ポインタに対応する判定結果が真の場合に，そのレコードを入力データ・ファイルから抽出するレコード抽出手段，を備えたデータ抽出装置。
【請求項２】
与えられる抽出条件に基づいて，その抽出条件に含まれる１または複数の比較条件のそれぞれについて，比較条件を表す演算子，上記演算子によって比較されるべき入力データ・ファイル中のデータのデータ項目を識別するデータ項目識別符号，および上記データ項目のデータと比較されるべきリテラル値を記述した比較条件テーブルを作成させ，
上記比較条件ごとに，入力データ・ファイル中のデータ項目のデータと上記リテラル値との間の比較が比較条件を満たす場合における次に判定すべき比較条件を特定する真ポインタ，入力データ・ファイル中のデータ項目のデータと上記リテラル値との間の比較が比較条件を満たさない場合における次に判定すべき比較条件を特定する偽ポインタ，および比較条件に従う判定で抽出処理を終了することを示す終了ポインタを記述した比較処理制御テーブルを作成させ，
入力データ・ファイル中の各レコードについて，上記比較条件テーブルに基づいて，データ項目識別符号によって識別されるデータ項目のデータと，上記リテラル値とを上記演算子に従って比較して真偽を判定させ，真偽判定の結果に応じて比較処理制御テーブルの記述に従って，さらなる比較と真偽判定の繰返しを行わせ，終了ポインタに対応する判定結果が真の場合に，そのレコードを入力データ・ファイルから抽出させるようにコンピュータを制御する，プログラム。
【請求項３】
与えられる抽出条件に基づいて，その抽出条件に含まれる１または複数の比較条件のそれぞれについて，比較条件を表す演算子，上記演算子によって比較されるべき入力データ・ファイル中のデータのデータ項目を識別するデータ項目識別符号，および上記データ項目のデータと比較されるべきリテラル値を記述した比較条件テーブルを作成し，
上記比較条件ごとに，入力データ・ファイル中のデータ項目のデータと上記リテラル値との間の比較が比較条件を満たす場合における次に判定すべき比較条件を特定する真ポインタ，入力データ・ファイル中のデータ項目のデータと上記リテラル値との間の比較が比較条件を満たさない場合における次に判定すべき比較条件を特定する偽ポインタ，および比較条件に従う判定で抽出処理を終了することを示す終了ポインタを記述した比較処理制御テーブルを作成し，
入力データ・ファイル中の各レコードについて，上記比較条件テーブルに基づいて，データ項目識別符号によって識別されるデータ項目のデータと，上記リテラル値とを上記演算子に従って比較して真偽を判定し，真偽判定の結果に応じて比較処理制御テーブルの記述に従って，さらなる比較と真偽判定を繰返し，終了ポインタに対応する判定結果が真の場合に，そのレコードを入力データ・ファイルから抽出する，データ抽出方法。
【請求項４】
終了ポインタに対応する判定結果が真の場合には，そのレコードを抽出して，次のレコードについての処理へ進み，
終了ポインタに対応する判定結果が偽の場合には，そのレコードを抽出することなく，次のレコードについての処理に進む，請求項３に記載の方法。
【請求項５】
上記比較処理制御テーブルは，
後置演算記法で記述された抽出条件にしたがって，該抽出条件に含まれる演算子および比較条件を記述の順序に辿り，
演算子に先行して２つの比較条件がある場合には，その比較条件をブランチとし，その演算子をノードとして上記ブランチを結合させ，
演算子に先行して比較条件とノードがある場合には，その演算子をノードとしし，比較条件およびノードを新たなブランチとして結合させ，
演算子に先行して２つのノードがある場合には，これらを新たなブランチとしてその演算子をノードとして結合させていくことにより，後置演算記法で記述された抽出条件から条件ツリーを作成し，
作成された条件ツリーに基づいて，記述の順序を示す識別コードと，演算子か比較条件かを示す区分コードと，比較条件についてはその識別コードと，左右いずれのブランチであるかを示す区分と，ノードである演算子についてその左右のブランチを示す識別コードと，比較条件についてデータファイル内の該当する項目のデータが比較条件を満たす場合に次に判定すべき比較条件を示す識別コード，比較条件を満たさない場合に，次に判定すべき比較条件を示す識別コード，およびその比較条件に従う判定で抽出条件の判定が終了すべきことを示すコードとを記述した条件ツリーテーブルを作成し，作成した条件ツリーテーブルに基づいて作成するものである，請求項１に記載の方法。
【発明の詳細な説明】
【０００１】
【技術分野】
この発明は，データ抽出装置および方法に関する。
【０００２】
【発明の背景】
ダイレクトメールなど，顧客に対して何らかの情報発信を行う場合に顧客情報の入ったデータ・ファイルから，特定のデータ・レコードの抽出を行う。また発信する顧客を特定の条件で絞る事で，効率の良い情報提供を行うことが重要である。
【０００３】
一般には，抽出したい条件をデータ・レコードの項目名を元に決定し，各レコードを比較元（入力数値等）と比較し，その結果の真偽によって判定する。また，抽出条件が複合的な場合でも，各条件の真偽の組み合わせで判定できなければいけない。
【０００４】
従来，データ・ファイルから特定の条件に合致するレコードを抽出する際に，抽出条件の真偽判定を行うプログラムをその都度作成し，コンパイルすることで実現してきた。
【０００５】
しかし，この方法では，プログラム作成に時間を要する上に，抽出条件が異なれば既存のプログラムを流用できないので，新規の条件による抽出だけでなく，抽出条件を一部変更して抽出する場合にも同様に作業時間を割く必要があった。またこの様にプログラムを作成する作業時間の影響で抽出結果をリアルタイムで知ることはできなかった。
【０００６】
【発明の開示】
この発明は，データ・レコードの抽出のために必要とされる条件等をテーブルの形とすることによって，プログラムを新たに作成することなく，抽出条件の変更に容易に対応できるようにすることを目的とする。
【０００７】
この発明によるデータ抽出装置は，与えられる抽出条件に基づいて，その抽出条件に含まれる１または複数の比較条件のそれぞれについて，比較条件を表す演算子，上記演算子によって比較されるべき入力データ・ファイル中のデータのデータ項目を識別するデータ項目識別符号，および上記データ項目のデータと比較されるべきリテラル値を記述した比較条件テーブルを作成する手段，上記比較条件ごとに，入力データ・ファイル中のデータ項目のデータと上記リテラル値との間の比較が比較条件を満たす場合における次に判定すべき比較条件を特定する真ポインタ，入力データ・ファイル中のデータ項目のデータと上記リテラル値との間の比較が比較条件を満たさない場合における次に判定すべき比較条件を特定する偽ポインタ，および比較条件に従う判定で抽出処理を終了することを示す終了ポインタを記述した比較処理制御テーブルを作成する手段，ならびに入力データ・ファイル中の各レコードについて，上記比較条件テーブルに基づいて，データ項目識別符号によって識別されるデータ項目のデータと，上記リテラル値とを上記演算子に従って比較して真偽を判定し，真偽判定の結果に応じて比較処理制御テーブルの記述に従って，さらなる比較と真偽判定を繰返し，終了ポインタに対応する判定結果が真の場合に，そのレコードを入力データ・ファイルから抽出するレコード抽出手段を備えたことを特徴とする。
【０００８】
この発明によるデータ抽出方法は，与えられる抽出条件に基づいて，その抽出条件に含まれる１または複数の比較条件のそれぞれについて，比較条件を表す演算子，上記演算子によって比較されるべき入力データ・ファイル中のデータのデータ項目を識別するデータ項目識別符号，および上記データ項目のデータと比較されるべきリテラル値を記述した比較条件テーブルを作成し，上記比較条件ごとに，入力データ・ファイル中のデータ項目のデータと上記リテラル値との間の比較が比較条件を満たす場合における次に判定すべき比較条件を特定する真ポインタ，入力データ・ファイル中のデータ項目のデータと上記リテラル値との間の比較が比較条件を満たさない場合における次に判定すべき比較条件を特定する偽ポインタ，および比較条件に従う判定で抽出処理を終了することを示す終了ポインタを記述した比較処理制御テーブルを作成し，入力データ・ファイル中の各レコードについて，上記比較条件テーブルに基づいて，データ項目識別符号によって識別されるデータ項目のデータと，上記リテラル値とを上記演算子に従って比較して真偽を判定し，真偽判定の結果に応じて比較処理制御テーブルの記述に従って，さらなる比較と真偽判定を繰返し，終了ポインタに対応する判定結果が真の場合に，そのレコードを入力データ・ファイルから抽出することを特徴とする。
【０００９】
この発明は，上述のデータ抽出装置を制御するためのプログラムも提供している。この発明によるデータ抽出装置を制御するためのプログラムは，与えられる抽出条件に基づいて，その抽出条件に含まれる１または複数の比較条件のそれぞれについて，比較条件を表す演算子，上記演算子によって比較されるべき入力データ・ファイル中のデータのデータ項目を識別するデータ項目識別符号，および上記データ項目のデータと比較されるべきリテラル値を記述した比較条件テーブルを作成させ，上記比較条件ごとに，入力データ・ファイル中のデータ項目のデータと上記リテラル値との間の比較が比較条件を満たす場合における次に判定すべき比較条件を特定する真ポインタ，入力データ・ファイル中のデータ項目のデータと上記リテラル値との間の比較が比較条件を満たさない場合における次に判定すべき比較条件を特定する偽ポインタ，および比較条件に従う判定で抽出処理を終了することを示す終了ポインタを記述した比較処理制御テーブルを作成させ，入力データ・ファイル中の各レコードについて，上記比較条件テーブルに基づいて，データ項目識別符号によって識別されるデータ項目のデータと，上記リテラル値とを上記演算子に従って比較して真偽を判定させ，真偽判定の結果に応じて比較処理制御テーブルの記述に従って，さらなる比較と真偽判定の繰返しを行わせ，終了ポインタに対応する判定結果が真の場合に，そのレコードを入力データ・ファイルから抽出させるようにコンピュータを制御する。
【００１０】
この発明によると，与えられる抽出条件に基づいて比較条件テーブルが作成され，さらに，比較処理制御テーブルが作成される。
【００１１】
比較条件テーブルは，与えられる抽出条件に含まれる１または複数の比較条件のそれぞれについて，比較条件を表す演算子（以上，以下，より大きい，より小さい等），演算子によって比較されるべき入力データ・ファイル中のデータ項目（年齢，性別等），リテラル値（３０，男または女等）を含むテーブルである。比較処理制御テーブルは，与えられる抽出条件が，複数の比較条件の組合せであるような場合に，その判断（判定）の順序および一の判定結果に基づく次の判定の特定を規定するテーブルである。抽出条件が与えられるたびに，この比較条件テーブルおよび比較処理制御テーブルが作成される。
【００１２】
作成される比較条件テーブルおよび比較処理制御テーブルにもとづいて，入力データ・ファイル中の各レコードのうち，抽出条件に適合するレコードが抽出される。すなわち，入力データ・ファイル中のレコードのそれぞれについて，上記比較条件テーブルに基づいて，データ項目識別符号によって識別されるデータ項目のデータと，上記リテラル値とを上記演算子に従って比較して真偽を判定し，真偽判定の結果に応じて比較処理制御テーブルの記述に従って，さらなる比較と真偽判定を繰返し，終了ポインタに対応する判定結果が真の場合に，そのレコードを入力データ・レコードから抽出する。抽出される入力データ・レコードが，与えられる抽出条件に適合するデータを持つレコードである。
【００１３】
この発明によると，与えられる抽出条件から，比較条件テーブルおよび比較処理制御テーブルを作成し，作成された比較条件テーブルおよび比較処理制御テーブルに基づいて，抽出条件に合致するレコードを入力データ・ファイルから抽出する。このため，抽出条件の真偽判定を行うプログラムを，抽出条件ごとに作成する必要がない。新規の抽出条件による抽出のみならず，特に抽出条件を一部変更して抽出する場合に新たにプログラムを作成する必要がないので，入力データ・ファイルから特定のデータをもつレコードを抽出する作業の負担が軽減される。
【００１４】
一実施態様では，終了ポインタに対応する判定結果が真の場合には，そのレコードを抽出して，次のレコードについての処理へ進み，終了ポインタに対応する判定結果が偽の場合には，そのレコードを抽出することなく，次のレコードについての処理に進む。
【００１５】
他の実施態様では，上記比較処理制御テーブルは，後置演算記法で記述された抽出条件にしたがって，該抽出条件に含まれる演算子および比較条件を記述の順序に辿り，演算子に先行して２つの比較条件がある場合には，その比較条件をブランチとし，その演算子をノードとして上記ブランチを結合させ，演算子に先行して比較条件とノードがある場合には，その演算子をノードとしし，比較条件およびノードを新たなブランチとして結合させ，演算子に先行して２つのノードがある場合には，これらを新たなブランチとしてその演算子をノードとして結合させていくことにより，後置演算記法で記述された抽出条件から条件ツリーを作成し，作成された条件ツリーに基づいて，記述の順序を示す識別コードと，演算子か比較条件かを示す区分コードと，比較条件についてはその識別コードと，左右いずれのブランチであるかを示す区分と，ノードである演算子についてその左右のブランチを示す識別コードと，比較条件についてデータファイル内の該当する項目のデータが比較条件を満たす場合に次に判定すべき比較条件を示す識別コード，比較条件を満たさない場合に次に判定すべき比較条件を示す識別コード，およびその比較条件に従う判定で抽出条件の判定が終了すべきことを示すコードとを記述した条件ツリーテーブルを作成し，作成した条件ツリーテーブルに基づいて作成するものである。
【００１６】
【実施例】
データ抽出処理は，入力データ・ファイルから，与えられた抽出条件に適合するデータ（レコード）を抽出する処理である。データ抽出処理は，コンピュータ・システムによって実現される。コンピュータ・システムはハードディスクを含む。このハードディスクに後述する種々の処理を行うプログラムを記憶させておく。このプログラムが実行されることによって，コンピュータ・システムがデータ抽出処理を実行する装置（データ抽出装置）として機能する。
【００１７】
与えられた抽出条件に適合するデータの抽出は，▲１▼入力データ・ファイル，▲２▼比較条件テーブル，▲３▼比較処理制御テーブルおよび▲４▼レイアウト定義テーブルに，後述する抽出条件判定処理を施すことによって行われる。以下，抽出条件判定処理に用いられる▲１▼入力データ・ファイル，▲２▼比較条件テーブル，▲３▼比較処理制御テーブルおよび▲４▼レイアウト定義テーブルを，簡単に順を追って説明する。
【００１８】
（１）入力データ・ファイル
図１は，入力データ・ファイルの一例を示している。図１に示す入力データ・ファイルは，クレジット・カード会社の会員（顧客）についての情報（顧客情報）が記録されたファイルである。
【００１９】
入力データ・ファイル１１には，例えばクレジットカード会社の会員（顧客）についての情報，すなわち会員を識別する識別番号，氏名，住所，性別，生年月日，年齢，入社年月日，年収，年収調査年等のデータ項目に関するデータが記録されている。入力データ・ファイルは複数のレコードを含む。図１に示す入力データ・ファイルでは，顧客のそれぞれについて１つのレコードが格納されている。
【００２０】
後述する抽出条件判定処理では，この入力データ・ファイル１１に記憶されている複数のレコードのうち，与えられた抽出条件に適合するレコードが抽出される。
【００２１】
（２）比較条件テーブル
図２（Ａ）　は比較条件テーブルの一般形を，図２（Ｂ）　は比較条件テーブルの一例を示している。
【００２２】
比較条件テーブル１２は，与えられる抽出条件と，あらかじめ記憶装置に記憶されているレイアウト定義テーブルとに基づいて作成される。
【００２３】
「比較条件連番」は，与えられる抽出条件中に，比較条件が出現する毎に割り当てられる連続する番号である。「項目番号」は，比較条件によって比較されるデータの項目名に対応する項目番号である。項目番号は，レイアウト定義テーブルに記憶されている。「比較演算子」は，抽出条件中の比較条件を表す演算子である。「リテラル値」は比較演算子に対応する即値データである。
【００２４】
（３）比較処理制御テーブル
図３（Ａ）　は比較処理制御テーブルの一般形を，図３（Ｂ）　は比較処理制御テーブルの一例をそれぞれ示している。
【００２５】
比較処理制御テーブル１３は，後述する条件ツリー・テーブルに基づいて作成される。比較処理制御テーブル１３の詳細および比較処理制御テーブル１３の作成に用いられる条件ツリー・テーブルの詳細は後述する。
【００２６】
（４）レイアウト定義テーブル
上述の比較条件テーブルの作成に用いられるレイアウト定義テーブルを説明する。図４（Ａ）　はレイアウト定義テーブル１４の一般形を，図４（Ｂ）　はレイアウト定義テーブル１４の一例をそれぞれ示している。
【００２７】
レイアウト定義テーブル１４は，上述の入力データ・ファイルのデータ項目と，データ項目に対応して入力データ・ファイルに格納されるデータの定義とが記述されたテーブルである。レイアウト定義テーブル１４は，項目番号，項目名，開始位置，データ長およびタイプの項目を持つ。
【００２８】
入力データ・ファイルに含まれるデータ項目のそれぞれに，番号が割り当てられている。これが，「項目番号」である。項目番号によって項目（項目名）が特定される。
【００２９】
「データ開始位置」は，入力データ・ファイルに記憶されている各レコードにおいて，項目番号（および項目名）によって特定されるデータの記述が開始される位置である。たとえば，図４（Ｂ）　に示す例において項目番号「５」，項目名「年齢」について，開始位置は「４０」である。入力データ・ファイルに格納されている各レコードにおいて，年齢に関するデータはレコードの先頭から数えて４０バイト目から記述されている。
【００３０】
「データ長」は，項目番号（および項目名）によって特定されるデータの長さを表す。
【００３１】
「タイプ」は，項目番号（および項目名）によって特定されるデータのデータ・タイプである。ゾーン１０進型なら「Ｎ」が，パック１０進型なら「Ｐ」が，バイナリ形式なら「Ｂ」がそれぞれ記憶される。
【００３２】
上述したように，データ抽出処理では，▲１▼入力データ・ファイル，▲２▼比較条件テーブル，▲３▼比較処理制御テーブルおよび▲４▼レイアウト定義テーブルが用いられる。▲２▼入力データ・ファイル１１および▲４▼レイアウト定義テーブル１４は，あらかじめシステム運用者が作成するファイルおよびテーブルである。▲２▼比較条件テーブル１２および比較処理制御テーブル１３は，データ抽出処理の中で作成されるテーブルである。
【００３３】
図５は，データ抽出処理の全体の流れを示すフローチャートである。図６は，データ抽出処理中に含まれる比較処理制御テーブルおよび比較条件テーブル作成処理の流れを示すフローチャートである。
【００３４】
はじめに，抽出条件がユーザによって入力される（ステップ１０００　）。
【００３５】
図７は，ユーザによって入力される抽出条件の一例（画面例）を示している。抽出条件は，コンピュータの入力装置（キーボード等）と表示装置の表示画面をを用いて入力される。ユーザが入力装置から抽出条件をコンピュータに入力すると，入力された抽出条件が表示装置の表示画面上に表示される。図８は，図７に示す抽出条件を分かりやすく示すものである。図７および図８は，年齢が３０歳から６５歳の間で，かつ入社年月が１９８７年３月以前の顧客に関するデータと，年収が１０００万円以上で，かつ年収調査年が１９９１　年以降の顧客に関するデータとを抽出する条件を表している。
【００３６】
図７および図８中の「ＡＮＤ」および「ＯＲ」は演算子である。「ＡＮＤ」は論理積を表わす。「ＯＲ」は論理和を表わす。
【００３７】
左括弧「（」および右括弧「）」は，抽出条件中に記述されている比較条件（＜，＞，＜＝または＞＝）に基づく比較を行う順番を制御するために用いられるる。括弧「（」，「）」の対によって閉じられている比較条件（比較条件群）が優先的に処理される。括弧「（」，「）」をネストして記述してもよい。
【００３８】
図５に戻って，入力された抽出条件を表すデータは，その論理構造を崩さないように抽出条件ファイル１５に登録される（ステップ２０００）。図９は，抽出条件ファイル１５の一例を示す。
【００３９】
抽出条件ファイル１５に登録される抽出条件を表すデータにおいて，比較条件は，項目（たとえば，「年齢」），比較演算子（たとえば，「＞＝」）およびリテラル値（たとえば，「３０」）からなる。
【００４０】
作成された抽出条件ファイル１５と，上述のレイアウト定義テーブル１４とに基づいて，比較処理制御テーブルおよび比較条件テーブルの作成処理が行われる（ステップ３０００，図６）。
【００４１】
はじめに，作成された抽出条件ファイル１５とレイアウト定義テーブル１４とを入力として，抽出条件テーブルおよび比較条件テーブルの作成処理が行われる（ステップ３１００　）。
【００４２】
図９に示す抽出条件ファイル１５と，図４（Ｂ）　に示すレイアウト定義テーブル１４とに基づいて作成される抽出条件テーブルの例を，図１０に示す。抽出条件テーブル１６は，抽出条件ファイル１５に記述された左括弧「（」，右括弧「）」，関係演算子および比較条件を，抽出条件ファイル１５中の記述の順序で配列し，比較条件については識別コードで置換したものをいう。図９に示す抽出条件ファイル１５と，図４（Ｂ）　に示すレイアウト定義テーブル１４とに基づいて作成される比較条件テーブルの例は，図２（Ｂ）　に示すものである。
【００４３】
図１１および図１２は，抽出条件テーブルおよび比較条件テーブル作成処理（図６：ステップ３１００）の詳細を示している。
【００４４】
抽出条件ファイルに記述された抽出条件データでは，括弧によって比較条件（＞，＜，＞＝または＜＝）が括られている。括弧によって括られた比較条件が階層として解釈される。階層の深さ（括弧によって閉じられている階層数）を，ネストレベルａで表わす。
【００４５】
ネストレベル毎に条件フラグが設定される。条件フラグは，構文解釈上次に取得される単語の種類を切り分けるために用いられる。条件フラグが「０」のときは，次に取得されるべきデータがデータの項目名か，「（」であるのを期待し，条件フラグが「１」のときは，次に取得されるべきデータが関係演算子か，「）」であることが期待される。
【００４６】
抽出条件テーブルおよび比較条件テーブルの比較条件連番の値を決定するために，比較条件を検出するたびにｎに値が加算される。ｎを比較条件連番に代入していく。
【００４７】
ワークエリアＤが用意される。ワークエリアＤは抽出条件テーブル１６と同一のレイアウトをしている。ワークエリアＣが用意される。ワークエリアＣは比較条件テーブル１２と同一のレイアウトをしている。これらが処理時の一時的な作業領域として用いられる。
【００４８】
ネストレベルａ，条件フラグ（ａ），比較条件連番ｎが初期化される（ステップ３１０１）。
【００４９】
抽出条件ファイル１５から単語が１つメモリに読込まれる（ステップ３１０２）。ここで単語とは関係演算子，左括弧，右括弧，項目名，比較演算子およびリテラル値のいずれかである。図９に示す抽出条件ファイル１５の場合，一番最初に読み込まれる単語は「（」である。以下の説明において，メモリに読み込まれている単語を読込単語と呼ぶ。
【００５０】
抽出条件ファイル１５に含まれるすべての単語について，次に説明する処理が行われる（ステップ３１２０でＮＯ）。
【００５１】
ネストレベルａの時の条件フラグが「０」の場合（ステップ３１０３で値が「０」），単語の種類の判定が行われる（図１２：ステップ３１０４）。
【００５２】
読込単語が項目名を表わしているか，左括弧「（」を表しているかが判断される（ステップ３１０４）。
【００５３】
読込単語が項目名を表わしている場合（ステップ３１０４で「項目名」），レイアウト定義テーブル１４がアクセスされて，その項目名に対応する項目番号が取得される（ステップ３１０５）。
【００５４】
抽出条件ファイル１５では，項目名の次の単語は必ず比較演算子である。読込単語が項目名の場合には，ここで次の単語（比較演算子）が読み込まれる（ステップ３１０６）。
【００５５】
抽出条件ファイル１５では，比較演算子の次の単語は必ずリテラル値である。さらに次の単語（リテラル値）が読み込まれる（ステップ３１０７）。
【００５６】
比較条件連番ｎをインクリメント（１を加算）し，比較条件連番ｎ，取得した項目番号，比較演算子，リテラル値をワークエリアＣに代入し，ワークエリアＣのデータを１レコードとして，比較条件テーブル１２に格納する（ステップ３１０８）。
【００５７】
抽出条件テーブル１６は，「区分」と「比較条件連番」の２つの項目を持つ（図９）。読込単語が項目名であった場合には，ワークエリアＤに「＃」と比較条件連番ｎとを代入し，ワークエリアＤのデータを１レコードとして抽出条件テーブル１６に格納する（ステップ３１０９）。区分「＃」と比較条件連番ｎの組が，抽出条件テーブル１６に格納される。
【００５８】
ａ番目の条件フラグを「１」にし（ステップ３１１０），次の抽出条件データを取得するためにステップ３１０２へ戻る。
【００５９】
取得したデータが括弧「（」の場合は（ステップ３１０４で「（」），ネストレベルａを１上げ，ワークエリアＤに「（」を代入し，ワークエリアＤのデータを１レコードとして抽出条件テーブル１６に格納する。次の抽出条件データを取得するためにステップ３１０２へ戻る。
【００６０】
ａ番目の条件フラグが「１」の場合で（ステップ３１０３で「１」），読込単語が関係演算子であるか，右括弧「）」であるかが判断される（ステップ３１１２）。
【００６１】
読込単語が演算子である場合には（ステップ３１１２で「演算子」），読込単語が「ＡＮＤ」であれば「Ａ」を，読込単語が「ＯＲ」であれば「Ｏ」を，ワークエリアＤに代入する。ワークエリアＤのデータが抽出条件テーブル１６に１レコードとして格納される。ａ番目の条件フラグが０にされる（ステップ３１１３）。次の抽出条件データを取得するためにステップ３１０２へ戻る。
【００６２】
読込単語が括弧「）」の場合は（ステップ３１１２で「）」），ネストレベルａを１つ下げて（ステップ３１１４），ａ番目の条件フラグに「１」を代入し，ワークエリアＤに「）」を代入し，ワークエリアＤを抽出条件テーブルのレコードに追加する（ステップ３１１５）。次の抽出条件データを取得するためにステップ３１０２へ戻る。
【００６３】
抽出条件ファイル１５に含まれるすべての単語について上述の処理が終了すると，抽出条件テーブルおよび比較条件テーブル作成処理が終了する（ステップ３１２０でＹＥＳ　）。抽出条件テーブル１６および比較条件テーブル１２が完成する。
【００６４】
図６に戻って，抽出条件テーブル１６および比較条件テーブル１２の作成が完了すると，次に後置条件テーブルの作成処理に進む（ステップ３２００）。
【００６５】
後置条件テーブル作成処理は，抽出条件テーブル１６をもとに各比較条件と演算子を後置条件テーブルに記憶させる処理である。後置条件テーブルとは，各比較条件をオペランド（演算数）とし，演算子をオペレータとして後置演算記法で記述し，抽出条件に含まれる演算子比較条件を後置演算記法の記述の順序で配列したものを記憶したものである。比較条件は識別コード（比較条件連番）で置換されて記憶される。
【００６６】
後置条件テーブルの作成処理では，上述の抽出条件テーブルおよび比較条件テーブル作成処理（ステップ３１００）において作成された抽出条件テーブル１６および比較条件テーブル１２のうち，抽出条件テーブル１６が用いられる。図１０に示す抽出条件テーブル１６から，次に説明する後置条件テーブル作成処理によって作成される後置条件テーブルの例を，図１３に示す。
【００６７】
後置条件テーブル１７は，抽出条件テーブル１６と同様に区分と比較条件連番を記憶する項目を持つ。しかし，後置条件テーブル１７では，区分の項目に括弧「（」，「）」を記憶しない。
【００６８】
後置演算記法では，括弧「（」，「）」で閉じられた式，ＡＮＤ，ＯＲの順で比較（演算）の優先順位が高い。また同じ優先順位ならより先に記述されている式のほうが優先的に比較が行われる。このような規則に従って，優先順位の高い比較（演算）から先に記述していく。後置演算記法で記述された比較条件や演算子の各要素を先に記述されてあるものから順に後置条件テーブル１７の各項目に記憶していく。
【００６９】
図１４および図１５は，後置条件テーブル作成処理（図６：ステップ３２００）を詳細に示すフローチャートである。
【００７０】
後置条件テーブル作成処理を簡潔に言えば，抽出条件テーブル作成処理で作成された抽出条件テーブル１６から，各比較条件の演算順位を解析し，後置演算記法に基づいて括弧「（」および「）」を省略して後置条件テーブル１７を作成する処理である。
【００７１】
演算子や括弧による演算順位の入替が行われる。抽出条件テーブル１６と同じレイアウトの変換用スタック（抽出条件テーブル１６そのもの）が用意される。また，作業用の領域として抽出条件テーブルと同じレイアウトのワークエリアＤおよびワークエリアＥが確保される。
【００７２】
抽出条件テーブル１６に格納されているレコードが１件メモリに読み込まれる。ワークエリアＤに格納される（ステップ３２０１）。ワークエリアＤに格納された抽出条件テーブル１６のレコードを，以下「読込レコード」と呼ぶ。読込レコード（ワークエリアＤ）には，区分に関するデータ（「（」，「）」，「＃」，「Ａ」または「Ｏ」）と，比較条件連番とがある。
【００７３】
ワークエリアＤの区分に関するデータが演算子（「Ａ」または「Ｏ」）であるか，「）」であるか，「（」であるか，比較条件「＃」であるかが判断される（ステップ３２０２）。
【００７４】
ワークエリアＤの区分に関するデータが演算子（「Ａ」または「Ｏ」）の場合，変換用スタックから１つのレコードが取出され，ワークエリアＥに格納される（ステップ３２０３）。
【００７５】
ワークエリアＥの区分に関するデータが括弧「（」であるか，演算子であるか，空であるかが判断される（ステップ３２０４）。
【００７６】
ワークエリアＥの区分に関するデータが括弧「（」の場合は（ステップ３２０４で「（」），ワークエリアＥを変換用スタックに格納し，ワークエリアＤを変換用スタックに格納する（ステップ３２０５）。ステップ３２０１に戻る。
【００７７】
ワークエリアＥの区分に関するデータが演算子の場合（ステップ３２０４で演算子）の場合，ワークエリアＤの区分に関するデータが「Ａ」で，かつワークエリアＥの区分に関するデータが「Ｏ」であるかどうかが判断される（ステップ３２０６）。
【００７８】
ワークエリアＤの区分に関するデータが「Ａ」で，かつワークエリアＥの区分に関するデータが「Ｏ」の場合は（ステップ３２０６で「Ａ」，「Ｏ」），演算子の出現の順序がそのまま演算順位になる。この場合にはワークエリアＥを変換用スタックに格納し，ワークエリアＤを変換用スタックに格納する（ステップ３２０７）。ステップ３２０１に戻る。
【００７９】
ワークエリアＤの区分に関するデータが「Ａ」で，かつワークエリアＥの区分が「Ｏ」の組み合せ以外の場合は（ステップ３２０６で「その他」），演算子の出現の順序と演算順位が逆転する。ワークエリアＥを後置条件テーブル１７のレコードとして追加し，ワークエリアＤを変換用スタックに格納する（ステップ３２０８）。
【００８０】
変換用スタックから取得したレコードが無い（空）場合（ステップ３２０４で「空」），ワークエリアＤを変換用スタックに格納する（ステップ３２０９）。ステップ３２０１に戻る。
【００８１】
ワークエリアＤの区分に関するデータが括弧「）」である場合（ステップ３２０２で「「）」），変換用スタックからレコードを取得しワークエリアＥに格納し（ステップ３２１０），ワークエリアＥの区分に関するデータが「（」であるかどうかが判断される（ステップ３２１１）。
【００８２】
ワークエリアＥの区分に関するデータが「（」でない場合（ステップ３２１１で「その他」），後置条件テーブル１７にレコードを追加し，括弧「（」が取得されるまでステップ３２１０〜３２１２の処理を繰返す。
【００８３】
繰返しが終了したら（ステップ３２１１で，区分に関するデータが括弧「（」の場合である），ステップ３２０１へ戻る。これで，ある深さの括弧で閉じられた部分の抽出条件が，後置条件テーブル１７に格納されたことになる。
【００８４】
ワークエリアＤの区分に関するデータが括弧「（」の場合（ステップ３２０２で「（」），ワークエリアＤを変換用スタックへ格納する（ステップ３２１３）。ステップ３２０１に戻る。
【００８５】
ワークエリアＤの区分に関するデータが比較条件の場合（ステップ３２０２で「＃」），ワークエリアＤを後置条件テーブル１７のレコードに追加する（ステップ３２１４）。
【００８６】
抽出条件テーブル１６から読込べきレコードがなくなった場合は（ステップ３２０２で「終了」），変換用スタックを１件取得してワークエリアＥに格納し（ステップ３２１５），後置条件テーブル１７のレコードに追加する（ステップ３２１６）。これを，変換用スタックに格納されているレコードがなくなるまで続ける。
【００８７】
以上の処理を経ることによって，抽出条件テーブル１６（図１０）から後置条件テーブル１７（図１３）が作成される。
【００８８】
図６に戻って，後置条件テーブル１７が作成されると，次に条件ツリー・テーブル作成処理（ステップ３３００）に進む。
【００８９】
条件ツリーテーブル作成処理（ステップ３３００）では，後置演算記法で記述された抽出条件（これは，上述の後置条件テーブル１７に記述されている）に含まれる演算子および比較条件を記述の順序に辿って，条件ツリーとして記述することができるテーブルを作成する処理である。すなわち，後置条件テーブル１７から，後述する条件ツリー・テーブルが作成される。
【００９０】
条件ツリー・テーブルのデータに基づいて，条件ツリーを描くことができる。条件ツリーは，順に辿っていくときに，演算子に先行して２つの比較条件がある場合には，比較条件をブランチとし演算子をノードとしてブランチを結合させる。演算子に先行して比較条件とノードがある場合には，演算子をノードとして比較条件およびノードを新たなブランチとして結合させる。演算子に先行して２つのノードがある場合には，これらを新たなブランチとして演算子をノードとして結合させていく。
【００９１】
図１６は，図１３に示す後置条件テーブルから作成される条件ツリーを，図１７は，図１６に示す条件ツリーを表現するための条件ツリー・テーブル１８を表している。ただし，図１６および図１７では，比較条件（＞，＜，＞＝または＜＝）がない。
【００９２】
図１８は比較条件まで考慮した条件を条件ツリーを，図１９は図１８に示す条件ツリーを表現するための条件ツリー・テーブル１８を表している。
【００９３】
条件ツリー・テーブル１８は，ツリー連番，区分，比較条件連番，ＬＲ区分，親ノード，左ブランチ，右ブランチ，真ブランチおよび偽ブランチの項目を含む。
【００９４】
「ツリー連番」は，記述の順序を示す識別コードである。
【００９５】
「区分」は，演算子か比較条件かを示す。
【００９６】
「区分」が比較条件の場合，比較条件連番を持つ（図１３の後置条件テーブル１７を参照）。「比較条件連番」には，対応する番号が記述される。
【００９７】
ツリーが分岐する場合には，左分岐または右分岐のいずれかになる。「ＬＲ区分」は，左，右のいずれかのブランチ（分岐）であるかを示す。「Ｌ」が左ブランチ（分岐），「Ｒ」が右ブランチ（分岐）を意味する。ただし，最後尾の演算子については，このＬＲ区分はない。
【００９８】
ツリーが分岐する場合，その分岐点がある。各分岐点をノードと呼ぶ。各ノードごとに識別番号がある。「親ノード」には，分岐点（ノード）を特定する識別番号が格納される。
【００９９】
「左ブランチ」には，ノードである演算子について左のブランチを示す識別番号（ツリー連番）が格納される。「右ブランチ」には，ノードである演算子について左のブランチを示す識別番号（ツリー連番）が格納される。
【０１００】
入力データ・ファイル中の該当する項目のデータが，比較条件を満たす場合を「真」と呼ぶ。「真ブランチ」には，比較条件を満たす場合に，次に判定すべき比較条件を示す識別番号（ツリー連番）が格納される。
【０１０１】
入力データ・ファイル中の該当する項目のデータが，比較条件を満たさない場合を「偽」と呼ぶ。「偽ブランチ」には比較条件を満たさない場合に，次に判定すべき比較条件を示す識別番号（ツリー連番）が格納される。
【０１０２】
比較条件に従う判定で抽出条件の判定が終了したことを示すコード（「００００」）も，「真ブランチ」および「偽ブランチ」に格納される。
【０１０３】
条件ツリー・テーブル１８の作成方法を簡単に述べると，次の通りである。
【０１０４】
後置条件テーブル１７の記述順（レコード順）に連番を割り当て，それをツリー連番に，区分を区分に，比較条件についてはその識別番号を比較条件連番に，左右のいずれのブランチであるかを示す識別子をＬＲ区分に，そのノードを示す識別コードを親ノードに，ノードである関係演算子については左右のブランチにあたる識別コードを左ブランチ右ブランチに，それぞれ記憶させる。
【０１０５】
次に，入力データ・ファイルの該当項目の各比較条件の結果（真偽）によって，次に比較を行うための比較条件を一意的に決定し，それを上記の条件ツリーテーブルの真ブランチおよび偽ブランチに記憶させる。
【０１０６】
入力データ・ファイルの該当項目を各比較条件で比較した結果が真の場合，次に比較を行う比較条件を決定して条件ツリー・テーブル１８の真ブランチにデータを記憶させる。ここでは，データ・ファイルの該当項目があるノードの右ブランチ（比較条件を表わすブランチもしくは，関係演算子を表わすノード（比較条件群））を満たした場合は，該ノードで結合されたノードを満たすものとする。
【０１０７】
入力データ・ファイル内の該当する項目が比較条件連番００１（ツリー連番０００１）で表わされている比較条件を満たす（真）ならば，その親ノードのツリー連番０００３の区分が「Ａ（ＡＮＤ）」であるので，ツリー連番０００３の右ブランチのツリー連番０００２を次の比較条件としてツリー連番０００１のレコードの真ブランチに「０００２」を記憶する。
【０１０８】
入力データ・ファイル内の該当する項目が比較条件連番００２（ツリー連番０００２）で表わされている比較条件を満たす（真）ならば，親ノードのツリー連番０００３で結合されたノードを満たしていることになる（データファイルの該当項目が比較条件群Γを満たしている）。更に親ノードのツリー連番０００５の区分が「Ａ（ＡＮＤ）」なのでツリー連番０００５の右ブランチのツリー連番０００４が次の比較条件となり，ツリー連番０００２のレコードの真ブランチに「０００４」を記憶する。
【０１０９】
入力データ・ファイル内の該当する項目が比較条件連番００３　（ツリー連番０００４）で表わされている比較条件を満たす（真）ならば，親ノードのツリー連番０００５で結合されたノードを満たしていることになる（データファイルの該当項目が比較条件群Δを満たしている）。さらに，ルートのツリー連番０００９の区分が　「Ｏ（ＯＲ）」であるので比較条件連番０００３で表わされている比較条件を満たしている場合は，データファイルの該当項目は抽出条件を満たしていることが分かる。よってツリー連番０００４のレコードの真ブランチにはこのことを表わすコードとして「００００」を記憶する。
【０１１０】
入力データ・ファイル内の該当する項目が比較条件連番００４　（ツリー連番０００６）で表わされている比較条件を満たす（真）ならば，親ノードのツリー連番０００８の区分が「Ａ（ＡＮＤ）」なので，ツリー連番０００８の右ブランチのツリー連番０００７を次の比較条件としてツリー連番０００６のレコードの真ノードに「０００７」を記憶する。
【０１１１】
入力データ・ファイル内の該当する項目が比較条件連番００５　（ツリー連番０００７）で表わされている比較条件を満たす（真）ならば，親ノードであるツリー連番０００８を表わしている関係演算子で結合されたノードを満たしていることになる（データファイルの該当項目が比較条件群Φを満たしている）。さらにルートのツリー連番０００９の区分が「Ｏ（ＯＲ）」　であるため比較条件連番０００５で表わされている比較条件を満たしている場合は，データファイルの該当項目は抽出条件を満たしていることが分かる。よってツリー連番０００７のレコードの真ブランチにはこのことを表わすコードとして「００００」を記憶する。
【０１１２】
一般に，入力データ・ファイルの該当項目がある関係演算子を表わすノード（比較条件群）を満たす場合について考える。該ノードが表わしている関係演算子が「Ａ（ＡＮＤ）」の場合は，データファイルの該当項目が左右のブランチ（比較条件を表わすブランチもしくは比較条件群を表わすノード）を満たしている必要がある。該ノードが表わしている関係演算子が「Ｏ（ＯＲ）」の場合は，データファイルの該当項目が左右どちらかのブランチ（比較条件を表わすブランチもしくは比較条件群を表わすノード）を満たしていればよい。
【０１１３】
上記のことを考えて，入力データ・ファイルの該当項目がある比較条件を満たす場合に，該比較条件を表わしているブランチの親ノードが表わしている関係演算子の種類によって，右ブランチ（比較条件を表わすブランチもしくは比較条件群を表わすノード）をデータファイルの該当項目が満たしているのか，データファイルの該当項目が該ブランチの親ノード（比較条件群）を満たしているので更に親ノードの関係演算子で結合されているノードを満たしているか，を検討して次に行う比較条件を表わすブランチを決定する。そして，決定した比較条件を表わしているレコードのツリー連番を該比較条件のレコードの真ブランチに記憶する。また，データファイルの該当項目がルートとして結合された比較条件群を満たしたときに，抽出条件を満たしたことになり，該比較条件のレコードの真ブランチにそのことを識別するために「００００」を記憶する。
【０１１４】
次に，入力データ・ファイル内の該当項目を各比較条件で比較した結果が偽の場合に，次に行う比較条件を決定して条件ツリーテーブルの偽ブランチにデータを記憶させる。
【０１１５】
入力データ・ファイルの該当項目があるノードの右ブランチ（比較条件を表わすブランチもしくは比較条件群を表わすノード）を満たさない場合は，該ノードで結合された関係演算子（比較条件群）を満たさないものとする。
【０１１６】
入力データ・ファイル内の該当する項目が比較条件連番００１　（ツリー連番０００１）で表わされている比較条件を満たさない（偽）ならば，その親ノードのツリー連番０００３の区分が「Ａ（ＡＮＤ）」であるので，親ノードのツリー連番０００３で結合されたノードを満たさないことになる（データファイルの該当項目が比較条件Γ群を満たしていない）。また，ツリー連番０００３にあたるノードの親ノード（ツリー連番０００５）の区分も「Ａ（ＡＮＤ）」なので，このツリー連番０００５で結合されたノードを満たさないことになる（データファイルの該当項目が比較条件群Δを満たしていない）。ツリー連番０００５が示すノードの親ノード（ツリー連番０００９）の区分は「Ｏ（ＯＲ）」であるので，ツリー連番０００９の右ブランチ以下の検討を行う必要がある。右ブランチ以下でもっとも比較条件連番が小さいツリー連番０００６（比較条件連番００４）を次の比較条件としてツリー連番０００１のレコードの偽ブランチに「０００６」を記憶する。
【０１１７】
入力データ・ファイル内の該当する項目が比較条件連番００２　（ツリー連番０００２）で表わされている比較条件を満たさない（偽）ならば，その親ノードのツリー連番０００３の区分が「Ａ（ＡＮＤ）」であるので，親ノードのツリー連番０００３で結合されたノードを満たさないことになる（データファイルの該当項目が比較条件Γ群を満たしていない）。また，ツリー連番０００３にあたるノードの親ノード（ツリー連番０００５）の区分も「Ａ（ＡＮＤ）」なので，このツリー連番０００５で結合されたノードを満たさないことになる（データファイルの該当項目が比較条件群Δを満たしていない）。ツリー連番０００５が示すノードの親ノード（ツリー連番０００９）の区分は「Ｏ（ＯＲ）」であるので，ツリー連番０００９の右ブランチ以下の検討を行う必要がある。右ブランチ以下でもっとも比較条件連番が小さいツリー連番０００６（比較条件連番００４）を次の比較条件としてツリー連番０００２のレコードの偽ブランチに「０００６」を記憶する。
【０１１８】
入力データ・ファイル内の該当する項目が比較条件連番００３　（ツリー連番０００４）で表わされている比較条件を満たさない（偽）ならば，その親ノードのツリー連番０００５の区分が「Ａ（ＡＮＤ）」であるので，このツリー連番０００５で結合されたノードを満たさないことになる（データファイルの該当項目が比較条件群Δを満たしていない）。ツリー連番０００５が示すノードの親ノード（ツリー連番０００９）の区分は「Ｏ（ＯＲ）」であるので，ツリー連番０００９の右ブランチ以下の検討を行う必要がある。右ブランチ以下でもっとも比較条件連番が小さいツリー連番０００６（比較条件連番００４　）を次の比較条件としてツリー連番０００４のレコードの偽ブランチに「０００６」を記憶する。
【０１１９】
入力データ・ファイル内の該当する項目が比較条件連番００４　（ツリー連番０００６）で表わされている比較条件を満たさない（偽）ならば，親ノードのツリー連番０００８の区分が「Ａ（ＡＮＤ）」なので，ツリー連番０００８を表わしている関係演算子で結合されたノードを満たさないことになる（データファイルの該当項目が比較条件群Φ群を満たしていない）。さらに，ルートのツリー条件連番０００９の区分が「Ｏ（ＯＲ）」であるためデータファイルの該当項目が比較条件連番００４　で表わされている比較条件を満たしていない場合は，データファイルの該当項目は抽出条件を満たしていないことが分かる。よってツリー連番０００６のレコードの偽ブランチにはこのことを表わすコードとして「００００」を記憶する。
【０１２０】
入力データ・ファイル内の該当する項目が比較条件連番００５　（ツリー連番０００７）で表わされている比較条件を満たさない（偽）ならば，親ノードのツリー連番０００８の区分が「Ａ（ＡＮＤ）」なので，ツリー連番０００８を表わしている関係演算子で結合されたノードを満たさないことになる（データファイルの該当項目が比較条件群Φを満たしていない）。さらに，ルートのツリー条件連番０００９の区分が「Ｏ（ＯＲ）」であるため，データファイルの該当項目が比較条件連番００５で表わされている比較条件を満たしていない場合は，データファイルの該当項目は抽出条件を満たしていないことが分かる。よってツリー連番０００６のレコードの偽ブランチにはこのことを表わすコードとして「００００」を記憶する。
【０１２１】
以上のようにして，各レコードの真ブランチ偽ブランチに値を記憶して条件ツリーテーブル１８が作成される。
【０１２２】
一般に，入力データ・ファイルの該当項目がある関係演算子を表わすノード（関係演算子で結合された比較条件群）を満たさない場合について考える。該ノードが表わしている関係演算子が「Ａ（ＡＮＤ）」の場合は，データファイルの該当項目が左右のブランチ（比較条件を表わすブランチもしくは比較条件群を表わすノード）のどちらかを満足しなければ（偽），該ノードを満たしていないことになる。該ノードが表わしている関係演算子が「Ｏ（ＯＲ）」の場合は，データファイルの該当項目が左右のブランチ（比較条件を表わすブランチもしくは比較条件群を表わすノード）の両方を満足していない（偽）必要がある。
【０１２３】
上記のことを考えて，入力データ・ファイルの該当項目がある比較条件を満たさない場合に，該比較条件を表わしているブランチの親ノードが表わしている関係演算子の種類によって，データファイルの該当項目が該ブランチの親ノード（比較条件群）を満足してないので更に親ノードで結合されている条件ツリーを満足していないのか，右ブランチ（比較条件を表わすブランチもしくは比較条件群を表わすノード）をデータファイルの該当項目が満足しないか，を検討して次に行う比較条件を表わすブランチを決定する。そして，決定した比較条件を表わしているレコードのツリー連番を該比較条件のレコードの偽ブランチに記憶する。また，データファイルの該当項目がルートとして結合された比較条件群を満足しないときに，抽出条件を満足しないことになる。このとき，該比較条件のレコードの偽ブランチにそのことを識別するために「００００」を記憶する。
【０１２４】
図２０〜図２５は，条件ツリー・テーブル作成処理の流れを示すフローチャートである。条件ツリー・テーブル作成処理を端的に言えば，後置条件テーブル１７に基づいて，抽出条件をツリー構造に表わし，また各比較条件の真偽の結果に伴う次比較条件を解析して，条件ツリー・テーブルを作成する処理である。
【０１２５】
最初の処理として，後置条件テーブル１７を元にして，後置条件テーブル１７に格納されている各レコード間のツリー構造の親子関係を解析する。
【０１２６】
ツリー構造を作成するために後置条件テーブル１７の各レコードを格納しておく変換用スタックを，条件ツリー・テーブル１８と同じレイアウトでメモリ上に確保する。
【０１２７】
条件ツリー・テーブル１８のツリー連番を決定するためにツリー連番ｎを用いる。
【０１２８】
また，作業領域として，後置条件テーブル１７と同じレイアウトのワークエリアＷ，条件ツリー・テーブル１８と同じレイアウトのワークエリアＴ，ＹおよびＺをメモリ上に確保し，ワークエリアＴを右ノード用として，ワークエリアＺを左ノード用として，ワークエリアＹを変換用スタックへ格納するために利用する。
【０１２９】
ツリー連番ｎが初期化される（ステップ３３０１）。
【０１３０】
後置条件テーブル１７から１つのレコードが取出され，ワークエリアＷに格納される（ステップ３３０２）。
【０１３１】
後置条件テーブル１７からレコードが取出された場合（ステップ３３０３でＮＯ），ツリー連番ｎをインクリメントする（１増加させる）（ステップ３３０４）。
【０１３２】
ワークエリアＷには，後置条件テーブル１７中の１レコードが格納されている。ワークエリアＷは，区分に関するデータと，比較条件連番に関するデータとを含んでいる。
【０１３３】
ワークエリアＷの区分に関するデータが，比較条件（＃）または演算子（ＡまたはＯ）のいずれを表しているかが判断される（ステップ３３０５）。
【０１３４】
ワークエリアＷの区分に関するデータが比較条件を表わしている場合（ステップ３３０５で「＃」），ワークエリアＷには，区分に関するデータとともに，比較条件連番に関するデータが格納されている。ツリー連番ｎ，ワークエリアＷの区分に関するデータおよび比較条件連番に関するデータをワークエリアＹが格納される。ワークエリアＹ中のデータが変換用スタックに格納される（ステップ３３０６）。
【０１３５】
ワークエリアＷの区分に関するデータが演算子を表すものである場合（ステップ３３０５で「演算子」），ワークエリアＷに対する左右の子ブランチを取り出すために，変換用スタックからレコードを取得しワークエリアＴへ格納する（ステップ３３０７）。変換用スタックからレコードをワークエリアＺへ格納する（ステップ３３０８）。
【０１３６】
ワークエリアＴは，条件ツリー・テーブル１８と同じレイアウトを持つのであるから，ツリー連番，区分，比較条件連番，ＬＲ区分，親ノード，左ブランチ，右ブランチ，真ブランチおよび偽ブランチの項目を持つ。ワークエリアＴの「親ノード」にツリー連番ｎが代入される。「ＬＲ区分」に「Ｒ」が格納される。
【０１３７】
ワークエリアＺは，条件ツリー・テーブル１８と同じレイアウトを持つのであるから，ツリー連番，区分，比較条件連番，ＬＲ区分，親ノード，左ブランチ，右ブランチ，真ブランチおよび偽ブランチの項目を持つ。ワークエリアＺの「親ノード」にツリー連番ｎが代入される。「ＬＲ区分」にＬが格納される。
【０１３８】
ワークエリアＹは，条件ツリー・テーブル１８と同じレイアウトを持つのであるから，ツリー連番，区分，比較条件連番，ＬＲ区分，親ノード，左ブランチ，右ブランチ，真ブランチおよび偽ブランチの項目を持つ。ワークエリアＹの「ツリー連番」にツリー連番ｎが代入される。ワークエリアＹの「区分」には，ワークエリアＷ中の区分に関するデータが格納される。ワークエリアＹの「左ブランチに」にはワークエリアＺのツリー連番が代入される。ワークエリアＹの「右ブランチ」には，ワークエリアＴのツリー連番が代入される（ステップ３３０９）。
【０１３９】
ワークエリアＺの内容を，を条件ツリー・テーブル１８に追加する（ステップ３３１０）。
【０１４０】
次にワークエリアＸの内容を，条件ツリー・テーブル１８に追加する（図３２　ステップ３３１１）。
【０１４１】
ワークエリアＹの内容を変換用スタックに格納する（ステップ３３１２）。次のレコードを取得するために，ステップ３３０２へ戻る。
【０１４２】
後置条件テーブル１７に格納されているすべてのレコードについて上述の処理が終了した場合（ステップ３３０３でＹＥＳ　），変換用スタックからレコードを取り出しワークエリアＹに格納し，さらにワークエリアＹを条件ツリー・テーブル１８に格納する（ステップ３３１３）。
【０１４３】
次に，ツリー構造を元にして各比較条件の真偽判定が真の場合に次に処理をする比較条件を一意的に決定するように解析する。
【０１４４】
作業領域として，条件ツリー・テーブル１８と同じレイアウトのワークエリアＴ，ＹおよびＺを確保する。
【０１４５】
ワークエリアＴは，条件ツリー・テーブル１８から取出したレコードを格納し，解析後，真ブランチに値を代入した後に，再び条件ツリー・テーブルに戻すのに用いられる。
【０１４６】
ワークエリアＹはワークエリアＺの親ノードを格納したり，ワークエリアＴとは異なるノードを解析するのに用いられる。
【０１４７】
ワークエリアＺは，ワークエリアＴや上位階層の親ノードのレコードを格納するために用いられる。
【０１４８】
条件ツリー・テーブル１８からレコードを１件取得し，ワークエリアＴに格納する（ステップ３３１４）。
【０１４９】
ワークエリアＴの区分に関するデータが演算子「Ａ」または「Ｏ」であるか，または比較条件「＃」であるかが判断される（ステップ３３１６）。
【０１５０】
ワークエリアＴの区分に関するデータが演算子「Ａ」または「Ｏ」の場合（ステップ３３１６で「演算子」），ステップ３３１４に戻る。
【０１５１】
ワークエリアＴの区分に関するデータが比較条件「＃」の場合（ステップ３３１６で「比較条件」），ワークエリアＴのデータを，ワークエリアＺに格納する（ステップ３３１７）。
【０１５２】
ワークエリアＺの親ノードの値が「０」であるか，「０」でないかが判断される（ステップ３３１８）。
【０１５３】
ワークエリアＺの親ノードの値が０でない場合（ステップ３３１８で「≠０」），ワークエリアＺの親ノードが示すレコードを取出し，ワークエリアＹに格納する（ステップ３３１９）。
【０１５４】
ワークエリアＺのＬＲ区分が判断される（ステップ３３２０）。
【０１５５】
ワークエリアＺのＬＲ区分が「Ｌ」の場合（ステップ３３２０で「Ｌ」），ワークエリアＹの区分が「Ａ」であるか，「Ｏ」であるかが判断される。
【０１５６】
ワークエリアＹの区分が「Ａ」である場合（ステップ３３２１で「Ａ」），入力データ・ファイルがワークエリアＴで表わせている比較条件（もしくは比較条件群）を満たす（真）ときに次に比較するべき比較条件が，ワークエリアＺの右ブランチ以下にあることになる。ワークエリアＹの右ブランチが示すレコードを取り出し，ワークエリアＹに格納する（ステップ３３２２）。
【０１５７】
ワークエリアＹの区分が演算子「Ａ」か「Ｏ」であるか，比較条件「＃」であるかが判断される（ステップ３３２３）。ワークエリアＹの区分が演算子「Ａ」か「Ｏ」の場合（ステップ３３２３で演算子），ワークエリアＹの左ブランチが示すレコードを取出し，ワークエリアＹに格納する（ステップ３３２４）。ステップ３３２３を繰り返す。
【０１５８】
ワークエリアＹの区分が比較条件「＃」を表わしている場合（ステップ３３２３で「比較条件」），入力データ・ファイルのレコードがワークエリアＴで表わされている比較条件を満足する（真）ときに，次に処理する比較条件がワークエリアＹに格納されている比較条件であることが決定される。このとき，ワークエリアＹの連番をワークエリアＴの真ブランチに代入する（ステップ３３２５）。ステップ３３１４へ戻る。
【０１５９】
ステップ３３２１の判断において，ワークエリアＹの区分が「Ｏ」の場合（ステップ３３２１で「Ｏ」），ワークエリアＹのデータをワークエリアＺに格納する（ステップ３３２６）。ステップ３３１８に戻る。
【０１６０】
ステップ３３２０の判断において，ワークエリアＺのＬＲ区分が「Ｒ」である場合（ステップ３３２０で「Ｒ」），ワークエリアＹのデータをワークエリアＺに格納する（ステップ３３２６）。ステップ３３１８に戻る。
【０１６１】
ステップ３３１８の判断において，ワークエリアＺの親ノードが「０」の場合（ステップ３３１８で「０」），入力データ・ファイルのレコードが抽出条件に合致したことになる。ワークエリアＴの真ブランチに０を代入する（ステップ３３２７）。ステップ３３１４へ戻る。
【０１６２】
ツリー構造を元にして入力データ・ファイルのレコードを各比較条件で比較した結果が，「偽」の場合に次に処理をする比較条件を一意的に決定するように解析する。
【０１６３】
作業領域として条件ツリー・テーブル１８と同じレイアウトのワークエリアＴ，ＹおよびＺを確保する。
【０１６４】
条件ツリー・テーブル１８からレコードを１件取得し，ワークエリアＴに格納する（ステップ３３２８）。
【０１６５】
ワークエリアＴの区分に関するデータが演算子「Ａ」か「Ｏ」であるか，比較条件「＃」であるかが判断される（ステップ３３３０）。
【０１６６】
ワークエリアＴの区分に関するデータが演算子「Ａ」か「Ｏ」の場合は（ステップ３３３０で「演算子」），ステップ３３２８に戻る。
【０１６７】
ワークエリアＴの区分に関するデータが，比較条件「＃」の場合（ステップ３３３０で「比較条件」），ワークエリアＴのデータを，ワークエリアＺに格納する（ステップ３３３１）。
【０１６８】
ワークエリアＺの親ノードの値が０であるかどうかが判断される（ステップ３３３２）。
【０１６９】
ワークエリアＺの親ノードの値が０でない場合（ステップ３３３２で「≠０」），ワークエリアＺの親ノードが示すレコードを取出し，ワークエリアＹに格納する（ステップ３３３３）。
【０１７０】
ワークエリアＺのＬＲ区分が判断される（ステップ３３３４）。
【０１７１】
ワークエリアＺのＬＲ区分が「Ｌ」である場合（ステップ３３３４で「Ｌ」），ワークエリアＹの区分が「Ｏ」であるか，「Ａ」であるかが判断される（ステップ３３３５）。
【０１７２】
ワークエリアＹの区分が「Ｏ」である場合（ステップ３３３５で「Ｏ」），入力データ・ファイルのレコードがワークエリアＴで表わされている比較条件を満たさない（偽）ときに次に比較するべき比較条件がワークエリアＺの右ブランチ以下にある。ワークエリアＹの右ブランチが示すレコードを取出しワークエリアＹに格納する（ステップ３３３６）。
【０１７３】
ワークエリアＹの区分が演算子「Ａ」か「Ｏ」であるか，比較条件「＃」であるかが判断される（ステップ３３３７）。ワークエリアＹの区分が演算子「Ａ」か「Ｏ」の場合（ステップ３３３７で「演算子」），ワークエリアＹの左ブランチが示すレコードを取出しワークエリアＹに格納する（ステップ３３３８）。ステップ３３３７を繰り返す。
【０１７４】
ワークエリアＹの区分が比較条件を表わしている場合（ステップ３３３７で「比較条件」），入力データ・ファイルのレコードがワークエリアＴで表わされている比較条件を満たさない（偽）のときに，次に処理する比較条件がワークエリアＹに格納されている比較条件であることが決定される。ワークエリアＹの連番をワークエリアＴの偽ブランチに代入する（ステップ３３３９）。ステップ３３２８へ戻る。
【０１７５】
ステップ３３３５の判断において，ワークエリアＹの区分が「Ａ」の場合（ステップ３３３５で「Ａ」），ワークエリアＹのデータをワークエリアＺに格納する（ステップ３３４０）。ステップ３３３２に戻る。
【０１７６】
ステップ３３３４の判断において，ワークエリアＺのＬＲ区分が「Ｒ」なら（ステップ３３３４で「Ｒ」），ワークエリアＹのデータをワークエリアＺに格納する（ステップ３３４０）。ステップ３３３２に戻る。
【０１７７】
ステップ３３３２の判断において，ワークエリアＺの親ノードが「０」の場合（ステップ３３３２で「０」）は，入力データ・ファイルのレコードが抽出条件に合致しない（偽）ことになる。ワークエリアＴの偽ブランチに「０」を代入する（ステップ３３４１）。ステップ３３２８へ進む。
【０１７８】
以上の処理を経ることによって，後置条件テーブル１７に基づいて，条件ツリー・テーブル１８が作成される。
【０１７９】
図６に戻って，条件ツリー・テーブル作成処理（ステップ３３３０）によって条件ツリー・テーブル１８が作成されると，次に比較処理制御テーブル１３（図３（Ａ），（Ｂ）　）の作成に進む（ステップ３４００）。
【０１８０】
比較処理制御テーブル１３の作成は簡潔に言えば次のとおりである。
【０１８１】
条件ツリー・テーブル１８から順にレコードを取出していき，比較条件を表わすレコード（区分が「＃」）を取り出したときに，連番値を比較処理連番に記憶し，比較条件連番を該当する項目（比較条件連番）に記憶する。
【０１８２】
条件ツリー・テーブル１８の「真ブランチ」に記憶されている値と同じツリー連番値が記憶されているレコードの比較条件連番を，比較処理制御テーブルの真ポインタに記憶する。このとき真ブランチに記憶されている値が「００００」ならば，真ポインタには「０００」を記憶する。
【０１８３】
次に，条件ツリー・テーブル１８の「偽ブランチ」に格納されている値と同じツリー連番値が記憶されているレコードの比較条件連番を，比較処理制御テーブルの偽ポインタに記憶する。このとき偽ブランチに記憶されている値が「００００」ならば，偽ポインタには「０００」　を記憶する。以上の様にして条件ツリー・テーブル１８から比較処理制御テーブル１３（図３（Ａ），（Ｂ））が作成される。
【０１８４】
図２６は，比較処理制御テーブル作成処理の詳細な流れを示すフローチャートである。
【０１８５】
比較処理制御テーブル１３は，比較処理連番を含む。比較処理連番とは，条件ツリー（条件ツリー・テーブル１８）にしたがって比較が行われるときの順番を表す番号である。比較処理連番をｎで表す。
【０１８６】
作業領域として，メモリ上に，条件ツリー・テーブル１８と同じレイアウトのワークエリアＹ，ＴおよびＦを確保する。すなわち，ワークエリアＹ，ＴおよびＦは，ツリー連番，区分，比較条件連番，ＬＲ区分，親ノード，左ブランチ，右ブランチ，真ブランチおよび偽ブランチの各データが格納されるエリアを持つ。
【０１８７】
ワークエリアＹは，条件ツリー・テーブル１８に格納されているレコードの一つを一時的に格納するために用いられる。
【０１８８】
ワークエリアＹに格納されるレコードは，条件ツリー・テーブル１８中のレコード（以下，条件ツリー・レコードという）であるから，「真ブランチ」のデータ項目に番号が格納されているレコードも含まれている。ワークエリアＴは，ワークエリアＹに格納されたレコードの「真ブランチ」のデータ項目に番号が格納されている場合に，その番号のツリー連番を持つ条件ツリー・レコードを格納するために用いられる。
【０１８９】
条件ツリー・レコードには，「偽ブランチ」のデータ項目に番号が格納されているレコードも含まれている。ワークエリアＦは，ワークエリアＹに格納されたレコードの「偽ブランチ」のデータ項目に番号が格納されている場合に，その番号のツリー連番を持つ条件ツリー・レコードを格納するために用いられる。
【０１９０】
メモリ上には，ワークエリアＹ，ＴおよびＦの他に，ワークエリアＧも設けられる。ワークエリアＧは，比較処理制御テーブル１３と同じレイアウト，すなわち，比較処理連番，比較条件連番，真ポインタおよび偽ポインタの４つのエリアを備えている。
【０１９１】
比較処理連番ｎが初期化される（ステップ３４０１）。
【０１９２】
条件ツリー・テーブル１８がメモリに読み込まれる。その後，条件ツリー・テーブル１８の先頭に格納されているレコード（条件ツリー・レコード）が，ワークエリアＹに格納される（ステップ３４０２）。
【０１９３】
条件ツリー・レコードのデータ項目「区分」には，比較条件を表す「＃」，演算子ＡＮＤを表す「Ａ」または演算子ＯＲを表す「Ｏ」のいずれかが格納されている。ワークエリアＹに格納されている条件ツリー・レコードのデータ項目「区分」のデータが，比較条件「＃」であるか，または演算子「Ａ」または「Ｏ」であるかが判断される（ステップ３４０３）。
【０１９４】
ワークエリアＹに格納されている条件ツリー・レコードのデータ項目「区分」のデータが演算子の場合（ステップ３４０３で演算子），ワークエリアＹに格納されている条件ツリー・レコードは作成される比較条件処理テーブルに反映されない。条件ツリー・テーブル１８から，次に格納されている条件ツリー・レコードが読み出されて，ワークエリアＹに格納される（ステップ３４０２）。
【０１９５】
ワークエリアＹに格納されている条件ツリー・レコードのデータ項目「区分」のデータが比較条件「＃」の場合（ステップ３４０４で「＃」），次の処理に進む。
【０１９６】
比較処理連番ｎがインクリメントされる（ステップ３４０５）。
【０１９７】
ワークエリアＹに格納されている条件ツリー・レコードのデータ項目「区分」のデータが比較条件「＃」の場合には，その条件ツリー・レコードのデータ項目「真ブランチ」および「偽ブランチ」には，番号が格納されている。
【０１９８】
ワークエリアＹに格納されている条件ツリー・レコードのデータ項目「真ブランチ」の番号と同じツリー番号を持つ条件ツリー・レコードが，ワークエリアＴに格納される（ステップ３４０６）。
【０１９９】
ワークエリアＹに格納されている条件ツリー・レコードのデータ項目「偽ブランチ」の番号と同じツリー番号を持つ条件ツリー・レコードが，ワークエリアＦに格納される（ステップ３４０７）。
【０２００】
ワークエリアＧは，上述のように，比較処理制御テーブル１３と同じレイアウトを持つエリアである。ここで，ワークエリアＧの「比較処理連番」のエリアに，ｎの代入する。
【０２０１】
さらに，ワークエリアＹに格納されている条件ツリー・レコードのデータ項目「比較条件連番」の番号を，ワークエリアＧの「比較条件連番」に代入する。
【０２０２】
さらに，ワークエリアＴに格納されている条件ツリー・レコードのデータ項目「比較条件連番」の番号を，ワークエリアＧの「真ポインタ」に代入する。
【０２０３】
さらに，ワークエリアＦに格納されている条件ツリー・レコードのデータ項目「比較条件連番」の番号を，ワークエリアＧの「偽ポインタ」に代入する（ステップ３４０８）。
【０２０４】
以上によって，ワークエリアＧのすべてのエリアにデータが格納される。ワークエリアＧのデータが，比較処理制御テーブル１３に１レコードとして追加される（ステップ３４０９）。
【０２０５】
上述の処理を，条件ツリー・テーブル１８に格納されているすべての条件ツリー・レコードについて行うことによって，条件ツリー・レコード１８から比較処理制御テーブル１３が作成される。すべての条件ツリー・レコードについての上述の処理が終了すると，比較処理制御テーブル作成処理が終了し（ステップ３４０３でＹＥＳ　），比較処理制御テーブルおよび比較条件テーブル作成処理（図５：ステップ３０００）の処理が終わる。
【０２０６】
図５に戻って，比較処理制御テーブル１３，比較条件テーブル１２，入力データ・ファイル１１およびレイアウト定義テーブル１４が用いられて，抽出条件判定処理（ステップ４０００）が行われる。
【０２０７】
抽出条件判定処理を簡単に説明すると，次の通りである。
【０２０８】
入力データ・ファイル１１に格納されている入力データ・レコードを１件取り出す。比較処理制御テーブル１３に格納されている比較処理制御レコードを１件取り出す。比較処理制御テーブル１３から取出した比較処理制御レコード中の「比較条件連番」に格納されている番号を持つ比較条件レコードを，比較条件テーブル１２から取り出す。
【０２０９】
取り出された比較条件レコードの「項目番号」に格納されている番号によって特定される入力データ・レコード中の項目データについての「開始位置」と，「データの長さ（データ長）」と，「データのタイプ」をレイアウト定義テーブル１４から取り出す。
【０２１０】
取出した「開始位置」と「データの長さ（データ長）」と「データのタイプ」とに基づいて，入力データ・ファイル１１の入力データ・レコードから，データを取り出す。入力データ・レコードから取出されたデータと比較条件レコード中のリテラル値とを，比較条件レコード中の比較演算子に基づいて比較する。
【０２１１】
比較結果が真ならば，比較処理制御レコード中の「真ポインタ」に記憶されている番号と同じ番号の比較条件連番を持つ比較処理制御レコードを，比較処理制御テーブル１３から取り出す。比較結果が偽ならば，比較処理制御レコード中の「偽ポインタ」に記憶されている番号と同じ番号の比較条件連番を持つ比較処理制御レコードを，比較処理制御テーブル１３から取り出す。
【０２１２】
比較結果が真であり，比較処理制御レコード中の「真ポインタ」の番号が「０００」　の場合は，取り出された入力データ・レコードが抽出条件に合致したことになるので，その入力データ・レコードを結果を書き出すためのファイルに出力する。入力データ・ファイルから次の入力データ・レコードを１件取り出して，同様の処理を行う。
【０２１３】
比較結果が偽であり，比較処理制御レコード中の「偽ポインタ」の番号が「０００」　の場合は，取り出された入力データ・レコードが抽出条件に合致しなかったことを表わしている。入力データ・ファイル１１から次のレコードを１件取出して，同様の処理を行う。
【０２１４】
このような処理を，図１に示す入力データ・ファイル１１，図２（Ｂ）　に示す比較条件テーブル１２，図３（Ｂ）　に示す比較処理制御テーブル１３および図４（Ｂ）　に示すレイアウト定義テーブル１４を用いて行った結果を，図２７に示す。
【０２１５】
図２８は，抽出条件判定処理（ステップ４０００）の詳細な流れを示すフローチャートである。
【０２１６】
作業領域として，メモリ上に，比較処理制御テーブル１３と同一レイアウトを持つワークエリアＧと，比較条件テーブル１２と同一レイアウトを持つワークエリアＣと，レイアウト定義テーブル１４と同一レイアウトを持つワークエリアＱと，入力データ・ファイルと同じレイアウトを持つワークエリアＵとがそれぞれ作成される。
【０２１７】
入力データ・ファイル１１に格納されている先頭の入力データ・レコードが，ワークエリアＵに格納される（ステップ４００１）。
【０２１８】
比較処理制御テーブル３の先頭の比較処理制御レコードが，ワークエリアＧに格納される（ステップ４００３）。
【０２１９】
ワークエリアＧに格納された比較処理制御レコード中の比較条件連番が示す番号を持つ比較条件レコードが，比較条件テーブル１２から読み出されてワークエリアＣに格納される（ステップ４００４）。
【０２２０】
ワークエリアＣに格納された比較条件レコード中の「項目番号」によって特定されるレイアウト定義レコードが，レイアウト定義テーブル１４から読み出され，ワークエリアＱに格納される（ステップ４００５）。
【０２２１】
ワークエリアＱに格納されたレイアウト定義レコード中の「開始位置」，「データ長」および「タイプ」のデータに基づいて，ワークエリアＵに格納されている入力データ・レコードから，データが読み出される。たとえば，ワークエリアＵに格納されている入力データ・レコードから，「年齢」のデータが読み出される。
【０２２２】
ワークエリアＣに格納された比較条件レコード中のリテラル値と，ワークエリアＵに格納されている入力データ・レコードから読み出されたデータ（たとえば，「年齢」のデータ）が，ワークエリアＣに格納された比較条件レコード中の「比較演算子」の演算子に従って比較される（ステップ４００６，ステップ４００７）。
【０２２３】
比較の結果が「真」である場合（ステップ４００７で「真」），ワークエリアＧに格納された比較処理制御レコード中の「真ポインタ」のデータが０であるかどうかが判断される（ステップ４００８）。
【０２２４】
比較の結果が「真」で（ステップ４００７で「真」），かつワークエリアＧに格納された比較処理制御レコード中の「真ポインタ」が０でない場合（ステップ４００８で「≠０」），ワークエリアＧに格納された比較処理制御レコード中の「真ポインタ」の番号と同じ番号を「比較条件連番」として持つ比較処理制御レコードを，比較処理制御テーブル１３から読出す。読み出された比較処理制御レコードがワークエリアＧに格納される（ステップ４００９）。ワークエリアＧの内容が書き換えられる。
【０２２５】
ワークエリアＧに格納された新たな比較処理制御レコードが用いられて，ステップ４００４からの処理が再び行われる。
【０２２６】
比較の結果が「真」で（ステップ４００７で「真」），かつワークエリアＧに格納された比較処理制御レコード中の真ポインタが「０」（図３において「０００」）であれば（ステップ４００８で「０」），ワークエリアＵに格納されている入力データ・レコードは，抽出条件に合致していることになる。ワークエリアＵに格納されている入力データ・レコードを出力用ファイルへ書出す（ステップ４０１０）。入力データ・ファイル１１から次の入力データ・レコードが読み出されてワークエリアＵに格納される（ステップ４００１）。ワークエリアＵの内容が書き換えられる。
【０２２７】
比較の結果が偽である場合にも（ステップ４００７で「偽」），ワークエリアＧに格納されている比較処理制御レコード中の「真ポインタ」のデータが０であるかどうかが判断される（ステップ４０１１）。
【０２２８】
比較の結果が偽で（ステップ４００７で「偽」），かつワークエリアＧに格納されている比較処理制御レコード中の「偽ポインタ」のデータが０でない場合（ステップ４０１１で「≠０」），ワークエリアＧに格納されている比較処理制御レコード中の「偽ポインタ」の番号と同じ番号を「比較条件連番」として持つ比較処理制御レコードを，比較処理制御テーブル１３から読出す。読み出された比較処理制御レコードがワークエリアＧに格納される（ステップ４０１２）。ワークエリアＧの内容が書き換えられる。
【０２２９】
ワークエリアＧに格納された新たな比較処理制御レコードが用いられて，ステップ４００４からの処理が再び行われる。
【０２３０】
比較の結果が偽で（ステップ４００７で「偽」），かつワークエリアＧに格納されている比較処理制御レコード中の「偽ポインタ」のデータが０（０００）であれば（ステップ４０１０で「０」），ワークエリアＵに格納されている入力データ・レコードは，抽出条件に合致しないことになる。入力データ・ファイル１１から，次の入力データ・レコードが読み出されて，ワークエリアＵに格納される（ステップ４００１）。ワークエリアＵに格納された新たな入力データ・レコードが用いられて，ステップ４００３からの処理が再び行われる。
【０２３１】
すべての入力データ・レコードについての処理が終了すると（ステップ４００２でＹＥＳ　），抽出条件判定処理が終了し，データ抽出処理（図５）のすべての処理が終了する。
【０２３２】
上述した処理のすべてまたはその一部は，コンピュータを用いて実現することができる。
【図面の簡単な説明】
【図１】入力データ・ファイルの一例を示す。
【図２】（Ａ）　は比較条件テーブルの一般形を，（Ｂ）　は比較条件テーブルの一例をそれぞれ示す。
【図３】（Ａ）　は比較処理制御テーブルの一般形を，（Ｂ）　は比較処理制御テーブルの一例をそれぞれ示す。
【図４】（Ａ）　はレイアウト定義テーブルの一般形を，（Ｂ）　はレイアウト定義テーブルの一例をそれぞれ示す。
【図５】データ抽出処理の流れを示すフローチャートである。
【図６】比較処理制御テーブルおよび比較条件テーブルの作成処理の流れを示すフローチャートである。
【図７】抽出条件の入力画面の画面例を示す。
【図８】図７に示す抽出条件の一例を，分かりやすく示すものである。
【図９】抽出条件ファイルの一例を示す。
【図１０】抽出条件テーブルの一例を示す。
【図１１】抽出条件テーブルおよび比較条件テーブルの作成処理の流れを示すフローチャートである。
【図１２】抽出条件テーブルおよび比較条件テーブルの作成処理の流れを示すフローチャートである。
【図１３】後置条件テーブルの一例を示す。
【図１４】後置条件テーブルの作成処理の流れを示すフローチャートである。
【図１５】後置条件テーブルの作成処理の流れを示すフローチャートである。
【図１６】条件ツリーの一例を示す。
【図１７】条件ツリー・テーブルの一例を示す。
【図１８】条件ツリーの一例を示す。
【図１９】条件ツリー・テーブルの一例を示す。
【図２０】条件ツリー・テーブル作成処理の流れを示すフローチャートである。
【図２１】条件ツリー・テーブル作成処理の流れを示すフローチャートである。
【図２２】条件ツリー・テーブル作成処理の流れを示すフローチャートである。
【図２３】条件ツリー・テーブル作成処理の流れを示すフローチャートである。
【図２４】条件ツリー・テーブル作成処理の流れを示すフローチャートである。
【図２５】条件ツリー・テーブル作成処理の流れを示すフローチャートである。
【図２６】比較条件処理テーブル作成処理の流れを示すフローチャートである。
【図２７】データ抽出処理の処理結果の一例を示す。
【図２８】抽出条件判定処理の流れを示すフローチャートである。
【符号の説明】
１１　入力データ・ファイル
１２　比較条件テーブル
１３　比較処理制御テーブル
１４　レイアウト定義テーブル
１７　後置条件テーブル
【図１】
2004046382.tif 000003
【図２】
2004046382.tif 000004
【図３】
2004046382.tif 000005
【図４】
2004046382.tif 000006
【図５】
2004046382.tif 000007
【図６】
2004046382.tif 000008
【図７】
2004046382.tif 000009
【図８】
2004046382.tif 000010
【図９】
2004046382.tif 000011
【図１０】
2004046382.tif 000012
【図１１】
2004046382.tif 000013
【図１２】
2004046382.tif 000014
【図１３】
2004046382.tif 000015
【図１４】
2004046382.tif 000016
【図１５】
2004046382.tif 000017
【図１６】
2004046382.tif 000018
【図１７】
2004046382.tif 000019
【図１８】
2004046382.tif 000020
【図１９】
2004046382.tif 000021
【図２０】
2004046382.tif 000022
【図２１】
2004046382.tif 000023
【図２２】
2004046382.tif 000024
【図２３】
2004046382.tif 000025
【図２４】
2004046382.tif 000026
【図２５】
2004046382.tif 000027
【図２６】
2004046382.tif 000028
【図２７】
2004046382.tif 000029
【図２８】
2004046382.tif 000030