(57)【特許請求の範囲】
【請求項１】
ユーザが入力したパラメータ値に対応するソフトウエア・ソース・コードの既定ルール・セットに基づいて、コンピュータ・プロセッサを備えるコンピュータがソフトウエア・ソース・コードを生成するときに実行する命令を含んでおり、
該既定ルール・セットは、該ソフトウエア・ソース・コードのソース・コード・コンポーネントを含んでおり、
該ソース・コード・コンポーネントは、コンポーネント値によって表されている、
コンピュータプログラムであって、
前記命令は、前記コンピュータ・プロセッサに、以下の条件ａ乃至ｃを全て満たす処理を実行させることを特徴とするコンピュータプログラム。
ａ．データ・トークンのトークン値を生成可能にする方法と前記ソフトウエア・ソース・コード内の前記ソース・コード・コンポーネントを表すコンポーネント値に該トークン値を関連付ける方法とを特定するデータ・トークン・ルール・セットと、該データ・トークン・ルール・セットと共に生成されて格納された該データ・トークンとを使用する。
ｂ．該ソフトウエア・ソース・コードの不確定型ソース・コード・コンポーネントを表す前記コンポーネント値を有する、格納されたソース・オブジェクトと、該コンポーネント値に関連付けられた前記データ・トークンのトークン値とを使用する。ここで、該不確定型ソース・コード・コンポーネントは、前記ソフトウエア・ソース・コードの前記既定ルール・セット内の前記ソース・コード・コンポーネントであり、そのコンポーネント値は、コンピュータ実行ロジックを用いて決定するのでは無く、該ソフトウエア・ソース・コードを生成する際にユーザが決定する。
ｃ．前記コンピュータ実行ロジックを付加する位置を決定すると共に、取り出すパラメータを使用して前記データ・トークンの前記トークン値を処理する方法をソース・オブジェクト、前記データ・トークンのトークン値及び前記不確定型ソース・コード・コンポーネントのコンポーネント値から決定して、トークン結果を獲得し、それにより、前記パラメータ値、前記不確定型ソース・コード・コンポーネントのコンポーネント値、適用された前記コンピュータ実行ロジックが決定した確定型ソース・コード・コンポーネントのコンポーネント値及び前記トークン結果を用いて前記ソフトウエア・ソース・コードを生成する。
【請求項２】
前記データ・トークンの前記トークン値は、他の処理に使用されること無しに、ソフトウエア・コンポーネントの構築に使用されることを特徴とする請求項１に記載のコンピュータプログラム。
【請求項３】
前記データ・トークンの前記トークン値の処理は、コンピュータ・プロセッサで実行可能な命令のセットの実行を含むことを特徴とする請求項１又は２に記載のコンピュータプログラム。
【請求項４】
ソフトウエア・ソース・コードを、該ソフトウエア・ソース・コードの既定ルール・セットに基づいて、コンピュータ・プロセッサで生成する方法であって、
該既定ルール・セットが、コンポーネント値で表される、前記ソフトウエア・ソース・コードのソース・コード・コンポーネントを含み、且つ、
以下の処理を全て含むことを特徴とする方法。
ａ．以下を全て含む、ソース・オブジェクト・レポジトリの生成。
ｉ．該ソース・コード・コンポーネントを不確定型ソース・コード・コンポーネントと確定型ソース・コード・コンポーネントとに分類する。ここで、該不確定型ソース・コード・コンポーネントは、前記ソフトウエア・ソース・コードの前記既定ルール・セット内のソース・コード・コンポーネントであり、そのコンポーネント値は、コンピュータ実行ロジックを用いて決定するのでは無く、前記ソフトウエア・ソース・コードを生成する際にユーザが決定する。
ii．トークン値で表されたデータ・トークンを、データ・トークン・ルール・セットと共に定義する。
iii．パラメータ値で表されたパラメータを定義する。
iv．前記ソフトウエア・ソース・コードの前記既定ルール・セットに基づき、前記不確定型ソース・コード・コンポーネント及び前記データ・トークンを使用して、データ・モデルを生成する。ここで、該データ・モデルは、ソース・オブジェクトを格納する性能を有し、また、該ソース・オブジェクトは、前記コンポーネント値及び前記データ・トークンの前記トークン値を含む。
ｖ．コンピュータ・プロセッサが、前記データ・モデルに基づくソース・オブジェクト・レポジトリの生成を行う。ここで、該生成では、前記データ・トークン・ルール・セットに従って、前記データ・トークンの前記トークン値と前記コンポーネント値が関連付けられる。
ｂ．前記ソース・オブジェクト・レポジトリ、前記ソフトウエア・ソース・コードの前記既定ルール・セット、前記パラメータ及び前記データ・トークンに基づいて、ソース・コード・ジェネレータを生成する。
ｃ．コンピュータ・プロセッサが前記ソース・コード・ジェネレータを実行して、ユーザのパラメータ値入力に応じた、所望のソフトウエア・ソース・コードを生成する。ここで、該ソース・コード・ジェネレータは、前記ソース・オブジェクトと前記所望のソフトウエア・ソース・コードを生成するためのパラメータ値とを使用する。
【請求項５】
前記データ・トークンを使用すること無しに、前記データ・モデルを生成することを特徴とする請求項４に記載の方法。
【請求項６】
前記パラメータが、前記データ・モデルの生成に使用されることを特徴とする請求項４又は５に記載の方法。
【請求項７】
トークン結果が、前記データ・トークンの前記トークン値の処理によって取得されて、前記所望のソフトウエア・ソース・コードの生成に使用されることを特徴とする請求項４乃至６の何れかに記載の方法。
【請求項８】
前記データ・トークンの前記トークン値は、前記パラメータ値を用いて得られることを特徴とする請求項４乃至７の何れかに記載の方法。
【請求項９】
前記コンポーネント値は、前記パラメータ値を用いて得られることを特徴とする請求項４乃至８の何れかに記載の方法。
【請求項１０】
前記ソース・オブジェクトは、前記データ・トークンの前記トークン値を含まないことを特徴とする請求項４乃至９の何れかに記載の方法。
【請求項１１】
前記ソース・オブジェクトは、前記コンポーネント値を含まないことを特徴とする請求項４乃至１０の何れかに記載の方法。
【請求項１２】
前記ソース・コード・ジェネレータは、コンピュータ・プログラムと一体化されていることを特徴とする請求項４乃至１１の何れかに記載の方法。
【請求項１３】
ユーザが入力したパラメータ値に対応するソフトウエア・ソース・コードの既定ルール・セットに基づいて、コンピュータ装置がソフトウエア・ソース・コードを生成するときに実行される命令を含んでおり、
該既定ルール・セットは、該ソフトウエア・ソース・コードのソース・コード・コンポーネントを含んでおり、
該ソース・コード・コンポーネントは、コンポーネント値によって表されている、
コンピュータプログラムであって、
前記命令は、前記コンピュータ装置に、以下の処理ａ乃至ｅを全て実行させることを特徴とするコンピュータプログラム。
ａ．ソース・オブジェクトを識別する。
ｂ．下記ｉ乃至ｉｖに従って生成されたソース・オブジェクト・レポジトリから、前記ソース・オブジェクトを取得する。
ｉ．前記ソース・コード・コンポーネントを不確定型ソース・コード・コンポーネントと確定型ソース・コード・コンポーネントとに分類する。ここで、該不確定型ソース・コード・コンポーネントは、前記ソフトウエア・ソース・コードの前記既定ルール・セット内の前記ソース・コード・コンポーネントであり、そのコンポーネント値は、コンピュータ実行ロジックを使用して決定するのでは無く、前記ソフトウエア・ソース・コードを生成する際にユーザが決定する。
ｉｉ．トークン値で表されたデータ・トークンを、データ・トークン・ルール・セットと共に、定義する。
ｉｉｉ．パラメータ値で表されたパラメータを、定義する。
ｉｖ．前記ソフトウエア・ソース・コードの前記既定ルール・セットに基づき、前記不確定型ソース・コード・コンポーネント及び前記データ・トークンを使用して、データ・モデルを生成する。ここで、該データ・モデルは、前記ソース・オブジェクトを格納する性能を有し、また、該ソース・オブジェクトは、前記コンポーネント値及び前記データ・トークンの前記トークン値を含む。
ｃ．前記ソース・オブジェクトから、前記不確定型ソース・コード・コンポーネントの前記コンポーネント値を取得する。
ｄ．トークン結果を取得するために、前記データ・トークンの前記トークン値を処理する。
ｅ．前記ソフトウエア・ソース・コードの前記既定ルール・セットに基づき、且つ、前記パラメータ値、前記不確定型ソース・コード・コンポーネントの前記コンポーネント値、前記確定型ソース・コード・コンポーネントのコンポーネント値及び前記トークン結果を使用して、該ソフトウエア・ソース・コードを構築する。
【請求項１４】
前記データ・トークンの前記トークン値が処理されないことを特徴とする請求項１３に記載のコンピュータプログラム。
【請求項１５】
前記データ・トークンの前記トークン値が、前記ソフトウエア・ソース・コードの構築に使用されることを特徴とする請求項１３又は１４に記載のコンピュータプログラム。
【請求項１６】
前記トークン結果が、前記ソフトウエア・ソース・コードの構築に使用されないことを特徴とする請求項１３乃至１５の何れかに記載のコンピュータプログラム。
【請求項１７】
前記パラメータ値が、前記ソフトウエア・ソース・コードの構築に使用されないことを特徴とする請求項１３乃至１６の何れかに記載のコンピュータプログラム。
【請求項１８】
前記不確定型ソース・コード・コンポーネントの前記コンポーネント値が、前記ソフトウエア・ソース・コードの構築に使用されないことを特徴とする請求項１３乃至１７の何れかに記載のコンピュータプログラム。
【請求項１９】
前記確定型ソース・コード・コンポーネントの前記コンポーネント値が、前記ソフトウエア・ソース・コードの構築に使用されないことを特徴とする請求項１３乃至１８に記載のコンピュータプログラム。
【請求項２０】
前記データ・トークンの前記トークン値が、前記パラメータ値を用いて処理されることを特徴とする請求項１３乃至１９に記載のコンピュータプログラム。
【請求項２１】
１個以上のプログラムが協働してコンピュータを制御することにより、請求項１乃至３の何れかに記載の処理を実行することを特徴とするコンピュータプログラム。
【請求項２２】
クライアント・コンピュータと、該クライアント・コンピュータに通信接続されたサーバ・コンピュータとを備え、且つ、
コンピュータ・プロセッサと、請求項１乃至３の何れかのコンピュータプログラムを格納するコンピュータ読み取り可能な記憶装置とを備え、
該記憶装置は、前記コンピュータ・プロセッサと結合していると共に、該コンピュータ・プロセッサが実行可能な命令を含み、この命令を実行するときに、該コンピュータ・プロセッサに、前記コンピュータプログラムに記述された処理を実行させる、
ことを特徴とするコンピュータシステム。
【請求項２３】
請求項１乃至３の何れかに記載のコンピュータプログラムを格納するコンピュータ読み取り可能な記憶媒体を備え、
該記憶媒体は、コンピュータ装置が実行する命令を含み、この命令を実行するときに、該コンピュータ装置に前記コンピュータプログラムに記述された処理を実行させる、
ことを特徴とする装置。
【請求項２４】
１個以上のプログラムが協働してコンピュータを制御することにより、請求項１３乃至２０の何れかに記載の処理を実行することを特徴とするコンピュータプログラム。
【請求項２５】
クライアント・コンピュータと、該クライアント・コンピュータに通信するサーバ・コンピュータとを備え、且つ、
コンピュータ・プロセッサと、該コンピュータ・プロセッサと結合したコンピュータ読み取り可能な記憶装置とを備え、
該記憶装置は、前記コンピュータ・プロセッサが実行可能な命令を含み、この命令を実行するときに、該コンピュータ・プロセッサに、請求項１３乃至２０の何れかに記載のコンピュータプログラムに記述された処理を実行させる、
ことを特徴とするコンピュータシステム。
【請求項２６】
コンピュータ読み取り可能な記憶媒体を備え、
該記憶媒体は、コンピュータ装置が実行する命令を含み、この命令を実行するときに、該コンピュータ装置に、請求項１３乃至２０の何れかに記載のコンピュータプログラムを実行させる、
ことを特徴とする装置。
【請求項２７】
コンピュータプログラムであるソース・コード・ジェネレータを用いて、コンピュータ実行可能なソフトウエア・ソース・コードを構築するためのデータ・トークンを、コンピュータ・プロセッサで生成する方法であって、
該ソース・コード・ジェネレータは、前記ソフトウエア・ソース・コードを構築するために１個以上のソース・コード・コンポーネントを合体する方法を特定する既定ルール・セットに基づき、トークン結果を用いて、前記データ・トークンを生成し、
該トークン結果は、データ・トークンと、前記ソフトウエア・ソース・コード内のソース・コード・コンポーネントを表すコンポーネント値とを処理することで生成され、
以下の処理ａ及びｂを含み、
ａ．以下の条件ｉ乃至ｉｖを全て満たす方法を特定するデータ・トークン・ルール・セットを生成する処理。
ｉ．前記データ・トークンを表すトークン値が、生成可能な状態である。
ｉｉ．前記ソース・コード・ジェネレータがコンピュータで実行されるロジックを付加しなければならない配置を決定できるように、前記データ・トークンの前記トークン値を前記コンポーネント値に関連付けることが可能な状態である。
ｉｉｉ．トークン結果を生成するためのパラメータを使用して前記データ・トークンの前記トークン値を処理することが可能な状態であり、また、前記ソース・コード・ジェネレータが前記ソフトウエア・ソース・コードを構築するために該トークン結果を利用することが可能な状態である。
ｉｖ．ソース・オブジェクト及び不確定型ソース・コード・コンポーネントを参照して、ソース・オブジェクト・レポジトリ内から前記コンポーネント値を識別することが可能な状態である。ここで、該不確定型ソース・コード・コンポーネントは、前記ソフトウエア・ソース・コードの前記既定ルール・セット内のソース・コード・コンポーネントであり、そのコンポーネント値は、コンピュータ実行ロジックを用いて決定するのでは無く、前記ソフトウエア・ソース・コードを生成する際にユーザが決定する。
ｂ．前記コンピュータ・プロセッサにより、前記データ・トークンのトークン値を、前記データ・トークン・ルール・セットを用いて生成する処理。
これにより、生成した前記データ・トークンを、前記ソース・コード・コンポーネントの前記コンポーネント値と関連付けることができ且つ前記ソース・オブジェクト・レポジトリに格納することができるようにして、前記ソース・コード・ジェネレータが前記ソフトウエア・ソース・コードを構築する際に利用できるようにすることを特徴とする方法。
【請求項２８】
前記コンポーネント値が前記ソフトウエア・ソース・コードの構築に使用されないことを、前記トークン結果を用いて決定することを特徴とする請求項２７に記載の方法。
【請求項２９】
前記トークン結果を用いて、以下の判断ａ乃至ｃの何れか１つ以上を行うことを特徴とする請求項２７又は２８に記載の方法。
ａ．前記コンポーネント値を変更して、変更後の該コンポーネント値を前記ソフトウエア・ソース・コードの構築に利用する。
ｂ．前記コンポーネント値を他の前記コンポーネント値の生成に利用し、生成した該他のコンポーネント値を前記ソフトウエア・ソース・コードの構築に利用する。
ｃ．上記ａ及びｂの組み合わせ。
【請求項３０】
前記データ・トークンの前記トークン値が、前記コンポーネント値に埋め込まれることを特徴とする請求項２７乃至２９の何れかに記載の方法。
【請求項３１】
データ値と、ソフトウエア・ソース・コードの不確定型ソース・コード・コンポーネントを表すコンポーネント値と、該コンポーネント値に関連付けられたデータ・トークンのトークン値とを有するソース・オブジェクトを格納するためのソース・オブジェクト・レポジトリを、コンピュータ・プロセッサで生成する方法であって、
前記ソース・オブジェクトを、前記ソフトウエア・ソース・コードを構築するソース・コード・ジェネレータが、既定ルール・セットに基づいて利用し、且つ、
以下の処理ａ及びｂを含み、
ａ．以下の条件ｉ乃至ｉｉｉを全て満たす方法で、前記ソース・オブジェクトを格納する前記ソース・オブジェクト・レポジトリを生成するためのデータ・モデルを生成する処理。
ｉ．前記ソース・オブジェクトは、前記データ値を用いて、前記ソース・オブジェクト・レポジトリから識別可能且つ取得可能である。
ｉｉ．前記コンポーネント値は、前記ソース・オブジェクト及び不確定型ソース・コード・コンポーネントを参照して、前記ソース・オブジェクト・レポジトリから識別可能である。ここで、該不確定型ソース・コード・コンポーネントは、前記ソフトウエア・ソース・コードの前記既定ルール・セット内のソース・コード・コンポーネントであり、そのコンポーネント値は、コンピュータ実行ロジックを用いて決定するのでは無く、前記ソフトウエア・ソース・コードを生成する際にユーザが決定する。
ｉｉｉ．前記データ・トークンの前記トークン値は、データ・トークン・ルール・セットに基づいて生成され、該データ・トークン・ルール・セットによって特定される前記コンポーネント値との関連付けが可能である。
ｂ．データ・モデルに基づいて、ソース・オブジェクト・レポジトリとしてのデータ構造を生成する処理。
これにより、前記ソース・コード・ジェネレータが、生成された前記ソース・オブジェクト・レポジトリを用いて前記ソフトウエア・ソース・コードを構築できるようにすることを特徴とする方法。
【請求項３２】
前記ソース・オブジェクトは複数のコンポーネント値及び複数のデータ値を含み、該複数のデータ値は前記複数のコンポーネント値間の所望の関係を維持するために使用されることを特徴とする請求項３１に記載の方法。
【請求項３３】
前記ソース・オブジェクトは複数のコンポーネント値及び複数のデータ値を含み、該複数のデータ値は前記複数のコンポーネント値間の所望の順序を維持するために使用されることを特徴とする請求項３１又は３２に記載の方法。
【請求項３４】
前記データ値は、前記ソース・オブジェクト、他のソース・オブジェクト又はこれらの組み合わせの何れか１個以上に格納された他のコンポーネント値を参照することを特徴とする請求項３１乃至３３の何れかに記載の方法。
【請求項３５】
既定ルール・セットに基づいて結合される一又は複数のソース・コード・コンポーネントを含むソフトウエア・ソース・コードを、コンピュータ・プロセッサによって構築する方法であって、
前記ソース・コード・コンポーネントは、コンポーネント値で表され、且つ、
以下の処理ａ乃至ｅを全て含むことを特徴とする方法。
ａ．データ・トークンを生成する処理。
ｂ．前記コンピュータ・プロセッサでソース・オブジェクト・レポジトリを生成する処理。
ｃ．ソース・コード・ジェネレータを生成する処理。ここで、該ソース・コード・ジェネレータは、前記既定ルール・セットに基づき、前記データ・トークンを用いて、前記ソフトウエア・ソース・コードを構築するコンピュータプログラムであり、また、該データ・トークンはデータ・トークン・ルール・セットに基づいて処理される。
ｄ．ソース・オブジェクトを生成する処理。ここで、該ソース・オブジェクトは、データ値と、不確定型ソース・コード・コンポーネントを表すコンポーネント値と、前記データ・トークンのトークン値とを含んでいる。また、前記データ・トークンの該トークン値は、該コンポーネント値と関連付けられている。更に、前記ソース・オブジェクトは、前記ソース・オブジェクト・レポジトリに格納されている。更に、前記不確定型ソース・コード・コンポーネントは、前記ソフトウエア・ソース・コードの前記既定ルール・セット内のソース・コード・コンポーネントであり、そのコンポーネント値は、コンピュータ実行ロジックを用いて決定するのでは無く、前記ソフトウエア・ソース・コードを生成する際にユーザが決定する。
ｅ．コンピュータ・プロセッサが前記ソース・コード・ジェネレータを実行して、前記ソフトウエア・ソース・コードを構築する処理。ここで、該ソース・コード・ジェネレータは、前記既定ルール・セットに基づき、トークン結果及びコンポーネント値を利用して、該ソフトウエア・ソース・コードを構築し、また、該トークン結果は、前記データ・トークンの前記トークン値を処理することで得られる。更に、該ソース・コード・ジェネレータは、該データ・トークンの該トークン値を処理して該トークン結果を生成するためのパラメータを使用し、このとき、該データ・トークンの該トークン値と、該コンポーネント値とは、前記ソース・オブジェクトから取得される。更に、該ソース・コード・ジェネレータは、前記データ値を用いて、該ソース・オブジェクトを前記ソース・オブジェクト・レポジトリから取得する。
【請求項３６】
前記ソース・コード・ジェネレータが、前記トークン結果を利用することにより、前記コンポーネント値を前記ソフトウエア・ソース・コードの構築に使用するか否かを判断することを特徴とする請求項３５に記載の方法。
【請求項３７】
前記トークン結果を利用することにより、以下のａ乃至ｃの１個以上を判断することを特徴とする請求項３５又は３６に記載の方法。
ａ．コンポーネント値を変更して、変更後のコンポーネント値を前記ソフトウエア・ソース・コードの構築に使用すること。
ｂ．他のコンポーネント値を生成して、生成した該他のコンポーネント値を前記ソフトウエア・ソース・コードの構築に使用すること。
ｃ．前記ａ、ｂの組み合わせ。
【請求項３８】
前記データ・トークンの前記トークン値が、前記コンポーネント値に埋め込まれることを特徴とする請求項３５乃至３７の何れかに記載の方法。
【請求項３９】
１個以上のプログラムが協働して、コンピュータ・プロセッサを制御することにより、請求項２７乃至３８の何れかに記載の方法を該コンピュータ・プロセッサに実行させるための命令を含むことを特徴とするコンピュータプログラム。
【請求項４０】
クライアント・コンピュータと、該クライアント・コンピュータと通信可能に構成されたサーバ・コンピュータとを備え、且つ、
コンピュータ・プロセッサと、該コンピュータ・プロセッサと結合したコンピュータ読み取り可能な記憶装置とを備え、
該記憶装置は、前記コンピュータ・プロセッサが実行可能な命令を含み、この命令を実行するときに、該コンピュータ・プロセッサに、請求項２７乃至３８の何れかに記載の方法を実行させる、
ことを特徴とするコンピュータシステム。
【請求項４１】
コンピュータ読み取り可能な記憶媒体を備え、
該記憶媒体に記憶された命令を実行することにより、コンピュータ・プロセッサに請求項２７乃至３８の何れかに記載の方法を行わせる、
ことを特徴とするコンピュータ。
【請求項４２】
前記ソフトウエア・ソース・コードは、コンピュータ・プログラム言語を定義する既定ルールに対応した、前記ソース・コード・コンポーネント、プロセッサのオブジェクト・コード、又は、１個以上の他のソフトウエア・ソース・コードの構成部分であるオブジェクトの組み合わせを、１個以上含むことを特徴とする請求項１又は１３に記載のコンピュータプログラム。
【請求項４３】
前記ソフトウエア・ソース・コードは、コンピュータ・プログラム言語を定義する既定ルールに対応した、前記ソース・コード・コンポーネント、プロセッサのオブジェクト・コード、又は、１個以上の他のソフトウエア・ソース・コードの構成部分であるオブジェクトの組み合わせを、１個以上含むことを特徴とする請求項４、２７、３１又は３５の何れかに記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願への相互参照
この出願は、２０１１年９月２３日に、出願人ラザ・アハマドによって米国特許商標庁に出願された、米国出願番号：１３／２４２，５５８（代理人整理番号：２１１２，１００２、発明の名称：ソフトウエアの開発方法及び装置）の内容に言及することで、これを包含しており、該出願に基づく優先権を主張する。
【０００２】
１．分野
この発明は、ソフトウエア開発に関する。
【背景技術】
【０００３】
２．関連技術の説明
ソフトウエア開発は、新規ソフトウエアの開発や、開発したソフトウエアの管理や、開発したソフトウエアの品質保証を含む。ここで、管理は、開発したソフトウエアの交換及び／又は修正を含み、また、品質保証は、開発したソフトウエアの試験やデバッグ作業を含んでいる。
【０００４】
ソフトウエア開発では、小さいコンピュータプログラムであっても、開発や管理に非常に大規模の（そして、多くの場合に高価な）リソースが必要であり、大きい障害の一つとなっている。更に、ソフトウエア開発に要求されるリソースは、コンピュータプログラムに求められる特徴的機能の数に応じて、指数関数的に増大する。その上、要求されるリソースは、コンピュータプログラムのエラーや誤作動の可能性を排除しようとすると、天文学的に増大するおそれがある。
【０００５】
同時に、ソフトウエアに対する期待や要求は、コンピュータの処理能力や性能の急激な増大のために、急激に高まっている。しかしながら、利用できるリソース（例えば、人的なリソース、金銭的なリソース、時間的なリソース、技術的なリソース等）に限界があるため、技術は未発達であり、ソフトウエアの全潜在能力を利用するには至っていない。
【０００６】
このような重大な障害に対して、長い間に、様々な技術が開発されている。しかしながら、今まで、この問題を効果的に解決するものは無かった。このような技術には、ＣＡＳＥツール、データ駆動型プログラミング、テーブル駆動型プログラミング、オブジェクト指向プログラミング、ＣＯＲＢＡ(Common Object Request Broker Architecture)、ＭＤＡ(Model-Driven Architecture)、ＲＡＤ(Rapid
Application Development)、ソフトウエア・ファクトリー等が含まれる。これら全ての技術は、ある程度までは、ソフトウエア開発のリソースへの要求を低減させた。また、これら全ての技術により、多少は、ソフトウエア開発に供給されるリソースが効率的に利用できるようになった。しかしながら、これと同時に、ソフトウエアの特徴的機能上の要求は、指数関数的に複雑化し続けており、そのため、そのようが技術が生むいかなる利益も、増加し続けるソフトウエアの要請を満たすには不十分である。
【０００７】
上述の技術に加えて、ソフトウエア開発プロセスにおけるリソースの要求を低減するために、多くのコンピュータ・プログラムや開発環境が、開発されている。このようなコンピュータ・プログラムや開発環境としては、マイクロソフト・ビジュアル・スタジオ、ＧＮＡＴプログラミング・スタジオ、ＩＢＭラショナル・アプリケーション・デベロッパー、パワー・ビルダー、Ｃ＋＋ビルダー、Ｘｃｏｄｅ、ＮｅｔＢｅａｎｓ、Ｄｅｌｐｈｉ、Ｌａｚａｒｕｓ、クリスタル・レポート、マイクロソフト・アクセス、オラクル・データベース及びマイクロソフトＳＱＬサーバー等がある。これらのコンピュータプログラムや開発環境は、いくらかの機械的作業を自動化させることに成功したものの、ソフトウエア開発における過度のリソース要求を低減することに対しては有効では無い。
【０００８】
例えば、マイクロソフトＳＱＬサーバ・データベースの要求に基づくレポート、厳密にはマイクロソフト・アクセスのレポート・エンジン用にデザインされたレターサイズのレポートが、二百個必要であるコンピュータ・アプリケーションについて考えてみる。従来は、各レポートは、そのレポートに必要なクエリ(query)と共に、ソフトウエア開発者が開発しなければならなかった。オラクル・プラットフォーム及びクリスタル・レポートがＡ４用紙様式の同じレポートの送信を要求された場合、リソースの消費は、本来の開発に必要なリソースさえも上まわるであろう。
【発明の概要】
【発明が解決しようとする課題】
【０００９】
ソフトウエア開発における巨大で手に負えないリソース要求は、レポートやクエリだけで無く、ソフトウエア開発の全ての段階や状況に関係する。しかしながら、多くの技術、環境及びアプリケーションを利用しているにも拘わらず、従来技術では、ソフトウエア開発のリソースを満足且つ有効なレベルまで最小化する試みを成就することはできなかった。
【００１０】
ソフトウエア開発は、理想的には、三つの目的、すなわち特徴的機能を最大限に生かすこと、高品質を保障すること及びソフトウエア開発リソースを最小化することを、同時に達成するべきである。しかし、従来技術で、これら三つの目的を同時に達成したものは無く、どのソフトウエア開発でも、これら三つの目的のうちの１つ以上で妥協しなければならなかった。
【課題を解決するための手段】
【００１１】
従来技術に対する最大の試みは、本発明の実施形態によって、ソフトウエア開発に必要なリソース（人、技術、金銭、時間）の最小化を、管理及び品質の保証を損なうこと無しに、効果的に達成することにある。
【００１２】
本発明の実施形態は、ソフトウエア開発者に類似する機能をマシン（例えばコンピュータ）に与える、ソフトウエア開発の新規な方法を備える。データ・トークン(data token)は、定義されて、生成されると共に、ソースコードと結びついてマシン（例えばコンピュータ）によるソフトウエア開発を可能にする（すなわち、そのマシンによる、ソース・コードやオブジェクト・コード及び／又はオブジェクトの生成や構築を可能にする）。
【００１３】
本発明の他の実施形態は、ソフトウエア開発に必要なソース・コードを、合理的で簡単なものにする方法を備える。ソフトウエア開発を行うマシン（例えばコンピュータ）は、ソース・コードとして、ソース・オブジェクトを生成して使用する方法が提供される。
【００１４】
本発明の他の実施形態は、ソース・オブジェクトを格納するソース・オブジェクト・レポジトリを生成する方法を備える。
【００１５】
本発明の他の実施形態は、データ・トークンをソース・オブジェクトに結合することにより、コンピュータが、このソース・オブジェクト及びこれに結合したデータ・トークンを利用して、完全なソースコードを生成することを可能にする方法を備える。
【００１６】
本発明の実施形態は、多数の技術的で商業的な利点を有する。例えば、本発明の実施形態によれば、ソフトウエア開発に要する時間やリソースが、実質的に減少する。本発明の他の実施形態によれば、開発されたソフトウエアで利用できる特徴的機能やオプションが、実質的に増加する。
【００１７】
本発明の原理が提供する多大な利益は、ソフトウエア開発を着想して実行する方法を変化させるであろう。本発明の概念や原理は、疑いなく、レポート、データ登録フォーム、メニュー、ビジネス処理ルール、ヘルプ・システム、例外処理システム等で、新しい可能性や展望を無限に生み出すであろうが、これらは従来技術としては知られておらず、予想もできない。
【００１８】
多くの更なる利点は、当業者にとって容易なように、明示される。
【図面の簡単な説明】
【００１９】
本発明の概念、原理、方法、詳細、実施形態及び顕著な特徴は、例示ではあるが何ら限定を与えない状態で、図示される。以下に列挙された図は、線図と詳細な記述とを含んでおり、同じ符号は同じ要素を参照している。
【００２０】
【図１Ａ】本発明の実施形態に係る動作を示すフローチャートである。
【００２１】
【図１Ｂ】本発明の実施形態の一の観点を、より詳細に示すフローチャートである。
【００２２】
【図２】本発明の実施形態の一の観点に係る好適なソフトウエア構成要素の好適な構成を示すフローチャートである。
【００２３】
【図３】本発明の実施形態の一の観点に係る実施に適した、コンピュータの好適な一例及び他の構成要素の好適な一例を含むコンピューティング・システム環境を示す、概略構成例の図である。
【００２４】
【図４Ａ】本発明の実施形態に係る一の観点において、予め定められた２個の好適なルールを組み合わせた例を示す図である。
【００２５】
【図４Ｂ】−
【図４Ｋ】本発明の実施形態の一の観点において選択された、アクセス選択クエリのために既定ルールの組み合わせを示す好適な構文図である。
【００２６】
【図４Ｌ】−
【図４Ｒ】本発明の実施形態の一の観点において選択された、オラクル選択クエリのために既定ルールの組み合わせを示す好適な構文図である。
【００２７】
【図４Ｓ】図４Ｂ〜図４Ｒに示したソース・コンポーネントの一部を示す好適なブロック図であり、本発明の実施形態の一の観点の不確定型ソース・コンポーネントに分類される。
【００２８】
【図４Ｔ】図４Ｂ〜図４Ｒに示したソース・コンポーネントの一部を示す好適なブロック図であり、本発明の実施形態の一の観点の確定型ソース・コンポーネントに分類される。
【００２９】
【図５Ａ】本発明の実施形態の一の観点において定義されたデータ・トークンの好適例を幾つか示す、好適なブロック図である。
【００３０】
【図５Ｂ】−
【図５Ｃ】好適な特定のデータ・トークンを組み合わせてなるデータ・トークン・ルールを好適に組み合わせを示す好適なフローチャートである。
【００３１】
【図６】本発明の実施形態の一の観点において定義された好適なパラメータを示すブロック図である。
【００３２】
【図７Ａ】本発明の実施形態の一の観点に係るデータ・モデルの幾つかの属性（カラム又はフィールドと称してもよい）であって、不確定型ソース・コンポーネントの内の所望の不確定型ソース・コンポーネントのコンポーネント値を保持するソース・オブジェクト・レポジトリ内に含有されているものを示すブロック図である。
【００３３】
【図７Ｂ】本発明の実施形態の一の観点に係る好適なデータ・モデルであって、ソース・オブジェクト・レポジトリを生成するための十分な能力を備えたものを示す図である。
【００３４】
【図７Ｃ】図７Ｂに示した、本発明の実施形態の一の観点に係る好適なソース・オブジェクト・レポジトリであって、好適なデータ・モデル毎に作成されるものを示す図である。
【００３５】
【図８Ａ】−
【図８Ｐ】本発明の実施形態の一の観点に係る好適なソフトウエア・コンポーネント・コンストラクタであり、本願ではクエリ・ビルダーと称されるものの、好適なフローチャートである。
【００３６】
【図８Ｑ】本発明の実施形態の一の観点に係る好適な特定のデータ・トークンによる好適な処理を示すフローチャートである。
【００３７】
【図８Ｒ】本発明の実施形態の一の観点に係る好適な他の特定のデータ・トークンによる好適な処理を示すフローチャートである。
【００３８】
【図８Ｓ】クエリ・ビルダーが利用する好適な機能の好適なフローチャートである。
【００３９】
【図８Ｔ】−
【図８Ｘ】本発明の実施形態の一の観点に係る好適なデータ・トークンであって、図５Ｂ及び５Ｃにロジックを示したデータ・トークンの、好適なフローチャートである。
【００４０】
【図９Ａ】−
【図９Ｏ】本発明の実施形態の一の観点に係る、幾つかの好適なソース・オブジェクトであって、図７Ｃに示した好適なソース・オブジェクト・レポジトリに格納されるソース・オブジェクトを示す図である。
【００４１】
【図１０Ａ】−
【図１０Ｚ】本発明の実施形態の一の観点に係る、幾つかの好適なクエリであって、図９Ａ−図９Ｏに示した幾つかの好適なソース・オブジェクトを使用するクエリ・ビルダーによって生成したクエリを示す図である。
【発明を実施するための形態】
【００４２】
［１］定義
本願で使用する用語の一部は、当該技術分野において慣用的でない。本発明の議論では、一部の用語を独特な意味で使用する。従って、以下の定義は、それ以降の詳細説明の明確性と理解の容易さとを確保するためのものである。しかし、請求の範囲に列挙された発明を、これらの定義によって限定する必要は無い。
【００４３】
“データ値”は、データの構成単位である。この１つの構成単位は、１つの情報を備えており、コンピュータ読出が可能な記録媒体に記録される１ビット以上のデータでなければならない。コンピュータ読出が可能な記録媒体に記録できるものは、どのようなものであっても、データ値である。データ値としては、例えば、名前、年齢、日付、時刻、番号、文字列、オブジェクト、画像、音声、映像、信号、式、ソース・コード、オブジェクト・コード、変数名、変数値、フィールド名、英数字、バイナリ・データ、欧文字データ、ビット、短整数、長整数、無値(NULL value)、空値(empty value)が含まれるが、これらには限定されない。
【００４４】
“ソフトウエア・コンポーネント”１４２は、コンピュータ・プログラム言語のソースコード、プロセッサ（実プロセッサ及び／又は仮想プロセッサ）のオブジェクト・コード及び／又はソフトウエアの１個以上の構成部分としてのオブジェクトを、参照する。ここで、ソフトウエアの構成部分は、ソフトウエア又はその一部の実行中に使用され、プロセッサで実行されてもよいし、仮想化の場合は他のソフトウエア（コンピュータ・プログラム）で実行されてもよい。また、プロセッサは、実（物理的）コンピュータ・プロセッサでもよいし、エミュレータ（仮想的はコンピュータ・プロセッサ）でもよい。ソフトウエア・コンポーネントは、“既定ルール・セット”１４０に基づいて編成された、１個以上のソース・コンポーネントを備えている。そして、これら１個以上のソース・コンポーネントは、それぞれ１個以上のデータ値で表される。ソフトウエア・コンポーネント１４２は、１個以上の他のソフトウエア・コンポーネントを備えていても良い。ソフトウエア・コンポーネント１４２の例としては、下記のものが挙げられるが、これらには限定されない。
１．ＳＱＬクエリは、ソフトウエア・コンポーネントである。
２．ＳＱＬクエリのＷＨＥＲＥ句は、ソフトウエア・コンポーネントである。
３．レポート・レイアウトは、ソフトウエア・コンポーネントである。
４．クラス・モデルに基づいて生成されるソフトウエア・オブジェクトは、ソフトウエア・コンポーネントである。
５．フォント・オブジェクトは、ソフトウエア・コンポーネントである。
６．データ構造は、ソフトウエア・コンポーネントである。
７．データベース・ビューは、ソフトウエア・コンポーネントである。
８．データベース・テーブルは、ソフトウエア・コンポーネントである。
９．データ登録フォームは、ソフトウエア・コンポーネントである。
１０．スプレッドシートは、ソフトウエア・コンポーネントである。
【００４５】
他のソフトウエア・コンポーネントを備えるソフトウエア・コンポーネントの例としては、下記のものが挙げられるが、これらには限定されない。
１．ソフトウエア・コンポーネントであるＳＱＬクエリであって、同じくソフトウエア・コンポーネントであるＷＨＥＲＥ句を備えるもの
２．ソフトウエア・コンポーネントであるＳＱＬビューであって、同じくソフトウエア・コンポーネントである２個のＳＱＬビューを備えるもの
３．ソフトウエア・コンポーネントであるレポート・レイアウトであって、同じくソフトウエア・コンポーネントであるフォント・オブジェクトを備えるもの
【００４６】
“ソース・コンポーネント”１４４は、ソフトウエア・コンポーネント１４２内の１個以上のデータ値（以下、コンポーネント値”１４６と記す）で表される。すなわち、ソース・コンポーネント１４４はソフトウエア・オブジェクトの属性のようなものであり、コンポーネント値１４６はソフトウエア・オブジェクトの属性値のようなものである。ソース・コンポーネントの例としては、下記のものが挙げられるが、これらには限定されない。
１．用紙サイズは、レポート・レイアウト（これはソフトウエア・コンポーネントである）のソース・コンポーネントである。用紙サイズは、レポート・レイアウト内の、１個以上のコンポーネント値で表される。レポート・レイアウト内の用紙サイズを示すコンポーネント値としては、Ａ４、Ａ３、レターサイズ、８．５インチ×１１インチサイズが含まれていても良いが、これらには限定されない。
２．背景色は、データ登録フォーム（これはソフトウエア・コンポーネントである）のソース・コンポーネントである。背景色は、データ登録フォーム・オブジェクト内の、１個以上のコンポーネント値で表すことができる。
３．ＳＱＬクエリはソフトウエア・コンポーネントであり、コマンドはソース・コンポーネントである。ＳＱＬクエリ内のコマンドを表すコンポーネント値には、ＳＥＬＥＣＴ、ＵＰＤＡＴＥ、ＤＥＬＥＴＥ、ＩＮＳＥＲＴ  ＩＮＴＯ、ＣＲＥＡＴＥ  ＤＡＴＡＢＡＳＥ、ＡＬＴＥＲ  ＤＡＴＡＢＡＳＥ等が含まれても良いが、これらには限定されない。
４．余白は、コンピュータ・プログラム言語のソース・コード・ブロック（これはソフトウエア・コンポーネントである）のソース・コンポーネントである。余白を示すコンポーネント値には、スペース記号やタブ記号が含まれても良いが、これらには限定されない。
５．テキストボックスの幅は、テキストボックス・オブジェクト（これはソフトウエア・コンポーネントである）のソース・コンポーネントである。テキストボックスの幅を示すコンポーネント値のデータ形式は、数値とすることができる。
６．税率は、税額計算ビジネス・ルール（これはソフトウエア・コンポーネントである）のソース・コンポーネントである。税率を示すコンポーネント値のデータ形式は、数値とすることができる。
７．ニーモニックは、アセンブリ言語のソース・コード・ブロック（これはソフトウエア・コンポーネントである）のソース・コンポーネントである。ニーモニックを表すコンポーネント値は、ＭＯＶ、ＸＯＲ及びＣＭＰが含まれていても良いが、これらには限定されない。
【００４７】
“既定ルール・セット”１４０は、ソフトウエア・コンポーネントを生成する機能を備えた既定ルールを１個以上有する。既定ルール・セットは、１個以上のソース・コンポーネントの語(term)によって特定される。ここで、ソフトウエア・コンポーネント内では、１個以上のソース・コンポーネントが、それぞれ１個以上のコンポーネント値で表される。既定ルール・セット１４０の例としては、下記のものが挙げられるが、これらには限定されない。
１．ＳＱＬ：２００８規格に従ってＳＱＬクエリ（これはソフトウエア・コンポーネントである）を生成するための既定ルール・セット。
２．オラクル・データベースのテーブル生成用ＳＱＬクエリ（これはソフトウエア・コンポーネントである）を生成するための既定ルール・セット。
３．マイクロソフト・ビジュアル・ベーシック６のフォーム（これはソフトウエア・コンポーネントである）を生成するための既定ルール・セット。
４．クリスタル・レポートのレポート・レイアウト（これはソフトウエア・コンポーネントである）を生成するための既定ルール・セット。
５．ソフトウエア・アプリケーション（これはソフトウエア・コンポーネントである）で、特定の保険証券の価格を計算するための既定ルール・セット。
６．エクセル・ワークシートで式（これはソフトウエア・コンポーネントである）を生成するための既定ルール・セット。
【００４８】
“ユーザ”は、コンピュータ・プログラムを開発、インストール、使用及び／又は環境設定する。ユーザは、人間であっても良いし、マシンであっても良いし、コンピュータ・プログラムであっても良いが、これらには限定されない。また、ユーザは、このユーザが使用するコンピュータ・プログラムの開発者であっても良い。
【００４９】
“データ・トークン”１５２は、データ・トークン・ルール・セット１５８を備えており、データ値（以下、トークン値１５４と称する）で表される。ここで、トークン値は、データ・トークン・ルール・セットに基づいて処理される。トークン値の処理結果もデータ値であり、以下の説明ではトークン結果１５６と称する。トークン結果１５６は、ソフトウエア・コンポーネントの生成に使用される。データ・トークン・ルール・セットは、データ・トークンを定義する際に、特定される。ここで、データ・トークン・ルール・セットは１個以上のルールを有している。このルールが特定する１個以上の方法によって、トークン値を、ソフトウエア・コンポーネントのソース・コンポーネントのコンポーネント値と結合できるようになり、処理できるようになり、及び／又は、使用できるようになる。トークン値の処理には、機能の実現、比較の実行、コンポーネント値の生成、ソフトウエア・コンポーネントの構築方法の決定、ソフトウエア・コンポーネントで使用する１個以上のコンポーネント値の識別又はこれらの組み合わせを含むことができるが、これらには限定されない。トークン値は、パラメータを使用して決定することができる。また、トークン値は、他のトークン値と結合することができる。トークン値は、同一の及び／又は異なるデータ・トークンの他のトークン値に組み込むことができる。
【００５０】
以下、データ・トークン１５２の幾つかの例を示す。
１．tknCompareは、データ・トークン１５２であり、トークン値Comp(A,B)で表される。Comp(A,B)が、これに対応するデータ・トークン・ルール・セット１５８に従って処理されたとき、この処理されたComp(A,B)のトークン結果は、ソフトウエア・コンポーネントの生成に使用される。データ・トークンtknCompareのトークン値Comp(A,B)は、以下のデータ・トークン・ルール・セットに基づいて処理される。ここで、Ａ及びＢは、２個のパラメータ値を用いて決定できる。
ａ．Ａ＞Ｂであれば、トークン結果は１
ｂ．Ａ＝Ｂであれば、トークン結果は０、且つ、
ｃ．Ａ＜Ｂであれば、トークン結果は−１
すなわち、この例では、データ・トークンtknCompareのトークン値は、３つの取り得る値１、０、−１の１つを返送する機能として動作する。この例では、“Ａ”が総売上を表し、且つ、“Ｂ”が総販売コストを表す。tknCompareは、作動時間に印刷されるレポートの類型を決定するために使用され、トークン結果が１であれば収益概要が印刷され、トークン結果が０であれば損益分岐点が印刷され、また、トークン結果が−１であれば損失レポートが印刷される。このようにして、tknCompareは、“Ａ”及び“Ｂ”の値に基づいて、ソフトウエア・コンポーネント・コンストラクタ１７０による適切なレポート作成を可能にする。
２．tknRetrieve１５２は、データ・トークン１５２であり、トークン値tknDept()で表される。tknRetrieveを処理するためのデータ・トークン・ルール・セット１５８は、このトークン値tknDept()を処理することで、tblDepartmentと称されるデータベース・テーブルから全ての区分コード(department code)が返送されるように、定められる。この区分コートを有するtblDepartmentは、特定のデータベース・サーバの管理下にある。返送された区分コードは、トークン結果を表しており、例えば、クロス集計ＳＱＬクエリである。この区分コードは、所望のソフトウエア・コンポーネントの構築に利用される。区分の数が変動する可能性があるため、tknRetrieveは、tknDept()（すなわち、このtknRetrieveのトークン値１５４）を処理する作動時間中には、ソフトウエア・コンポーネント・コンストラクタ１７０を、トークン結果１５６として返送された区分に基づいて適切なクエリを生成できるようにしておく。
３．tknJoinTypeは、データトークン１５２であり、ＳＥＬＥＣＴクエリ（これは、ソフトウエア・コンポーネントである）の構築に利用される。tknJoinTypeのデータ・トークン・ルール・セット１５８により、このデータ・トークンtknJoinTypeは、以下のトークン値の何れかで表される。以下の説明では、各トークン値は、そのトークン値の利用方法を特定するルールと共に説明されている。
ａ．０−結合(Join）無し（トークン値の最初の文字が０であるため、クエリーは結合無しに構築される）。
ｂ．１−内部結合（トークン値の最初の文字が１であるため、クエリーは内部結合(INNER JOIN)するように構築される）。
ｃ．２−左結合（トークン値の最初の文字が２であるため、クエリーは左結合(LRFT JOIN)するように構築される）。
ｄ．３−右結合（トークン値の最初の文字が３であるため、クエリーは右結合(RIGHT JOIN)するように構築される）。
tknJoinTypeのトークン値１５４は、作動時間中にユーザから得られたパラメータ値１６２を用いて、取り出すことができる。従って、ＳＱＬクエリは、ソフトウエア・コンポーネント・コンストラクタ１７０によって構築することができる。
【００５１】
“ソース・オブジェクト”１６６は、以下のものを備えている。
１．コンポーネント値１４６
２．トークン値１５４
３．以下の特徴を有するデータ値
ａ．ソース・オブジェクト１６６の性質
ｂ．ソース・オブジェクト１６６を記述するメタデータ
ｃ．コンポーネント値１４６及びトークン値１５４中の関係、命令及び／又は階層
ｄ．多数のコンポーネント値１４６ｎ中の関係、命令及び／又は階層
ｅ．多数のトークン値１５４ｎ中の関係、命令及び／又は階層
ｆ．コンポーネント値１４６の参照事項
ｇ．トークン値１５４の参照事項
ｈ．他のソース・オブジェクト１６６の参照事項
ｉ．これらの何れかの組み合わせ
４．これらの何れかの組み合わせ
【００５２】
“ソフトウエア・コンポーネント・コンストラクタ”１７０は、既定ルール１４０の組み合わせに基づき、ソース・オブジェクト１６６、コンポーネント値１４６、トークン値１５４、トークン結果１５６又はこれら何れかの組み合わせを用いて、ソフトウエア・コンポーネント１４２又はその一部を構築する機能を備えた、コンピュータ・プログラムである。ここで、ソース・オブジェクト１６６、コンポーネント値１４６及び／又はトークン値１５４は、パラメータ値１６２を利用して決定することができる。ソフトウエア・コンポーネント・コンストラクタは、１個のコンピュータ・プログラムであっても良いし、統合及び／又は接合された複数個のコンピュータ・プログラムであってもよい。ソフトウエア・コンポーネント・コンストラクタは、ソフトウエア・コンストラクタに基づく既定ルール・セットに適合しており、そのため、適合した既定ルール・セットは、ソフトウエア・コンポーネントを構築することができなくなるような範囲のルールを含んでいない。例えば、クエリ・ビルダーはソフトウエア・コンポーネント・コンストラクタであるし、また、ＤＢ２、マイクロソフト・アクセス、マイクロソフトＳＱＬサーバ、オラクル及び／又はＳＹＢＡＳＥのＳＱＬクエリもソフトウエア・コンポーネント・コンストラクタである。また、クリスタル・レポート用のレポート・レイアウトを生成するレポート・クリエーターも、ソフトウエア・コンポーネント・コンストラクタである。
【００５３】
“ソース・オブジェクト・レポジトリ”１６８は、更に多くのデータ構造を有しており、コンピュータ読み取り可能な記録媒体にソース・オブジェクト１６６を格納するために利用される。ここで、ソース・オブジェクト・レポジトリは、データ・モデルに基づいて生成され、このデータ・モデルは、以下の事項に対して好適且つ十分なソース・オブジェクト・レポジトリを生成するために、好適且つ十分である。
１．強制的事項
ａ．１個以上のソース・オブジェクトを、構築データ又は半構築データとして格納し、
ｂ．１個以上のソース・オブジェクトの中から、所望のソース・オブジェクトを識別して取り出す。
２．付加的な任意事項
ａ．ソース・オブジェクトに備えられたそのようなソース・コンポーネントの中から、所望の方法、所望の階層構造及び／又は所望の関係に基づいて、実行し且つ維持する。
ｂ．１個以上のコンポーネント値を表すソース・コンポーネントに属する１個以上のコンポーネント値の中から、所望の命令を実行し且つ維持する。
ｃ．他のソース・オブジェクトのソース・オブジェクト及び／又はその所望の一部を利用する。
ｄ．１個以上のソース・オブジェクトの１個以上のコンポーネント値に、１個以上のデータ・トークンを結合させる。
ｅ．これらの何れかの組み合わせ
【００５４】
ソース・オブジェクト・レポジトリに含まれるデータ構造は、データベース・テーブル、分類、配列、リンク・リスト、変動する多次元の配列、多次元のデータベース、通常のデータベース、単層ファイル、区切りテキストファイル(delimited text file)及びパラメータを含むことができるが、これらに限定されない。
【００５５】
本願で使用する“コンピュータ・プログラム”は、プロセッサに直接実行され及び／又は他のコンピュータ・プログラムを介して実行されるように設計された、実行可能な命令シーケンスであると定義する。コンピュータ・プログラムは、サブルーチン、機能、手続、解釈、実行可能なアプリケーションのオブジェクト・メソッド及びオブジェクト実行、アプレット、サーブレット、実行可能なソース・コード、オブジェクト・コード、アクティブＸ、共有ライブラリ／ダイナミック・ロード・ライブラリを含むことができるが、これらに限定されない。また、コンピュータ・プログラムは、ソフトウエアとしても知られている。
【００５６】
以下の説明では、“１個”との語を、１個又は１個以上と定義する。本願では、“複数の”との語を、２個又は２個以上と定義する。また、本願では、“他の”との語を、２番目又はそれ以降であると定義する。
【００５７】
以下の説明では、“含む”及び／又は“有する”の語を、“備える”の意味であると定義する（すなわち、他の構成を含みうるとの意味であると定義する）。
【００５８】
以下の説明では、データ・トークンの生成、利用、結合及び／又は処理は、そのデータ・トークンのトークン値の生成、利用、結合及び／又は処理であると定義する。
【００５９】
本願では、パラメータの利用とは、そのパラメータのパラメータ値の利用であると定義する。
【００６０】
この詳細説明の表題は、読みやすさのために挿入されており、解釈に寄与しない。
【００６１】
［２］ソフトウエア開発での課題
ソフトウエア開発における主要な課題は、以下の事項の最小化である。
１．ソフトウエアの開発及び品質保証に要求されるリソース（人的、技術的、金銭的及び時間的）
２．開発済ソフトウエア及びそれの品質保証の保守に要求されるリソース、及び。
３．ソフトウエアの開発及び保守に加えて、確実な品質保証に要する時間は、例え他のリソース（人的、金銭的及び技術的）が十分に確保できたとしても、特に重要である。
【００６２】
ソフトウエア開発の従来技術には、事実上、上述の課題に取り組んだものは無かった。“背景技術”欄で述べたような、重大な制約があるためである。
【００６３】
現状では、コンピュータ処理の能力や性能が急激に向上したために、ソフトウエアの期待や要求が急激に増大したことに、注目すべきである。しかし、人的リソース、金銭的リソース、時間的リソース、技術的リソース等のリソースの確保が不足しているために、現状の技術では、ソフトウエアの能力が完全に発揮されるような開発や実用化を行うことができない。
【００６４】
［３］ソフトウエア開発における障害の原因
現存する多様なコンピュータ・プログラムに加えて、現存するソフトウエア開発の技術、手法、ツール、環境及び応用についての広範な調査と詳細な分析を行った後、本発明者は、従来のソフトウエア開発に対する過剰なリソース要求の主たる原因を知見した。
１．ソフトウエア開発に利用できる技術、ツール及びオプションは、概して、訓練や経験を積み重ねた専門家にとっても所要時間が大きい。
２．多くの先端技術や、適用範囲の広いソフトウエア開発ツールや、デバッグ用ツールや、品質保証ツールを利用するにも拘わらず、ソフトウエアの開発や品質保証は、大部分が人間によって実行されており、一部にはマシンの補助が行われているものの、不十分で非効率的である。人間によるソフトウエア開発には、以下のような本質的限界がある。
ａ．人間は、休み無く働くことはできず、働くスピードにも限界がある。
ｂ．ソフトウエア開発には、ハイレベルの訓練や経験が求められる。
ｃ．熟練した経験豊富な開発者を見つけるのは困難であり、人件費も高い。
３．多くのコンピュータ・プログラムは長く複雑であり、そのために、大量の、時には膨大な量のリソースが、開発、保守及び／又は品質保証のために必要になる。
４．ソフトウエア・コンポーネントを開発（記述）するための既定ルールの大部分は、開発中のコンピュータ・プログラムの些細な変更が膨大な変更を招くように、設計されている。それゆえ、何らかの変更によって、リソースの追加が必要になる。多くの場合、開発中のコンピュータ・プログラムに変更があると、そのコンピュータ・プログラムの開発に元々消費していたリソースよりも更に多くのリソースが必要になる。この苦労を軽減・改善するために利用できる技術やソフトウエア開発ツールは、非常に複雑であったり、非常に低性能であったりする。
【００６５】
［４］成すべきこと
ソフトウエア開発における障害の主たる原因を発見した後、本発明者は、上記原因に取り組むために、以下のことが必要性であると結論づけた。
１．コンピュータ・プログラムの開発、保守及び／又は品質保証における、コンピュータ及び／又はマシンによる貢献を、可能な限り高める必要がある。
２．残りの貢献は、人間によって成されるが、もっと低減すると共に、簡素化し、簡単化する必要がある。これにより、人的リソースに対する要求は、時間、数、訓練、経験及び費用の面で低減される。
【００６６】
［５］ソフトウエア開発における課題を解決する発明の概念及び手法
従来技術の主たる課題である、ソフトウエアの開発、保守及び品質保証に要求されるリソース（人的、技術的、金銭的及び時間的）を最小化することに対して、本発明者は十分に取り組んだ。本発明の実施形態の一の観点に係る方法発明により、コンピュータ及び／又はマシンをソフトウエア開発者として機能させて、ソフトウエア開発の大部分を実行させることが可能になる。更に、この方法発明は、ソフトウエア開発の残りの部分であってソフトウエア開発者に残された部分を、簡素化して簡単にする。
【００６７】
［６］実施形態及び図面
本発明の概念及び手法は、多くの形式や態様で実行できるので、本願の図面や詳細説明に示された実施形態は、本発明の原理を理解するために検討された好適な一例にすぎず、そのため、添付図面やその記載に示された実施形態によって発明を限定する意図は無い。本発明は、付随する請求の範囲に明示された発明の趣旨、原理及び観点の範囲内において、代替され、変更され及び等価であるとされる範囲を含む。
【００６８】
添付図面の全体において、同様の参照符号は同様の構成要素を引用している。また、図面中には、本発明を完全に理解するための記載や説明が、適切な細部までなされている。しかし、特定の細部無しでも、本発明が得られ、使用できることは、明らかであろう。
【００６９】
［７］本発明の一の観点に係る実施形態（図１Ａ）
【００７０】
図１Ａは、本発明の実施形態の一の観点を示す好適なフローチャートである。
【００７１】
本発明の実施形態の一の観点では、オペレーション２０において、ソース・オブジェクト・レポジトリ１６８が生成される。ソース・オブジェクト・レポジトリ１６８は、１個以上のトークン値１５４ｎ及び／又は１個以上のコンポーネント値１４６ｎを備える、１個以上のソース・オブジェクト１６６ｎを格納するために利用される。ここで、コンポーネント値１４６ｎは、１個以上の不確定型ソース・コンポーネント１４８ｎを表している。ソース・オブジェクト・レポジトリ１６８は、データ・モデル１６４に基づいている。このデータ・モデル１６４は、ソフトウエア・コンポーネントを記述及び／又は開発する基礎となるルールに基づいて、このソフトウエア・コンポーネントのために生成される。一例（本発明を限定するものではない）として、ＳＱＬクエリ用のデータ・モデルは、このＳＱＬクエリの構文に基づいている。他の例（本発明を限定するものではない）として、クリスタル・レポートのレポート・レイアウト用のデータ・モデルは、クリスタル・レポートが開示したレポート用オブジェクト・モデルに基づいている。
【００７２】
本発明の実施形態の一の観点では、ソース・オブジェクト・レポジトリ１６８は、データ・モデル１６４に基づいて生成される。
【００７３】
本発明の実施形態の一の観点では、データ・モデル１６４は、ソフトウエア・コンポーネント１４２（ソフトウエア・ソース・コード）の既定ルール・セット１４０に基づき、１個以上の不確定型ソース・コンポーネント１４８ｎを用いて生成される。
【００７４】
本発明の実施形態の一の観点では、以下のステップにより、データ・モデル１６４が生成される。
１．既定ルール・セット１４０を選択する。選択される既定ルール・セット１４０は、１個以上のソース・コンポーネント１４４ｎの語(term)を定義する。
２．１個以上ソース・コンポーネント１４４ｎのそれぞれを、以下のカテゴリーのいずれかに分類する。
ａ．不確定型ソース・コンポーネント１４８、又は、
ｂ．確定型ソース・コンポーネント１５０。
３．１個以上のデータ・トークン１５２ｎを、各々のデータ・トークン・ルール・セット１５８ｎと共に、定義する。
４．選択した既定ルール・セット１４０及び下記のものを用いて、データ・モデル１６４を生成する。
ａ．１個以上の不確定型ソース・コンポーネント１４８ｎ、
ｂ．１個以上のデータ・トークン１５２ｎ、又は、
ｃ．これらの何れかの組み合わせ。
【００７５】
本発明の実施形態の一の観点では、データ・モデル１６４は、ソース・オブジェクト１６６、トークン値１５４及び／又はコンポーネント値１４６の再利用を可能にする。
【００７６】
本発明の実施形態の一の観点では、ソフトウエア・コンポーネント（ソフトウエア・ソース・コード）１４２のソース・コンポーネント１４４ｎは、不確定型ソース・コンポーネント１４８ｎと確定型ソース・コンポーネント１５０ｎとに分類される。ここで、分類は、以下のものに基づいて、行われる。
１．ソフトウエア・コンポーネントの記述／開発の基礎となるルール、
２．ユーザの希望
３．これらの何れかの組み合わせ。
【００７７】
一例（本発明を限定するものではない）として、ＳＱＬクエリの開始コマンド（これはソース・コンポーネント１４４である）は、データベースの記録を閲覧するためにこのＳＱＬクエリを利用するのであれば、確定型ソース・コンポーネント１５０である。なぜなら、そのようなクエリは、常に“ＳＥＬＥＣＴ”コマンドと共に開始されるからである。しかし、データベースの記録のアップデート、挿入、閲覧及び／又は削除が可能なＳＱＬクエリにおいては、開始コマンド（これはソース・コンポーネント１４４である）は、不確定型ソース・コンポーネント１４８である。なぜなら、開始コマンドは、ＳＱＬクエリの種類が判明しなければ決定できないからである。この例は、ユーザがデータベースの記録を閲覧するためのみのクエリを記述したいのであれば、データベースの記録を見るクエリを記述するためのルールのために、開始コマンドは確定型ソースコンポーネント１５０となることを示している。しかし、ユーザがデータベースの記録のアップデート、挿入、閲覧及び／又は削除をするためのクエリを記述したいのであれば、データベースのアップデート、挿入、閲覧及び／又は削除をするクエリを記述するルールのために、開始コマンドは不確定型ソース・コンポーネント１４８となる。
【００７８】
本発明の実施形態の一の観点では、オペレーション３０において、ソフトウエア・コンポーネント・コンストラクタ（ソース・コード・ジェネレータ）１７０が生成される。このソフトウエア・コンポーネント・コンストラクタ１７０は、コンピュータ・プログラムである。
【００７９】
本発明の実施形態の一の観点では、ソフトウエア・コンポーネント・コンストラクタ１７０は、１個以上のソフトウエア・コンポーネント１４４ｎを構築（生成）するために利用される。一例（本発明を限定するものではない）として、ソフトウエア・コンポーネント・コンストラクタ１７０は、１個以上のパラメータ１６０ｎを用いて特定されたユーザの要求に対応する作動時間中に、ソフトウエア・コンポーネント１４２としての納品書登録フォームを生成（構築）するために、利用することができる。
【００８０】
本発明の実施形態の一の観点では、ソフトウエア・コンポーネント・コンストラクタ１７０は、１個以上のソフトウエア・コンポーネント１４２ｎを構築するために、１個以上のソース・オブジェクト１６６ｎを、１個以上のソース・オブジェクト・レポジトリ１６８ｎから取り出す。
【００８１】
本発明の実施形態の一の観点では、ソフトウエア・コンポーネント・コンストラクタ１７０は、１個以上のソフトウエア・コンポーネント１４２ｎを構築するための作動時間中に、ユーザから、１個以上のパラメータ値１６２ｎを受け取る。
【００８２】
本発明の実施形態の一の観点では、ソフトウエア・コンポーネント・コンストラクタ１７０は、コンピュータ・プログラムのユーザ・インターフェイス・レベルで、パラメータ値１６２を受け取る。
【００８３】
本発明の実施形態の一の観点では、ソフトウエア・コンポーネント・コンストラクタ１７０は、作動時間中に、１個以上のソフトウエア・コンポーネント１４２ｎを構築するために利用される。
【００８４】
本発明の実施形態の一の観点では、オペレーション４０において、ソフトウエア・コンポーネント・コンストラクタ１７０が、ソース・オブジェクト１６６を使用して、ソフトウエア・コンポーネント１４２を構築する。このソース・オブジェクト１６６は、ソフトウエア・コンポーネント１４２を構築する前に生成されて、ソース・オブジェクト・レポジトリ１６８に格納される。
【００８５】
本発明の実施形態の一の観点では、ソース・オブジェクト１６６は、パラメータ１６０と共に、複数のソフトウエア・コンポーネント１４２ｎを生成するために使用することができる。
【００８６】
［８］本発明の一の観点に係る実施形態（図１Ｂ）
図１Ｂは、本発明の一の観点に係る実施形態に関するものであり、図１Ａのオペレーション２０、３０及び４０を、より詳細に示す好適なフローチャートである。
【００８７】
端子１０８において、好適なフローチャートが開始する。
【００８８】
本発明の実施形態の一の観点では、オペレーション１１０において、“既定ルール・セット１４０”が選択される。ここで、既定ルール・セット１４０には“ソフトウエア・コンポーネント１４２”を構築する能力があり、ソフトウエア・コンポーネント１４２は構築を要望されたソフトウエア・コンポーネントである。本発明の実施形態の一の観点では、既定ルール・セット１４０は、この既定ルール・セット１４０の既定ルールが違反となってソフトウエア・コンポーネント１４２が適切な既定ルール・セットを基礎として構築できなくなる範囲内のものでなければ、任意のものが適合可能である。本発明の実施形態の一の観点では、複数の既定ルール・セット１４０ｎ（ここでｎ≧１）を選択できる。本発明の実施形態の一の観点では、複数のソフトウエア・コンポーネント１４２ｎを、既定ルール・セット１４０を基礎として構築できる。本発明の実施形態の一の観点では、複数のソフトウエア・コンポーネント１４２ｎを、１個以上の既定ルール・セット１４０を基礎として構築できる。
【００８９】
以下は、選択された既定ルール・セットの幾つかの例である。本発明の実施形態は、これらの例に限定されない。
１．オラクル・データベース用のＳＥＬＥＣＴクエリ（これはソフトウエア・コンポーネント１４２である）を構築するための既定ルール・セット１４０であって、オラクル・データベースのバージョンが９未満のもの。
２．オラクル・データベース用のＳＥＬＥＣＴクエリ（これはソフトウエア・コンポーネント１４２である）を構築するための既定ルール・セット１４０であって、オラクル・データベースのバージョンが９以上のもの。
３．マイクロソフト・アクセス用のＳＥＬＥＣＴクエリ（これはソフトウエア・コンポーネント１４２である）を構築するための既定ルール・セット１４０。
４．クリスタル・レポート用のレポート・レイアウト（これはソフトウエア・コンポーネント１４２である）を構築するための既定ルール・セット１４０。
５．特定の企業組織用給料支払簿の処理を行うコンピュータ・プログラム（これはソフトウエア・コンポーネント１４２である）を生成するための既定ルール・セット１４０。
６．特定国の課税規定に応じて物品税を計算するソフトウエア・モジュール（これはソフトウエア・コンポーネント１４２である）を生成するための既定ルール・セット１４０。
７．マイクロソフト・ビジュアル・ベイシック６環境で、データ登録フォーム（これはソフトウエア・コンポーネント１４２である）を生成するための既定ルール・セット１４０。
【００９０】
以下は、選択された既定ルール・セットの適合性の幾つかの例である。本発明の実施形態は、これらの例に限定されない。
１．ＳＥＬＥＣＴクエリ（これはソフトウエア・コンポーネント１４２である）を構築するための既定ルール・セット１４０は、ＳＥＬＥＣＴクエリ内で開き括弧及び閉じ括弧についてのＷＨＥＲＥ句が必須とする方法に適合している。
２．マイクロソフト・アクセス内でレポート・レイアウト（これはソフトウエア・コンポーネント１４２である）を構築するための既定ルール・セット１４０は、レポート・レイアウト内の全てのテキストボックスの名称を“ｔｘｔ”で始め、引用符を付けないとの方法に適合している。
３．特定国の課税規定に応じて物品税を計算するソフトウエア・モジュール（これはソフトウエア・コンポーネント１４２である）を生成するための既定ルール・セット１４０は、物品税が課税されない場所では何処でも物品税０％を付加するとの方法に適合している。
【００９１】
本発明の実施形態の一の観点で、下位オペレーション１１０ａは、既定ルール・セット１４０にソフトウエア・コンポーネント１４２の生成能力があることを示している。
【００９２】
以下は、ソフトウエア・コンポーネントの幾つかの例である。本発明の実施形態は、これらの例に限定されない。
１．レポート・レイアウトは、ソフトウエア・コンポーネント１４２である。
２．データ登録フォームは、ソフトウエア・コンポーネント１４２である。
３．メッセージ・ボックスは、ソフトウエア・コンポーネント１４２である。
４．ＳＱＬクエリは、ソフトウエア・コンポーネント１４２である。
５．探索テーブルは、ソフトウエア・コンポーネント１４２である。
６．スプレッドシートは、ソフトウエア・コンポーネント１４２である。
７．ビデオゲームは、ソフトウエア・コンポーネント１４２である。
８．ＳＱＬクエリ用のＷＨＥＲＥ句は、ソフトウエア・コンポーネント１４２である。
９．ビジネス処理ルールを実行するソフトウエア・モジュールは、ソフトウエア・コンポーネント１４２である。
【００９３】
本発明の実施形態の一の観点で、下位オペレーション１１０ｂは、既定ルール・セット１４０がソース・コンポーネント１４４によって特定されることを示している。本発明の実施形態の一の観点では、既定ルール・セット１４０は、複数のソース・コンポーネント１４４ｎの語で特定することができる。
【００９４】
以下は、ソース・コンポーネントの幾つかの例である。本発明の実施形態は、これらの例に限定されない。
１．用紙サイズは、レポート・レイアウト（これはソフトウエア・コンポーネント１４２である）のソース・コンポーネント１４４である。
２．背景色は、データ登録フォーム（これはソフトウエア・コンポーネント１４２である）のソース・コンポーネント１４４である。
３．コマンドは、ＳＱＬクエリ（これはソフトウエア・コンポーネント１４２である）のソース・コンポーネント１４４である。
４．余白は、ソース・コード・ブロック（これはコンピュータ・プログラム言語のソフトウエア・コンポーネント１４２である）のソース・コンポーネント１４４である。
５．テキストボックス幅は、テキストボックス・オブジェクト（これはソフトウエア・コンポーネント１４２である）のソース・コンポーネント１４４である。
６．税率は、税額計算ビジネス・ルール（これはソフトウエア・コンポーネント１４２である）のソース・コンポーネント１４４である。
７．ニーモニックは、アセンブリ言語のソース・コード・ブロック（これはソフトウエア・コンポーネント１４２である）のソース・コンポーネント１４４である。
【００９５】
本発明の実施形態の一の観点で、下位オペレーション１１０ｃは、ソース・コンポーネント１４４がソフトウエア・コンポーネント１４２内の“コンポーネント値１４６”で表されることを示している。本発明の実施形態の一の観点では、ソース・コンポーネント１４４は、複数のコンポーネント値１４６ｎで表すことができる。
【００９６】
以下は、コンポーネント値の幾つかの例である。本発明の実施形態は、これらの例に限定されない。
１．Ａ４、Ａ３、レターサイズ及び８．５インチ×１１インチは、レポート・レイアウト（これはソフトウエア・コンポーネント１４２である）の用紙サイズ（これはソース・コンポーネント１４４である）を表すために使用できるコンポーネント値１４６１−４である。
２．長整数値は、データ登録フォーム（これはソフトウエア・コンポーネント１４２である）の背景色（これはソース・コンポーネント１４４である）を表現するために使用するコンポーネント値１４６である。
３．ＳＥＬＥＣＴ、ＵＰＤＡＴＥ、ＤＥＬＥＴＥ、ＩＮＳＥＲＴ ＩＮＴＯ、ＣＲＥＡＴＥ
ＤＡＴＡＢＡＳＥ及びＡＬＴＥＲ ＤＡＴＡＢＡＳＥは、ＳＱＬクエリ（これはソフトウエア・コンポーネント１４２である）のコマンド（これはソース・コンポーネント１４４である）を表すために使用するコンポーネント値１４６１−６である。
４．スペース文字及びタブ文字は、コンピュータ・プログラム言語のソース・コード・ブロック（これはソフトウエア・コンポーネント１４２である）の余白（これはソース・コンポーネント１４４である）を表すために使用できるコンポーネント値１４６１−２である。
５．正整数は、テキストボックス・オブジェクト（これはソフトウエア・コンポーネント１４２である）のテキストボックス幅（これはソース・コンポーネント１４４である）を表すために使用されるコンポーネント値１４４である。
６．数値は、税金計算ビジネス・ルール（これはソフトウエア・コンポーネント１４２である）の税率（これはソース・コンポーネント１４４である）を表すために使用されるコンポーネント値１４４である。
７．ＭＯＶ、ＸＯＲ及びＣＭＰは、アセンブリ言語のソース・コード・ブロック（これはソフトウエア・コンポーネント１４２である）のニーモニック（これはソース・コンポーネント１４４である）を表すために使用されるコンポーネント値１４４１−３である。
【００９７】
本発明の実施形態の一の観点では、オペレーション１１２で、ソース・コンポーネント１４４が以下のように分類される。
１．“不確定型ソース・コンポーネント１４８”及び／又は
２．“確定型ソース・コンポーネント１５０”
【００９８】
本発明の実施形態の一の観点では、不確定型ソース・コンポーネント１４８は、以下の何れかのコンポーネント値１４６で表される。
１．ソフトウエア・コンポーネント１４２の構築に使用するアルゴリズム及び／又はコンピュータで実行可能なロジックを用いて生成及び／又は決定できない。
２．ソフトウエア・コンポーネント１４２の構築に使用するアルゴリズム及び／又はコンピュータで実行可能なロジックを用いて生成及び／又は決定できるが、このソフトウエア・コンポーネント１４２の構築で使用するために生成することが望ましくない。
【００９９】
本発明の実施形態の一の観点では、ソース・コンポーネント１４４は、ユーザの要望に基づいて、不確定型ソース・コンポーネント１４８又は確定型ソース・コンポーネント１５０に分類される。
【０１００】
言い換えれば、ソース・コンポーネント１４４の分類も、ユーザの要望に基づいて行うことができる。例えば、レポート（これはソフトウエア・コンポーネント１４２である）の用紙サイズ（これはソース・コンポーネント１４４である）は、ユーザの要望に応じて、不確定型ソース・コンポーネント１４８に分類しても良いし、確定型ソース・コンポーネント１５０に分類しても良い（本発明を限定するものではない）。ユーザがレポートを常に特定サイズの用紙で印刷することを望む場合、用紙サイズは確定型ソース・コンポーネント１５０に分類され、他の場合は不確定型ソース・コンポーネント１４８に分類される。
【０１０１】
本発明の実施形態の一の観点では、不確定型ソース・コンポーネント１４８を表すコンポーネント値１４６が、以下の１つ以上によって、決定される。
１．データ・トークン１５２を使用する、
２．パラメータ１６０を使用する、
３．ソース・オブジェクト１６６から取り出す、
４．これらの何れかの組み合わせ。
【０１０２】
以下は、不確定型ソース・コンポーネント１４８の幾つかの例である。本発明の実施形態は、これらの例に限定されない。
１．カラム名は、ＳＱＬクエリ（これはソフトウエア・コンポーネント１４２である）の不確定型ソース・コンポーネント１４８である。
２．日付は、ＳＱＬクエリ（これはソフトウエア・コンポーネント１４２である）のＷＨＥＲＥ句（これもソフトウエア・コンポーネント１４２である）の不確定型ソース・コンポーネント１４８である。
３．レポート・タイトルは、レポート・レイアウト（これはソフトウエア・コンポーネント１４２である）の不確定型ソース・コンポーネント１４８である。
４．余白は、ＪＡＶＡプログラム言語のソース・コード・ブロック（これはソフトウエア・コンポーネント１４２である）では、不確定型ソース・コンポーネント１４８に分類してもよい。なぜなら、余白を不確定型ソース・コンポーネント１４８に分類すると、タブ記号又はスペース記号のいずれでも表すことができ、また、余白を、コンピュータで実行可能なロジックを用いて決定するのは、望ましくないからである。
５．ＳＱＬクエリ（これはソフトウエア・コンポーネント１４２である）中では、コマンドは、不確定型ソース・コンポーネント１４８に分類することができる。なぜなら、コマンドを不確定型ソース・コンポーネント１４８に分類すると、ＳＥＬＥＣＴ、ＵＰＤＡＴＥ、ＤＥＬＥＴＥ、ＩＮＳＥＲＴ
ＩＮＴＯ、ＣＲＥＡＴＥ ＤＡＴＡＢＡＳＥ及びＡＬＴＥＲ ＤＡＴＡＢＡＳＥ（これらはそれぞれコンポーネント値１４６１−６である）で表せるからである。従って、不確定型ソース・コンポーネント１４８に分類されたコマンドについて、ＳＱＬクエリ（これはソフトウエア・コンポーネント１４２である）についてのある種の暗黙の或いは明示の情報無しに、コンピュータで実行可能なロジックを用いて、コンポーネント値１４６を決定することはできない。
【０１０３】
本発明の実施形態の一の観点では、不確定型ソース・コンポーネント１４８以外のソース・コンポーネント１４４は、確定型ソース・コンポーネント１５０とできる。
【０１０４】
以下は、確定型ソース・コンポーネント１５０の幾つかの例である。本発明の実施形態は、これらの例に限定されない。
１．ＳＥＬＥＣＴクエリ（これはソフトウエア・コンポーネント１４２である）中では、コマンドは、確定型ソース・コンポーネント１４８に分類することができる。なぜなら、コマンドを確定型ソース・コンポーネント１５０に分類すると、“ＳＥＬＥＣＴ”（これはコンポーネント値１４６である）のみで表せるからである。
２．ＪＡＶＡプログラム言語のソース・コード・ブロック（これはソフトウエア・コンポーネント１４２である）の余白は、確定型ソース・コンポーネント１５０に分類することができる。なぜなら、余白を確定型ソース・コンポーネント１５０に分類すると、タブ記号（これはコンポーネント値１４６である）で表せるからである。
３．レポート・レイアウト（これはソフトウエア・コンポーネント１４２である）のページ番号は、確定型ソース・コンポーネント１５０に分類することができる。なぜなら、ページ番号を確定型ソース・コンポーネント１５０に分類すると、数値（これはコンポーネント値１４６である）で表すことができ、コンピュータで実行可能なロジックを用いて決定できるからである。
【０１０５】
本発明の実施形態の一の観点では、オペレーション１１４で、“データ・トークン１５２”が定義される。ここで、データ・トークン１５２は、ソフトウエア・コンポーネント１４２の構築に使用する必要がある。
【０１０６】
本発明の実施形態の一の観点では、データ・トークン１５２は、ソース・コンポーネント１４４のために定義される。このソース・コンポーネント１４４のコンポーネント値は、ソフトウエア・コンポーネント１４２の構築を行うための作動時間中に決定されるが、かかる値は、コンピュータで実行可能なロジック及び／又はパラメータ１６０を用いても決定できない。言い換えれば、データ・トークン１５２は、ソフトウエア・コンポーネント・コンストラクタ１７０が以下の決定を行うために使用される。
１．ソフトウエア・コンポーネント１４２を構築するために利用するコンポーネント値１４６
２．ソフトウエア・コンポーネント１４２を構築するための、コンポーネント値１４６の利用方法
３．ソフトウエア・コンポーネント１４２を構築する方法
４．これらの何れかの組み合わせ。
【０１０７】
本発明の実施形態の一の観点では、データ・トークン１５２は、以下の目的で定義される。
１．不確定型ソース・コンポーネント１４８及び／又は確定型ソース・コンポーネント１５０のコンポーネント値１４６の決定。このコンポーネント値１４６は、ソフトウエア・コンポーネント１４２の構築を行うための作動時間中に決定することが望まれ、コンピュータで実行可能なロジック及び／又はパラメータ１６０を用いても決定できない。
２．ソフトウエア・コンポーネント１４２の構築にコンポーネント値１４６を利用する方法の決定。かかる方法は、作動時間中に決定されることを望まれ、コンピュータで実行可能なロジック及び／又はパラメータ１６０を用いても決定できない。
３．これらの何れかの組み合わせ。
【０１０８】
言い換えれば、データ・トークン１５２は、作動時間中に、ソフトウエア・コンポーネント１４２を構築するためのコンポーネント値１４６及び／又は方法を決定するために定義される。ここで、コンポーネント値１４６及び／又はソフトウエア・コンポーネント１４２の構築方法は作動時間中に決定されることが望まれ、かかる決定は、ソフトウエア・コンポーネント１４２を構築するためのコンピュータで実行可能なロジック及び／又はパラメータ１６０を用いても、行えない。
【０１０９】
本発明の実施形態の一の観点では、データ・トークン１５２を定義して、作動時間中に、コンピュータで実行可能なロジックを利用した、ソフトウエア・コンポーネントの自動構築を行う。
【０１１０】
本発明の実施形態の一の観点では、トークン値１５４とコンポーネント値１４６との関連づけにより、ソフトウエア・コンポーネント・コンストラクタ１７０に、特別なタイプのコンピュータが実行可能なロジックを付加する必要がある場所を決定させることができる。言い換えれば、トークン値１５４とコンポーネント値１４６との関連づけは、ソフトウエア・コンポーネント・コンストラクタ１７０に、ソフトウエア開発者のように振る舞わせることを可能にする。
【０１１１】
言い換えれば、データ・トークン１５２は、マシン（コンピュータ）がソフトウエア・コンポーネント１４２を構築する作動時間中にタスクを実行するように定義されるが、このタスクは、通常は人的知能を要求するにも拘わらず、マシンがタスク実行の内容(what)、時間(when)及び場所(where)を判断できる場合にはコンピュータで実行可能なロジックを利用して、実行することができる。トークン値１５４で表されたデータ・トークン１５２は、マシンに、タスク実行の内容、時間及び場所が判断できるようにする。
【０１１２】
本発明の実施形態の一の観点では、データ・トークン１５２は、データ・トークン・ルール・セット１５８と共に生成される。このデータ・トークン・ルール・セット１５６によって、トークン値１５４を生成できるようにする方法や、トークン値１５４をコンポーネント値１４６と結合できるようにする方法や、トークン値１５４を処理できるようにする方法を特定する。トークン値１５４の処理によってトークン結果１５６が生成され、このトークン結果１５６がソフトウエア・コンポーネント１４２の構築に利用される。
【０１１３】
本発明の実施形態の一の観点では、トークン値１５４は、パラメータ値１６２を用いて取り出される。
【０１１４】
本発明の実施形態の一の観点では、トークン値１５４は、処理せずに利用される。
【０１１５】
本発明の実施形態の一の観点では、トークン値１５４は、パラメータ値１６２を用いて処理される。
【０１１６】
本発明の実施形態の一の観点では、トークン値１５４は、ソフトウエア・コンポーネント１４２を構築するための処理を行わずに、利用される。
【０１１７】
本発明の実施形態の一の観点では、トークン値１５４の処理は、プロセッサで実行可能な命令のセットの実行を含んでいる。
【０１１８】
本発明の実施形態の一の観点では、トークン値１５４は、コンポーネント値１４６に埋め込まれる。
【０１１９】
本発明の実施形態の一の観点では、トークン値１５４は、暗黙の内に（実質的に）、コンポーネント値１４６と結合される。
【０１２０】
本発明の実施形態の一の観点では、コンポーネント値１４６は、トークン値１５４を用いて取り出される。
【０１２１】
本発明の実施形態の一の観点では、コンポーネント値１４６は、パラメータ値１６２を用いて取り出される。
【０１２２】
本発明の実施形態の一の観点において、下位オペレーション１１１ａは、データ・トークン１５２がトークン値１５４で表されることを示している。
【０１２３】
本発明の実施形態の一の観点において、下位オペレーション１１１ｂは、“トークン結果１５６”がトークン値１５４の処理によって取得できることを示している。ここで、トークン値１５４は、“パラメータ”１６０を利用して処理される。
【０１２４】
本発明の実施形態の一の観点において、下位オペレーション１１４ｃが“データ・トークン・ルール・セット１５８”を備えていることを示している。ここで、データ・トークン・ルール・セット１５８は、データ・トークン１５２と共に定義される。本発明の実施形態の一の観点では、データ・トークン・ルール・セット１５８は、１個以上のルールを備え、これにより、データ・トークン１５２を使用してソフトウエア・コンポーネント１４２を構築するための１個以上の方法が特定される。本発明の実施形態の一の観点では、データ・トークン・ルール・セット１５８は、データ・トークン１５２に対して以下のことを行う方法を特定する。
１．データ・トークン１５２を、トークン値１５２によって表現する。
２．データ・トークン１５２を、トークン値１５４に代えて、暗黙に及び／又は明確にコンポーネント値１４６に結合する。
３．データ・トークン１５２を、ソフトウエア・コンポーネント１４２を構築するために使用する。
４．データ・トークン１５２を、トークン結果１５６を得るために処理し、そして、このトークン結果１５６を、ソフトウエア・コンポーネント１４２の構築に使用する。
【０１２５】
トークン値１５４は、暗黙に、コンポーネント値１４６に結合することができる。この暗黙の結合は、ソフトウエア・コンポーネント・コンストラクタ１７０によって実行される。一例（本発明を限定するものではない）として、ソフトウエア・コンポーネント・コンストラクタ１７０は、トークン値１５４がソース・コンポーネント１４４のコンポーネント値１４６に結合していると見做すことができる。また、他の例として、ソフトウエア・コンポーネント・コンストラクタ１７０は、トークン値１５４がソース・コンポーネント１４４の特定のタイプのコンポーネント値１４６ｎと結合していると見做すことができる。
【０１２６】
トークン値１５４は、明確に、コンポーネント値１４６に結合することができる。ここで、トークン値１５４は、ソース・コンポーネント１４４のコンポーネント値１４６と明確に結合している。明確な結合は、ソース・オブジェクト１６６及び／又はソフトウエア・コンポーネント・コンストラクタ１７０の中で、行うことができる。
【０１２７】
データ・トークン１５２は、通常は人間が行うソフトウエア・コンポーネント１４２の構築の、タスク自動化に使用される。
【０１２８】
データ・トークン１５２は、ソフトウエア・コンポーネント１４２の構築に要求される全てのタスク自動化であって、アルゴリズム及び／又はコンピュータで実行可能なロジックを基礎として実行できるものに使用できる。
【０１２９】
本発明の実施形態の一の観点において、データ・トークン１５２のトークン値１５４は、パラメータ１６０のパラメータ値１６２を用いて決定することができる。
【０１３０】
以下は、データ・トークンの使用方法の、幾つかの例である。本発明の実施形態は、これらの例に限定されない。
１．ソフトウエア・コンポーネント１４２を構築するためのコンポーネント値１４６の生成。
２．ソフトウエア・コンポーネント１４２を構築するためのコンポーネント値１４６の変更。
３．ソフトウエア・コンポーネント１４２を構築するための好適なコンポーネント値１４６の決定。
４．ソース・コンポーネント１４４のための好適なコンポーネント値１４６の決定。
５．ソフトウエア・コンポーネント１４２を構築するためのコンポーネント値１４６の取り出し。
６．ソフトウエア・コンポーネント１４２を構築するための、複数のコンポーネント値１４６ｎの順序の決定。
７．ソフトウエア・コンポーネント１４２を構築するためのコンポーネント値１４６の再利用。
８．ソフトウエア・コンポーネント１４２を構築するための、複数のコンポーネント値１４６ｎの再利用
９．ソフトウエア・コンポーネント１４２を構築する方法の変更。
【０１３１】
データ・トークン１５２は、ソフトウエア・コンポーネント１４２の構築の他の部分を自動化する方法であって、アルゴリズム及び／又はコンピュータで実行可能なロジックを基礎として自動化できる、多数の他の方法に使用することができる。
【０１３２】
また、データ・トークン１５２は、幾つかの望ましい処理及び／又はタスクを呼び出すために使用できる。一例（本発明を限定するものではない）として、データ・トークン１５２のトークン値１５４を処理するとき、ネットワーク接続を確立すること、新しいプログラムを開始すること、存在するプログラムを終了すること、データベース・テーブルのコンポーネント値１４６を分割すること、ユーザの入力を要求すること、ユーザとの対話(interaction)を呼び出すこと、１個以上のソフトウエア・コンポーネント１４２を構築すること、マシンを始動させること、マシンを停止させること等ができる。
【０１３３】
また、データ・トークン１５２は、ハードウエア・コンポーネント上及び／又はソフトウエア・コンポーネント内のプロセスの呼び出しに使用することができる。そのようなコンポーネントとしては、リモート・コンピュータ、ローカル・コンピュータ、サーバ、ネットワーク・コンピュータ、ソフトウエア処理、ストレージ・デバイス、携帯デバイス、通信デバイス、ＰＬＣ(Programable Logic Controller)、コンピュータに接続されたハードウエアが含まれるが、これらには限定されない。
【０１３４】
本発明の実施形態の一の観点では、オペレーション１１６において、１個以上のパラメータ１６０ｎが定義される。
【０１３５】
本発明の実施形態の一の観点では、パラメータ１６０は、作動時間に、ユーザによるコンポーネント値１４６及び／又はトークン値１５４の定義が可能となるように、定められる。言い換えれば、パラメータ１６０は、ユーザが、作動時間に、ソフトウエア・コンポーネント１４２の構築をコントロールできるようにする。
【０１３６】
パラメータ１６０は、パラメータ値１６２によって表される。そして、パラメータ１６０は、ユーザの希望及び／又は要求に従い、このユーザがソフトウエア・コンポーネント１４２の構築処理に対する情報のやりとり、指示、制御の何れか１つ以上を行うことを可能にする。ユーザの要望及び／又は要求は、パラメータ値１６２ｎの形式に則ったコンポーネント値１４６ｎ及び／又はトークン値１５４ｎの入力することで、行われる。言い換えれば、コンポーネント値１４６及び／又はトークン値１５４は作動時間にパラメータ値１６２によって決定され、このパラメータ値は作動時間にユーザが入力する。
【０１３７】
本発明の実施形態の一の観点では、パラメータ１６０を、ソフトウエア・コンポーネント・コンストラクタ１７０がソフトウエア・コンポーネント１４２を構築するために、使用することができる。ここで、ソフトウエア・コンポーネント・コンストラクタ１７０は、パラメータ１６０を基礎としてソフトウエア・コンポーネント１４２を構築する方法を決定する。
【０１３８】
本発明の実施形態の一の観点では、パラメータ１６０は、ソフトウエア・コンポーネント１４２の構築に使用するソース・オブジェクト１６６を決定するために、定義される。
【０１３９】
本発明の実施形態の一の観点では、下位オペレーション１１６ａは、パラメータ１６０が、ユーザによって特定され及び／又は入力される“パラメータ値１６２”で表されることを示している。ここで、パラメータ値１６２は、データ値である。また、パラメータ１６０は、パラメータ値１６２の初期値と共に定義することができる。
【０１４０】
パラメータ値１６２の特定及び／又は入力は、パラメータ１６０が利用される度にユーザが行うこともできるし、既に特定されたパラメータ値１６２の変更をユーザが望むときにのみ行うこともできる。後者の場合、パラメータ値１６２は、以下のことが可能になる。
１．ユーザによって、最初のパラメータ値１６２を特定すること、及び／又は
２．コンピュータ読出可能な記録媒体にパラメータ値１６２が格納され、要求されたときは常に、このコンピュータ読出可能な記録媒体から取り出すこと。
【０１４１】
また、本発明の実施形態の一の観点では、パラメータ１６０は、不確定型ソース・コンポーネント１４８のコンポーネント値１４６を決定するために定義することができる。
【０１４２】
以下は、パラメータ使用方法の、２つの例である。これらの例は、発明を網羅せず、その全てではない。更には、本発明は、以下の例に従属しているわけではなく、限定されない。
１．複数のレポート欄を有するレポート・レイアウト（これはソフトウエア・コンポーネント１４２である）を構築するために、パラメータ１６０を利用して、ユーザが望むレポート欄を、その命令と共に特定することを可能にする。
２．ＳＱＬクエリ（これはソフトウエア・コンポーネント１４２である）を構築するために、パラメータ１６０を使用して、ユーザによるＳＱＬクエリのターゲット・プラットフォームの特定を可能にする。ここで、ターゲット・プラットフォームは、オラクル又はマイクロソフトＳＱＬサーバである。
３．レポート・レイアウト（これはソフトウエア・コンポーネント１４２である）を構築するために、パラメータ１６０を定義して、用紙サイズの値を決定する。ここで、用紙サイズは、不確定型ソース・コンポーネント１４８である。
【０１４３】
ユーザは、１個以上の方法を用いて、パラメータ値１６２を特定することができる。これらの方法は、キーボード、タッチスクリーン、音声命令、ジェスチャー、眼のまばたき、眼のスキャン、デジタル変換されたアナログ信号によるデータ登録と、指紋検出や眼の検出、顔の検出、ＤＮＡ検出等による人を識別を含むことができるが、これらには限定されない。
【０１４４】
本発明の実施形態の一の観点では、オペレーション１１８で、データ・モデル１６４が生成される。ここで、データ・モデル１６４は、“ソース・オブジェクト・レポジトリ１６８”を生成するに好適且つ十分である。そして、ソース・オブジェクト・レポジトリ１６８は、以下について好適且つ十分である。
１．必須要件
ａ．“ソース・オブジェクト１６６”を格納すること。ここで、ソース・オブジェクト１６６は、１個以上の不確定型ソース・コンポーネント１４８ｎを表す１個以上のコンポーネント値１４６ｎを備えることができる。
ｂ．ソース・オブジェクト１６６を識別し、解決し、取り出すこと。
２．希望に応じたオプション
ａ．複数のソース・オブジェクト１６６を格納すること。
ｂ．複数のソース・オブジェクト１６６ｎから、１個のソース・オブジェクト１６６を識別し、解決し、取り出すこと。かかる場合、ソース・オブジェクト・レポジトリ１６８は、複数のソース・オブジェクト１６６ｎから１個のソース・オブジェクト１６６を識別することを可能にするメカニズムを備えるべきである。
ｃ．望ましい方法、望ましい階層及び／又は複数のソース・コンポーネント１４４ｎ間の望ましい関係の中で、実行・管理する。ここで、望ましい階層及び／又は望ましい関係は、以下に基づいて決定される。
ｉ．既定ルール・セット１４０、及び／又は、
ii．ソフトウエア・コンポーネント１４２内のコンポーネント値１４６の機能及び目的
ｄ．複数のコンポーネント値１４６の中から、望ましい命令を実行・管理する。
ｅ．複数のソース・オブジェクト１６６ｎ及び／又はその望ましい一部分の中からソース・オブジェクト１６６を使用し、他のソース・オブジェクト１６６をその複数のソース・オブジェクト１６６ｎの中から使用する。
ｆ．データ・トークン・ルール・セット１５８に従って、トークン値１５４を、コンポーネント値１４６、及び／又は、ソース・オブジェクト・レポジトリ１６８が備える他のトークン値１５４に、結合させる。トークン値１５４は、以下の１個以上によって結合しても良い。
ｉ．コンポーネント値１４６に埋め込むこと。
ii．ソース・オブジェクト１６６に埋め込むこと。
iii．ソース・オブジェクト・レポジトリ１６８に格納されたコンポーネント値１４６に、暗黙的に結合される。
iv．参照値を利用して、ソース・オブジェクト・レポジトリ１６８に格納されたコンポーネント値１４６に結合する。ここで、参照値は、データ値である。
ｖ．これらの何れかの組み合わせ。
ｇ．以上の何れかの組み合わせ。
【０１４５】
本発明の実施形態の一の観点では、データ・モデル１６４は、１個以上のコンポーネント値１４６ｎを格納するための属性（フィールド或いはカラムと称しても良い）を、データ・トークン１５２もパラメータ１６０も定義されていない全ての不確定型ソース・コンポーネント１４８について、備えている。
【０１４６】
下位オペレーション１１８ａは、オペレーション１１８で生成されたデータ・モデル１６４がソース・オブジェクト１６６を格納するに十分であることを示している。
【０１４７】
本発明の実施形態の一の観点では、オペレーション１２０で、ソース・オブジェクト・レポジトリ１６８が、データ・モデル１６４に基づいて、望ましい方法で生成される。本発明の実施形態の一の観点では、このソース・オブジェクト・レポジトリ１６８は、以下のうちの１個以上を用いて生成される。
１．構造データ
２．下位の構造データ
３．これらの何れかの組み合わせ。
【０１４８】
本発明の実施形態の一の観点では、ソース・オブジェクト・レポジトリ１６８は、何らかの好適なデータ構造を利用して生成される。ここで、データ構造としては、データ・ベース・テーブル、カンマ区切り型テキストファイル(comma separated text file)、スプレッドシート、行列、オブジェクト、配列、変数のセット及びリンク・リストを含むことができるが、これらに限定されない。
【０１４９】
本発明の実施形態の一の観点では、ソース・オブジェクト・レポジトリ１６８は、ソース・オブジェクト１６６を格納することができる。ここで、ソース・オブジェクト１６６は、コンポーネント値１４６で表される不確定型ソース・コンポーネント１４８を備えており、また、この不確定型ソース・コンポーネント１４８は、ソフトウエア・コンポーネント１４２の構築に使用される。
【０１５０】
本発明の実施形態の一の観点では、ソース・オブジェクト・レポジトリ１６８は、ソース・オブジェクト１６６及び不確定型ソース・コンポーネント１４８（コンポーネント値１４６で表される）を参照してソース・オブジェクト・レポジトリ１６８内のコンポーネント値１４６を識別することが可能である。
【０１５１】
本発明の実施形態の一の観点では、ソース・オブジェクト・レポジトリ１６８は、以下のことが可能なトークン値１５４を備える。
１．コンポーネント値１４６と結合する。
２．トークン値１５４が格納されたものと同じソース・オブジェクト１６６の、コンポーネント値１４６を参照する。
３．他のソース・オブジェクト１６６に格納されたコンポーネント値１４６を参照する。
４．これらの何れかの組み合わせ。
【０１５２】
本発明の実施形態の一の観点では、ソース・オブジェクト・レポジトリ１６８は、複数の、所望の階層のソース・コンポーネント１４４ｎを備えている。
【０１５３】
本発明の実施形態の一の観点では、ソース・オブジェクト・レポジトリ１６８は、複数の、所望の順序のコンポーネント値１４６ｎを備えている。
【０１５４】
本発明の実施形態の一の観点では、ソース・オブジェクト・レポジトリ１６８に格納されたソース・オブジェクト１６６は、択一的に識別できる。
【０１５５】
本発明の実施形態の一の観点では、オペレーション１１８で、“ソフトウエア・コンポーネント・コンストラクタ１７０”が生成される。ここで、ソフトウエア・コンポーネント・コンストラクタ１７０は、既定ルール・セット１４０に基づき、以下の１個以上を用いて、ソフトウエア・コンポーネント１４２を構築する機能を備えたコンピュータ・プログラムである。
１．ソース・コンポーネント１４４を表すコンポーネント値１４６、
２．パラメータ１６０のパラメータ値１６２、
３．データ・トークン１５２を表すトークン値１５４、
４．これらの何れかの組み合わせ。
【０１５６】
本発明の実施形態の一の観点では、ソフトウエア・コンポーネント・コンストラクタ１７０は、ソース・オブジェクト１６６を取り出すためのソース・オブジェクト・レポジトリ１６８の代わりに、ソース・オブジェクト１６６のデータ・モデル１６４を使用する。
【０１５７】
本発明の実施形態の一の観点では、ソフトウエア・コンポーネント・コンストラクタ１７０は、ソフトウエア・コンポーネント１４２の既定ルール・セット１４０を備えており、これを実行する。
【０１５８】
また、本発明の実施形態の一の観点では、既定ルール・セット１４０は、好適な既定ルール・セット１４０を用いてソフトウエア・コンポーネント１４２を生成できるという点で、ソフトウエア・コンポーネント・コンストラクタ１７０を生成するための好適な方法に適合している。
【０１５９】
本発明の実施形態の一の観点では、既定ルール・セット１４０は、要求や必要に応じて、ソフトウエア・コンポーネント・コンストラクタ１７０の構築に適合させることができる。ここで、適合は、この適合後の既定ルール・セット１４０を基礎としてソフトウエア・コンポーネント１４２を構築できないという事態が生じないように、行われる。本発明の実施形態の一の観点では、既定ルール・セット１４０は、既定ルール・セット１４０に基づき、以下の１個以上を用いて、ソフトウエア・コンポーネント・コンストラクタ１７０によるソフトウエア・コンポーネント１４２の構築を可能にする機能を備える。
１．コンポーネント値１４６、
２．トークン値１５４、
３．これらの何れかの組み合わせ。
【０１６０】
本発明の実施形態の一の観点では、ソフトウエア・コンポーネント・コンストラクタ１７０は、ソフトウエア・コンポーネント１４２を構築しているとき、データ・トークン１５２を使用する。ここで、ソフトウエア・コンポーネント・コンストラクタ１７０は、作動時間中、以下のものを決定するために、データ・トークン１５２を利用する。
１．コンポーネント値１４６、
２．コンポーネント値１４６をソフトウエア・コンポーネント１４２の構築に利用する方法、
３．ソフトウエア・コンポーネント１４２を生成する方法、
４．これらの何れかの組み合わせ。
【０１６１】
言い換えれば、ソフトウエア・コンポーネント・コンストラクタ１７０は、あたかも開発者が作業するように、データ・トークン１５２を利用してソフトウエア・コンポーネント１４２を構築する。
【０１６２】
一例（本発明を限定するものではない）として、ソフトウエア・コンポーネント・コンストラクタ１７０は、データベース・クエリ、レポート・レイアウト、データ登録フォーム、メニュー、及び／又はカスタマイズされた在庫処理ルールの構築に使用できる。また、ソフトウエア・コンポーネント・コンストラクタ１７０は、作動時間中に要望に応じて多くのソフトウエア・コンポーネントを構築するコンピュータ・プログラムと統合することができる。ソフトウエア・コンポーネント・コンストラクタ１７０の統合は、ＡＰＩ(Application Programming Inerface)を使用して行っても良いし、コンピュータ・プログラム内のソフトウエア・コンポーネント・コンストラクタ１７０を、統合が要求されたソフトウエア・コンポーネント・コンストラクタ１７０に直接組み入れることによって行っても良い。
【０１６３】
本発明の実施形態の一の観点では、ソフトウエア・コンポーネント・コンストラクタ１７０が、作動時間中に、ユーザがパラメータ１６０で特定した要求に応じて、ソフトウエア・コンポーネント１４２を構築する。言い換えれば、ユーザから１個以上のパラメータ１６０ｎを受け取るコンピュータ・プログラムのレイヤは、ソフトウエア・コンポーネント・コンストラクタ１７０と結合できる。ここで、ソフトウエア・コンポーネント・コンストラクタ１７０は、入力されたパラメータ１６０ｎに応じて、１個以上のソフトウエア・コンポーネントを構築する。
【０１６４】
本発明の実施形態の一の観点では、ソフトウエア・コンポーネント・コンストラクタ１７０は、ソース・オブジェクト１６６、データ・トークン１５２及びパラメータ１６０を利用して、複数のソフトウエア・コンポーネント１４２を構築できる。言い換えれば、パラメータ１６０及びデータ・トークン１５２は、ソフトウエア・コンポーネント・コンストラクタに、ソース・オブジェクト１６６から、１個以上のソフトウエア・コンポーネント１４２ｎを構築させることができる。
【０１６５】
本発明の実施形態の一の観点では、３個の下位オペレーション１２２ａ、１２２ｂ及び１２２ｃが、オペレーション１２２に連結されている。下位オペレーション１２２ａ、１２２ｂ及び１２２ｃのそれぞれは、モジュールとしてのコンピュータ・プログラムの生成を示している。ここで、モジュールに対しては、ソフトウエア・コンポーネント１４２の構築を要求できる。下位オペレーション１２２ａ、１２２ｂ及び１２２ｃで生成されたモジュールは、それぞれ、下記の何れかである。
１．独立のコンピュータ・プログラムであって、ソフトウエア・コンポーネント・コンストラクタ１７０とリンク又は結合したもの、又は、
２．コンピュータ・プログラムであって、ソフトウエア・コンポーネント・コンストラクタ１７０との結合部分を成すもの、又は、
３．コンピュータ・プログラムであって、ネットワークを介して、ソフトウエア・コンポーネント・コンストラクタ１７０とリンクしたもの。ここで、ネットワークは、ＬＡＮ(Local Area Network)、ＭＡＮ（Metropolitan Area
Network)、ＷＡＮ(Wide Area Network)、ＰＡＮ(Personal Area Network)、ＳＡＮ(Storage Area
Network)、ＣＡＮ(Campus Area Network)、ＶＡＮ(Virtual Area Network)等である。
４．これらの何れかの組み合わせ。
【０１６６】
本発明の実施形態の一の観点では、下位オペレーション１２２ａで、“パラメータ値決定モジュール１７０ａ”を生成する。パラメータ値決定モジュール１７０ａは、パラメータ値１６２の決定に利用される。パラメータ値１６２は、下記のような、様々な方法を利用して決定できるが、他の方法でも良い。
１．ユーザが、下記の方法の１個以上を用いて入力する。但し、これらには限定されない。
ａ．入力デバイス、
ｂ．ジェスチャー、
ｃ．音声命令、
ｄ．生体入力、
ｅ．アイ・スキャン、
ｆ．顔認識、
ｇ．コンピュータとの結合が可能な思考、
ｈ．デジタル信号に変換されたアナログ信号、
ｉ．ＤＮＡによる身元確認、
ｊ．これらの何れかの組み合わせ。
２．コンピュータ読取可能な媒体からの読み出し、及び、
３．これらの何れかの組み合わせ。
【０１６７】
本発明の実施形態の一の観点では、パラメータ値決定モジュール１７０ａは、パラメータ値１６２を、コンピュータ読取可能な媒体から決定しても良いし、アルゴリズムを用いて決定しても良いし、コンピュータで実行できるロジックを用いて決定しても良い。
【０１６８】
本発明の実施形態の一の観点では、下位オペレーション１２２ｂで、“データ・トークン処理モジュール１７０ｂ”を生成する。データ・トークン処理モジュール１７０ｂは、トークン値１５４の処理に利用される。データ・トークン処理モジュール１７０ｂは、データ・トークン・ルール・セット１５８に基づいて、トークン値１５４を処理する。
【０１６９】
本発明の実施形態の一の観点では、下位オペレーション１２２ｃで、“ソース・オブジェクト決定モジュール１７０ｃ”を生成する。ソース・オブジェクト決定モジュール１７０ｃは、ソース・オブジェクト１６６を識別して、これらのソース・オブジェクト１６６からコンポーネント値１４６を決定するために、利用される。
【０１７０】
ソース・オブジェクト１６６は、様々な方法で識別できる。この方法としては、パラメータ値１６２の利用、アルゴリズム及び／又はコンピュータで実行できるロジックの利用、トークン値１５４の利用、及び／又は、これらの何れかの組み合わせがあるが、これらには限定されない。
【０１７１】
本発明の実施形態の一の観点では、ソース・オブジェクト１６６からコンポーネント値１４６を決定するときに、ソース・オブジェクト決定モジュール１７０ｃは、パラメータ値決定モジュール１７０ａが決定したパラメータ値１６２を使用でき、及び／又は、データ・トークン処理モジュール１７０ｂが処理したトークン値１５４を使用できる。
【０１７２】
本発明の実施形態の一の観点では、ソース・オブジェクト１６６１からコンポーネント値１４６１を決定するときに、ソース・オブジェクト決定モジュール１７０ｃは、他のソース・オブジェクト１６６２から他のコンポーネント値１４６２を決定することができる。ここで、ソース・オブジェクト１６６２は、ソース・オブジェクト１６６１から参照される。
【０１７３】
本発明の実施形態の一の観点では、ソース・オブジェクト１６６からコンポーネント値１４６を決定するときに、ソース・オブジェクト決定モジュール１７０ｃは、複数のソース・オブジェクト１６６ｎから複数のコンポーネント値１４６ｎを決定することができる。ここで、複数のソース・オブジェクト１６６ｎは、ソース・オブジェクト１６６から参照される。
【０１７４】
本発明の実施形態の一の観点では、ソース・オブジェクト１６６からコンポーネント値１４６を決定するときに、ソース・オブジェクト決定モジュール１７０ｃは、トークン値１５４を使用して、コンポーネント値１４６を変更したり、削除したり、及び／又は、追加したりできる。
【０１７５】
本発明の実施形態の一の観点では、オペレーション１２４で、ソース・オブジェクト１６６を生成する。ここで、ソース・オブジェクト１６６は、ソフトウエア・コンポーネント１４２を構築する機能を有する。また、ソース・オブジェクト１６６は、ソフトウエア・コンポーネント１４２の構築のために使用することもできる。ソース・オブジェクト１６６の生成は、データ・トークン・ルール・セット１５８を基礎とした、データ・トークン１５２のトークン値１５４の生成や関連付け（このトークン値１５４と、コンポーネント値１４６や他のトークン値１５４との関連付け）を含んでいてもよい。本発明の実施形態の一の観点では、ソース・オブジェクト１６６は、ソース・オブジェクト・レポジトリ１６８に格納されている。
【０１７６】
本発明の実施形態の一の観点では、オペレーション１２４で、データ・トークン１５２を表すトークン値１５４を生成して、ソース・コンポーネント１４４（ソース・オブジェクト１６６内に設けられている）を表すコンポーネント値１４６と関連付けることができる。
【０１７７】
本発明の実施形態の一の観点では、不確定型ソース・コンポーネント１４８を表すコンポーネント値１４６を備える、ソース・オブジェクト１６６を生成する。このソース・オブジェクト１６６は、ソフトウエア・コンポーネント１４２の構築に利用される。
【０１７８】
本発明の実施形態の一の観点では、トークン値１５４のコンポーネント値１４６への関連づけを、このトークン値１５４が利用でき及び／又は処理できるように行えるような方法で、ソース・オブジェクト１６６を生成する。
【０１７９】
本発明の実施形態の一の観点では、トークン値１５４を利用して、ソフトウエア・コンポーネント１４２を構築するためにコンポーネント値１４６を利用する方法を、決定する。
【０１８０】
本発明の実施形態の一の観点では、トークン値１５４を利用して、ソフトウエア・コンポーネント１４２の構築にコンポーネントを利用しないことを決定する。
【０１８１】
本発明の実施形態の一の観点では、トークン値１５４を利用して、コンポーネント値１４６を処理することや、処理後のコンポーネント値をソフトウエア・コンポーネント１４２の構築に利用することを、決定する。
【０１８２】
本発明の実施形態の一の観点では、トークン値１５４を利用して、コンポーネント値１４６を修正することや、修正後のコンポーネント値１４６をソフトウエア・コンポーネント１４２の構築に利用することを、決定する。
【０１８３】
本発明の実施形態の一の観点では、トークン値１５４を利用して、コンポーネント値１４６を変更することや、変更後のコンポーネント値１４６をソフトウエア・コンポーネント１４２の構築に利用することを、決定する。
【０１８４】
本発明の実施形態の一の観点では、トークン値１５４を利用して、コンポーネント値１４６を他のコンポーネント値１４６の生成に利用することや、生成した他のコンポーネント値１４６をソフトウエア・コンポーネント１４２の構築に利用することを、決定する。
【０１８５】
本発明の実施形態の一の観点において、トークン値１５４は、コンポーネント値１４６に埋め込まれる。
【０１８６】
本発明の実施形態の一の観点において、トークン値１５４は、ソース・オブジェクト１６６に埋め込まれる。
【０１８７】
本発明の実施形態の一の観点において、ソース・オブジェクト１６６は、ソフトウエア・コンポーネント１４２が備えていないコンポーネント値１４６を、備えている。
【０１８８】
本発明の実施形態の一の観点では、ソース・オブジェクト１６６に含まれているが、ソフトウエア・コンポーネント１４２には含まれていないコンポーネント値１４６を、以下を利用して決定する。
１．トークン値１５４、
２．トークン結果１５６、
３．パラメータ値１６２、
４．ソフトウエア・コンポーネント・コンストラクタ１７０、又は
５．これらの何れかの組み合わせ。
【０１８９】
本発明の実施形態の一の観点では、トークン結果１５６を利用して、ソフトウエア・コンポーネント１４２の構築にコンポーネント値１４６を利用する方法を、決定する。
【０１９０】
本発明の実施形態の一の観点では、トークン結果１５６を利用して、ソフトウエア・コンポーネント１４２の構築に使用しないコンポーネント値１４６を、決定する。
【０１９１】
本発明の実施形態の一の観点では、トークン結果１５６を利用して、コンポーネント値１４６を処理することや、処理後のコンポーネント値１４６を利用してソフトウエア・コンポーネント１４２を構築することを、決定する。
【０１９２】
本発明の実施形態の一の観点では、トークン結果１５６を利用して、コンポーネント値１４６を修正することや、修正後のコンポーネント値１４６を利用してソフトウエア・コンポーネント１４２を構築することを、決定する。
【０１９３】
本発明の実施形態の一の観点では、トークン結果１５６を利用して、コンポーネント値１４６を変更することや、変更後のコンポーネント値１４６を利用してソフトウエア・コンポーネント１４２を構築することを、決定する。
【０１９４】
本発明の実施形態の一の観点では、トークン結果１５６を利用して、コンポーネント値１４６を他のコンポーネント値１４６の生成に利用することや、生成した他のコンポーネント値１４６を利用してソフトウエア・コンポーネント１４２を構築することを、決定する。
【０１９５】
本発明の実施形態の一の観点では、オペレーション１２６で、ソフトウエア・コンポーネント・コンストラクタ１７０を利用した、ソフトウエア・コンポーネント１４２の構築を行う。ソフトウエア・コンポーネント１４２の構築の好適例は、図２に、より詳細に示されている。
【０１９６】
本発明の実施形態の一の観点では、ソフトウエア・コンポーネント１４２を構築するために、ソフトウエア・コンポーネント・コンストラクタ１７０が、以下のステップを実行する。
１．ユーザからパラメータ値１６２を受け取る。
２．ソース・オブジェクト１６６を識別する。
３．ソース・オブジェクト・レポジトリ１６８から、ソース・オブジェクト１６６を取り出す。
４．取り出したソース・オブジェクト１６６から、不確定型ソース・コンポーネント１  ４８のコンポーネント値１４６を取り出す。
５．トークン値１５４を処理して、トークン結果１５６を得る。
６．ソフトウエア・コンポーネント１４２を、そのソフトウエア・コンポーネント１４２の既定ルール・セット１４０に基づいて、構築する。このとき、パラメータ値１６２、不確定型ソース・コンポーネント１４８のコンポーネント値１４６、確定型ソース・コンポーネント１５０のコンポーネント値１４６及びトークン結果１５６を、使用する。
【０１９７】
本発明の実施形態の一の観点では、トークン値１５４は、ソフトウエア・コンポーネント１４２の構築のためには、処理されない。言い換えれば、トークン値１５４は、処理しなくても、ソフトウエア・コンポーネント１４２の構築に使用できる。
【０１９８】
本発明の実施形態の一の観点では、パラメータ値１６２は、ソフトウエア・コンポーネント１４２の構築には、使用されない。
【０１９９】
本発明の実施形態の一の観点では、パラメータ値１６２は、トークン値１５４の処理に使用される。
【０２００】
本発明の実施形態の一の観点では、確定型ソース・コンポーネント１５０のコンポーネント値１４６は、ソフトウエア・コンポーネント１４２の構築には、使用されない。
【０２０１】
本発明の実施形態の一の観点では、不確定型ソース・コンポーネント１４８のコンポーネント値１４６は、ソフトウエアの構築には、使用されない。
【０２０２】
オペレーション１２８では、他のソース・オブジェクト１６６が要求されているか否かが、判断される。他のソース・オブジェクト１６６が要求されている場合、フローは、オペレーション１２４に戻る。他の場合、フローは、オペレーション１３０に移動する。
【０２０３】
他のソースの生成は、既存のソース・オブジェクト１６６ｎが望ましいソフトウエア・コンポーネント１４２を構築する機能が無い場合、常に要求される。
【０２０４】
オペレーション１３０では、他のソフトウエア・コンポーネント１４２を構築するか否かが、判断される。他のソフトウエア・コンポーネント１４２が構築される場合、フローはオペレーション１２６に戻る。他の場合、フローは端子１３２に移動する。
【０２０５】
端子１３２で、このフローチャートは終了する。
【０２０６】
端子１３４は、ソース・オブジェクト１６６、ソフトウエア・コンポーネント・コンストラクタ１７０及びソース・オブジェクト・レポジトリ１６８が、所望の回数だけ使用できるようにするために示された、他の開始点である。
【０２０７】
［９］本発明の一の観点に係る実施形態（図２）
図２は、図１Ｂのオペレーション１２２で生成されたソフトウエア・コンポーネント・コンストラクタ１７０の詳細動作を示す詳細フローチャートである。このフローチャートは、本発明の実施形態の一の観点に係るソフトウエア・コンポーネント・コンストラクタ１７０の、１つの実行モードのみを示している。当該技術分野の専門家であれば、他の様々な方法で、ソフトウエア・コンポーネント・コンストラクタ１７０を構築できる。言い換えれば、図２は、オペレーション１２６を、より詳細に示している。
【０２０８】
端子２１２で、ソフトウエア・コンポーネント・コンストラクタ１７０がスタートする。
【０２０９】
本発明の実施形態の一の観点において、オペレーション２１４では、パラメータ値決定モジュール１７０ａは、１個以上のパラメータ値１６２ｎを決定する。ここで、パラメータ値１６２ｎには、１個以上の所望のソフトウエア・コンポーネント１４２の構築が、要求される。
【０２１０】
本発明の実施形態の一の観点において、オペレーション２１６では、ソース・オブジェクト１６６ｎが、ソース・オブジェクト決定モジュール１７０ｃによって識別される。ここで、ソース・オブジェクト１６６ｎは、所望のソフトウエア・コンポーネント１４２ｎの構築に使用するために、要求される。
【０２１１】
本発明の実施形態の一の観点において、オペレーション２１８では、ソース・オブジェクト決定モジュール１７０ｃが、ソース・オブジェクト１６６ｎから、コンポーネント値１４６ｎを決定する。本発明の実施形態の一の観点において、ソース・オブジェクト決定モジュール１７０ｃは、コンポーネント値１４６ｎを決定するために、以下の何れか１個以上をを使用できる。
１．パラメータ値１６２ｎ、
２．１個以上のトークン値１５４（ここで、１個以上のトークン値１５４は、データ・トークン処理モジュール１７０ｂによって処理できる。）、
３．これらの何れかの組み合わせ。
【０２１２】
オペレーション２２０では、ソフトウエア・コンポーネント・コンストラクタ１７０が、既定ルール・セット１４０ｎに基づき、以下の１個以上を使用して、所望のソフトウエア・コンポーネント１４２ｎを構築する。
１．パラメータ値１６２ｎ、
２．トークン値１５４ｎ（ここで、トークン値１５４ｎは、データ・トークン処理モジュール１７０ｂによって処理できる）、
３．コンポーネント値１４６ｎの決定結果
４．これらの何れかの組み合わせ。
【０２１３】
端子２２４で、所望のソフトウエア・コンポーネント１４２ｎの構築が、終了する。
【０２１４】
［１０］本発明の実施形態の一の観点を実行するための好適な環境
図３は、本発明の実施形態の一の観点の実行に適したコンピューティング・システム環境の好適な例を示す、好適なブロック図である。コンピューティング・システム環境は、好適なコンピュータ３０２、好適なディスプレイ・ユニット３３０、好適なプリンタ３３２、好適なスピーカ３３４、好適なキーボード３３６、好適なポインティング・デバイス３３８、好適なマイクロフォン３４０、好適なデジタイザ３４２及び好適な拡張カード３４４を含む。コンピュータ３０２は、１又は複数の好適なリモート・コンピュータ３５４に接続されており、ネットワーク環境で動作することができる。ここで、１又は複数のリモート・コンピュータ３５４は、好適な通信リンク３５０で、コンピュータ３０２に接続されている。また、好適なネットワーク補助記憶装置３５２が、通信リンク３５０を介して、コンピュータ３０２に接続されている。更に、好適なリモート補助記憶装置３５６が、１又は複数のリモート・コンピュータ３５４を介して、コンピュータ３０２に接続されている。通信リンク３５０は、好適な通信インタフェース３２６を介して、コンピュータ３０２に接続されている。
【０２１５】
図３のコンピューティング・システム環境３００は、本発明の実施形態を実行できる好適な環境の一例を示しているにすぎず、本発明の利用状態や機能性についての限定を示唆するものではない。また、本発明は、コンピューティング・システム環境３００に組み込まれて連動するいかなる部品にも依存せず、また、これらに限定されない。加えて、コンピューティング・システム環境３００は、このコンピューティング・システム環境３００内に示された部品やその組み合わせに依存していると、解釈されるべきではない。更には、コンピューティング・システム環境３００は、図示された部品には限定されるものではなく、部品の個数は構成や環境に応じて増減することができる。
【０２１６】
コンピューティング・システム環境３００に加えて、本発明の実施形態は、他の汎用の或いは特殊用途のコンピューティング・システム環境及び／又はコンピューティング・システム構成の基でも、実行できる。一例（本発明を限定しない）として、周知のコンピューティング環境又はコンピューティング構成である、パーソナル・コンピュータ、サーバ・コンピュータ、携帯型コンピュータ、ラップトップ型コンピュータ、タブレット・デバイス、ポータブル通信デバイス、携帯電話機、マルチプロセッサ型デバイス、ワークステーション、プログラミング可能なコンシューマー向け電子機器、セット・トップ・ボックス(set top box)、ゲーム機、ネットワーク・パーソナル・コンピュータ、ミニコンピュータ、大型コンピュータ、スーパー・コンピュータ、これらの何れかを含む分散型コンピューティング環境、プロセス制御コンピュータ、フライト・コンピュータ、ＧＰＳデバイス、メディア・プレーヤ、自動車制御コンピュータ等も、本発明を利用することができる。
【０２１７】
コンピュータ３０２内に図示された部品としては、好適なプロセッサ３０４、好適なバス３０６、好適なコンピュータ・メモリ３０８、好適なＲＯＭ３１０(Read Only Momory)、好適なＢＩＯＳ３１２(Basic Input
Output System)、好適なＲＡＭ３１４(Random Access Memory)、好適な補助記憶装置インタフェース３１６、好適な補助記憶装置３１８、好適なビデオ・コントローラ３２０、１又は複数の好適な入出力インタフェース・ユニット３２２、好適な拡張インタフェース３２４及び通信インタフェース３２６が含まれる。
【０２１８】
プロセッサ３０４（複数個使用されても良い）は、バス３０６に接続されている。プロセッサ３０４としては、マイクロプロセッサ、ＲＩＳＣ(Reduced Instruction Set Computer)プロセッサ及びＣＩＳＣ(Complex Instruction Set Computer)プロセッサが挙げられるが、これらに限定されない。
【０２１９】
バス３０６は、プロセッサ３０４に１個以上の部品を接続して、このプロセッサとこれら１個以上の部品とのデータ交換を容易化する。このバス３０６は、以下のうちの、１個以上を備える。
１．システム・バス、
２．周辺機器用バス、及び／又は
３．これらの何れかの組み合わせ。
【０２２０】
システム・バスは、ローカル・バス、プロセッサ・バス又はＦＳＢ(Front-Side Bus)として知られている。システム・バスは、更に、アドレス・バス、メモリ・バス、データ・バス、ノースブリッジ(NorthBridge)、ＭＣＨ(Memory Controller Hub)等を備えることができる。周辺機器用バスは、Ｉ／Ｏバスとして知られている。
【０２２１】
バス３０６としては、ＩＳＡ(Industry
Standard Architecture)バス、ＥＩＳＡ(Extended Industry
Standard Architecture)バス、ＭＣＡ(Micro Channel
Architecture)バス、ＶＥＳＡ(Video Electronics Standard
Association)バス、ＶＬＢ(VESA Local Bus)、ＰＣＩ(Peripheral Component Interconnect)バス、マルチバス、ユニバス(Unibus)、ファイヤワイヤ(FireWire)バス、ＳＣＳＩ(Small Computer System Interface)バス、ＲＳ−２３２バス、ＡＴＡ(Advanced Technology Attachment)バス、ＳＡＴＡ(Serial
Advanced Technology Attachment)バス、ＰＡＴＡ(Parallel
Advanced Technology Attachment)バス、ＵＳＢ(Universal Serial
Bus)、シリアル・バス、カード・バス、ＰＣＭＣＩＡ(Personal Computer Memory
Card International Association)バス、ＡＧＰ(Accelerated
Graphics Port)バス、エキスプレス・カード・バス、ウィッシュボーン・バス(wishbone
bus)、ＣＡＮ(Controller Area Network)バス、フレックス・レイ・バス(FlexRay bus)及びＳＴＤバスが知られているが、これらには限定されない。また、本発明は、様々な形式やトポロジーのバス、例えばパラレル、シリアル、デイジー・チェイン(daisy-shain)、分岐(multi-drop)等のバスで動作するが、これらには限定されない。
【０２２２】
また、バス３０６を設けたことにより、拡張カード３４４を利用して、１個以上の入出力機器を拡張インタフェース３２４に追加することができる。拡張インタフェース３２４及び拡張カード３４４は、バス３０６がサポートしている１種類以上のバス形式を、サポートする。
【０２２３】
拡張インタフェース３２４としては、ＩＳＡ(Industry Standard Architecture)インタフェース、ＰＣＩ(Peripheral
Component Interconnect)インタフェース、ファイヤワイヤ・インタフェース、ＳＣＳＩ(Small
Computer System Interface)インタフェース、ＲＳ−２３２インタフェース、ＡＴＡ(Advanced
Technology Attachment)インタフェース、ＳＡＴＡ(Serial Advanced
Technology Attachment)インタフェース、ＰＡＴＡ(Parallel Advanced
Technology Attachment)インタフェース、ＵＳＢ(Universal Serial Bus)インタフェース、ＰＣＭＣＩＡ(Personal Computer Memory Card International Association)インタフェース、ＡＧＰ(Accelerated Graphics Port)インタフェース、エキスプレス・カードインタフェースを採用できるが、これらには限定されない。
【０２２４】
拡張カード３４４としては、モデム、ネットワーク・カード、ブルートゥース・カード、ＵＳＢインタフェース・カード、ビデオ・カード、サウンド・カード、ＰＬＣ(Programmable Logic Card)及び特定ハードウエアにインタフェースを具備させるカードを採用できるが、これらには限定されない。
【０２２５】
コンピュータ３０２は、一般的には、図３にコンピュータ・メモリ３０８として示されたメモリを必要とする。コンピュータ・メモリ３０８は、ＲＯＭ３１０及ぶＲＡＭ３１４を備えている。しかし、コンピュータ・メモリ３０８は、ＲＯＭ３１０及び／又はＲＡＭ３１４に限定されず、プロセッサ３０４がアクセスできさえすれば、他の形式及び／又は方式のメモリでもよい。コンピュータ・メモリ３０８は、バス３０６に接続されて、情報や、プロセッサ３０４が実行する命令を、保存する。また、コンピュータ・メモリ３０８のコンテンツとしては、プロセッサ３０４がそのときに扱っているコンテンツを含むことができる。このために、バス３０６は、コンピュータ・メモリ３０８をプロセッサ３０４に接続する。
【０２２６】
スタートアップのためには、コンピュータ３０２は、一般的には、スタートアップ命令セットを必要とする。ここで、スタートアップ命令セットは、図３のＲＯＭ３１０として示された、不揮発性メモリに保存されている。
【０２２７】
ＲＯＭ３１０としては、固体メモリとして知られているＲＯＭ(Read Only Memory)や、ＰＲＯＭ(Programmable Read
Only memory)、ＥＰＲＯＭ(Erasable Programmable Read Only
Memory)、フラッシュメモリとして知られているＥＥＰＲＯＭ(Electronically
Erasable)等を使用できるが、これらには限定されない。
【０２２８】
一般的には、ＲＯＭ３１０は、ＢＩＯＳ３１２を保存する。ここで、ＢＩＯＳ３１２は、コンピュータのスタートアップ・ルーチンや、コンピュータ３０２の様々な部品間での情報転送を容易にする、他のベーシックなルーチンを有している。ＲＯＭ３１０は、また、オペレーティング・システムや、デバイス・ドライバ、アプリケーション・プログラム、データ構造、他のプログラム・モジュール、静的なアプリケーション・データ等を保存できる。
【０２２９】
また、コンピュータ３０２は、一般的には、図３にＲＡＭ３１４として示された、揮発性メモリを必要とする。ＲＡＭ３１４は、一般的には、コンピュータ・プログラムと、プロセッサ３０４が実行する命令や情報との保存に、使用される。ＲＡＭ３１４は、また、プロセッサ３０４による命令の実行中に、一時的に変化するデータや中間データを保存するために、使用される。
【０２３０】
ＲＡＭ３１４としては、様々な形式のもの、例えば、ＳＲＡＭ(StaticRAM)、ＤＲＡＭ(Dynamic RAM)、ＳＤＲＡＭ(Synchronous DRAM)、ＤＤＲＳＤＲＡＭ(Double Data Rate
SDRAM)、ＥＳＤＲＡＭ(Enhanced SDRAM)、ＳＬＤＲＡＭ(Synchronous Link DRAM)及びＤＲＤＲＡＭ(Direct
Rambus DRAM)等が使用できるが、これらには限定されない。
【０２３１】
コンピュータ３０２内では、プロセッサ３０４が、バス３０６を利用して、ＲＯＭ３１０やＲＡＭ３１４のコンテンツに、直接アクセスできる。また、ＲＯＭ３１０やＲＡＭ３１４のコンテンツには、プロセッサ３０４で利用中のコンテンツのものも含まれている。
【０２３２】
補助記憶装置インタフェース３１６は、補助記憶装置３１８とコンピュータ３０２との接続を容易にする。また、補助記憶装置３１８は、通信リンク３５０を介してコンピュータ３０２に接続される。また、コンピュータ３０２は、通信リンク３５０を介してネットワーク補助記憶装置３５２に接続されたり、リモート・コンピュータ３５４を介してリモート補助記憶装置３５６に接続されたりしているのと同様、補助記憶装置３１８とも接続されている。補助記憶装置３１８は、ソフトウエア及びデータ（例えば、コンピュータ読取可能な命令、データ構造、オペレーティング・システム、デバイス・ドライバ、アプリメーション・コンピュータ・プログラム、他のプログラムモジュール、データベース及びアプリケーション・データ等であるが、これらに限定されない。）の保存領域を備えている。
【０２３３】
補助記憶装置インタフェース３１６としては、ハードディスク・インタフェース、フロッピーディスク・インタフェース、ＳＣＳＩ(Small Computer Serial Interface)インタフェース、光ディスク・インタフェース、ブルーレイ・ディスク・インタフェース。光磁気インタフェース、磁気テープ・インタフェース、ＤＡＴ(Digital Audio Taps)インタフェース、ＤＡＳＤ(Direct
Access Storage Device)インタフェース、ＡＴＡ(Advanced Technology
Attachment)インタフェース、ＳＡＴＡ(Serial Advanced Technology
Attachment)インタフェース、ＰＡＴＡ(Parallel Advanced Technology
Attachment)インタフェース、ＵＳＢ(Universal Serial Bus)インタフェースの何れか１個以上を使用できるが、これらには限定されない。
【０２３４】
補助記憶装置３１８としては、不揮発性で削除不可能な記憶媒体、不揮発性で削除可能な記憶媒体、削除不可能な記憶媒体と対応したドライバ、及び、これらの何れかの組み合わせの１つ以上を使用できる。
【０２３５】
補助記憶装置３１８としては、ハードディスク、固定ディスク、ウインチェスター・ディスク・ドライブ、フロッピーディスクのドライブ及び記憶媒体、ＣＤ−ＲＯＭ(Compact Disc Read Only Memory)のドライブ及び記憶媒体、ＣＤ−Ｒ(Compact Disc Recordable)のドライブ及び記憶媒体、ＣＤ−ＲＷ(Compact
Disc Re-Writeable)のドライブ及び記憶媒体、ＤＶＤ(Digital Versatile
Disc)のドライブ及び記憶媒体、ブルーレイのドライブ及び記憶媒体、光磁気記憶のデバイス及び記録媒体、光磁気記憶の記憶装置及び記憶媒体、磁気カセットのドライブ及び記憶媒体、磁気テープのドライブ及び記憶媒体、紙テープ読取装置及び紙テープ、紙カード読取装置及び紙カード、ＤＡＴ(Digital Audio Tape)のドライブ及び記憶媒体、ＤＡＳＤ(Direct
Access Storage Device)のドライブ及び記憶媒体、交換可能型ハードディスク、ハードディスクを利用したＲＡＩＤ(Redundant Array of Independent Disks) 等が利用できるが、これらには限定されない。
【０２３６】
ディスプレイ・ユニット３３０は、一般的には、コンピューティング・システム環境３００内のビデオ・コントローラ３２０をインタフェースとして、コンピュータ３０２に接続されている。ディスプレイ・ユニット３３０及びビデオ・コントローラ３２０は、複数個であっても良い。
【０２３７】
ディスプレイ・ユニット３３０及びビデオ・コントローラ３２０としては、ＣＧＡ(Color Graphic Adapter)、ＥＧＡ(Enhanced
Graphics Adapter)、ＶＧＡ(Video Graphics Array)ＳＶＧＡ(Super Video Graphics Array)、ＸＧＡ(extended
Graphics Array)、ＳＸＧＡ(Super XGA)、ＱＶＧＡ(Quarter VGA)、ＷＸＧＡ(Widescreen XGA)、ＳＸＧＡ＋、ＷＸＧＡ＋、ＷＳＸＧＡ、ＷＱＶＧＡ、ＭＤＡ、ヘルクレス(Hercules)、ＭＣＧＡ(Multicolor Graphics Adapter)、ＵＸＧＡ、ＷＵＸＧＡ、２Ｋ(DLP Cinema Technology)、ＷＱＵＸＧＡ(Wide Quad
Ultra extended Graphics Array)等の方式を使用できる。
【０２３８】
ディスプレイ・ユニット３３０及びビデオ・コントローラ３２０は、ビデオ・インタフェース標準を利用して、接続することができる。ビデオ・インタフェース標準としては、例えばＤＶＩ(Digital Visual Interface)標準やＨＤＭＩ(High-Definition
Multimedia Interface)標準があるが、これらには限定されない。
【０２３９】
また、ディスプレイ・ユニット３３０に、タッチ・スクリーン・パネル（図３には示さず）を設けてもよい。そして、ディスプレイ・ユニット３３０は出力の表示に利用され、タッチ・スクリーンは入力デバイスとして利用される。
【０２４０】
コンピューティング・システム環境３００には、入出力インタフェース・ユニット３２２を介してバス３０６に接続された、他の出力デバイスを備えていても良い。
【０２４１】
入出力インタフェース・ユニット３２２としては、ＰＳ／２インタフェース、ＵＳＢ(Universal Serial Bus)インタフェース、パラレル・インタフェース、シリアルＲＳ−２３２インタフェース及びＲＳ−７６２インタフェースの１個以上又はこれらの組み合わせを使用することができるが、これらには限定されない。
【０２４２】
コンピューティング・システム環境３００中には、以下の６個の入出力デバイスが示されている。
１．プリンタ３３２、
２．スピーカ３３４、
３．キーボード３３６、
４．ポインティング・デバイス３３８、
５．マイクロフォン３４０及び
６．デジタイザ３４２。
【０２４３】
しかし、このような入出力デバイスは、サーマル・プリンタ、ドット・マトリクス・プリンタ、インク・ジェット・プリンタ、レーザ・プリンタ、ライン・プリンタ、プロッタ、マルチ機能プリンタ、ヘッドフォン、イヤフォン、プロジェクタ、マウス、トラックボール、ポインティング・スティック、タッチ・パッド、デジタイザ、スキャナ、ゲーム・パッド、ジョイ・スティック、バーコード読取装置、ゲーム用パドル、ウェブカム、指紋スキャナ、ＵＳＢハブ、ポート・リプリケータ、カメラ、アクセス・コントロール・デバイス、フラッシュメモリ・キー及び交換可能ハードディスクを使用できるが、これらには限定されない。また、入出力デバイスは、複数個でもあっても良い。
【０２４４】
また、コンピュータ３０２は、一般的には、ネットワーク環境内で操作される。ここで、コンピュータ３０２は、通信リンク３５０を利用して、リモート・コンピュータ３５４等の他のコンピュータに接続され、通信リンク３５０は通信インタフェース３２６を利用して設けられ、通信インタフェース３２６はバス３０６に繋がっている。
【０２４５】
リモート・コンピュータ３５４としては、コンピュータ３０２と同様のコンピュータ、パーソナル・コンピュータ、ラップトップ・コンピュータ、タブレット・コンピュータ、ノートブック・コンピュータ、サーバ、ルータ、ＰＤＡ(Personal Digital Assistant)、携帯電話機、ネットワークＰＣ、ピア・デバイス、他の共通ネットワーク・ノード、公衆ネットワーク、携帯電話用ネットワーク、大型コンピュータ、ミニ・コンピュータ等を使用できるが、これらには限定されない。
【０２４６】
コンピュータ３０２とリモート・コンピュータ３５４とは、１個以上の技術を利用して、相互通信する。このような技術としては、例えばウエブ・サービス、ＣＯＲＢＡ(Common Object Request Broker Architecture)、ＲＰＣ(Remote Procedure Call)、ＣＢＳＥ(Component Based
Software Engineering)、ＲＥＳＴ(REpresentational State
Transfer)及び電子メール等が挙げられるが、これらには限定されない。
【０２４７】
通信インタフェース３２６は、バス３０６に繋がっており、通信リンク３５０を介して双方向データ通信接続されている。ここで、通信リンク３５０は、コンピュータ３０２を、ネットワーク補助記憶装置３５２、リモート・コンピュータ３５４、リモート補助記憶装置３５６等の他の部品に接続するために利用される。
【０２４８】
通信インタフェース３２６は、物理接続、論理接続、プロトコル、モデム、ケーブル・モデム、ＤＳＬ(Digital Subscriber Line)モデム、ＡＤＳＬ(Asymmetric
Digital Subscriber Line)モデム、ルータ、フレーム・リレー接続、ＡＩＮ(Advanced
Intelligent Network)接続、同期型光接続、ＤＳＬ接続、デジタルＴ１ライン、デジタルＴ２ライン、デジタルＥ１ライン、ＤＤＳ(Digital Data Service)接続、イーサネット接続、ＩＳＤＮ(Integrated
Services Digital Network)ライン、Ｖ．９０、Ｖ．３４、アナログ・モデム接続Ｖ．３４等のダイアル・アップ・ポート、ＡＴＭ(Asynchronous Transfer Mode)接続、ＨＳＳＩ(High
Speed Serial Interface)、ＦＤＤＩ(Fiber Distributed Data
Interface)、ＣＤＤＩ(Copper Distributed Data Interface)の１個以上又はこれらの何れかの組み合わせを使用できるが、これらには限定されない。
【０２４９】
通信リンク３５０は、ネットワークの確立を容易にする。かかるネットワークとしては、ＬＡＮ(Local Area Network)、ＭＡＮ(Metropolitan Area
Network)、ＷＡＮ(Wide Area Network)、ＰＡＮ(Personal Area Network)、ＳＡＮ(Storage Area
Network)、ＣＡＮ(Campus Area Network)及びＶＰＮ(Virtual Private Network)が挙げられるが、これらには限定されない。
【０２５０】
通信リンク３５０としては、ＷＡＰ(Wireless
Application Protocol)リンク、ＧＰＲＳ(General Packet Radio
Service)リンク、ＧＳＭ(Global System for Mobile Communication)リンク、ＣＤＭＡ(Code Division Multiple Access)又はＴＤＭＡ(Time
Division Multiple Access)リンク等の携帯電話チャネル、ＧＰＳ(Global
Positioning System)リンク、ＣＤＰＤ(cellular digital packet
data)、ＲＩＭ(Research in Motion Limited)多重ページング型デバイス、ブルートゥース無線リンク、ＩＥＥＥ８０２．１１に基づくラジオ周波数リンク、♯Ｇリンク、ＨＳＰＡリンク等の１個以上を使用でき、又は、これらにアクセスできるものを使用できる。
【０２５１】
通信リンク３５０としては、更に、ＲＳ−２３２シリアル接続、ＩＥＥＥ−１３９４（ファイバー・ワイヤー）接続、ＩｒＤＡ(infrared)ポート、ＳＣＳＩ(Small Computer Serial
Interface)接続、ＵＳＢ（Universal Serial Bus)接続及び他の何れかのインタフェース又は接続、有線又は無線、デジタル又はアナログの１個以上を使用でき、又は、これらにアクセスできるものを使用できる。インターフェイスとしては、イーサネット・インタフェース、フレーム・リレー・インタフェース、ケーブル・インタフェース、ＤＳＬインタフェース及びトークン・リング・インタフェースが挙げられるが、これらには限定されない。また、様々な超高速インタフェース、例えば高速イーサネット・インタフェース、ギガビット・イーサネット・インタフェース、ＡＴＭインタフェース、ＰＯＳ(Point Of Sale)インタフェース、ＦＤＤＩ(Fiber
Distributed Data Interface)等を利用しても良い。インタフェースとしては、適切なメディアと通信するための適切なポートを利用できる。
【０２５２】
通信リンク３５０は、１個以上のトポロジーを利用して展開できる。このトポロジーとしては、バス・トポロジー、スター・トポロジー、リング・トポロジー、メッシュ・トポロジー、スター−バス・トポロジー、及び、ツリー又は階層トポロジー等が挙げられるが、これらには限定されない。
【０２５３】
通信リンク３５０は、１個以上の通信プロトコルを利用することができる。このプロトコルとしては、ＩＰ(Internet Protocol)、ＩＰｖ４、ＩＰｖ６、ＩＣＭＰ(Internet
Control Message Protocol)、ＩＧＭＰ(Internet Group
Management Protocol)、ＩＰｓｅｃ(Internet Protocol Security)、ＴＣＰ(Transmission Control Protocol)、ＵＤＰ(User
Datagram Protocol)、ＨＴＴＰ(Hypertext Transfer Protocol)、ＦＴＰ(File Transfer Protocol)、Ｔｅｌｎｅｔ、ＩＲＣ(Internet
Relay Chat)、ＤＳＬ(Digital Subscriber Line)、ＩＳＤＮ(Integrated Service Digital Network)等が挙げられるが、これらには限定されない。
【０２５４】
リモート・コンピュータ３５４及び通信リンク３５０は、複数使用してもよいし、及び／又は、何れかの組み合わせでも良いし、同時に使用しても個別に使用してもよい。より詳細には、装置又はデバイスをプログラミングし、構成し又は与えるとき、例えばコンピュータが本発明の実施形態で説明された機能を実行するときには、新しいマシンが生成される。コンピュータを例に採れば、汎用コンピュータが、プログラム・ソフトウエアからの命令に従って、本発明の実施形態に係る特別な機能を実行するように、ひとたび、プログラミングされ、構成され又は与えられれば、効果的に特殊用途のコンピュータに成る。上述のように、本実施形態を実行するプログラム／ソフトウエアは、コンピュータ読取可能な記録媒体、例えば一時的で無い（すなわち永続的な）コンピュータ読取可能な記録媒体に記録することができる。
【０２５５】
［１１］本発明の実施形態の一の観点を実行するための好適なモード
図４Ａ−図１０Ｚは、本発明の実施形態の一の観点において、所望の好適なＳＱＬクエリを構築するために必要な詳細ステップを示している。ＳＱＬクエリは、マイクロソフト・アクセスやオラクル・データベース用のソフトウエア・コンポーネント１４２である。これらのステップは、以下を含む。
１．図４Ａ−図７Ｃに示したソース・オブジェクト・レポジトリ１６８を生成する（図１Ａに示したオペレーション２０の一例）。ソース・オブジェクト・レポジトリ１６８の生成の詳細について、以下に説明する。
ａ．図４Ａ−図４Ｒに示したような１個以上の既定ルール・セット１４０ｎを、選択する（図１Ｂにしめしたオペレーション１１０の一例である）。
ｂ．図４Ｓ及び図４Ｔに示したような、ソース・コンポーネント１４４ｎを、不確定型ソース・コンポーネント１４８ｎと確定型ソース・コンポーネント１５０ｎとに分類する（図１Ｂに示したオペレーション１１２の一例）
ｃ．図５Ａ−図５Ｃに示したように、データ・トークン１５２ｎ（図１Ｂに示したオペレーション１１４の一例）を、それぞれのデータ・トークン・ルール・セット１５８ｎと共に定義する。
ｄ．図６に示したようなパラメータ１６０ｎを定義する（図１Ｂに示したオペレーション１１６の一例）。
ｅ．図７Ａ及び図７Ｂに示したようなデータ・モデル１６４を定義する（図１Ｂに示したオペレーション１１８の一例）。
ｆ．図７Ｃに示したようなソース・オブジェクト・レポジトリ１６８を生成する（図１Ｂに示したオペレーション１２０の一例）。
２．図８Ａ−図８Ｘに示したようにして、ソフトウエア・コンポーネント・コンストラクタ１７０を生成する（図１Ａに示したオペレーション３０の一例）。
３．図９Ａ−図１０Ｚに示したようにして、１個以上のソフトウエア・コンポーネント１４２ｎを構築する（図１Ａに示したオペレーション４０の一例）。
ａ．図９Ａ−図９Ｏに示したようにして、ソース・オブジェクト１６６ｎを生成する（図１Ｂに示したオペレーション１２４の一例）。
ｂ．図１０Ａ−図１０Ｚに示したようにして、ソフトウエア・コンポーネント１４２ｎを構築する。
【０２５６】
図４Ａ−図１０Ｚは、本発明の幾つかの観点に係る好適な実施形態の実行を示している。しかし、本発明に関連する技術の精通者は、本発明のこれらの観点を実現するためには、請求の範囲に記載された範囲内で、様々な代わりの設計、実施形態及び実行があることを認識するであろう。
【０２５７】
図４Ａ−図１０Ｚの詳細説明において、“所望のクエリ”の語は、図４Ａ−図９Ｏに示した実施形態を利用して構築される１個以上のクエリ（例えばソフトウエア・コンポーネント１４２）に言及することを意図している。
【０２５８】
図４Ａ−図１０Ｚの説明において、“クエリ・ビルダー”の語は、例えばソフトウエア・コンポーネント・コンストラクタ１７０に言及することを意図している。クエリ・ビルダーは、本発明の確かな原理に基づく好適な実施形態であり、図８Ａ−図８Ｐに示されている。しかし、本発明は、決して、クエリ・ビルダーに限定されるものではない。
【０２５９】
図４Ｂ−図４Ｒに示した、好適な既定ルール・セットの構文図は、本発明の幾つかの観点に係る、幾つかの好適な実施形態の、好適な実行に適合している。しかし、全ての適合性は、適合した既定ルール・セットに基づいて正常なクエリが構築できないという以上が発生しない範囲内で、作成されている。
【０２６０】
図４Ａ−図９Ｏに示した実施形態は、エラー・チェックや例外処理を含んでおらず、全ての実施形態が正しく利用されたことを前提としている。
【０２６１】
図４Ａ−図９Ｏに示した各実施形態は、作業時間中に１個以上の所望のクエリを構築するために、全体として機能を発揮し、全体として利用される。ここで、１個以上の所望のクエリは、それぞれ、以下のもののために、構築される。
１．マイクロソフト・アクセス、又は
２．オラクル、又は
３．マイクロソフト・アクセス及びオラクルの両方。
【０２６２】
図４Ａは、本発明の実施形態の一の観点に係る、２個の好適な既定ルール・セット４００を示している。ここで、この２個の好適な既定ルール・セット４００は、アクセス選択クエリ４０１用の既定ルール・セットとオラクル選択クエリ４０２用の既定ルール・セットとからなり、共に、既定ルール・セット１４０の一例である。
【０２６３】
アクセス選択クエリ４０１用の既定ルール・セットは、マイクロソフト・アクセスに要求されるクエリを生成するために必要で且つそのようなクエリの生成機能を有する既定ルールのみを、有している。マイクロソフト・アクセスは、この例で選択されなかった既定ルールを、更に備えていても良い。
【０２６４】
オラクル選択クエリ４０１用の既定ルール・セットは、オラクルに要求されるクエリを生成するために必要で且つそのようなクエリの生成機能を有する既定ルールのみを、有している。オラクルは、この例で選択されなかった既定ルールを、更に備えていても良い。
【０２６５】
図４Ｂ−図４Ｋは、アクセス選択クエリ４０１用の既定ルール・セットを、構文図を用いて、より詳細に示している。各構文図は、エントリー・ポイントとエンド・ポイントとを有しており、また、これらのポイント間で、他の非端子、端子及び／又は判断ボックスを通過するために採り得る経路が記載されている。端子は角が丸いボックスで表され、非端子は四角いボックスで表され、また、判断ボックスは菱形ボックスで表されている。
【０２６６】
４１０ａ、４１０ｂ、４１１ａ等の円は、構文図内のエントリー・ポイントとエンド・ポイントとを表している。
【０２６７】
角が丸い長方形の端子は、“選択”（実際には引用符無し）等の何らかの文字が記載されている。一方、角が直角で長方形の非端子は、他の端子や非端子を包含している。端子は、４７０ａ、４７０ｂ、４７０ｃ、４７１ｂ、４７２ａ、４７２ｂ等である。各端子は、ソース・コンポーネント１４４の例である。
【０２６８】
非端子は、４０１、４０２、４１０、４１１、４１２等である。
【０２６９】
図４Ｂ−図４Ｒに示した判断ボックスは、図８Ａ−図８Ｐに示したフローチャート内で実行される。
【０２７０】
図４Ｂにおいて、エントリー・ポイント４０１ａは、アクセス選択クエリ４０１の開始点を示し、エンド・ポイント４０１ｂはアクセス選択クエリ４０１の終了点を示す。図４Ｂにおいて、非端子ボックス４１０及び４１１は、それぞれ図４Ｃ及び図４Ｄに、より詳細に示されている。
【０２７１】
図４Ｃは、非端子ボックス４１０を、詳細に示している。図４Ｃには、非端子ボックス４１０のエントリー・ポイント４０１ａ及びエンド・ポイント４１０ｂも示されている。更に、図４Ｃには、３個の非端子ボックス４１２、４１３、４１４が示されている。３個の非端子ボックス４１２、４１３、４１４は、それぞれ図４Ｅ、図４Ｆ及び図４Ｇにより詳細に示されている。
【０２７２】
図４Ｄは、非端子ボックス４１１を、より詳細に示している。図４Ｄには、非端子ボックス４１１のエントリー・ポイント４１１ａ及びエンド・ポイント４１１ｂも示されている。
【０２７３】
図４Ｅは、非端子ボックス４１２を、より詳細に示している。図４Ｅには、非端子ボックス４１２のエントリー・ポイント４１２ａ及びエンド４１２ｂも示されている。また、図４Ｅには、非端子ボックス４１５が示されている。非端子ボックス４１５は、図４Ｈに、より詳細に示されている。
【０２７４】
図４Ｆは、非端子ボックス４１３を、より詳細に示している。図４Ｆには、非端子ボックス４１３のエントリー・ポイント４１３ａ及びエンド・ポイント４１３ｂも示されている。また、図４Ｆには、３個の非端子ボックス４１６、４１７、４１８が示されている。３個の非端子ボックス４１６、４１７、４１８は、それぞれ図４Ｉ、図４Ｊ、図４Ｋに、より詳細に示されている。
【０２７５】
図４Ｇは、非端子ボックス４１４を、より詳細に示している。図４Ｇには、非端子ボックス４１４のエントリー・ポイント４１４ａ及びエンド・ポイント４１４ｂも、示されている。
【０２７６】
図４Ｈは、非端子ボックス４１５を、より詳細に示している。図４Ｈには、非端子ボックス４１５のエントリー・ポイント４１５ａ及びエンド・ポイント４１５ｂも、示されている。
【０２７７】
図４Ｉは、非端子ボックス４１６を、より詳細に示している。図４Ｉには、非端子ボックス４１６のエントリー・ポイント４１６ａ及びエンド４１６ｂも示されている。また、図４Ｉには、非端子ボックス４１０が示されている。非端子ボックス４１０は、図４Ｉに、より詳細に示されている。
【０２７８】
図４Ｊは、非端子ボックス４１７を、より詳細に示している。図４Ｊには、非端子ボックス４１７のエントリー・ポイント４１７ａ及びエンド・ポイント４１７ｂも、示されている。
【０２７９】
図４Ｋは、非端子ボックス４１８を、より詳細に示している。図４Ｋには、非端子ボックス４１８のエントリー・ポイント４１８ａ及びエンド・ポイント４１８ｂも、示されている。
【０２８０】
図４Ｌ−図４Ｒは、オラクル選択クエリ４０２用の既定ルール・セットを、構文図のセットを使用して、より詳細に示している。各構文図は、エントリー・ポイントとエンド・ポイントとを有しており、また、これらのポイント間で、他の非端子、端子及び／又は判断ボックスを通過するために採り得る経路が記載されている。端子は角が丸いボックスで表され、非端子は四角いボックスで表され、また、判断ボックスは菱形ボックスで表されている。
【０２８１】
図４Ｌにおいて、エントリー・ポイント４０２ａは、オラクル選択クエリ４０２用の既定ルール・セットの開始点を示しており、また、エンド・ポイント４０２ｂは、オラクル選択クエリ４０２用の既定ルール・セットの終了点を示している。また、図４Ｌは、２個の非端子ボックス４３０及び４１１が示されている。これら非端子ボックス４３０及び４１１は、それぞれ図４Ｍ及び図４Ｄに、より詳細に示されている。
【０２８２】
図４Ｍは、非端子ボックス４３０を、より詳細に示している。非端子ボックス４３０のエントリー・ポイント４３０ａ及びエンド・ポイント４３０ｂも、図４Ｍに示されている。４個の非端子ボックス４３１、４３２、４３３及び４４４も、図４Ｍに示されている。４個の非端子ボックス４３１、４３２、４３３及び４４４は、それぞれ図４Ｎ、図４Ｏ、図４Ｐ及び図４Ｇに、より詳細に示されている。
【０２８３】
図４Ｎは、非端子ボックス４３１を、より詳細に示している。非端子ボックス４３１のエントリー・ポイント４３１ａ及びエンド・ポイント４３１ｂも、図４Ｎに示されている。図４Ｎには、非端子ボックス４３４も、示されている。非端子ボックス４３４は、図４Ｑに、より詳細に示されている。
【０２８４】
図４Ｏは、非端子ボックス４３２を、より詳細に示している。非端子ボックス４３２のエントリー・ポイント４３２ａ及びエンド・ポイント４３２ｂも、図４Ｏに示されている。図４Ｏには、非端子ボックス４３５も、示されている。非端子ボックス４３５は、図４Ｒに、より詳細に示されている。
【０２８５】
図４Ｐは、非端子ボックス４３３を、より詳細に示している。非端子ボックス４３３のエントリー・ポイント４３３ａ及びエンド・ポイント４３３ｂも、図４Ｐに示されている。
【０２８６】
図４Ｑは、非端子ボックス４３４を、より詳細に示している。非端子ボックス４３４のエントリー・ポイント４３４ａ及びエンド・ポイント４３４ｂも、図４Ｑに示されている。
【０２８７】
図４Ｒは、非端子ボックス４３５を、より詳細に示している。非端子ボックス４３５のエントリー・ポイント４３５ａ及びエンド・ポイント４３５ｂも、図４Ｒに示されている。図４Ｒには、非端子ボックス４３０も、示されている。非端子ボックス４３０は、図４Ｍに、より詳細に示されている。
【０２８８】
図４Ｓは、不確定型ソース・コンポーネント１４８１−２４に分類された全ソース・コンポーネントを示している。各不確定型ソース・コンポーネント１４８１−２４は、下記の何れかに該当する１個以上のコンポーネント値１４６で表すように要求される。
１．アルゴリズム及び／又はコンピュータで実行可能なロジックの何れかを利用しても生成できない、又は、
２．１個以上の所望のクエリは、アルゴリズム及び／又はコンピュータで実行可能なロジックの何れかを利用して生成するように要求されていない。
【０２８９】
図４Ｔは、確定型ソース・コンポーネント１５０１−１５に分類された全ソース・コンポーネントを示している。各確定型ソース・コンポーネント１５０１−１５は、アルゴリズム及び／又はコンピュータで実行可能なロジックを利用して生成されたコンポーネント値１４６で表される。以下は、好適な確定型ソース・コンポーネントである。
１．SELECT  ４７０ａ、
２．余白(whitespace)  ４７０ｂ、
３．FROM  ４７０ｃ、
４．BY  ４７０ｄ、
５．開き括弧  ４７０ｅ、
６．閉じ括弧  ４７０ｆ、
７．コンマ  ４７０ｇ、
８．AND  ４７０ｈ、
９．ピリオド  ４７０ｉ、
１０．AS  ４７０ｊ、
１１．srcAlaGrp  ４７０ｋ、
１２．イコール記号  ４７０ｍ、
１３．srcAlaTbl  ４７０ｎ、
１４．ON  ４７０ｐ、及び
１５．srcAlaTb1  ４７０ｑ
【０２９０】
図５Ａは、好適なデータ・トークンを示している。ここで、データ・トークンは、それぞれ、図４Ｓに示した不確定型ソース・コンポーネント及び／又は図４Ｔに示した確定型ソース・コンポーネントの内の１個以上を表すコンポーネント値１４６と共に利用されるように、定義する。
【０２９１】
データ・トークンqryGrp５１２（データ・トークン１５２の一例）は、ブール型(Boolean type)のトークン値１５４で表され、また、真(True)、偽(False)、無(NULL)の３つのトークン値の何れかで表すことができる。qryGrp５１２用のトークン・ルール・セット１５８は、次の何れかで特定される。
１．qryGrp５１２が真値（トークン値１５４の一例）で表される場合、要求されたクエリは、集合クエリとして構築される。
２．他の場合は、要求されたクエリは、非集合クエリとして構築される。
【０２９２】
qryGrp５１２は、集合クエリか非集合クエリかに拘わらず、このqryGrp５１２を表すトークン値１５４に基づき、要求されたクエリをクエリ・ビルダーが構築できるようにしつつ、コンポーネント値１４６と関連付けることができる。qryGrp５１２は、“グループ４７１ｂ”（不確定型ソース・コンポーネント１４８）用のコンポーネント値１４６の決定を可能にする。
【０２９３】
データ・トークンqryUni５１４（データ・トークン１５２の一例）は、ブール型のトークン値１５４で表され、また、真、偽、空の３つのトークン値の何れかで表すことができる。qryUni５１４用のトークン・ルール・セット１５８は、次の何れかで特定される。
１．qryUni５１４が真値（トークン値１５４の一例）で表される場合、要求されたクエリは、UNION ALL演算子を利用して、結合クエリとして構築される。
２．他の場合は、要求されたクエリは、UNION ALL演算子を利用せずに構築される。
【０２９４】
qryUni５１４は、全結合クエリか非結合クエリかに拘わらず、このqryUni５１４を表すトークン値１５４に基づき、要求されたクエリをクエリ・ビルダーが構築できるようにしつつ、コンポーネント値１４６と関連付けることができる。qryUni５１４は、“全結合４７１ｃ”（不確定型ソース・コンポーネント１４８）用のコンポーネント値１４６の決定を可能にする。
【０２９５】
qryUni５１４のトークン値は、他の演算子（図示せず、例えば結合、マイナス及び他の同様の演算子）の要求を満たす他のデータ形式であっても良い。しかし、この好適な実行では、qryUni５１４はUNION ALL演算子の要求のみを満たすために利用される。
【０２９６】
データ・トークンsrcUseCnd５１６（データ・トークン１５２の一例）は、以下のようなストリング型のトークン値１５４によって表される。
１．無(NULL)の値、又は
２．空(empty)のストリング、又は
３．ストリングの値、又は、
４．コンマで分離された２個以上のストリング値を含むリスト。
【０２９７】
srcUseCnd１５６を表すトークン値１５４は、“table-name４７２ｋ”（不確定型ソース・コンポーネント１４８の一例）を表すコンポーネント値１４６と関連付けることができ、パラメータprmUseCnd６２２（パラメータ１６０の一例である）のパラメータ値１６２と共に処理される。srcUseCnd１５６を表すトークン値１５４の処理結果（トークン結果１５６の一例である）は、table-name４７２ｋを表すコンポーネント値１４６が所望のクエリの構築への利用を要求されているか否かの判断に利用される。srcUseCnd５１６を表すトークン値１５４は、以下のときに処理することができる。
１．table-name４７２ｋを表すコンポーネント値１４６を決定するとき、及び／又は、
２．要求されたクエリを構築するとき。
【０２９８】
srcUseCnd５１６は、以下のデータ・トークン・セット１５８に基づいて、処理することができる。
１．table-name４７２ｋを表すコンポーネント値１４６は、以下のいずれかの場合に利用される。
ａ．srcUseCnd５１６を表すトークン値１５４であって、table-name４７２ｋを表すコンポーネント値１４６に関連付けられたトークン値１５４が、空ストリング又は無値である場合、又は、
ｂ．srcUseCnd５１６を表すトークン値１５４であって、table-name４７２ｋを表すコンポーネント値１４６に関連付けられたトークン値１５４が、１個以上のストリング値を有し、且つ、prmUseCnd６２２のパラメータ値１６２も、このストリング値を備えている場合。例えば、srcUseCnd５１６を表すトークン値１５４であって、table-name４７２ｋを表すコンポーネント値１４６に関連付けられたトークン値１５４が、“ａｂｃ，ｘｙｚ”であり、また、prmUseCnd６２２のパラメータ値１６２が、“ｎｏｐ，ｘｙｚ”である場合、srcUseCnd５１６を表すトークン値１５４及びprmUseCnd６２２のパラメータ値１６２の両方がストリング値“ｘｙｚ”を有しており、従って、table-name４７２ｋを表すコンポーネント値１４６は、要求されたクエリの構築に利用される。他の例として、srcUseCnd５１６を表すトークン値１５４であって、table-name４７２ｋを表すコンポーネント値１４６に関連付けられたトークン値１５４が、“ａｂｃ”であり、また、prmUseCnd６２２のパラメータ値１６２が、“ａｂｃ，ｘｙｚ”である場合、srcUseCnd５１６を表すトークン値１５４及びprmUseCnd６２２のパラメータ値１６２の両方がストリング値“ａｂｃ”を有しており、従って、table-name４７２ｋを表すコンポーネント値１４６は、要求されたクエリの構築に利用される。比較は、常に、コンマで区切られた個々のストリング値の間で行われ、且つ、機械的に行われる。
２．table-name４７２ｋを表すコンポーネント値１４６は、以下のいずれかの場合には利用されない。
ａ．prmUseCnd６２２のパラメータ値１６２が、空ストリング又は無値であるが、srcUseCnd５１６を表すトークン値１５４であって、table-name４７２ｋを表すコンポーネント値１４６に関連付けられたトークン値１５４が、１個以上のストリング値を有する場合、又は、
ｂ．srcUseCnd５１６を表すトークン値１５４であって、table-name４７２ｋを表すコンポーネント値１４６に関連付けられたトークン値１５４が有するストリング値と、prmUseCnd６２２のパラメータ値１６２が有するストリング値とで、共通するものが無い場合。例えば、srcUseCnd５１６を表すトークン値１５４であって、table-name４７２ｋを表すコンポーネント値１４６に関連付けられたトークン値１５４が、“ａｂｃ，ｘｙｚ”であり、また、prmUseCnd６２２のパラメータ値１６２が、“ｎｏｐ，ｒｓｔ”である場合、prmUseCnd６２２のパラメータ値１６２はストリング値“ａｂｃ”も“ｘｙｚ”も有しておらず、従って、table-name４７２ｋを表すコンポーネント値１４６は、要求されたクエリの構築に利用されない。比較は、常に、コンマで区切られた個々のストリング値の間で行われ、且つ、機械的に行われる。
【０２９９】
srcUseCnd５１６の実行のために、以下の何れかが強制される。
１．srcUseCnd５１６を表すトークン値１５４であって、table-name４７２ｋを表すコンポーネント値１４６に関連付けられたトークン値１５４は、更に、table-name４７２ｋを表すコンポーネント値１４６に関連付けられたトークン値１５４によって利用される全てのコンポーネント値に関連付けられなければならず、或いは、table-name４７２ｋを表すコンポーネント値１４６に直接従属しなければならない。又は、
２．table-name４７２ｋを表すコンポーネント値１４６と共に利用され又はtable-name４７２ｋを表すコンポーネント値１４６に直接従属するコンポーネント値は、次のように組み立てられる。すなわち、table-name４７２ｋを表すコンポーネント値１４６が所望のクエリの構築に利用されない場合は、table-name４７２ｋを表すコンポーネント値１４６と共に利用され又はtable-name４７２ｋを表すコンポーネント値１４６に直接従属するコンポーネント値も、所望のクエリの構築に利用されない。
【０３００】
データ・トークンcolUseCnd５１８（データ・トークン１５２の一例である）は、以下のようなストリング型のトークン値１５４によって表される。
１．無(NULL)の値、又は
２．空(empty)のストリング、又は
３．ストリングの値、又は、
４．コンマで分離された２個以上のストリング値を含むリスト。
【０３０１】
colUseCnd５１８を表すトークン値１５４は、fldAla４７２ｃ（不確定型ソース・コンポーネント１４８の一例であり、prmUseCnd６２２（パラメータ１６０の一例である）のパラメータ値１６２と共に処理される）を表す所望のコンポーネント値１４６と関連付けることができる。colUseCnd５１８を表すトークン値１５４の処理結果（トークン結果１５６の一例である）は、fldAla４７２ｃを表すコンポーネント値１４６が所望のクエリの構築に利用するように要求されているか否かの判断に利用される。colUseCnd５１８を表すトークン値１５４は、以下のときに処理することができる。
１．fldAla４７２ｃを表すコンポーネント値１４６を決定するとき、及び／又は、
２．要求されたクエリを構築するとき。
【０３０２】
colUseCnd５１８は、以下のデータ・トークン・セット１５８に基づいて、処理することができる。
１．fldAla４７２ｃを表すコンポーネント値１４６は、以下のいずれかの場合に利用される。
ａ．colUseCnd５１８を表すトークン値１５４であって、fldAla４７２ｃを表すコンポーネント値１４６に関連付けられたトークン値１５４が、空ストリング又は無値である場合、又は、
ｂ．colUseCnd５１８を表すトークン値１５４であって、fldAla４７２ｃを表すコンポーネント値１４６に関連付けられたトークン値１５４が、１個以上のストリング値を有し、且つ、prmUseCnd６２２のパラメータ値１６２も、このストリング値を備えている場合。例えば、colUseCnd５１８を表すトークン値１５４であって、fldAla４７２ｃを表すコンポーネント値１４６に関連付けられたトークン値１５４が、“ａｂｃ，ｘｙｚ”であり、また、prmUseCnd６２２のパラメータ値１６２が、“ｎｏｐ，ｘｙｚ”である場合、colUseCnd５１８を表すトークン値１５４及びprmUseCnd６２２のパラメータ値１６２の両方がストリング値“ｘｙｚ”を有しており、従って、fldAla４７２ｃを表すコンポーネント値１４６は、要求されたクエリの構築に利用される。他の例として、colUseCnd５１８を表すトークン値１５４であって、fldAla４７２ｃを表すコンポーネント値１４６に関連付けられたトークン値１５４が、“ａｂｃ”であり、また、prmUseCnd６２２のパラメータ値１６２が、“ａｂｃ，ｘｙｚ”である場合、colUseCnd５１８を表すトークン値１５４及びprmUseCnd６２２のパラメータ値１６２の両方がストリング値“ａｂｃ”を有しており、従って、fldAla４７２ｃを表すコンポーネント値１４６は、要求されたクエリの構築に利用される。比較は、常に、コンマで区切られた個々のストリング値の間で行われ、且つ、機械的に行われる。
２．fldAla４７２ｃを表すコンポーネント値１４６は、以下のいずれかの場合には利用されない。
ａ．prmUseCnd６２２のパラメータ値１６２が、空ストリング又は無値であり、且つ、colUseCnd５１８を表すトークン値１５４であって、fldAla４７２ｃを表すコンポーネント値１４６に関連付けられたトークン値１５４が、１個以上のストリング値を有する場合、又は、
ｂ．colUseCnd５１８を表すトークン値１５４であって、fldAla４７２ｃを表すコンポーネント値１４６に関連付けられたトークン値１５４が有するストリング値と、prmUseCnd６２２のパラメータ値１６２が有するストリング値とで、共通するものが無い場合。例えば、colUseCnd５１８を表すトークン値１５４であって、fldAla４７２ｃを表すコンポーネント値１４６に関連付けられたトークン値１５４が、“ａｂｃ，ｘｙｚ”であり、また、prmUseCnd６２２のパラメータ値１６２が、“ｎｏｐ，ｒｓｔ”である場合、prmUseCnd６２２のパラメータ値１６２はストリング値“ａｂｃ”も“ｘｙｚ”も有しておらず、従って、fldAla４７２ｃを表すコンポーネント値１４６は、要求されたクエリの構築に利用されない。比較は、常に、コンマで区切られた個々のストリング値の間で行われ、且つ、機械的に行われる。
【０３０３】
colUseCnd５１８の実行のために、以下の何れかが強制される。
１．colUseCnd５１８を表すトークン値１５４であって、fldAla４７２ｃを表すコンポーネント値１４６に関連付けられたトークン値１５４は、更に、fldAla４７２ｃを表すコンポーネント値１４６に関連付けられたトークン値１５４によって利用される全てのコンポーネント値に関連付けられなければならず、或いは、table-name４７２ｋを表すコンポーネント値１４６に直接従属しなければならない。又は、
２．fldAla４７２ｃを表すコンポーネント値１４６と共に利用され又はfldAla４７２ｃを表すコンポーネント値１４６に直接従属するコンポーネント値は、次のように組み立てられる。すなわち、fldAla４７２ｃを表すコンポーネント値１４６が所望のクエリの構築に利用されない場合は、fldAla４７２ｃを表すコンポーネント値１４６と共に利用され又はfldAla４７２ｃを表すコンポーネント値１４６に直接従属するコンポーネント値も、所望のクエリの構築に利用されない。
【０３０４】
データ・トークンcolReuse５２０（データ・トークン１５２の一例である）は、ブール型のトークン値１５４で表され、また、真、偽、無の３つのトークン値の何れかで表すことができる。colReuse５２０は、データ・トークンtknMonth５２４を表すトークン値１５４と共に利用される。colReuse５２０は、fldAla４７２ｃを表すコンポーネント値１４６と関連付けられる。colReuse５２０は、クエリ・ビルダーによる、fldAla４７２ｃを表すコンポーネント値１４６の識別を可能にする。コンポーネント値１４６ｎは、tknMonth５２４のトークン結果１５６に基づいて生成されるよう、要求される。ここで、tknMonth５２４のトークン結果１５６は、tknMonth５２４を表すトークン値１５４を処理することで、得られる。
【０３０５】
colReuse５２０の実行のために、fldAla４７２ｃを表すコンポーネント値１４６と共に利用されるコンポーネント値、又は、fldAla４７２ｃを表すコンポーネント値１４６に直接従属するコンポーネント値は、次のようにして組み立てられなければならない。すなわち、fldAla４７２ｃを表すコンポーネント値１４６又はfldAla４７２ｃを表すコンポーネント値１４６に直接従属するコンポーネント値は、全て、fldAla４７２ｃを表すコンポーネント値１４６と共に生成することができる。
【０３０６】
データトークンtknAlias５２２（データ・トークン１５２の一例である）は、トークン値“！”、すなわち感嘆符（実際には引用符無し）で表され、tknAlias５２２用のデータ・トークン・ルール・セット１５８によって特定される。また、tknAlias５２２用のデータ・トークン・ルール・セット１５８は、table-name４７２ｋに無条件に関連付けられる。このために、このような新しいコンポーネント値であって、table-name４７２ｋを表すもののための、１個以上のアルファベットを有する新規で独自のテーブル／閲覧エイリアス(table/view alias)が、tknAlias５２２を使用して生成される。tknAlias５２２の関連付けが絶対的なものであるため、“！”（実際には引用符無し）はtable-name４７２ｋを表すコンポーネント値には決して利用されない。
【０３０７】
tknAlias５２２は、srcAla４７２ｅ（不確定型ソース・コンポーネント１４８）のコンポーネント値１４６の確定を可能にする。
【０３０８】
また、tknAlias５２２は、fldNamCol４７２ｂ及び／又はfldXpr４７２ｄを表すコンポーネント値１４６と関連付けることができる。fldNamCol４７２ｂ及び／又はfldXpr４７２ｄを表すコンポーネント値１４６との関連付けは、このfldNamCol４７２ｂ及び／又はfldXpr４７２ｄを表すコンポーネント値１４６に“！”（実際には引用符無し）を埋め込むことによって成し遂げられる。処理においては、図４Ｂ−図４Ｒに示した既定ルールに従い、“！”（実際には引用符無し）が、fldNamCol４７２ｂ及び／又はfldXpr４７２ｄを表すコンポーネント値１４６用に生成されたテーブル／閲覧エイリアス（fldNamCol４７２ｂ及び／又はfldXpr４７２ｄを表すコンポーネント値１４６のテーブル／閲覧のソースである。）と、その後のピリオドとに、入れ替えられる。例えば、tblAの場合、table-name４７２ｋを表すコンポーネント値１４６（テーブル／閲覧エイリアスであって、tknAlias５２２を表すトークン値１５４の処理結果として生成されたもの）が“ｂ”（実際には引用符が無い、小文字のｂ）であれば、次の幾つかの例のように扱われる。これらの例において、コンポーネント値は、コンポーネント値tblAに対応し、fldNamCol４７２ｂ及び／又はfldXpr４７２ｄを表しており、また、“！”（実際には引用符無し）に関連付けられている。
１．コンポーネント値“!fld_01”は、“！”（実際には引用符の無い、感嘆符）の処理後に、“b.fld_01”になり、
２．コンポーネント値“!fld_01+!fld_02”は、“！”（実際には引用符の無い、感嘆符）の処理後に、“b.fld_01+b.fld_02”になり、
３．コンポーネント値“!fld_04+INT(fld_05)-!fld_06”は、“！”（実際には引用符の無い、感嘆符）の処理後に、“b.fld_04+INT(fld_05)-b.fld_06”になり、且つ、
４．コンポーネント値“fld_09”は、“！”（実際には引用符の無い、感嘆符）の処理後に、“fld_09”になる。なぜなら、“fld_09”には“！”（実際には引用符の無い、感嘆符）が埋め込まれていないからである。
【０３０９】
データ・トークンtknMonth５２４（データ・トークン１５２の一例である）は、fldNamCol４７２ｂ、fldAla４７２ｃ及び／又はfldXpr４７２ｄを表すコンポーネント値を１個以上生成するために利用される。tknMonth５２４は、colReuse５２０を表すトークン値１５４とパラメータprmMthCnt６１４（パラメータ１６０の一例である）のパラメータ値１６２とに基づいて、処理される。tknMonth５２４用のデータ・トークン・ルール・セット１５８によれば、tknMonth５２４は、次の２つのフォーマットの何れかに利用することができる。
１．%TknMth%（fldNamCol４７２ｂ、fldAla４７２ｃ及び／又はfldXpr４７２ｄを示すコンポーネント値１４６に埋め込まれる）
２．%TknMth、argComp、argTrue、argFalse%（tknMonth５２４は、３個の引数argComp、argTrue、argFalseと共に利用される）。tknMonth５２４のこのフォーマットは、fldNamCol４７２ｂ及び／又はfldXpr４７２ｄを表すコンポーネント値にのみ埋め込まれる。このフーマットでは、３個の引数argComp、argTrue、argFalseは全て強制的であり、有効なカラム／フィールド名又は有効な表示の何れかのデータ値で表す必要がある。このフォーマットでは、tknMonth５２４は、以下の不確定型ソース・コンポーネントのコンポーネント値の決定に利用される。
ａ．IIF４７１ｆ、
ｂ．DECODE４７１ｎ、
ｃ．fldNamCnd４７２ｇ、
ｄ．value４７２ｈ、
ｅ．true-result４７２ｉ、及び
ｆ．false-result４７２ｊ
【０３１０】
tknMonth５２４の処理は、colReuse５２０を表すトークン値１５４と、prmMthCnt６１４（パラメータ１６０の一例である）のパラメータ値１６２とに基づいて、行われる。
【０３１１】
colReuse５２０用の好適なデータ・トークン・ルール・セット１５８は、このcolReuse５２０を表すトークン値が無値又は偽の場合又はprmMthCnt６１４のパラメータ値１６２が零又は非定義の場合に、次に示したtknMonth５２４用データ・トークン・ルール・セット１５８の中から、tknMonth５２４の処理の基礎になるものを特定する。
１．tknMonth５２４が、%TknMth%（トークン値１５４の一例である）として埋め込まれている場合、このtknMonth５２４を埋め込む全ての個所で、%TknMth%を空ストリングに入れ替える。
２．tknMonth５２４が、%TknMth、argComp、argTrue、argFalse%（これは、トークン値１５４の一例である。）として埋め込まれている場合、このtknMonth５２４を埋め込む全ての個所で、%TknMth、argComp、argTrue、argFalse%をcolTrueに入れ替える。
【０３１２】
また、colReuse５２０用のデータ・トークン・ルール・セット１５８は、このcolReuse５２０を表すトークン値１５４が真で且つprmMthCnt６１４のパラメータ値１６２が正整数の場合には、tknMonth５２４を表すトークン値１５４を処理する際に、fldAla４７２ｃを表すコンポーネント値１４６を、fldAla４７２ｃを表すコンポーネント値１４６に関連し又はfldAla４７２ｃを表すコンポーネント値１４６に従属するコンポーネント値の全てと共に、prmMthCnt６１４のパラメータ値１６２が示す回数だけ、所望のクエリの構築に利用する。tknMonth５２４の処理には、prmBegMth６１６（パラメータ１６０の一例である）のパラメータ値１６２も、利用される。fldAla４７２ｃを示すコンポーネント値１４６は、fldAla４７２ｃを表すコンポーネント値１４６に関連し又はfldAla４７２ｃを表すコンポーネント値１４６に従属するコンポーネント値１４６ｎの全てと共に処理され、このとき、これら全てのコンポーネント値が、prmMthCnt６１４のパラメータ値１６２が示す回数だけ、所望のクエリの構築に利用できる。tknMonth５２４は、このtknMonth５２４用データ・トークン・ルール・セット１５８の、以下の部分を基礎にして、処理される。
１．tknMonth５２４が%TknMth%（トークン値１５４の一例である。）として利用される場合、各%TknMth%の繰り返し（これは、fldAla４７２ｃを表すコンポーネント値の処理の結果として生じる。）は、fldAla４７２ｃを表すコンポーネント値１４６に関連し又はfldAla４７２ｃを表すコンポーネント値１４６に従属するコンポーネント値１４６ｎの全てと共に、翌月の名前の最初の三文字に入れ替えられる。この月名は、prmBegMth６１６のパラメータ値１６２で表される月から開始され、常に、Ｄｅｃ（１２月）に達するとＪａｎ（１月）に続く。
ａ．prmMthCnt６１４のパラメータ値１６２が４で且つprmBegMth６１６のパラメータ値１６２が３（開始月が三月であることを示す）の場合、fldAla４７２ｃを表すコンポーネント値は、fldAla４７２ｃを表すコンポーネント値１４６に関連し又はfldAla４７２ｃを表すコンポーネント値１４６に従属するコンポーネント値１４６ｎの全てと共に、所望のクエリ内で４回だけ利用される。また、%TknMth%は、全てのコンポーネント値内で、以下のものに入れ替えられる。
ｉ．コンポーネント値の最初の利用ではＭａｒ、
ii．コンポーネント値の二度目の利用ではＡｐｒ、
iii．コンポーネント値の三度目の利用ではＭａｙ、
vi．コンポーネント値の四度目の利用ではＪｕｎ。
ｂ．prmMthCnt６１４のパラメータ値１６２が５で且つprmBegMth６１６のパラメータ値１６２が１１（開始月が十一月であることを示す）の場合、fldAla４７２ｃを表すコンポーネント値は、fldAla４７２ｃを表すコンポーネント値１４６に関連し又はfldAla４７２ｃを表すコンポーネント値１４６に従属するコンポーネント値１４６ｎの全てと共に、所望のクエリ内で５回だけ利用される。また、%TknMth%は、全てのコンポーネント値内で、以下のものに入れ替えられる。
ｉ．コンポーネント値の最初の利用ではＮｏｖ、
ii．コンポーネント値の二度目の利用ではＤｅｃ、
iii．コンポーネント値の三度目の利用ではＪａｎ、
vi．コンポーネント値の四度目の利用ではＦｒｂ、
v．コンポーネント値の五度目の利用ではＭａｒ。
２．tknMonth５２４が%TknMth、argComp、argTrue、argFalse%（トークン値１５４の一例である。）として利用される場合、各%TknMth、argComp、argTrue、argFalse%の繰り返し（これは、fldAla４７２ｃを表すコンポーネント値の処理の結果として生じる。）は、fldAla４７２ｃを表すコンポーネント値１４６に関連し又はfldAla４７２ｃを表すコンポーネント値１４６に従属するコンポーネント値１４６ｎの全てと共に、IIF４７１ｆ機能又はDECODE４７１ｎ機能（所望のクエリを構築するためのデータベースに依存する機能である）に入れ替えられる。IIF４７１ｆ機能及びDECODE４７１ｎ機能（fldAla４７２ｃを表すコンポーネント値１４６、及び、fldAla４７２ｃを表すコンポーネント値１４６に関連し又はfldAla４７２ｃを表すコンポーネント値１４６に従属するコンポーネント値１４６ｎの全てに関連する機能）内では、その繰り返しの一回目で、argCompが、prmBegMth６１６のパラメータ値１６２に相当する値と比較される。そして、この値は、繰り返しの度に、１ずつ増加する。また、この値は、１から開始され、１２を超えるまで繰り返される。
ａ．prmMthCnt６１４のパラメータ値１６２が４であり、prmBegMth６１６のパラメータ値１６２が３であり、tknMonth５２４が%TknMth、argComp、argTrue、argFalse%で表される場合、このtknMonth５２４が%TknMth、argComp、argTrue、argFalse%は、以下のように表される。
ｉ．マイクロソフト・アクセスでは、
１）IIF(colCompare=3,colTrue,colFalse)
２）IIF(colCompare=4,colTrue,colFalse)
３）IIF(colCompare=5,colTrue,colFalse)
４）IIF(colCompare=6,colTrue,colFalse)
ii．オラクルでは、
１）DECODE(colCompare,3,colTrue,colFalse)
２）DECODE(colCompare,4,colTrue,colFalse)
３）DECODE(colCompare,5,colTrue,colFalse)
４）DECODE(colCompare,6,colTrue,colFalse)
ｂ．prmMthCnt６１４のパラメータ値１６２が５であり、prmBegMth６１６のパラメータ値１６２が１１であり、tknMonth５２４が%TknMth、argComp、argTrue、argFalse%で表される場合、このtknMonth５２４が%TknMth、argComp、argTrue、argFalse%は、以下のように表される。
ｉ．マイクロソフト・アクセスでは、
１）IIF(colCompare=11,colTrue,colFalse)
２）IIF(colCompare=12,colTrue,colFalse)
３）IIF(colCompare=1,colTrue,colFalse)
４）IIF(colCompare=2,colTrue,colFalse)
５）IIF(colCompare=3,colTrue,colFalse)
ii．オラクルでは、
１）DECODE(colCompare,11,colTrue,colFalse)
２）DECODE(colCompare,12,colTrue,colFalse)
３）DECODE(colCompare,1,colTrue,colFalse)
４）DECODE(colCompare,2,colTrue,colFalse)
５）DECODE(colCompare,3,colTrue,colFalse)
【０３１３】
データ・トークンtknCurlyBrackets５２６（データ・トークン１５２の一例である）は、不確定型ソース・コンポーネントwhrXpr４７２ａのコンポーネント値１４６内に埋め込むことができる。tknCurlyBrackets５２６は中括弧で表され、これらの中括弧は、常に、始め中括弧（tknCurlyBrackets５２６のトークン値１５４の一例である。）である“｛”（実際には引用符無し）と、終わり中括弧（tknCurlyBrackets５２６のトークン値１５４の一例である。）は、“｝”（実際には引用符無し）との、ペアで利用される。始め中括弧は、常に、終わり中括弧よりも左側にある。中括弧は、入れ子(nest)にしても良い。
【０３１４】
図５Ｂ及び図５Ｃは、tknCurlyBrackets５２６の好適な処理ロジックを特定する好適なトークン・ルール・セット１５８を説明するための、好適なフローチャートである。しかし、この好適なフローチャートは、tknCurlyBrackets５２６のエラーチェックや誤使用に対する手段を備えておらず、この好適なフローチャート全体でtknCurlyBrackets５２６は適切に利用されることを前提としている。
【０３１５】
tknCurlyBrackets５２６の処理ロジックは、オペレーション５５０ａで開始する。
【０３１６】
オペレーション５５０ｂでは、whrXpr４７２ａ（フローチャートでは“ターゲット・ストリング”と表されている）が、変数EmbStrに関連付けられる。この例では、tknCurlyBrackets５２６は、whrXpr４７２ａを表すコンポーネント値のみが、使用できる。しかし、tknCurlyBrackets５２６は、必要性が有り且つ要求されれば、ストリング型の他のコンポーネント値が使用できるようにしてもよい。
【０３１７】
オペレーション５５０ｃでは、EmbStrの左側から見て最後の“｛”（実際には引用符無し）の存在位置が、変数Pos1に格納される。
【０３１８】
オペレーション５５０ｄで、最後の“｛”（実際には引用符無し）の存在位置が発見されたか否かをチェックする。最後の“｛”（実際には引用符無し）の存在位置が発見されなかった場合は、フローは、オペレーション５５０ｅに進む。他の場合は、フローは、オペレーション５５０ｆに続く。最後の“｛”（実際には引用符無し）の存在位置がEmbStr内で発見されないケースは、以下の２つの何れかである。
１．tknCurlyBrackets５２６を表すトークン値１５４が、whrXpr４７２ａ内で利用されていない。
２．tknCurlyBrackets５２６の処理が完了した。
【０３１９】
オペレーション５５０ｅでは、EmbStrは元に戻り、tknCurlyBrackets５２６の処理は完了する。
【０３２０】
オペレーション５５０ｆでは、Pos1よりも後の、最初の“｝”（実際には引用符無し）の存在する位置が判定され、変数Pos2に代入される。
【０３２１】
オペレーション５５０ｇでは、Pos1とPos2との間のストリング(Pos1及びPos2を含まない各文字)に、変数DtaTknに代入される。
【０３２２】
オペレーション５５０ｈでは、DtaTkn（データ・トークンを表すトークン値が保持される）が所望の方法で処理され、このDtaTknに保持されたトークン値の処理結果が、変数TknResultに代入される。この例では、パラメータは、DtaTknに保持されたトークン値の処理結果である。DtaTknのトークン値に対応するパラメータが発見された場合、TknResultは発見されたパラメータを有している。他の場合は、TknResultは無値である。
【０３２３】
オペレーション５５０ｉでは、変数Pos3に、値（Pos2＋１）が代入される。
【０３２４】
オペレーション５５０ｊでは、Ember内のPos3の文字が“｝”（実際には引用符無し）であるか否かがチェックされる。Ember内のPos3の文字が“｝”の場合は、フローはオペレーション５５０ｋに続く。他の場合は、フローはオペレーション５５０ｌに続く。
【０３２５】
オペレーション５５０ｋでは、変数Pos4に、Emberの左側から見て、Pos1より前の最後の“｛”（実際には引用符無し）の存在位置が、代入される。
【０３２６】
オペレーション５５０ｌでは、TknResultが無値を保持しているか否かをチェックする。TknResultが無値を保持している場合、フローはオペレーション５５０ｍに続く。他の場合、フローは５５０ｎに続く。
【０３２７】
オペレーション５５０ｍでは、TknResultに、値“１＝１”（実際には引用符無し）が代入される。
【０３２８】
オペレーション５５０ｎでは、Ember内の、Pos1から始まってPos2で終わるストリング（Pos1及びPos2を両方とも含む）を、TknResultに保持された値に置き換える。
【０３２９】
オペレーション５５０ｏでは、TknResultが空値を保持しているか否かをチェックする。TknResultが無値を保持している場合、フローは、オペレーション５５０ｐに続く。他の場合は、フローは５５０ｑへ続く。
【０３３０】
オペレーション５５０ｐでは、TknResultに値“１＝１”（実際には引用符無し）が代入される。
【０３３１】
オペレーション５５０ｒでは、Ember内の、Pos4から始まってPos3で終わるストリング（Pos4及びPos3を両方とも含む）を、TknResultに保持された値に置き換える。
【０３３２】
オペレーション５５０ｑでは、Pos3の文字を、スペース文字に置き換える。
【０３３３】
オペレーション５５０ｓでは、Pos4の文字を、スペース文字に置き換える。
【０３３４】
オペレーション５５０ｔでは、Ember内の、Pos1から始まってPos2で終わるストリング（Pos1及びPos2を両方とも含む）を、TknResultに保持された値に置き換える。
【０３３５】
データ・トークンtknItemCodeBegin５２８は、パラメータprmItmBeg６２４のパラメータ値１６２と共に、処理される。tknItemCodeBegin５２８用の好適なデータ・トークン・ルール・セットは、tknItemCodeBegin５２８が“itmBeg”（実際には引用符無し）で表されることと、whrXpr４７２ａを表すコンポーネント値に埋め込まれることのみ可能であることを、特定する。処理の際には、“itmBeg”（実際には引用符無し）は、prmItmBeg６２４のパラメータ値１６２に置き換えられる。
【０３３６】
データ・トークンtknItemCodeEnd５３０は、パラメータprmItmEnd６２６のパラメータ値１６２と共に、処理される。tknItemCodeEnd５３０用の好適なデータ・トークン・ルール・セットは、tknItemCodeEnd５３０が“itmEnd”（実際には引用符無し）で表されることと、whrXpr４７２ａを表すコンポーネント値に埋め込まれることのみ可能であることを、特定する。処理の際には、“itmEnd”（実際には引用符無し）は、prmItmEnd６２６のパラメータ値１６２に置き換えられる。
【０３３７】
図６は、所望のクエリを構築するために利用される、好適なパラメータを示している。各パラメータには、説明、参照の目的で任意の名称が付与されている。好適なパラメータに付与された名称は、発明の概念、原理及び／又は方法論の実行に、いかなる影響も与えない。図６は、以下の好適なパラメータを示している。
１．パラメータprmQryld６１２（パラメータ１６０の一例である。）は、ストリング型である。prmQryld６１２のパラメータ値１６２は、所望のクエリを構築するための利用が要求されるソース・オブジェクトの識別に利用される。
２．パラメータprmMthCnt６１４（パラメータ１６０の一例である。）は、ナンバー型である。prmMthCnt６１４のパラメータ値１６２は、tknMonth５２４を表すトークン値の処理に利用する月数を特定する。prmMthCnt６１４のパラメータ値１６２は、０から１２までの整数である（０、１２を含む）。
３．パラメータprmBegMth６１６（パラメータ１６０の一例である。）は、ナンバー型である。prmBegMth６１６のパラメータ値１６２は、tknMonth５２４を表すトークン値の処理に利用する開始月を特定する。prmMthCnt６１４のパラメータ値１６２は、０から１２までの整数である（０、１２を含む）。
４．パラメータprmOraQry６１８（パラメータ１６０の一例である。）は、ブール型である。パラメータprmOraQry６１８のパラメータ値１６２は、所望のクエリを構築するデータベースの決定に使用される。パラメータprmOraQry６１８のパラメータ値１６２が真であれば、所望のクエリがオラクル用に構築される。他の場合は、所望のクエリは、マイクロソフト・アクセス用に構築される。
５．パラメータprmLftJoi６２０（パラメータ１６０の一例である。）は、ブール型である。パラメータprmLftJoi６２０のパラメータ値１６２は、所望のクエリ内で使用されるJOIN（接合）の形式の決定に使用される。パラメータprmLftJoi６２０のパラメータ値１６２が真であれば、所望クエリ内の結合は全て、左結合(LEFT JOIN)になる。他の場合は、所望のクエリ内の結合は、内部結合(INNER
JOIN)となる。パラメータprmLftJoi６２０のパラメータ値１６２は、以下の不確定型ソース・コンポーネントのコンポーネント値１４６の決定に利用される。
ａ．INNER ４７１ｈ、
ｂ．LEFT ４７１ｉ
ｃ．プラス記号 ４７１ｍ
６．パラメータprmUseCnd６２２（パラメータ１６０の一例である。）は、ストリング型である。prmUseCnd６２２のパラメータ値１６２は、srcUseCnd５１６及び／又はcolUseCnd５１８のトークン値の処理に使用される。
７．パラメータprmItmBeg６２４（パラメータ１６０の一例である。）は、ストリング型である。パラメータprmItmBeg６２４のパラメータ値１６２は、tknItmCodeBein５２８を表すトークン値である“tmBeg”（実際には引用符無し）の処理に使用される。
８．パラメータprmItmEnd６２６（パラメータ１６０の一例である。）は、ストリング型である。パラメータprmItmEnd６２６のパラメータ値１６２は、tknItmCodeEnd５３０を表すトークン値である“itmEnd”（実際には引用符無し）の処理に使用される。
【０３３８】
図７Ａは、図７Ｂに示された好適なデータ・モデル１６４の幾つかの好適な属性（カラム又はフィールドと称しても良い）を示している。属性は、不確定型ソース・コンポーネントのコンポーネント値を保持するソース・オブジェクト・レポジトリに含まれている。属性は、図４Ｓに示した不確定型ソース・コンポーネントで無いが、本発明の実施形態の一形態では、そのコンポーネント値は、パラメータ１６０を利用しても及び／又はデータ・トークン１５２を利用しても、確定できない。
【０３３９】
図７に示した属性には、説明・参照の目的で、名称が付与される。属性に付与された名称は、発明の概念、原理及び／又は方法論の実行に、いかなる影響も与えない。以下の属性は、図７Ａに示されている。
１．属性qryWhr７５２は、以下の不確定型ソース・コンポーネントのコンポーネント値１４６を決定して格納するために、利用される。
ａ．WHERE ４７１ａ、及び
ｂ．whrXpr ４７２ａ
２．属性srcld７５４は、以下の不確定型ソース・コンポーネントのコンポーネント値１４６を決定して格納するために、利用される。
ａ．table-name ４７２ｋ、及び
ｂ．JOIN ４７１ｊ
３．属性srcJoinFld７５６は、fldAla1４７２ｍ（不確定型ソース・コンポーネントのコンポーネント値１４６の一例である）のコンポーネント値１４６を決定して格納するために利用される。
４．属性srcJoinToFld７５８は、fldAla2４７２ｐ（不確定型ソース・コンポーネントのコンポーネント値１４６の一例である）のコンポーネント値１４６を決定して格納するために利用される。
５．属性srcJoinToSrc７６０は、srcAla2４７２ｎ（不確定型ソース・コンポーネントのコンポーネント値１４６の一例である）のコンポーネント値１４６を決定して格納するために利用される。
６．属性colAla７６２は、fldAla４７２ｃ（不確定型ソース・コンポーネントのコンポーネント値１４６の一例である）のコンポーネント値１４６を決定して格納するために利用される。
７．属性colXpr７６４は、以下の不確定型ソース・コンポーネントのコンポーネント値１４６を決定して格納するために、利用される。
ａ．fldNamCol ４７２ｂ、及び
ｂ．fldXpr ４７２ｄ
８．属性colGrpFun７６６は、以下の不確定型ソース・コンポーネントのコンポーネント値１４６を決定して格納するために、利用される。
ａ．fldAlaGrp ４７１ｅ、
ｂ．SUM ４７１ｇ、及び
ｃ．fldXpr ４７２ｄ
【０３４０】
図７Ｂは、好適なソース・オブジェクト・レポジトリ１６８を生成するために利用するデータ・モデル（データ・モデル１６４の一例である）を示している。ここで、好適なソース・オブジェクト・レポジトリ１６８は、１個以上埋め込まれたトークン値と共に、１個以上のソース・オブジェクト（所望のクエリの構築への利用が要求される）の格納に利用される。好適なソース・オブジェクト・レポジトリ１６８（好適なデータ・モデル１６４に基づいて生成される）は、１個以上のデータ構造を利用して生成することができる。このデータ構造としては、多次元データベース、単層データベース、通常のデータベース、アレー、マトリクス、スプレッドシート、クラス、コンマ分離ファイル、変数があるが、これらには限定されない。好適なデータ・モデル１６４の生成には、好適なソース・オブジェクト・レポジトリ１６８を生成できる方法が用いられ、好適なソース・オブジェクト・レポジトリ１６８は、以下の機能を備える。
１．１個以上の所望のソース・オブジェクトを、構造データ又は半構造データとして格納する。
２．所望のソース・オブジェクトを、１個以上のソース・オブジェクトの中から、識別して取り出す。
３．図４Ｓに示した全ての不確定型ソース・コンポーネントの中の、所望の階層構造及び所望の関連性を、所望の方法で維持する。
４．srcld７５４に属する１個以上のコンポーネント値の中の命令を、維持する。
５．cloAla７６２に属する１個以上のコンポーネント値の中の命令を、維持する。
６．図５Ａに示したデータ・トークンのトークン値を、暗黙のものであるか明示のものであるかに拘わらず、図７Ａに示した属性で表された１個以上のソース・コンポーネントの１個以上のコンポーネント値に、関連付ける。
７．ソース・オブジェクト及び／又は他のソースオブジェクトの所望の一部を利用する。
【０３４１】
好適なデータ・モデル１６４は、以下の３個のものを備える。
１．クエリ７０２。
２．クエリ・ソース７０４。
３．クエリ・フィールド７０６。
【０３４２】
クエリ７０２は、最上位であり、ソース・オブジェクトの識別機能を得るための情報と、クエリ全体に適用できる情報とを得るために、利用される。クエリ７０２は、以下の属性を備える。
１．qryld ７３２、
２．qryWhr ７５２、
３．qryGrp ５１２、及び
４．qryUni ５１４。
【０３４３】
qryld７３２は、クエリ７０２内で特定のソース・オブジェクト７３２を識別するための、好適な属性である。qryld７３２は、一次キーとして作動し、各ソース・オブジェクトを１個ずつ識別するために利用される。クエリ７０２内で、qryld７３２はストリングとして実行され、有効なストリング型データ値を備えていても良い。qryld７３２が、ソース・オブジェクトの識別及び参照のみに利用されるので、qryld７３２内に格納され得るデータ値に特別なルールは不要である。しかし、この例では、qryld７３２内に格納されたデータ値は各ソースについて１個ずつでなければならず、また、印刷可能な文字のみを備えることができる。qryld７３２は、好適な実施ではストリング型であるが、一次キーを実行することができるものであれば、他のデータ形式（例えば、長整数、短整数、ＧＵＩＤ等）でも良い。
【０３４４】
qryWhr７５２は、この好適なデータ・モデルでは、WHERE条項表現の格納に利用される。qryWhr７５２は、ストリング型であり、所望のWHERE条項表現を、tknCurlyBrackets５２６、tknItemCodeBegin５２８及び／又はtknItemCodeEnd５３０を表す１個以上のトークン値と共に、全て格納できるサイズを満たすべきである。qryWhr７５２に格納されるコンポーネント値は、以下のようなストリングである。
１．以下の、１個以上が、オプションとして埋め込まれたストリング。
ａ．tknCurlyBrackets５２６を表すトークン値、
ｂ．tknItemCodeBegin５２８を表すトークン値、
ｃ．tknItemCodeEnd５３０を表すトークン値、
ｄ．これらの何れかの組み合わせ。
２．tknCurlyBrackets５２６、tknItemCodeBegin５２８及び／又はtknItemCodeEnd５３０を表すトークン値であって、qryWhr７５２に格納したコンポーネント値に埋め込まれたトークン値が全て処理された後で、マイクロソフト・アクセス、オラクル又はこれらの両方が要求できるような有効なWHERE句表現になるストリング。
【０３４５】
qryGrp５１２をクエリ７０２に埋め込むことで、クエリ・ビルダーによる、所望のクエリが集合クエリか否かの判断が、可能になる。
【０３４６】
qryUni５１４をクエリ７０２に埋め込むことで、クエリ・ビルダーによる、所望のクエリが全結合クエリか否かの判断が、可能になる。
【０３４７】
クエリ・ソース７０４は、クエリ７０２の子エントリである。ここで、クエリ７０２は、クエリ・ソース７０４との、１対多関係７１２を有する。また、クエリ７０２は、クエリ・ソース７０４との、他の１対多関係７１４を有する。１対多関係７１４は、オプションである。クエリ７０２は、以下の属性を有する。
１．srcQryld ７３４、
２．srcOrd ７３６、
３．srcld ７５４、
４．srcReuseld ７３８、
５．srcUseCnd ５１６、
６．srcJoinFld ７５６、
７．srcJoinToFld ７５８、
８．srcJoinToSrc ７６０。
【０３４８】
srcQryld７３４は、１対多関係７１２を可能にするためにクエリ・ソース７０４内で利用される、好適な属性である。srcQryld７３４は、クエリ７０２のqryld７３２に対応する外部キーである。クエリ・ソース７０４内で、srcQryld７３４はストリング型として実行されると共に、qryld ７３２と同サイズであるとして実行される。srcQryld７３４及びsrcld７５４は、クエリ・ソース７０４内で、合成一次キーとして機能する。
【０３４９】
srcOrd７３６は、srcld７５４に格納された複数のコンポーネント値中の所望の命令を維持するためにクエリ・ソース７０４内で使用される、好適な属性である。クエリ・ソース７０４内では、srcOrd７３６は、長整数データ形式として実行されるが、srcQryld７３４内に格納された複数のコンポーネント値中の命令を維持することができれば他のデータ形式として実行することもできる。そのようなデータ形式としては、短整数、ストリング、浮動小数点があるが、これらには限定されない。
【０３５０】
srcld７５４は、テーブル／閲覧（これは、所望のクエリの構築への利用が要求される）の名称を特定するために利用される。srcld７５４に格納されるコンポーネント値は、１個のソース・オブジェクト内で１個で無ければならない。なぜなら、srcld ７５４は、クエリ・ソース７０４の合成一次キーの一部だからである。srcld７５４は、以下の何れかで表すことができる。
１．テーブル／閲覧（所望のクエリを実行するためのデータベース内に存在する）の名称を表すコンポーネント値、又は
２．srcReuseld７３８を表すデータ地の場合のみ、属性閲覧名（この実施例では、全て印刷可能な文字で無ければならない。）
【０３５１】
srcReuseld７３８は好適な属性であり、このsrcReuseld７３８をクエリ・ソース７０４内で利用することで、このクエリ・ソース７０４の他のソース・オブジェクトの利用が可能になる。srcReuseld７３８は、外部キーであり、オプションとして、qryld７３２からの値を含むことができる。この例では、srcReuseld７３８は、親であるqryld７３２を表すデータ値を含むことができない。なぜなら、そのようなデータ値は、この好適なデータ・モデル内で、無限繰り返しループをもたらすからである。１対多関係７１４は、qryld７３２及びsrcReuseld７３８によって実行される。
【０３５２】
srcUseCnd５１６は、クエリ・ソース７０４に埋め込まれる。srcUseCnd５１６に含まれるトークン値の処理が、srcld７５４を所望クエリの構築に利用できないと判断した場合、完成レコード（complete record:srcUseCnd５１６のトークン値とsrcld７５４のデータ値を有し、全ての子レコードを含む）は、所望クエリの構築には利用されない。
【０３５３】
srcJoinFld７５６、srcJoinFld７５８及びsrcJoinToSrc７６０は、２個のテーブル、２個の閲覧、又は、１個のテーブル及び１個の閲覧を結合するために必要な情報を特定するために、利用される。srcJoinFld７５６は、フィールド・エイリアス(alias)（これは、カレント・レコード(current record)のsrcld７５４で特定されるテーブル／閲覧に属している。）を特定するために使用される。srcJoinFld７５８は、他のテーブル／閲覧に属するフィールド・エイリアス（これは、カレント・レコードのsrcld７５４で特定されるテーブル／閲覧に結合しており、srcJoinToSrc７６０を表すコンポーネント値で特定される。）を特定するために使用される。この好適な実施形態では、自己結合は実行されない。
【０３５４】
クエリ・フィールド７０６は、クエリ・ソース７０４の子エントリーである。ここで、クエリ・ソース７０４は、クエリ・フィールド７０６との、１対多関係７１６を有している。クエリ・フィールド７０６は、以下の属性を有する。
１．colQryld ７４０、
２．colSrcld ７４２、
３．colOrd ７４４、
４．colAla ７６２、
５．colXpr ７６４、
６．colUseCnd ５１８
７．colGrpFun ７６６、及び
８．colReuse ５２０。
【０３５５】
colQryld７４０及びcolSrcld７４２は、クエリ・フィールド７０６に対して１対多関係７１６を可能にするために利用される、２個の好適な属性である。colQryld７４０及びcolSrcld７４２は、srcQryld７３４及びsrcld７５４にそれぞれ関連する外部キーである。colQryld７４０及びcolSrcld７４２は、それぞれ、ストリング・データ型として実行され、srcQryld７３４及びsrcld７５４と同じサイズである。colQryld７４０、colSrcld７４２及びcoAla７６２は、クエリ・フィールド７０６内で合成一次キーとして機能する。
【０３５６】
colOrd７４４は、colAla７６２内に格納された複数のコンポーネント値内の所望の命令を維持するために、クエリ・フィールド７０６内で利用される、好適な属性である。クエリ・フィールド７０６内で、colOrd７４４は、長整数データ形式として実行されるが、colOrd７４４は、colAla７６２に格納された複数のコンポーネント値内の所望の命令を維持することができれば、他のデータ形式として実行することもできる。そのようなデータ形式としては、短整数、ストリング、浮動小数点があるが、これらには限定されない。
【０３５７】
colAla７６２は、所望のクエリのための有効なカラム／フィールドを特定するために使用される。この好適なデータ・モデルにおいて、colAla７６２は、ストリング・データ形式として実行される。colAla７６２に格納されたコンポーネント値は、%TknMth%（これは、tknMonth５２４を表すトークン値である。）と共に埋め込むことができる。colAla７６２に格納されたコンポーネント値は、１個のソース・オブジェクトの中から、srcld７５４に格納された親コンポーネント値を参照して、１個だけ特定できなければならない。なぜなら、colAla７６２は、クエリ・ソース７０４の合成一次キーの一部だからである。
【０３５８】
colXpr７６４は、所望クエリの、有効な表現を特定するために利用される。この好適なデータ・モデルにおいて、colXpr７６４は、ストリング・データ形式として実行される。colAla７６２に格納されたコンポーネント値は、以下の何れかに埋め込まれる。
１．tknMonth５２４を表す１個以上のトークン値。
２．tknAlias５２２を表す１個以上の“！”（引用符無しの感嘆符）。
【０３５９】
colUseCnd５１８は、クエリ・フィールド７０６に埋め込まれる。colUseCnd５１８に含まれるトークン値の処理が、colAla７６２は所望のクエリの構築には利用できないと判断した場合、colUseCnd５１８及びcolAla７６２のトークン値を有する全体レコード(entire record)は所望のクエリの構築に利用されない。
【０３６０】
colGrpFun７６６は、カラム／フィールドのＳＵＭ機能の特定に使用される。ＳＵＭ機能は、集合クエリとして構築された所望クエリを合算するように、要求される。この好適な実施形態では、colGrpFun７６６が“SUM”（実際には引用符無し）で表されている場合、合算機能は、colXpr７６４に格納されたコンポーネント値に適用される。他の場合には、colGrpFun７６６が“Group”（実際には引用符無し）で表されると、colAla７６２がGROUP BY句内で利用される。他の場合、colXpr７６４に格納されるコンポーネント値は、１つの表現であって、GROUP BY句を含まないものとして、扱われる。この好適な実施形態では、ＳＵＭ機能のみを使用する場合が示されているが、colGrpFun７６６は、他の機能（例えばＡＶＧ、ＭＡＸ、ＭＩＮ等）の実行にも、利用できる。
【０３６１】
colReuse５２０は、クエリ・フィールド７０６に埋め込まれ、クエリ・フィールド７０６の、複製を要求されたレコードの特定に利用される。
【０３６２】
図７Ｃは、図７Ｂに示した好適なデータ・モデルの、好適なソース・オブジェクト・レポジトリとしての、好適な実行を示している。クエリ７０２は、tblQry７８２（これは、マイクロソフト・アクセスのデータベース・テーブルである。）として実行される。クエリ・ソース７０４は、tblQrySrc７８４（これは、マイクロソフト・アクセスのデータベース・テーブルである。）として実行される。クエリ・フィールド７０６は、tblQryFld７８６（これは、マイクロソフト・アクセスのデータベース・テーブルである。）として実行される。
【０３６３】
図８Ａ−図８Ｐは、好適なソフトウエア・コンポーネント・コンストラクタ１７０の好適なフローチャートを示している。このソフトウエア・コンポーネント・コンストラクタ１７０は、機能として実行され、クエリ・ビルダーと称される。クエリ・ビルダーは、tblQry７８２、tblQrySrc７８４及びtblQryFld７８６（図５Ａに示したデータ・トークンである。）に格納されたソース・オブジェクト１６６と、図６に示したパラメータとを用いて、所望のクエリを構築するために、利用される。この好適なフローチャートは、どのようなコンピュータ・プログラム言語でも、実行できる。この好適なフローチャートで使用されている変数名及びプログラム規約は、特定のコンピュータ・プログラム言語に属するものではない。しかし、図示したように、この好適なフローチャートを実行することにより、プログラム言語に、１個以上のオペレーションの明確な解釈を要求することができる。例えば、この好適なフローチャートでは、２個以上のストリング値の連結がプラス符号で表されているが、これと同じオペレーションはプログラム言語によってはアンパサンド符号で表される。また、この好適なフローチャートで使用されている変数名や機能は、全て例示であり、特定の実行での要求及び／又は必要に応じて変更することができる。
【０３６４】
この好適なフローチャートでは、UNION
ALL演算子は、サブ・クエリについてのみ実行される。
【０３６５】
この好適なフローチャートでは、引数argComp、argTrue及びargFalseは、記号で使用される。しかし、各オペレーションにおいて、これらの引数が使用される場合は、常に、これらの引数に含まれる値が使用される。
【０３６６】
この好適なフローチャートにおいて、オペレーションでtknMonth５２４を置き換えるときは、常に、tknMonth５２４の完全な置き換えを意味し、最初の％（パーセント符号）がら最後の％（パーセント符号）までを置き換える。この好適なフローチャートでは、tknMonth５２４を表す１個のトークン値のみが１個のデータベース・フィールドに埋め込まれていることを、前提とする。
【０３６７】
この好適なフローチャートでは、以下の場合には、変数が空(empty)であるとみなす。
１．変数が、空(empty)の場合、
２．変数が、無値(NULL
value)の場合、
３．変数が、そのデータ形式における空値(empty value)、例えば、空ストリング、零、及び、偽の場合。
【０３６８】
この好適なフローチャートでは、varCalCnt及びvarMthAryを除く全ての変数は、モジュール・レベルで定義される。また、これらの変数の前回の各数値を保持しておき、クエリ・ビルダー機能への繰り返し呼び出しによって、その変数を再生成する。しかし、varCalCnt及びvarMthAryは、クエリ・ビルダー機能への繰り返し呼び出しで初期化されない。図６で定義された全てのパラメータは、グローバル・レベルで定義され、繰り返し呼び出しでは初期化されない。
【０３６９】
この好適なフローチャートでは、ストリング値の識別に二重引用符が使用される。二重引用符は、この好適なフローチャートでは、ストリングの一部ではない。しかし、単一引用符は、常に、ストリングの一部である。
【０３７０】
この好適なフローチャートは、エラー及び／又は例外処理を含まない。全てのコンポーネント値及びトークン値は正しく且つ要求範囲内であることを前提としている。
【０３７１】
この好適なフローチャートは、それ自身で説明されている。しかし、明確化のために、幾つかのオペレーションについては、より詳細に説明する。
【０３７２】
図８Ａ−図８Ｘに示された好適なフローチャートでは、tblQry７８２、tblQrySrc７８４及びtblQryFld７８６のフィールド名は、それぞれの符号を附さずに使用されている。前述の、好適なデータ・モデルの属性を表すフィールド名を、以下に列挙する。
１．qryld ７３２、
２．qryWhr ７５２、
３．qryGrp ５１２、
４．qryUni ５１４、
５．srcQryld ７３４、
６．srcOrd ７３６、
７．srcld ７５４、
８．srcReuseld ７３８、
９．srcUseCnd ５１６、
１０．srcJoinFId ７５６、
１１．srcJoinToFId ７５８、
１２．srcJoinToSrc ７６０、
１３．colQryld ７４０、
１４．colSrcld ７４２、
１５．colOrd ７４４、
１６．C0lAla ７６２、
１７．colXpr ７６４、
１８．colUseCnd ５１８、
１９．colGrpFun ７６６、及び
２０．colReuse ５２０。
【０３７３】
上述のフィールド名に加えて、図８Ａ−図８Ｘの好適なフローチャートでは、以下のデータ・トークン、パラメータ及びテーブル名が、符号を附さずに使用されている。
１．prmQryld ６１２、
２．prmMthCnt ６１４、
３．prmOraQry ６１８、
４．prmLftJoi ６２０、
５．tblQry ７８２、
６．tbIQrySrc ７８４、
７．tbIQryFId ７８６、
８．tknMonth ５２４、
９．prmBegMth ６１６、及び
１０．prmUseCnd 622。
【０３７４】
図８Ａにおいて、端子８１０ａで、クエリ・ビルダーの機能が開始する。クエリ・ビルダーは、prmQryld６１２のためのパラメータ（tblQry７８２から所望のソース・オブジェクトを識別するために使用される。）を受け取る。
【０３７５】
判断ボックス８１０ｂでは、クエリ・ビルダーの呼び出しが１回目か否かをチェックする。このチェックは、グローバル変数であるvarCalCnt及びvarMthAryの１回限りの初期化（それぞれ、オペレーション８１０ｃ及びオペレーション８１０ｄで初期化される。）のために要求される。１回目の呼び出しの場合、フローはオペレーション８１０ｃに続く。他の場合、フローはオペレーション８１０ｅに続く。
【０３７６】
オペレーション８１０ｅでは、オブジェクトvarQryRcdが初期化される。このオブジェクトvarQryRcdは、好適なADO Recordsetオブジェクトであって、このオブジェクトvarQryRcdを用いて開かれる、Recordsetについての情報を有する。
【０３７７】
オペレーション８１０ｆでは、オブジェクトvarSrcRcdが初期化される。このオブジェクトvarSrcRcdは、好適なADO Recordsetオブジェクトであって、このオブジェクトvarSrcRcdを用いて開かれる、Recordsetについての情報を有する。
【０３７８】
オペレーション８１０ｇでは、VarFldRcdが初期化される。オブジェクトVarFldRcdは、好適なADO Recordsetオブジェクトであって、このvarSrcRcdを用いて開かれる、Recordsetについての情報を有する。
【０３７９】
オペレーション８１０ｈでは、配列変数VarTblAryが初期化される。VarTblAryは、srcld７５４内のコンポーネント値をtable/viewエイリアスと共に格納するために使用される、二次元配列である。このテーブル／閲覧エイリアスは、tknAlias５２２の処理結果として、srcd７５４用に生成される。
【０３８０】
図８Ｂで、オペレーション８１１ｐ及び８１１ｑは、一度だけクエリを要求されるが、サブ・クエリは要求されない。
【０３８１】
オペレーション８１１ｐでは、varAlaCntが、初期化されて零になる。varAlaCntは、tknAlias５２２のエイリアスを計算するために使用される。
【０３８２】
オペレーション８１１ｑで、図６に示したパラメータが決定される。このパラメータは、ユーザの直接入力によって、或いは、コンピュータ読出可能な記録媒体から取得することによって、決定される。
【０３８３】
図８Ｃにおいて、オペレーション８１２ｂでは、オブジェクトvarQryRcdが、開かれる。ここで、varQryRcdは、qryld７３２がprmQryld６１２のパラメータ値１６２と一致する場合の、tblQry７８２の全フィールドを含む。qryld７３２は一次キーなので、オブジェクトverQryRcdは、１個の記録しか含まない。
【０３８４】
オペレーション８１２ｃでは、オブジェクトvarSrcRcdが開かれる。ここで、varSrcRcdは、srcQryld７３４がqryld７３２と一致し且つオブジェクトvarSrcRcdに含まれるレコードセットの命令がsrcOrd７３６のデータ値に属している場合の、tblQrySrc７８４の全フィールドを含む。
【０３８５】
オペレーション８１２ｆでは、varSrcAvlが、srcUseCnd５１６のトークン値処理結果の割り当てを行う。srcUseCnd５１６のトークン値処理は、CheckAvailabilityと称される好適な機能で行われる（詳細は図８Ｑに示す）。CheckAvailabilityが真になった場合、その時にブジェクトvarSrcRcdが示す記録を、クエリ・ビルダーが使用することがわかる。一方、CheckAvailabilityが偽になった場合、その時にオブジェクトvarSrcRcdが示す記録を、クエリ・ビルダーが使用しないことがわかる。
【０３８６】
オペレーション８１２Ｉでは、tknAlias５２２が処理される。tknAlias５２２は、図８Ｒに示したような、好適な機能NewAlias()によって、処理される。そして、NewAlias()に生成されたエイリアスは、変数varCurAlaに格納される。
【０３８７】
図８Ｄにおいて、オペレーション８１３ｃでは、クエリ・ビルダーが、サブ・クエリの構築を、繰り返し要求される。ここで、サブ・クエリは、srcReuseld７３８のデータ値によって、識別される。構築されたサブ・クエリは、変数varSubQryに格納される。
【０３８８】
オペレーション８１３ｉでは、オブジェクトvarFldRcdが、開かれる。ここで、このvarFldRcdは、colQryld７４０のデータ値がsrcQryldのデータ値と一致し、colSrcld７４２のデータ値がsrcld７５４のデータ値と一致し且つオブジェクトvarFldRcdによって表されるRecordsetの命令がcolOrd７４４のデータ値に属する場合の、tblQryFld７８６の全フィールドを含む。
【０３８９】
オペレーション８１３ｍでは、varFldAvlに、colUseCnd５１８のトークン値処理結果（トークン結果１５６の一例である）が割り当てられる。colUseCnd５１８のトークン値の処理は、好適な機能であるCheckAvailabilityで行われる（詳細を図８Ｑに示す）。CheckAvailabilityが真になった場合、その時にオブジェクトvarFldRcdが示す記録を、クエリ・ビルダーが使用することを暗示している。一方、CheckAvailabilityが偽になった場合、その時にオブジェクトvarFldRcdが示す記録を、クエリ・ビルダーが使用しないことを暗示している。
【０３９０】
図８Ｑは、２個のデータ・トークンsrcUseCnd５１６及びcolUseCnd５１８の好適な処理を示す好適なフローチャートである。ここで、srcUseCnd５１６及びcolUseCnd５１８の処理は、好適な機能であるCheckAvailabilityを用いて実行される。srcUseCnd５１６及びcolUseCnd５１８の両方のデータ・トークンで、処理ロジックは同じであるため、これら両方のデータ・トークンの処理は、１つの機能として実行される。
【０３９１】
オペレーション８２６ａで、機能CheckAvailabilityが開始して、パラメータprmCndTknを受け取る。このprmCndTknは、srcUseCnd５１６を表すトークン値又はcolUseCnd５１８を表すトークン値（これらは、機能CheckAvailabilityが呼び出される場所に従属している）を要求するためのパラメータを含む。
【０３９２】
オペレーション８２６ｄでは、パラメータprmUseCnd６２２（コンマ分離型のストリング値又は単一のストリング値のいずれかを備えている）のパラメータ値１６２が、配列変数varCndPrmn内の配列として、格納される。以下は、varCndPrm内の配列としてのprmUseCnd６２２の格納内容を示す、幾つかの例である。
１．prmUseCnd６２２が空(empty)の場合、varCndPrmは、配列項目を含まない。
２．prmUseCnd６２２が１個の配列値のみを含む場合、varCndPrmは、１個の配列項目を含む。
３．prmUseCnd６２２が１０個のコンマ分離型ストリング値を含む場合、varCndPrmは、１０個の配列項目（各配列項目は１個のストリング値を含む）を含む。
【０３９３】
図８Ｒは、機能NewAlias()の好適な処理の好適なフローチャートを示している。ここで、機能NewAlias()は、tknAlias５２２の好適な処理に使用される。機能NewAlias()が要求されるときは、常に、１個以上のアルファベットを含む新しいエイリアスに戻る。
【０３９４】
オペレーション８２７ａでは、機能NewAlias()が開始される。
【０３９５】
オペレーション８２７ｅにおいて、ＭＯＤは、モジュロ演算を表している。モジュロ演算とは、変数varWrkCnt２６の値を割り算したときの剰余を見つけ出す演算である。
【０３９６】
オペレーション８２７ｆにおいて、ＩＮＴは、整数機能を表している。整数機能とは、四捨五入等を行わずに、数字の整数部分のみを元に戻す演算である。
【０３９７】
オペレーション８２７ｉは、ＣＨＲは、アスキー文字を元に戻す機能を表している。アスキー文字は、パラメータとしてＣＨＲに渡された数字によって表される。
【０３９８】
オペレーション８２７ｋでは、機能NewAlias()が、新しく演算されたエイリアスに戻る。
【０３９９】
図８Ｓは、好適な機能WhereClauseを示している。この機能WhereClauseは、クエリ・ビルダーが、２個のWHERE句を合併させるために、使用する。また、機能WhereClauseは、好適な機能WhereTokenを利用する。機能WhereTokenは、tknCurlyBrackets５２６、tknItemCodeBegin５２８及びtknItemCodeEnd５３０の処理に利用される。
【０４００】
オペレーション８２８ａでは、機能WhereClauseが開始して、２個のパラメータprmOrgWhr及びprmNewWhrを受け取る。ここで、prmOrgWhrは、既に組み立てられたWHERE句（場合によっては、空ストリングであっても良い）と、prmNewWhrとを備えている。prmNewWhrは、空ストリングであっても良く、prmOrgWhr内での結合が求められているWHERE句を含んでいる。
【０４０１】
オペレーション８２８ｄでは、機能WhereTokenが、tknCurlyBrackets５２６、tknItemCodeBegin５２８及びtknItemCodeEnd５３０の処理に使用される。
【０４０２】
図８Ｔ−図８Ｘは、図５Ｂ及び図５Ｃに示した処理ルールと、tknItemCodeBegin５２８及びtknItemCodeEnd５３０用に特定された処理ルーツとに基づく、tknCurlyBrackets５２６、tknItemCodeBegin５２８及びtknItemCodeEnd５３０の処理の好適な実行の好適なフローチャートを示している。
【０４０３】
図８Ｔにおいて、オペレーション８２９ａでは、機能WhereTokenが開始して、tknCurlyBrackets５２６、tknItemCodeBegin５２８及び／又はtknItemCodeEnd５３０を表すトークン値を１個以上含むことのできるWHERE句を備えるパラメータprmRawWhrを受け取る。
【０４０４】
図８Ｕの、オペレーション８３０ｄにおいて、varResultは、以下の何れかに置き換えられる。
１．変数varTknDtaがtknItemCodeBegin５２８を表す“ItmBeg”を含んでいる場合は、prmItmBeg６２４（実際には引用符無し）のパラメータ値１６２、又は、
２．変数varTknDtaがtknItemCodeEnd５３０を表す“ItmEnd”を含んでいる場合は、prmItmEnd６２６（実際には引用符無し）のパラメータ値１６２、又は、
３．変数varTknDtaが、tknItemCodeBegin５２８を表す“ItmBeg”を及びtknItemCodeEnd５３０を表す“ItmEnd”の何れも含まない場合は、無値(NULL value)。
【０４０５】
図９Ａ−図９Ｏは、クエリ・ビルダーが所望のクエリの構築に使用する好適なソース・オブジェクト（ソース・オブジェクト・レポジトリtblQry７８２、tblQrySrc７８４及びtblQryFld７８６内に格納されている）を示している。
【０４０６】
図９Ａは、tblQry７８２の、特定の好適なセグメントを示している（tblQry７８２の特定の好適なセグメントを示しているため、符号７８２ａで表している。）。このtblQry７８２は、qryA（qryld７３２を表すデータ値）で識別できる、好適なソース・オブジェクトである。以下、tblQry７８２を、好適なソース・オブジェクトqryAと称し、記録９０１内に表す。好適なソース・オブジェクトqryAは、所望のクエリの構築に使用することができる。この好適なソース・オブジェクトqryAは、どのデータ・トークンとも、関連付けられることはない。このため、好適なソース・オブジェクトqryAを用いて構築された所望のクエリは、特定のデータベースにとって、常に同一である。しかし、prmOraQry６１８及びprmLftJoi６２０のパラメータは、結果物すなわち構築されたクエリを、変更することができる。なぜなら、これらのパラメータは、所望クエリを構築している間、データ・トークンを使用すること無しに、使用できるからである。
【０４０７】
tblQrySrc７８４の好適なセグメント（tblQrySrc７８４の特定の好適なセグメントを示しているため、符号７８４ａで示している。）は、記録９０１に関連する３個の記録を備えている．７８４ａ内の各記録は、好適なソース・オブジェクトqryAを使用して構築される所望のクエリ内で使用される、テーブルに関連する情報を示している。７８４ａは、以下のものを示している。
１．tblItemsを有する記録９０１ａ。
２．tblBrandsを有する記録９０１b。ここで、tblBrandsは、所望のクエリ（カラムbrandCodeを利用した好適なソース・オブジェクトを用いて構築されたもの）内のtblItemsと接合している。
３．tblOriginsを有する記録９０c１。ここで、tblOriginsは、所望のクエリ（カラムoroginCodeを利用した好適なソース・オブジェクトを用いて構築されたもの）内のtblItemsと接合している。
【０４０８】
図９Ｂは、記録９０１ａに関連するtblQryFld７８６の、好適な記録を示している（tblQryFld７８６の特定の好適なセグメントであるため、符号７８６ｂで表している。）。ここで、記録９０１ａは、tblQrySrc７８４の好適なセグメント内に示されている（tblQrySrc７８４の特定の好適なセグメントを示しているため、７８４ｂで表している。）。７８６ｂ内の記録は、tblItems（記録９０１ａに備えられており、また、クエリ・ビルダーが好適なソース・オブジェクトqryAを用いて構築した所望クエリに含まれている）のカラムを備えている。
【０４０９】
図９Ｃは、記録９０１ｂに関連するtblQryFld７８６の好適な記録を示している（tblQryFld７８６の特定の好適なセグメントであるため、符号７８６ｃで表している。）。ここで、記録９０１ｂは、tblQrySrc７８４の好適なセグメント内に示されている（tblQrySrc７８４の特定の好適なセグメントを示しているため、７８４ｃで表している。）。７８６ｃ内の記録は、tblBrands（記録９０１ｂに備えられており、また、クエリ・ビルダーが好適なソース・オブジェクトqryAを用いて構築した所望クエリに含まれている）のカラムを備えている。
【０４１０】
図９Ｄは、記録９０１ｃに関連するtblQryFld７８６の好適な記録を示している（tblQryFld７８６の特定の好適なセグメントであるため、符号７８６ｄで表している。）。ここで、記録９０１ｃは、tblQrySrc７８４の好適なセグメント内に示されている（tblQrySrc７８４の特定の好適なセグメントを示しているため、７８４ｄで表している。）。７８６ｄ内の記録は、tblOrigins（記録９０１ｃに備えられており、また、クエリ・ビルダーが好適なソース・オブジェクトqryAを用いて構築した所望クエリに含まれている）のカラムを備えている。
【０４１１】
図９Ｅは、tblQry７８２の、特定の好適なセグメントを示している（tblQry７８２の特定の好適なセグメントを示しているため、符号７８２ｅで表している。）。このtblQry７８２は、qryPur（qryld７３２を表すデータ値）で識別できる、好適なソース・オブジェクトである。以下、tblQry７８２を、好適なソース・オブジェクトqryPurと称し、記録９０２内に表す。好適なソース・オブジェクトqryPurは、qryUnion（qryld７３２を表すデータ値）で識別できる他のソース・オブジェクト内で使用され、以下の記載では好適なソース・オブジェクトqryUnionと称される（図９Ｇに示す）。しかし、クエリ・ビルダーは、好適なソース・オブジェクトqryPurのみを用いて、所望のクエリを構築できる。
【０４１２】
tblQrySrc７８４の好適なセグメント（tblQrySrc７８４の特定の好適なセグメントを示しているため、７８４ｅで表している。）は、記録９０２に関連する１個の記録９０２ａを備えている。記録９０２ａは、所望のクエリで使用されるテーブルを示している。この所望のクエリは、好適なソース・オブジェクトqryPur及び／又は他のクエリを使用して構築されるクエリであり、好適なソース・オブジェクトqryPurを使用するソース・オブジェクトを用いてクエリ・ビルダーが構築する。
【０４１３】
記録９０２ａ内において、srcUseCnd５１６は、２個のストリング値TknPur及びTknZonを含むコンマ分離型ストリングのリストを有する、好適なトークン値で表される。srcUseCnd５１６の使用により、好適なソース・オブジェクトqryPurを使用した所望クエリの構築の間は、prmUseCnd６２２のパラメータ地１６２がストリング値TknPur及びTknZonの少なくとも１個を有するときにのみ、記録９０２ａが使用されることがわかる。記録９０２ａが使用されない場合には、tblQryFld７８６の好適なセグメント（tblQryFld７８６の特定の好適なセグメントを示しているので、７８６ｅで表している。）に示された記録も使用されない。
【０４１４】
記録９０２ｂは、記録９０２ａが使用される場合にのみ、使用される。記録９０２ｃは、srcUseCnd５１６がストリング値TknZonを有する場合にのみ、使用される。記録９０２ｄは、srcUseCnd５１６がストリング値TknPurを有する場合にのみ、使用される。記録９０２ｅは、srcUseCnd５１６がストリング値TknSalを有する場合にのみ、使用される。ストリング値TknSalは、記録９０２ａには含まれていない。なぜなら、srcUseCnd５１６のパラメータ値１６２がストリング値TknSalを有しているがストリング値TknPur及びTknZonの何れかを有していない場合、記録９０２ａ及びその関連記録９０２ｂ、９０２ｃ、９０２ｄ及び９０２ｅは、所望クエリの構築での使用を要求されないからである。
【０４１５】
記録９０２ｄ及び９０２ｅにおいて、colAla７６２を表すコンポーネント値には、%TknMth%、すなわちtknMonth５２４を示すトークン値が埋め込まれる。
【０４１６】
記録９０２ｄにおいて、colXpr７６４は、tknMonth５２４を示す好適なトークン値１５４である、%TknMth,!purchaseMonth,!Amount,0%を有している。ここで、tknMonth５２４を示すトークン値も、tknAlias５２２を表すトークン値１５４である、インスタンス“！”（感嘆符記号、実際には引用符無し）を２個備えている。この好適な実行は、tknAlias５２２を表すトークン値の、tknMonth５２４を表す他方のトークン値への、入れ込みを示している。引数purchaseMonth及びAmountは、記録９０２ｄのcolXpr７６４内で使用されており、tblPurchasesのカラム名である。また、０は、定数である。
【０４１７】
記録９０２ｄ及び９０２ｅにおいて、colReuse５２０は、好適なデータ値である、真で表されている。これにより、記録９０２ｄ及び９０２ｅは、colUseCnd５１８に基づいて使用される場合には、所望クエリの構築に、prmMthCnt６１４のパラメータ値１６２で特定される回数だけ利用されることが分かる。prmMthCnt６１４のパラメータ値１６２が零の場合、記録９０２ｄ及び９０２ｅは、１回のみ使用される。
【０４１８】
図９Ｆは、tblQry７８２の好適なセグメントを示している（tblQry７８２の特定の好適なセグメントを示しているため、７８２ｆで表している。）。このtblQry７８２は、qrySal（qryld７３２を表すデータ値）で識別できる、好適なソース・オブジェクトである。tblQry７８２は、以下、好適なソース・オブジェクトqrySalと称し、記録９０３内に表す。好適なソース・オブジェクトqrySalは、好適なソース・オブジェクトqryUnionで識別される他のソース・オブジェクト内で使用される（図９Ｇに示す）。しかし、クエリ・ビルダーは、好適なソース・オブジェクトqrySalのみを用いて構築することができる。
【０４１９】
tblQrySrc７８４の好適なセグメント（tblQrySrc７８４の特定の好適なセグメントを示しているため、７８４ｆで表している。）は、記録９０３に関連する、１個の記録９０３ａを有している。記録９０３ａには、所望のクエリで使用される、テーブルが示されている。ここで、この所望のクエリは、好適なソース・オブジェクトqrySal、及び／又は、他のクエリ（クエリ・ビルダーがソース・オブジェクトを用いて構築したクエリであって、好適なソース・オブジェクトqrySalを使用するもの）を使用して構築されている。
【０４２０】
記録９０３ａにおいて、srcUseCnd５１６は、２個のストリング値TknSal及びTknZonを有するコンマ分離型ストリングのリストを備える、好適なトークン値で表される。srcUseCnd５１６の使用によっては、、prmUseCnd６２２のパラメータ値１６２がストリング値TknSal及びTknZonの少なくとも一方を有する場合にのみ、好適なソース・オブジェクトqrySalを使用する所望のクエリを構築しているときに使用されることが分かる。記録９０３ａが使用されない場合、tblQryFld７８６の好適なセグメント（tblQryFld７８６の特定の好適なセグメントを示すため、７８６ｆと表している。）に示された記録も使用されない。
【０４２１】
記録９０３ｂは、記録９０３ａが使用されるときにのみ、使用される。記録９０３ｃは、srcUseCnd５１６がストリング値TknZonを有するときにのみ、使用される。記録９０３ｄは、srcUseCnd５１６がストリング値TknSalを有するときにのみ、使用される。記録９０３ｅは、srcUseCnd５１６がストリング値TknPurを有するときにのみ、使用される。ストリング値TknPurは、記録９０３ａに含まれていない。なぜなら、srcUseCnd５１６のパラメータ値１６２がストリング値TknPurを有しているがストリング値TknSal及びTknZonの何れかを有していない場合、記録９０３ａ及びその関連記録９０３ｂ、９０３ｃ、９０３ｄ及び９０３ｅは、所望クエリの構築での使用を要求されないからである。
【０４２２】
記録９０３ｄ及び９０３ｅにおいて、colAla７６２を表すコンポーネント値には、%TknMth%、すなわちtknMonth５２４を示すトークン値が埋め込まれる。
【０４２３】
記録９０３ｄにおいて、colXpr７６４は、tknMonth５２４を示す好適なトークン値である、%TknMth,!saleMonth,!Amount,0%を有している。ここで、tknMonth５２４を示すトークン値も、tknAlias５２２を表すトークン値１５４である、インスタンス“！”（感嘆符記号、実際には引用符無し）を２個備えている。この好適な実行は、tknAlias５２２を表すトークン値の、tknMonth５２４を表す他方のトークン値への、入れ込みを示している。引数saleMonth及びAmountは、記録９０３ｄのcolXpr７６４内で使用されており、tblsalesのカラム名である。また、０は、定数である。
【０４２４】
記録９０３ｄ及び９０３ｅにおいて、colReuse５２０は、好適なデータ値である、真で表されている。これにより、記録９０３ｄ及び９０３ｅは、colUseCnd５１８に基づいて使用される場合には、所望クエリの構築に、prmMthCnt６１４のパラメータ値１６２で特定される回数だけ利用されることが分かる。prmMthCnt６１４のパラメータ値１６２が零の場合、記録９０３ｄ及び９０３ｅは、１回のみ使用される。
【０４２５】
図９Ｇは、tblQry７８２の好適なセグメントを示している（tblQry７８２の特定の好適なセグメントを示しているので、７８２ｇで表されている。）。このtblQry７８２は、データ値qryUnion（qryld７３２を表し、記録９０４に格納される。）で特定される、好適なソース・オブジェクトである。
【０４２６】
記録９０４において、qryUni５１４は、好適なトークン値である、真で表されている。これにより、所望のクエリ（好適なソース・オブジェクトqryUnionを使用して構築される。）は、結合クエリとなることが分かる。記録９０４は、tblQrySrc７８４の好適なセグメント（tblQrySrc７８４の特定の好適なセグメントであるため、７８４ｇと示した。）に示された２個の関連する記録を有している。７８４ｇの好適な記録、すなわち記録９０４ａ及び記録９０４ｂの両方が使用される場合、好適なソース・オブジェクトqryUni５１４を利用して構築される所望のクエリは、UNION ALL演算子を利用する結合クエリである。
【０４２７】
記録９０４ａにおいて、srcReuseld７３８は、データ値qrySalで表されている。このqrySalは、図示したように、記録９０４ａが所望のクエリの構築に利用されるときは、常に、好適なソース・オブジェクトqrySalが利用されるように指定する。データ値qrySal（記録９０４ａのsrcld７５４を表している。）は、クエリに与えられた好適な任意の名称であり、好適なソース・オブジェクトqrySalを利用して構築される。
【０４２８】
記録９０４ｂにおいて、srcReuseld７３８は、データ値qryPurで表されている。このqryPurは、図示したように、記録９０４ａが所望のクエリの構築に利用されるときは、常に、好適なソース・オブジェクトqryPurが利用されるように指定する。データ値qryPur（記録９０４ｂのsrcld７５４を表している。）は、クエリに与えられた好適な任意の名称であり、好適なソース・オブジェクトqryPurを利用して構築される。
【０４２９】
図９Ｈは、tblQry７８２の好適なセグメント（tblQry７８２の特定の好適なセグメントを示しているので、７８２ｈと表している。）を示している。このtblQry７８２は、データ値qryGroupで特定される、好適なソース・オブジェクトである。以下、tblQry７８２を、好適なソース・オブジェクトqryGroup（qryld７３２を表している。）と称し、記録９０５内に表す。
【０４３０】
記録９０５において、qryGrp５１２は、好適なトークン値である、真で表されている。これにより、好適なソース・オブジェクトqryGroupを利用して構築される所望のクエリは、集合クエリである。記録９０５は、１個の関連する記録を有している。この関連記録は、tblQrySrc７８４の好適なセグメント（tblQrySrc７８４の特定の好適なセグメントであるため、７８４ｈと表している。）内に示されており、記録９０５ａと表現されている。
【０４３１】
記録９０５ａは、tblQryFld７８６の好適なセグメント（tblQryFld７８６の特定の好適なセグメントであるため、７８６ｈと表している。）内に示したように、４個の関連する記録を有している。記録９０５ｂ及び９０５ｃにおいて、colGrpFun７６６は、コンポーネント値“Group”（実際には引用符無し）で表されている。このcolGrpFun７６６により、記録９０５ｂ及び９０５ｃで言及したカラムは、所望のクエリのGROUP BY句で使用されることが分かる。記録９０５ｄ及び９０５ｅにおいて、colGrpFun７６６は、好適なコンポーネント値“SUM”（実際には引用符無し）を有している。このcolGrpFun７６６により、好適なソース・オブジェクトqryGroupを利用して構築された所望のクエリ内の、記録９０５ｂ及び９０５ｃで言及したカラムに、SUM機能が追加されることが分かる。
【０４３２】
図９Ｉは、tblQry７８２の好適なセグメントを示している（tblQry７８２の特定の好適なセグメントであるため、７８２ｉと表している。）。このtblQry７８２は、qryFinal（qryld７３２を表すデータ値）で特定される、好適なソース・オブジェクトである。以下、tblQry７８２を、好適なソース・オブジェクトqryFinalと称し、記録９０６内に表す。
【０４３３】
記録９０６は、tblQrySrc７８４の好適なセグメント（tblQrySrc７８４の特定の好適なセグメントであるため、７８４ｉと表している。）内に示された、５個の関連する好適な記録を有している。これらの記録は、記録９０６ａ、９０６ｂ、９０６ｃ、９０６ｄ及び９０６ｅと表されている。７８４ｉ内に示された５個の好適な記録は、４個のテーブルと１個のビューであり、好適なソース・オブジェクトqryFinalを利用して構築された所望のクエリ内で利用することができる。７８４ｉにおいて、記録９０６ａ、９０６ｂ、９０６ｃ、９０６ｄ及び９０６ｅは、それぞれ、１個の利用可能なテーブルの定義を有する。このテーブルは、それぞれ記録の、srcUseCnd５１６で表されたトークン値と、prmUseCnd６２２のパラメータ値１６２とに基づき、好適なソース・オブジェクトqryFinalを利用して構築されたクエリ内で利用される。記録９０６ｄは、“qryGroup”（実際には引用符無し）で特定されるビューの定義を有している。このqryGroupは、srcReuseld７３８を表すデータ値である。また、このqryGroupは、それぞれ記録の、srcUseCnd５１６で表されたトークン値と、prmUseCnd６２２のパラメータ値１６２とに基づき、好適なソース・オブジェクトqryFinalを利用して構築されたクエリ内で利用できる。
【０４３４】
図９Ｊは、記録９０６ａに関連するtblQryFld７８６（tblQryFld７８６の特定の好適なセグメントを示しているため、７８６ｊと表している。）の記録を示している。このtblQryFld７８６は、tblQrySrc７８４の好適なセグメント（tblQrySrc７８４の特定の好適なセグメントであるため、７８４ｊと表している。）内に、示されている。７８６ｊ内に示した記録は、記録９０６ａに設けられたtblItemsのカラムを特定する。tblItemsは、好適なソース・オブジェクトqryFinalを利用してクエリ・ビルダーが所望のクエリを構築するために、利用できる。
【０４３５】
図９Ｋは、記録９０６ｂに関連するtblQryFld７８６（tblQryFld７８６の特定の好適なセグメントであるため、７８６ｋと表している。）の記録を示している。なお、記録９０６ｂは、tblQrySrc７８４の好適なセグメント（tblQrySrc７８４の特定の好適なセグメントであるため、７８４ｋと表されている。）内に示されている。７８６ｋ内に示した記録は、記録９０６ｂに設けられたtblBrandsのカラムを特定する。tblBrandsは、好適なソース・オブジェクトqryFinalを利用してクエリ・ビルダーが所望のクエリを構築するために、利用できる。
【０４３６】
図９Ｌは、記録９０６ｃに関連するtblQryFld７８６（tblQryFld７８６の特定の好適なセグメントを示しているため、７８４ｌと表している。）の記録を示している。tblQryFld７８６は、tblQrySrc７８４の好適なセグメント（tblQrySrc７８４の特定の好適なセグメントであるため、７８４ｌと表した。）内に示されている。７８６ｌ内に示した記録は、記録９０６ｃに設けられたtblOriginsのカラムを特定する。tblOriginsは、好適なソース・オブジェクトqryFinalを利用してクエリ・ビルダーが所望のクエリを構築するために、利用できる。
【０４３７】
図９Ｍは、記録９０６ｄに関連するtblQryFld７８６（tblQryFld７８６の特定の好適なセグメントを示しているため、７８６ｍと表している。）の記録を示している。tblQryFld７８６は、tblQrySrc７８４の好適なセグメント（tblQrySrc７８４の特定の好適なセグメントであるため、７８４ｍと表している。）内に示されている。７８６ｍ内に示した記録は、記録９０６ｄに設けられたqryGroupSrcのカラムを特定する。qryGroupSrcは、好適なソース・オブジェクトqryFinalを利用してクエリ・ビルダーが所望のクエリを構築するために、利用できる。
【０４３８】
図９Ｎは、記録９０６ｅに関連するtblQryFld７８６（tblQryFld７８６の特定の好適なセグメントを示しているため、７８６ｎと表している。）の記録を示している。tblQryFld７８６は、tblQrySrc７８４の好適なセグメント（tblQrySrc７８４の特定の好適なセグメントであるため、７８４ｎと表している。）内に示されている。７８６ｎ内に示した記録は、記録９０６ｅに設けられたtblZonesのカラムを特定する。tblZonesは、好適なソース・オブジェクトqryFinalを利用してクエリ・ビルダーが所望のクエリを構築するために、利用できる。
【０４３９】
図９Ｏは、tblQry７８２の好適なセグメント（tblQry７８２の特定の好適なセグメントを示しているため、７８２ｏと表している。）を示している。このtblQry７８２は、qryModify（qryld７３２を示すデータ値）で特定される、好適なソース・オブジェクトである。以下、tblQry７８２を、好適なソース・オブジェクトqryModifyと称し、記録９０７内に表す。
【０４４０】
記録９０７において、qryWhr７５２は、好適なWHERE句表現で、表される。ここで、好適なWHERE句表現は、tknCurlyBrackets５２６、tknItemCodeBegin５２８及びtknItemCodeEnd５３０を表すトークン値と共に、埋め込まれる。記録９０７は、１個の関連する好適な記録を有している。この関連する記録は、tblQrySrc７８４の好適なセグメント（tblQrySrc７８４の特定の好適なセグメントであるため、７８４ｏと表している。）内に示されており、記録９０７ａと表現されている。
【０４４１】
記録９０７ａは、１０個の関連する記録を有している。この関連記録は、tblQryFld７８６の好適なセグメント（tblQryFld７８６の特定の好適なセグメントであるため、７８６ｏと表されている。）内に示されている。記録９０７ｂ及び記録９０７ｃにおいて、colUseCnd５１８は好適なトークン値“TknItm”（実際には引用符無し）で表されている。TknItmは、所望のクエリの構築に、記録９０７ｂ及び９０７ｃを利用できるようにするために、使用される。また、TknItmは、好適なソース・オブジェクトqryModifyを利用して構築され、任意でprmUseCnd６２２のパラメータ値１６２を基礎とできる。
【０４４２】
図１０Ａ−図１０Ｚは、図８Ａ−図８Ｐのクエリ・ビルダーが図９Ａ−図９Ｏのソース・オブジェクトを１個以上利用して構築した、幾つかの好適な所望のクエリを示している。図１０Ａ−図１０Ｚは、数個の好適なクエリを示しているにすぎないことに注意すべきである。クエリは、図６に示したパラメータや図９Ａ−図９Ｏに示したソース・オブジェクトの、他の組み合わせによって数十万種類も構築でき、また、作業時間中に即座に構築できる。先行技術では、そのような数のクエリの構築には、数百万時間に及ぶ人的労働が必要となる。
【０４４３】
図１０Ａは、好適なソース・オブジェクトqryAや図１０Ａで特定されたパラメータを用いてクエリ・ビルダーが構築した、好適な所望のクエリ１０１２ａを示している。
【０４４４】
図１０Ｂは、好適なソース・オブジェクトqryAや図１０Ｂで特定されたパラメータを用いてクエリ・ビルダーが構築した、好適な所望のクエリ１０１２ｂを示している。
【０４４５】
図１０Ｃは、好適なソース・オブジェクトqryAや図１０Ｃで特定されたパラメータを用いてクエリ・ビルダーが構築した、好適な所望のクエリ１０１２ｃを示している。
【０４４６】
図１０Ｄは、好適なソース・オブジェクトqryAや図１０Ｄで特定されたパラメータを用いてクエリ・ビルダーが構築した、好適な所望のクエリ１０１２ｄを示している。
【０４４７】
図１０Ｅは、好適なソース・オブジェクトqryPurや図１０Ｅで特定されたパラメータを用いてクエリ・ビルダーが構築した、好適な所望のクエリ１０１２ｅを示している。
【０４４８】
図１０Ｆは、好適なソース・オブジェクトqryPurや図１０Ｆで特定されたパラメータを用いてクエリ・ビルダーが構築した、好適な所望のクエリ１０１２ｆを示している。
【０４４９】
図１０Ｇは、好適なソース・オブジェクトqryPurや図１０Ｇで特定されたパラメータを用いてクエリ・ビルダーが構築した、好適な所望のクエリ１０１２ｇを示している。
【０４５０】
図１０Ｈは、好適なソース・オブジェクトqryFinalや図１０Ｈで特定されたパラメータを用いてクエリ・ビルダーが構築した、好適な所望のクエリ１０１２ｈを示している。
【０４５１】
図１０Ｉは、好適なソース・オブジェクトqryFinalや図１０Ｉで特定されたパラメータを用いてクエリ・ビルダーが構築した、好適な所望のクエリ１０１２ｉを示している。
【０４５２】
図１０Ｊは、好適なソース・オブジェクトqryFinalや図１０Ｊで特定されたパラメータを用いてクエリ・ビルダーが構築した、好適な所望のクエリ１０１２ｊを示している。
【０４５３】
図１０Ｋは、好適なソース・オブジェクトqryFinalや図１０Ｋで特定されたパラメータを用いてクエリ・ビルダーが構築した、好適な所望のクエリ１０１２ｋを示している。
【０４５４】
図１０Ｌは、好適なソース・オブジェクトqryFinalや図１０Ｌで特定されたパラメータを用いてクエリ・ビルダーが構築した、好適な所望のクエリ１０１２ｌを示している。
【０４５５】
図１０Ｎは、好適なソース・オブジェクトqryFinalや図１０Ｍで特定されたパラメータを用いてクエリ・ビルダーが構築した、好適な所望のクエリ１０１２ｍを示している。
【０４５６】
図１０Ｐは、好適なソース・オブジェクトqryFinalや図１０Ｏで特定されたパラメータを用いてクエリ・ビルダーが構築した、好適な所望のクエリ１０１２ｏを示している。
【０４５７】
図１０Ｑは、好適なソース・オブジェクトqryModifyや図１０Ｑで特定されたパラメータを用いてクエリ・ビルダーが構築した、好適な所望のクエリ１０１２ｑを示している。
【０４５８】
図１０Ｒは、好適なソース・オブジェクトqryModifyや図１０Ｒで特定されたパラメータを用いてクエリ・ビルダーが構築した、好適な所望のクエリ１０１２ｒを示している。
【０４５９】
図１０Ｓは、好適なソース・オブジェクトqryModifyや図１０Ｓで特定されたパラメータを用いてクエリ・ビルダーが構築した、好適な所望のクエリ１０１２ｓを示している。
【０４６０】
図１０Ｔは、好適なソース・オブジェクトqryModifyや図１０Ｔで特定されたパラメータを用いてクエリ・ビルダーが構築した、好適な所望のクエリ１０１２ｔを示している。
【０４６１】
図１０Ｕは、好適なソース・オブジェクトqryModifyや図１０Ｕで特定されたパラメータを用いてクエリ・ビルダーが構築した、好適な所望のクエリ１０１２ｕを示している。
【０４６２】
図１０Ｖは、好適なソース・オブジェクトqryModifyや図１０Ｖで特定されたパラメータを用いてクエリ・ビルダーが構築した、好適な所望のクエリ１０１２ｖを示している。
【０４６３】
図１０Ｘは、好適なソース・オブジェクトqryModifyや図１０Ｗで特定されたパラメータを用いてクエリ・ビルダーが構築した、好適な所望のクエリ１０１２ｗを示している。
【０４６４】
図１０Ｚは、好適なソース・オブジェクトqryModifyや図１０Ｙで特定されたパラメータを用いてクエリ・ビルダーが構築した、好適な所望のクエリ１０１２ｙを示している。
【０４６５】
［１２］実施形態及び図面についての最終的所見
幾つかの実施形態を参照して説明したが、本発明は、多数の形態で実施でき、本明細書に全てを記載するには多すぎ、上述の好適な実施形態に限定すべきでない。この実施形態は、発明を説明するには有益であるが、網羅しているわけではない。従って、本発明は、公開の目的で記載した特定の実施例や実施形態に限定して考えるべきではない。多数の代替、変更及び変形があることは、上述の教唆に照らし合わせれば、当該技術分野の専門家にとって明らかであろう。従って、本願の請求の範囲の意図や広い視点に含まれるような全ての代替、変更及び変形は、本発明の範囲に含まれるように意図されている。
【０４６６】
本発明の実施形態は、コンピュータのハードウエア及び／又はソフトウエアで実行することができる。これらのハードウエアやソフトウエアとしては、データを格納し、取得し、処理し及び／又は出力することができるコンピュータ又はマシンを採用でき、及び／又は、他のコンピュータ又はマシンと通信できるコンピュータ又はマシンを採用できるが、これらには限定されない。また、図３のコンピュータ・システム環境３００等、様々なタイプのソフトウエアを採用できるが、これらには限定されない。
【０４６７】
本実施形態を実行するソフトウエア／コンピュータ・プログラムは、何らかのコンピュータ読取可能な記録媒体によって提供でき、何らかの揮発性又は不揮発性のメモリに記録できる。また、本実施形態を実行するソフトウエア／コンピュータ・プログラムは、搬送波信号や光信号等の送信通信媒体を介して送信できるが、これらには限定されない。
【０４６８】
また、本発明は、デジタル電子回路や、コンピュータのハードウエア、ファームウエア、ソフトウエア及び／又はこれらの組み合わせで、実行できる。本発明は、マシンによる読み取りが可能な記憶装置に組み込まれ、或いは、プログラム制御可能なプロセッサを実行するマシンに組み込まれる、コンピュータ・プログラム製品として、実施できる。本発明の方法は、本発明の機能を実現する命令のプログラムを実行する、プログラム制御可能なプロセッサによって、実施できる。
【０４６９】
本願の請求の範囲は、上記説明で明らかにした要素やそれら要素の組み合わせを含むだけでなく、同一機能、すなわち実質的に同じ効果を実質的に同じ方法で得られる機能を、有効に実行できる、等価の要素をも含む。従って、請求の範囲は、具体的に図示され且つ上記されたものもの、概念的に同等のもの、及び、本発明の本質的なアイデア及び原理を組み入れたものを含むと理解される。本願の請求の範囲は、実施の形態の全ての特徴や長所を含むように意図され、且つ、その等価物すなわちその真の趣旨や観点を同じくするものをも含むように意図されている。
【０４７０】
［１３］本発明の幾つかの有益性及び商業的利用
本発明の有益性及び長所は、膨大且つ圧倒的であり、大部分のコンピュータ・プログラムで容易に達成できる。また、本発明は、莫大な商業的潜在力を有している。本発明の商業的利用は、先行技術で成し得たものを十分に超越する能力及び機能を備えている。コンピュータ・プログラムのような現状の商業製品や商業利用も、非常に力強く、柔軟で且つ活動的であるが、将来的には、本発明を利用することで、豊かで生産性に優れたものとなる。本発明の利用は、ソフトウエア開発の新境地を開き、ソフトウエア開発者のみならずソフトウエア・ユーザにとっても有益な新しいプログラミング法に導くであろう。
【０４７１】
現状の或いは新規な、大部分のソフトウエア開発、特に大部分のコンピュータ・プログラムにおいて、誰でも簡単に本発明を応用／利用できることは、当該技術分野に精通した者にとっては明白である。
【０４７２】
本発明は、ユーザが要求したときに、ユーザが要求した通りのソフトウエア・コンポーネントを容易に開発できるような、ソフトウエア開発を可能にする。
【０４７３】
本発明は、ソフトウエア開発を、非常に簡単且つ合理的なものにする。現在ソフトウエア開発者が直面する複雑さの大部分は、一掃されるであろう。本発明が導く他の重大な利点は、ソフトウエアを開発する人間の莫大な訓練が、もはや不要になることである。その結果、人的生産性が飛躍的に高まり、そのため、金銭的及び時間的な面での実質的なコスト節約も飛躍的に高まる。
【０４７４】
本発明の下で達成されるソフトウエア開発の合理化及び簡単化は、特に、ソフトウエア開発に現在要求されている時間を低減する。本発明の下でソフトウエア・プログラムの開発に要求される時間は、先行技術で要求される時間のほんの一部分にすぎない。一例を挙げると、以下の通りである。
１．本発明の利用により、データベース・クエリの開発は非常に簡単且つ効率的になり、中規模のコンピュータ・プログラムであっても、膨大な人的作業時間が削減できる。
２．本発明の革新的なソース・オブジェクト・レポジトリは、ソフトウエア開発を単純且つ容易なものにするので、従来は経験豊かなソフトウエア開発者が１ヶ月でできなかったような顕著な開発成果を、経験の少ないソフトウエア開発者であってもほんの数分で創り出すことができる。
【０４７５】
本発明の利用により、データベース・クエリの生成・管理が、非常に効率的で低コストになる。クエリの記述、クエリのテスト及びクエリのデバッグの膨大な人的作業時間は、１個のコンピュータ・プログラムだけの場合でも、削減できる。本発明により、データベース・クエリの生成、管理、保守、変更に加えて、品質保証も、先行技術より実質的に容易になる。クエリ組み立ての大幅な容易化は、ソフトウエア開発に特に有益である。
【０４７６】
本発明の、ソース・オブジェクト・レポジトリ、ソフトウエア・コンポーネント・コンストラクタ、再利用、データ・トークン及びパラメータの概念は、先行技術では膨大であったであろうクエリの量を、実質的に低減することができる。一般的なソフトウエア開発、特にビジネス・インテリジェンスは、そのような低減によって、絶大な恩恵を受けるであろう。本発明の下での幾つかの可能性について、以下に考察する。
１．データベース・クエリ：本発明は、如何なるデータベース管理システム及び／又はデータベース・クエリを使用する如何なるコンピュータ・プログラムであっても、実質的に、データベース・クエリの生成、テスト及びデバッグを改良することができる。
２．レポート：レポートはあらゆるコンピュータ・プログラムにとって重要なセグメントである。レポートを行うコンピュータ・プログラムへ本発明を適用することで、コンピュータに、１個のソース・オブジェクトから、多数のレポート・レイアウトを、それぞれのデータベース・クエリと共に生成させることが可能になる。
３．データ登録フォーム：本発明は、作業中にカスタマイズでき及び／又はユーザの要求に応じてカスタマイズできるデータ登録フォームを開発することができる。また、ビジネス・アプリケーションを開発する場合には、１個以上の異なる産業に対応して利用・配置することができ、また、異なる地域／国の間で関連法や環境が異なる場合であっても、これらを横断的して利用・配置することができる。
４．ビジネス処理ルール：ビジネス処理ルールは、コンピュータ・プログラムの最も重要なパーツである。ビジネス処理ルールは、１つの産業と他の産業とで、大きく異なる。このため、給料支払、税金計算等のビジネス処理ルールに大きく依存している多くのコンピュータ・プログラムを、特定の産業及び／又は地域のみに特化させて、開発することができる。本発明は、産業横断的及び地域横断的に利用できるコンピュータ・プログラムの開発を可能にする。
５．ソフトウエアの設定：ソフトウエア開発において、時間浪費面とリソース不足面は、大部分がユーザの要求によるソフトウエア設定である。小さいビジネス・アプリケーションでさえ、配備するのに数ヶ月を要する。本発明は、コンピュータ・プログラムの開発を、設定及び配備を、先行技術で必要とされた時間よりも短縮する。
６．本発明は、ユーザ管理システム、エラー管理システム、ヘルプ・システム、ユーザ・インタフェース、ソフトウエア・ウイザード、ゲーム用エンジン等にも、同様に付加することができる。
【０４７７】
本発明は、殆ど全てのタイプのソフトウエア・プログラムやアプリケーションで、使用できる。従って、以下に、本発明が適用可能なアプリ−ケーションをリスト化するのは、殆ど不可能である。但し、幾つかの好適な商業的適用・利用は、以下の通りである。
１．コンピュータ・プログラムに基づくビジネス・インテリジェンスは、多くのソフトウエア・コンポーネントを利用する。例えば、データベース・クエリ、レポート・レイアウト、ユーザ・インタフェース、ユーザ管理システム等である。本発明は、これらすべてのコンポーネントに適用できる。しかし、本発明をデータベース・クエリ及びレポート・レイアウトのみに適用する場合、ビジネス・インテリジェンス・コンピュータ・プログラムは、数百倍も、パワフルで、高機能で、且つ、経済的となる。本発明は、先行技術では達成や創出が不可能であったデータの分析やレポートにおいて、新しい可能性を切り開くであろう。
２．以下は、幾つかのソフトウエア・アプリケーションのカテゴリのうち、本発明によって、パワー、柔軟性、活力性及びコスト的効果の面で有益性を得られるものである。
ａ．ビジネス・インテリジェンス。
ｂ．データベース管理システム。
ｃ．ＣＲＭ(Customer
Relationship Management)ソフトウエア。
ｄ．ＥＲＰ１（Enterprise
Resource Planning)ソフトウエア。
ｅ．ＳＣＭ(Supply
Chain Management)ソフトウエア。
ｆ．ＧＩＳ(Geographical
Information System)ソフトウエア。
ｇ．ＤＡＭ(Digital
Asset Management)ソフトウエア。
ｈ．ＭＲＰ(Material
Requirements Planning)ソフトウエア。
ｉ．ＳＦＡ(Sales
Force Automation)ソフトウエア。
ｊ．ＣＡＥ(Computer
Aided Engineering)ソフトウエア。
ｋ．ＣＡＤ(Computer
Aided Design)ソフトウエア。
ｌ．ホテル管理ソフトウエア。
ｍ．人的リソース管理ソフトウエア。
ｎ．銀行ソフトウエア。
ｏ．ウェブ・ベース・アプリケーション。
ｐ．製造制御システム。
ｑ．プロセス制御システム。
【０４７８】
本発明は、開発したコンピュータ・プログラムとそれに関連するリソースとを、要求されれば何度でも、他のコンピュータ・プログラムで利用するようにできる。本技術に熟練した者であれば、即座に、この有益性を利用することができる。例えば、本発明に基づいてクエリ組み立てエンジン（すなわち、ソフトウエア・コンポーネント・コンストラクタ）が開発されれば、他のどんなコンピュータ・プログラムでも利用できる。クエリ組み立てエンジンを他のプラットフォームに移植することで、このクエリ組み立てエンジンによって記述された全てのクエリは他のプラットフォーム上で簡単に利用できる。
【０４７９】
本発明に基づいて開発された革新的なソフトウエア・コンポーネント・コンストラクタを使用すれば、多数の他のソフトウエア・コンポーネントを、たった１個のソース・オブジェクトから、簡単に構築できる。これにより、先行技術では考えられなかったような可能性を得ることができる。
【０４８０】
本発明によれば、即時利用可能なソフトウエア・コンポーネントの再利用性及び多様性の利点を、大部分のソフトウエア・コンポーネントで容易に得ることができる。例えば、レポート、データ登録フォーム、ビジネス処理ルール、エラー管理システム、知識ベース・システム、ウェブ・ポータル、コンピュータ・ゲーム等である。
【０４８１】
本発明によれば、小さい要素からなるソフトウエア・コンポーネントを開発することや、各要素を個別に独立してテストすることが可能になる。これにより、ソフトウエア開発者は、ソフトウエア・コンポーネントの各要素を、個別に開発してテストする方法で、コンピュータを管理でき、そして、ソフトウエア・コンポーネントの全要素を結合して、１つのソフトウエア・コンポーネントとして動作させることができる。この機能は、革新的なソース・オブジェクト・レポジトリ、データ・トークン及び１個以上のコンポーネント値の再利用性を用いることで、達成される。
【０４８２】
本発明によれば、このようなソフトウエアの工業的生産を実現する実際の工場として稼働する、ソフトウエア工場の生成が可能になる。
【０４８３】
先行技術では、大部分のコンピュータ・プログラムは、時間、人力及び資金的リソースの面で莫大なコストをかけて維持しなければならないような方法で、開発されている。しかし、本発明によれば、ソフトウエアの維持は、先行技術では想像できないほど、便利且つ簡単になる。更に、本発明は、開発したソフトウエアの維持が容易となると共に、重要性の低い繰り返し作業が無くなるように、ソフトウエアを開発する方法を、ソフトウエア開発者に教唆する。例えば、通常の開発プログラムで１個のデータベース・テーブルに基づく２００個のクエリを利用する場合、各データベース・クエリに新しいカラムを付加する作業は１万時間の人的作業を要する。しかし、同様のコンピュータ・プログラムを本発明に基づいて開発した場合、このような変更には数分しか要しない。
【０４８４】
先行技術では、プラットフォームが独立したソフトウエアを開発する機能は、効率性を伴わない、現在進行中の難問であった。本発明は、この機能を、先行技術からすれば前代未聞のレベルにまですることができる。本発明を利用することで、複数のプラットフォーム用のソフトウエア・コンポーネントを構築できる、ソフトウエア・コンポーネント・コンストラクタを開発できる。例えば、ソフトウエア・コンポーネント・コンストラクタであるレポート・エンジンは、本発明の下で、クリスタル・レポート、マイクロソフト・アクセス及び他の多数のレポート作成プログラムを、１個のソース・オブジェクトから開発することができる。
【０４８５】
本発明を利用して開発されたソフトウエアは、利用可能なコンピューティング・リソースを、有効利用できる。本発明に基づいて開発されたコンピュータ・プログラムの必要メモリは、一般的な先行技術で開発された同種のコンピュータ・プログラムの必要メモリよりも、小さい。更に、本発明の下で開発したコンピュータ・プログラムのサイズが非常に削減されているので、ネットワーク帯域幅の利用も最適化される。それゆえ、クラウド・コンピューティングやクライアント・サーバ・アーキテクチャ等のネットワーク及び／又はウェブベース環境へ、本発明の下で開発したコンピュータ・プログラムを配備することは、非常に能率的である。
【０４８６】
また、本発明の下で開発されたソフトウエアは、ユーザへのソフトウエア・サポートに関しては、本質的にリソース効率が良い。そのようなソフトウエアの本質的なアーキテクチャのために、ソフトウエアのアップグレード及びメンテナンスが非常に効率的且つ低コストで行えるからである。本発明を利用して開発したコンピュータ・プログラムのサポートに要求されるリソースは、先行技術で開発された同種のプログラムのサポートのほんの一部にすぎない。
【０４８７】
本発明をソフトウエア開発へ利用することで、ソフトウエア開発リソースは最小化され、且つ、ソフトウエアの効率、柔軟性及び／又は出力は最大化されるように、最適化できる。更に、ユーザは、(i)ソフトウエアの動作、(ii)ソフトウエアの成果、(iii)プログラム・データの再利用、(iv)ソフトウエア開発の容易性及び／又は(v)これらの何れかの組み合わせの全てにおいて、特に、(a)作動時間中に、及び／又は、(b)１個以上の制御パラメータの利用により、（１）価格コントロール、（２）動的な変更、（３）これらの何れかの組み合わせが可能になる。
【０４８８】
また、本発明に基づくソフトウエア開発は、比類の無い作動時間中のパワー、柔軟性及び活力性を、ユーザに与える。ソース・オブジェクト・レポジトリ、データ・トークン及びパラメータの利用は、開発したソフトウエアを、作動時間中のユーザの要求に基づいて即座にソフトウエア・コンポーネントを構築する高度のコンポーネント・コンストラクタとして作動させる。実際、ユーザは、常に変化・成長するビジネスの要求に応じて開発されたソフトウエアを、利用することができる。例えば、本発明の下では、ユーザの要求に基づいて、考えられるデータの組み合わせの大部分を即座に生成することができるレポート・システムを開発することが可能である。このような可能性は、先行技術では、想像できないことである。
【０４８９】
本発明を利用することにより、何らかの新しい／将来の要求に関連する、１個以上のパラメータを変更するだけで、又は、新しいコンポーネント値、データ・トークン及び／又はパラメータを追加するだけで、将来的な要求の大部分を満たす、コンピュータ・プログラムを生成することができる。
【０４９０】
本発明に基づいて開発されたソフトウエアは、何れもメンテナンスが容易であるため、開発したソフトウエアのライフ・サイクルを、何年も延ばすことができる。
【０４９１】
要するに、本発明は、独創的で、躍進的な、発展である。本発明は、ソフトウエア開発において、総合的な柔軟性や活力性を、特にその作動時間中に、ソフトウエア開発者及びユーザに与える。更に、本発明は、コンピュータ機能の幾何級数的な向上のために急増する、ソフトウエアの複雑且つ大量の要求に、現在及び将来の要求の両方について応える。実際、本発明は、その本質及び視点において独創的であり、この点で、類似する先行技術は存在しない。
【図４Ｓ】
0005972381.tif 000002
【図４Ｔ】
0005972381.tif 000003
【図６】
0005972381.tif 000004
【図７Ａ】
0005972381.tif 000005
【図７Ｃ】
0005972381.tif 000006
【図８Ｎ】
0005972381.tif 000007
【図９Ａ】
0005972381.tif 000008
【図９Ｂ】
0005972381.tif 000009
【図９Ｃ】
0005972381.tif 000010
【図９Ｄ】
0005972381.tif 000011
【図９Ｅ】
0005972381.tif 000012
【図９Ｆ】
0005972381.tif 000013
【図９Ｇ】
0005972381.tif 000014
【図９Ｈ】
0005972381.tif 000015
【図９Ｉ】
0005972381.tif 000016
【図９Ｊ】
0005972381.tif 000017
【図９Ｋ】
0005972381.tif 000018
【図９Ｌ】
0005972381.tif 000019
【図９Ｍ】
0005972381.tif 000020
【図９Ｎ】
0005972381.tif 000021
【図９Ｏ】
0005972381.tif 000022
【図１０Ｎ】
0005972381.tif 000023
【図１０Ｐ】
0005972381.tif 000024
【図１０Ｘ】
0005972381.tif 000025
【図１０Ｚ】
0005972381.tif 000026
【図１Ａ】
0005972381.tif 000027
【図１Ｂ】
0005972381.tif 000028
【図２】
0005972381.tif 000029
【図３】
0005972381.tif 000030
【図４Ａ】
0005972381.tif 000031
【図４Ｂ】
0005972381.tif 000032
【図４Ｃ】
0005972381.tif 000033
【図４Ｄ】
0005972381.tif 000034
【図４Ｅ】
0005972381.tif 000035
【図４Ｆ】
0005972381.tif 000036
【図４Ｇ】
0005972381.tif 000037
【図４Ｈ】
0005972381.tif 000038
【図４Ｉ】
0005972381.tif 000039
【図４Ｊ】
0005972381.tif 000040
【図４Ｋ】
0005972381.tif 000041
【図４Ｌ】
0005972381.tif 000042
【図４Ｍ】
0005972381.tif 000043
【図４Ｎ】
0005972381.tif 000044
【図４Ｏ】
0005972381.tif 000045
【図４Ｐ】
0005972381.tif 000046
【図４Ｑ】
0005972381.tif 000047
【図４Ｒ】
0005972381.tif 000048
【図５Ａ】
0005972381.tif 000049
【図５Ｂ】
0005972381.tif 000050
【図５Ｃ】
0005972381.tif 000051
【図７Ｂ】
0005972381.tif 000052
【図８Ａ】
0005972381.tif 000053
【図８Ｂ】
0005972381.tif 000054
【図８Ｃ】
0005972381.tif 000055
【図８Ｄ】
0005972381.tif 000056
【図８Ｅ】
0005972381.tif 000057
【図８Ｆ】
0005972381.tif 000058
【図８Ｇ】
0005972381.tif 000059
【図８Ｈ】
0005972381.tif 000060
【図８Ｉ】
0005972381.tif 000061
【図８Ｊ】
0005972381.tif 000062
【図８Ｋ】
0005972381.tif 000063
【図８Ｌ】
0005972381.tif 000064
【図８Ｍ】
0005972381.tif 000065
【図８Ｏ】
0005972381.tif 000066
【図８Ｐ】
0005972381.tif 000067
【図８Ｑ】
0005972381.tif 000068
【図８Ｒ】
0005972381.tif 000069
【図８Ｓ】
0005972381.tif 000070
【図８Ｔ】
0005972381.tif 000071
【図８Ｕ】
0005972381.tif 000072
【図８Ｖ】
0005972381.tif 000073
【図８Ｗ】
0005972381.tif 000074
【図８Ｘ】
0005972381.tif 000075
【図１０Ａ】
0005972381.tif 000076
【図１０Ｂ】
0005972381.tif 000077
【図１０Ｃ】
0005972381.tif 000078
【図１０Ｄ】
0005972381.tif 000079
【図１０Ｅ】
0005972381.tif 000080
【図１０Ｆ】
0005972381.tif 000081
【図１０Ｇ】
0005972381.tif 000082
【図１０Ｈ】
0005972381.tif 000083
【図１０Ｉ】
0005972381.tif 000084
【図１０Ｊ】
0005972381.tif 000085
【図１０Ｋ】
0005972381.tif 000086
【図１０Ｌ】
0005972381.tif 000087
【図１０Ｍ】
0005972381.tif 000088
【図１０Ｏ】
0005972381.tif 000089
【図１０Ｑ】
0005972381.tif 000090
【図１０Ｒ】
0005972381.tif 000091
【図１０Ｓ】
0005972381.tif 000092
【図１０Ｔ】
0005972381.tif 000093
【図１０Ｕ】
0005972381.tif 000094
【図１０Ｖ】
0005972381.tif 000095
【図１０Ｗ】
0005972381.tif 000096
【図１０Ｙ】
0005972381.tif 000097