(57)【要約】【課題】  コンピュータシステムにおけるバインド環境でパラメータの値を格納する際のオーバーヘッドをなくすこと。【解決手段】  本発明は、式を評価するための方法ならびに対応するソフトウエアおよびシステムに関する。本発明の方法は：パラメータ定義を格納する一つ以上のデータ構造（１３６）を受け取るステップ；前記式で参照される一つ以上のパラメータを特定するステップ；格納された定義に基づいて前記特定したパラメータそれぞれの値を決定するステップ；および、バインド環境（３００）内に前記決定したパラメータ値を格納するステップ；を含む。【選択図】  図１
2015084256.tif 000002
【特許請求の範囲】
【請求項１】
式を変換するための方法であって：
第１シンタックスの第１式（１０２）を受け取るステップであって、前記式は、前記第１シンタックスを用いて文字列の値を表す第１文字シーケンスを含み；
前記式を表すための第２シンタックスを特定するステップ；および、
前記第２シンタックスで前記第１式を表す第２式（１０４）を生成するステップであって、前記第２文字シーケンスが前記第２シンタックスを用いた前記文字列の値を表すように、前記第１文字シーケンスを用いて第２文字シーケンスを生成するステップを含む；を含む、
方法。
【請求項２】
前記第１式は、複数の実行可能ステートメントを含む、請求項１の方法。
【請求項３】
前記第１式は、コマンドライン入力を含む、請求項１の方法。
【請求項４】
前記第１文字シーケンスは、参照される値へバインドされるパラメータを含む、請求項１の方法。
【請求項５】
前記第１文字シーケンスを用いて第２文字シーケンスを生成するステップは：
前記パラメータを前記参照される値へバインドするステップ；および、
前記第２シンタックスの引用符シンタックスに基づいて前記参照値を含めるように前記第２文字シーケンスを生成するステップ；を含む、
請求項４の方法。
【請求項６】
前記第１文字シーケンスは、前記パラメータを囲む区切り文字を含む、請求項４の方法。
【請求項７】
前記区切り文字は、引用符シンボルがそのあとに続くドルシンボルを含む所定のプレフィックスを含む、請求項６の方法。
【請求項８】
前記区切り文字は、引用符シンボルを含む所定のサフィックスを含む、請求項６の方法。
【請求項９】
前記第１文字シーケンスは、前記文字列の値の表現を囲む区切り文字を含む、請求項１の方法。
【請求項１０】
前記文字列の値は、パラメータ参照を示す、前記第１シンタックスで用いられる文字を含む、請求項９の方法。
【請求項１１】
前記第１文字シーケンスを用いて第２文字シーケンスを生成するステップは、前記文字列の値内のパラメータのバインドを無効にするステップを含む、請求項１０の方法。
【請求項１２】
前記第２シンタックスは、計算機言語と互換性をもつよう選定される、請求項１の方法。
【請求項１３】
前記計算機言語は、ｋｓｈ、Ｊａｖａ（登録商標）、ＤＭＬ、Ｃ、およびＳＱＬから成るグループのメンバーである、請求項１２の方法。
【請求項１４】
前記第２シンタックスは、文字シーケンスを解釈するための規則を含む、
請求項１の方法。
【請求項１５】
前記第２シンタックスを特定するステップは、前記第１文字シーケンスに先行するトークンに基づいてシンタックスを特定するステップを含む、
請求項１の方法。
【請求項１６】
式を変換するためのコンピュータ可読媒体上に格納されるソフトウエアであって：
第１シンタックスの第１式（１０２）を受け取るステップであって、前記式は、前記第１シンタックスを用いて文字列の値を表す第１文字シーケンスを含み；
前記式を表すための第２シンタックスを特定するステップ；および、
前記第２シンタックスで前記第１式を表す第２式（１０４）を生成するステップであって、前記第２文字シーケンスが前記第２シンタックスを用いた前記文字列の値を表すように、前記第１文字シーケンスを用いて第２文字シーケンスを生成するステップを含む；
をコンピュータシステムに実行させるための命令を含む、ソフトウエア。
【請求項１７】
式を変換するためのシステムであって：
第１シンタックスの第１式（１０２）を受け取るための手段であって、前記式は、前記第１シンタックスを用いて文字列の値を表す第１文字シーケンスを含み；
前記式を表すための第２シンタックスを特定するための手段；および、
前記第２シンタックスで前記第１式を表す第２式（１０４）を生成するための手段であって、前記第２文字シーケンスが前記第２シンタックスを用いた前記文字列の値を表すように、前記第１文字シーケンスを用いて第２文字シーケンスを生成するための手段を含む；を含む、
システム。
【請求項１８】
式を評価するための方法であって：
パラメータ定義を格納する一つ以上のデータ構造（１３６）を受け取るステップ；
前記式で参照される一つ以上のパラメータを特定するステップ；
格納された定義に基づいて前記特定したパラメータそれぞれの値を決定するステップ；および、
バインド環境（３００）内に前記決定したパラメータ値を格納するステップ；を含む、
方法。
【請求項１９】
前記バインド環境は、前記特定したパラメータの値、および前記特定したパラメータを評価するのに必要なパラメータの値を格納し、前記バインド環境は、前記一つ以上のデータ構造内にその定義を格納する前記パラメータ全ての値を格納するとは限らない、請求項１８の方法。
【請求項２０】
参照パラメータを前記バインド環境からの値へバインドさせた状態で、前記式を実行するステップを更に含む、
請求項１８の方法。
【請求項２１】
前記式はプログラムまたはスクリプトの一部である、請求項１８の方法。
【請求項２２】
前記式はコマンドライン入力を含む、請求項１８の方法。
【請求項２３】
式を変換するためのコンピュータ可読媒体上に格納されるソフトウエアであって：
パラメータの定義を格納する一つ以上のデータ構造（１３６）を受け取るステップ；
前記式で参照される一つ以上のパラメータを特定するステップ；
格納される定義に基づいて前記特定したパラメータそれぞれの値を決定するステップ；および、
バインド環境（３００）内に前記決定したパラメータ値を格納するステップ；をコンピュータシステムに実行させるための命令を含む、
ソフトウエア。
【請求項２４】
式を評価するためのシステムであって：
パラメータ定義を格納する一つ以上のデータ構造（１３６）を受け取るための手段；
前記式で参照される一つ以上のパラメータを特定するための手段；
格納された定義に基づいて前記特定したパラメータそれぞれの値を決定するための手段；および、
バインド環境（３００）内に前記決定したパラメータ値を格納するための手段；を含むシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータ環境における式（エクスプレッション）の変換に関する。
【背景技術】
【０００２】
発明の背景
シェルスクリプト言語（例えば、ｋｓｈ）では、シェルスクリプト内のパラメータは、プレフィックス（例えば、＄）を用いて参照される。ｋｓｈでは、動的環境が、以前に定義されたパラメータの値を維持する。シェルスクリプトを実行するか、またはコマンドラインの式を評価する場合、参照されるパラメータは、動的環境内のパラメータ値にしたがってバインドされる。場合によっては、スクリプト言語でスクリプトを創成する場合、スクリプト言語に適した引用符シンタックスを用いて、リテラル値を維持するようにし、スクリプトを実行する時に引用符付きの式内のパラメータのバインドを無効にすることが有用である。マクロ展開のような、他のメカニズムを用いて、所定の値にパラメータをバインドすることもできる。
【発明の概要】
【課題を解決するための手段】
【０００３】
概要
一般的な態様では、本発明は式を変換するための方法、ならびに対応するソフトウエアおよびシステムを特徴とする。本方法は、第１シンタックスの第１式を受け取るステップであって、その式は、第１シンタックスを用いて文字列の値を表す第１文字シーケンスを含む；その式を表すための第２シンタックスを特定するステップ；および第２シンタックスで第１式を表す第２式を生成するステップであって、第２文字シーケンスが第２シンタックスを用いた文字列の値を表すように、第１文字シーケンスを用いて第２文字シーケンスを生成するステップを含む；を含む方法である。
【０００４】
本態様には、以下の特徴の内の一つ以上を含めることができる：
第１式は複数の実行可能ステートメントを含む。
第１式はコマンドライン入力を含む。
第１文字シーケンスは参照値へバインドされるパラメータを含む。
第１文字シーケンスを用いて第２文字シーケンスを生成するステップは、パラメータを参照値へバインドするステップ；および第２シンタックスの引用符シンタックスに基づいて参照値を含めるよう第２文字シーケンスを生成するステップ；を含む。
第１文字シーケンスはパラメータを囲む区切り文字を含む。
区切り文字は、引用符シンボルがそのあとに続くドルシンボルを含む所定のプレフィックスを含む。
区切り文字は引用符シンボルを含む所定のサフィックスを含む。
第１文字シーケンスは文字列の値の表現を囲む区切り文字を含む。
文字列の値は、パラメータ参照を示す、第１シンタックスで用いられる文字を含む。
第１文字シーケンスを用いて第２文字シーケンスを生成するステップは、文字列の値内のパラメータのバインドを無効にするステップを含む。
第２シンタックスは、ｋｓｈ、Ｊａｖａ（登録商標）、ＤＭＬ、Ｃ、またはＳＱＬ等の計算機言語と互換性をもつよう選定される。
第２シンタックスは、文字シーケンスを解釈するための規則を含む。
第２シンタックスを特定するステップは、第１文字シーケンスに先行するトークンに基づいてシンタックスを特定するステップを含む。
【０００５】
一般的な態様では、本発明は式を評価するための方法、ならびに対応するソフトウエアおよびシステムを特徴とする。本方法は、パラメータ定義を格納する一つ以上のデータ構造を受け取るステップ；式で参照される一つ以上のパラメータを特定するステップ；格納された定義に基づいて特定したパラメータそれぞれの値を決定するステップ；およびバインド環境に決定したパラメータ値を格納するステップを含む。
【０００６】
本態様には、以下の特徴の内の一つ以上を含めることができる：
バインド環境は、特定したパラメータの値、および特定したパラメータを評価するのに必要なパラメータの値を格納するが、一つ以上のデータ構造内にその定義を格納するパラメータ全ての値を格納するとは限らない。
本方法は、参照パラメータをバインド環境からの値へバインドさせた状態で、式を実行するステップを更に含む。
式はプログラムまたはスクリプトの一部である。
式はコマンドライン入力を含む。
【発明の効果】
【０００７】
本発明の態様には、以下の利点の内の一つ以上を含めることができる：
データ処理環境に、データ変換またはレコードフォーマットの定義（例えば、データ操作言語で記述された）等のメタデータを含めることができる。ランタイム時に取得されるリテラル値で定義できる動的メタデータを有することが有用である。特定したシンタックスに基づいてターゲットの式を変換すると、リテラル値を取得できるだけでなく、特定したシンタックスに適した方法でリテラル値を引用できるようになる。更に、特定したシンタックスに対する引用規則を順守することにより、ターゲットの式の評価に際して、幾つかのリテラル値を維持することができる。
【０００８】
コンピュータシステムは、バインド環境でパラメータの値を格納できる。式（例えば、シェルスクリプトまたはコマンドラインの式）を評価する場合、参照パラメータは、バインド環境におけるパラメータ値に基づいてバインドされる。バインド環境内のパラメータ値維持にはオーバーヘッドが存在する。定義パラメータ毎の値を（例えば、パラメータおよびそれらの定義のリスト内に）有するバインド環境を維持する必要性を避けるため、コンピュータシステムは式をスキャンして、その式で実際に参照されるパラメータ、および参照されるパラメータを評価するのにその値が必要なパラメータ、に対してだけ値を決定できる。他の特徴および利点は、以下の説明、およびクレームから明らかになる。
【図面の簡単な説明】
【０００９】
【図１】図１は、コンピュータ環境とターゲット環境との間の相互作用を表すブロック図である。
【図２】図２は、式を変換するためのコンピュータ環境のブロック図である。
【図３】図３は、データ収納庫内のパラメータ割り当てのための格納領域の内容を示すブロック図である。
【図４】図４は、ローカルメモリ内のバインド環境の内容を示すブロック図である。
【発明を実施するための形態】
【００１０】
説明
１  概要
図１を参照すると、コンピュータ環境１００は、ソースシンタックスを用いて、ソース計算式１０２の仕様（例えば、スクリプト、プログラム、パス名等）をサポートし、次いで、そのソース式１０２を、幾つかの可能性のあるターゲット環境の内の一つにおける評価（例えば、実行、拡張等）に適したターゲットシンタックスを用いるターゲット式１０４へ変換する。コンピュータ環境１００は、シェル環境またはコンピュータープログラミング言語環境等の、ターゲット式１０４を評価する特定のターゲット環境１０８を特定するためのプロセス１０６を含む。プロセス１０６は、ターゲット式１０４内の情報に基づくか、他のユーザ入力に基づくか、または既定の環境に基づいてターゲット環境を特定することができる。
【００１１】
この変換の一部として、幾つかのパラメータ参照は、変換の際にパラメータ割り当て１０１に基づいて解決できるように、その一方で、他のパラメータ参照は、変換式を後で評価する際に（例えば、シェル変数１０９に基づいて）解決できるように、選択可能なパラメータ代入を実行する。この変換プロセスは、ターゲットシンタックスの特性、特に、引用符付き文字列およびパラメータ参照に関するこれらの特性に依存する。
【００１２】
ターゲット式の評価に際して、リテラル値が維持されていることが望ましいことがある。一般に、ターゲットシンタックスそれぞれは、リテラル値を引用するための何らかの種類の規定を含み、演算子、パラメータ代入、または区切り文字に関するシンタックスの解釈等の、シンタックスの他の解釈に基づいてそれが評価されないようになっている。
【００１３】
ターゲット式内のリテラル値の幾つかは、ソース式内のシンボル値に基づいて、例えば、パラメータ代入に基づいて、変換している間に取り込むことができる。すなわち、ターゲット式内の所望するリテラル式の値は、ソース式を規定するときに既知でない可能性がある。
【００１４】
ソース式は、そのソース式を評価する時に引用される値の幾つかを取得することにより所望のターゲット式を生成することができる言語、例えば、パラメータ定義言語（ＰＤＬ）で、定義することができる。このようなＰＤＬは、多様な可能性のあるターゲット言語の内の一つの適切なシンタックスで、引用されるリテラルを生成するためのメカニズムを含む。「式」には、例えば、スクリプトもしくはプログラムの一部（スクリプトまたはプログラム全体を含む）、またはコマンドライン入力を含めることができる。
【００１５】
図２は、ＰＤＬの式を評価し、一つ以上のターゲット言語（例えば、シェル言語または他のスクリプト言語）のシンタックスで得られたターゲット式を実行するための例示のコンピュータ環境１００を示す。コンピュータ環境１００は、ローカルメモリ１２０（例えば、ランダムアクセスメモリ）およびデータ収納庫１３０（例えば、一つ以上の不揮発性格納媒体に常駐する）を含むコンピュータシステム１１０を含む。データ収納庫１３０は、スクリプト１３２、プログラム１３４、ならびに多様なスクリプト１３２および／またはプログラム１３４の何れかに用いることができるパラメーターセット内に編成することができるパラメータ割り当て１３６（例えば、パラメータ名、パラメータ値、およびオプションでパラメータ属性を含む）等の機能データを格納する。ユーザは、グラフィカルユーザーインターフェース（ＧＵＩ）１４０および／またはコマンドラインインターフェース（ＣＬＩ）１５０を介してコンピュータシステムと相互作用することができる。
【００１６】
パラメータ割り当て１３６には、多様なターゲットシンタックスの何れかに変換すべきパラメータ値をユーザが定義できる、整合性があるシンタックスを提供するソースＰＤＬの式を用いて、定義されるパラメータを含めることができる。パラメータ定義は、他のパラメータの値を参照することができる。多様な規則の何れかを用いて、どのパラメータが他のどのパラメータを参照できるかを決定することができる（例えば、順序リストでは、パラメータ定義が、以前に定義したパラメータを参照でき；またはセットでは、一セットのパラメータが、別のセットのパラメータを参照できる）。
【００１７】
詳細に後述するソースＰＤＬの式を評価するための手法は、ＰＤＬの式を受け取るステップ、ＰＤＬの式を表すためのターゲットシンタックスを特定するステップ、およびターゲットシンタックスに基づいてＰＤＬの式の表現を生成するステップを含む。例えば、ＰＤＬの式を含むスクリプトには、ＰＤＬの式が続く一連のインライントークンを含めることができる。コンピュータシステム１１０は、続くＰＤＬの式を解釈するのに用いられるターゲット言語を指示するスクリプト内の各トークンを読み取ることにより、ターゲットシンタックスを特定する。従って、スクリプトの異なる部分を解釈するために用いる異なるターゲット言語を指示する異なるトークンをスクリプト内に含めることにより、スクリプト内のターゲットシンタックスは変更し得る。
【００１８】
受け取ったＰＤＬの式には、文字列の値を表す文字シーケンスを含めることができる。文字シーケンスは、（ａ）パラメータ参照（例えば、パラメータの値が文字列の値へバインドされるべきであると示すパラメータのプレフィックス）により、文字列の値を表すことができる。代替として、文字シーケンスは、（ｂ）引用符付きリテラルの式（例えば、文字列の値の表現を囲む区切り文字）により、文字列の値を表すことができる。
【００１９】
ＰＤＬの式の文字シーケンスが、（ａ）パラメータ参照により文字列の値を表す場合、コンピュータシステム１１０は、パラメータ参照の形式を、例えば、参照のシンタックスに基づいて特定する。参照は、「直接代入」パラメータ参照とすることができ、その場合は、コンピュータシステム１１０はパラメータ参照をパラメータ値へバインドする。代替として、参照を「代入および引用」パラメータ参照とすることができ、その場合は、コンピュータシステム１１０は、詳細に後述するように（例えば、セクション２．２．３）、ターゲットシンタックスで引用符付きリテラルを生成するためのメカニズムを用いて、パラメータ参照をパラメータ値へバインドする。
【００２０】
ＰＤＬの式の文字シーケンスが、（ｂ）引用符付きリテラルの式により文字列の値を表す場合、コンピュータシステム１１０は、代入を実行せずにリテラル式の文字列の値を維持する。コンピュータシステム１１０は、ターゲットシンタックスに基づいて何を引用符付きリテラルの式として解釈すべきかを決定する。通常であればパラメータ参照（例えば、直接代入パラメータ参照）を表す筈の文字シーケンスが、引用符付きリテラルの式内に組み込まれている場合、その文字シーケンスはパラメータ参照として扱われない（例えば、パラメータ値へバインドされない）。
【００２１】
コンピュータシステム１１０が、パラメータ参照を値にバインドする場合、定義されているパラメータ毎の値（例えば、パラメータおよびその定義のリスト内で）により、動的環境を設定する時間を費やす必要を避けるために、コンピュータシステム１１０は、式をスキャンして、その式の中で実際に参照されるパラメータに対する値だけを決定することができる。パラメータは他のパラメータで定義できるので、式で直接参照されないパラメータの幾つかも、直接参照されるパラメータを評価するプロセスで評価される可能性がある。直接または間接的に参照されるパラメータの値は、ローカルメモリ１２０内のバインド環境に格納される。コンピュータシステム１１０が、ＰＤＬの式を評価した後、コンピュータシステムは、対応するターゲットシンタックスでターゲットの式を生成する。次いで、コンピュータシステム１１０は、ターゲットの式を実行し、および／またはデータ収納庫１３０にターゲットの式を格納する。
【００２２】
２  式の変換
ソースシンタックスからターゲットシンタックスへの式の変換は、変換時に既知のパラメータ値を用いるパラメータ代入を伴うことがある。ソースのＰＤＬシンタックスは、幾つかの「＄代入」シンタックスを用いてパラメータを値で置換する。
【００２３】
ソースのＰＤＬシンタックスは、「直接代入」パラメータ参照を用いる第１種の「＄代入」シンタックスを用いる。このシンタックスは、$<名称>を、$fooのように使用し、文字列$fooの代わりにパラメータfooの値を直接代入する。注意すべきは、このような代入は、＄が次のように文字列リテラル内で用いられる場合は、実行されないということである。
'the price is $12.00'
【００２４】
値1.00を有するパラメータfooによる直接代入の例示は、次のソース式を取ることにすると、
if($foo==3.14)
次のターゲット式が得られる。
if(1.00==3.14)
この場合、$文字をプレフィックスとして用いて、パラメータfooへ割り当てられている値を、直接代入パラメータ参照$fooに代入すべきであることを指示する。
【００２５】
しかし、場合によっては、パラメータ参照に代入される値が、ターゲットシンタックス（例えば、データ操作言語（ＤＭＬ）等のターゲット言語に基づく場合）で正当であるという保証はない。例えば、ソースパラメーターバインド環境でfooに値「(」（すなわち、左丸括弧文字を表す長さ１の文字列）が割り当てられている場合、上記のソース式により次のターゲット式が得られる。
if((==3.14)
これは、ターゲット言語がＤＭＬの場合、ターゲットシンタックスで不当な式となる。
【００２６】
代わりに、ソース式が次式である場合、
if("$foo"==3.14)
このソース式に同一パラメータを代入すると、次の正当なターゲット式が得られる。
if("("==3.14)
（コンピュータシステム１１０が、後述するように、二重引用符が保護区切り文字である処理モードにないと仮定する）。
【００２７】
しかし、fooに値「"」を割り当てる場合（すなわち、二重引用符を表す長さ１の文字列）、上記のソース式のfooにこの値をパラメータ代入すると次のターゲット式が得られる。
if("""==3.14)
これは、ターゲット言語がＤＭＬの場合、不当なシンタックスである。
【００２８】
ソースＰＤＬシンタックスは、「代入および引用」パラメータ参照を用いる第２種の「＄代入」シンタックスを用いる。コンピュータシステム１１０は、パラメータ参照をパラメータ値へバインドし、指定されたターゲットシンタックスで引用符付きリテラルを生成する。この種のパラメータ参照は、所定の区切り文字セットにより示すことができる。ＰＤＬでは、区切られた「代入および引用」パラメータ参照は、$"foo"により与えられる（または$'foo'としても等価である）。
【００２９】
この「代入および引用」パラメータ参照を用いると、fooに値「(」を割り当てる場合（すなわち、左丸括弧文字を表す長さ１の文字列）、次のソース式、
if($"foo"==3.14)
により、次のターゲット式を得る。
if("("==3.14)
これはターゲット言語がDMLの場合、正当なシンタックスである。
【００３０】
繰り返しになるが、この「代入および引用」パラメータ参照を用いると、fooに値「"」を割り当てる場合（すなわち、二重引用符を表す長さ１の文字列）、次のソース式、
if($"foo"==3.14)
により、例えば、ターゲット言語がＤＭＬの場合、次のターゲット式を得る。
if("＼""==3.14)
これは、ＤＭＬでは、引用符付きの引用符号にエスケープ文字＼が先行する必要があるからである。異なるターゲット言語を用いる場合、ターゲット式は異なるシンタックスを用いることができる。例えば、次のソース式、
if($"foo"==3.14)
により、ターゲット言語がｋｓｈの場合、次のターゲット式を得る。
if('"'==3.14)
【００３１】
ターゲットシンタックスは、ターゲット言語がｋｓｈであることを示す「$-ksh」や、ターゲット言語がＤＭＬであることを示す「$-dml」等の、ソース式内に組み込まれたトークンにより示すことができる。トークンによっては、対応するターゲット言語を持たないターゲットシンタックスを示すこともあるが（例えば、＄−リテラル）、それでも一セットの規則により定義される良好な定義シンタックスをもっている。コンピュータシステム１１０がターゲットシンタックスのトークンを認識した後、式の評価は、そのターゲットシンタックスと対応する「処理モード」内に置かれる。
【００３２】
「代入および引用」パラメータ参照メカニズムは、ソースＰＤＬの式が書かれ、引用された後に、ターゲットシンタックスに適した処理モードにより決定される方法でターゲットシンタックス値を取得する方法を提供する。ソースＰＤＬの式を書いている時に既知であるターゲットシンタックスの値は、所定の「保護区切り文字」（「＄」文字を先頭に付けない二重または一重の引用符等）の内側に閉じ込めることにより、ターゲットシンタックスと整合性がとれているリテラル値として維持することができる。すなわち、ソースシンタックスは区切り文字の付いた文字列内への代入を必要としない。
【００３３】
例えば、文字列$PIが、ＤＭＬターゲット言語でπ（パイ）の値を表す特殊文字列である場合、ＤＭＬ文字シーケンス内に含まれる時は、この文字列を二重引用符で囲む（"$PI"のように）ことにより、例えば、"＼$PI"として直接代入を「エスケープ」する必要なく、変更されないようにすることができる。異なるターゲット言語では、異なる保護区切り文字を用いて、ｋｓｈターゲット言語の'$PI'のように文字シーケンスを保護することができる。ＰＤＬ式を評価する場合、コンピュータシステム１１０は、保護区切り文字内の「直接代入」パラメータ参照、および「代入および引用」パラメータ参照をともにＯＦＦにすることにより、保護区切り文字を順守する。コンピュータシステム１１０は、処理モードに基づいて保護区切り文字（それがある場合）が何であるかを判定する。
【００３４】
２．１  ターゲットシンタックス処理モード
異なるターゲットシンタックス処理モードは、ＰＤＬの式を評価するための異なる振る舞いを生み出す。コンピュータシステム１１０は組み込まれたトークンを読むことにより処理モードを認識できるが、しかし、トークンがない場合は、既定値の処理モードを仮定することができる。４つの例示の処理モードの式評価の振る舞いを下記のようにまとめる：
【００３５】
ターゲットシンタックス：ｋｓｈ
トークン：$-ksh
処理モード振る舞い：コンピュータシステム１１０は、「代入および引用」に対するｋｓｈのターゲット言語と整合性がある引用符付きシンタックスを用いて、ｋｓｈのターゲット言語が用いる保護区切り文字を認識する。
【００３６】
ターゲットシンタックス：ＤＭＬ
トークン：$-dml
処理モード振る舞い：コンピュータシステム１１０は、「代入および引用」に対するＤＭＬのターゲット言語と整合性がある引用符付きシンタックスを用いて、ＤＭＬのターゲット言語が用いる保護区切り文字を認識する。
【００３７】
ターゲットシンタックス：テキスト
トークン：$-text
処理モード振る舞い：コンピュータシステム１１０は、「代入および引用」に対するＤＭＬのターゲット言語と整合性がある引用符付きシンタックスを用いるが、どの区切り文字も保護区切り文字として認識しない。
【００３８】
ターゲットシンタックス：リテラル
トークン：$-literal
処理モード振る舞い：コンピュータシステム１１０は、「代入および引用」または「直接代入」パラメーターバインドを実行せず、$-literalトークンと、もしあれば、続くトークンとの間の全て（トークン直後のスペースを除く）を逐語的に出力する。
【００３９】
これらのインライントークンは、対応するターゲットの式へ変換されない。
【００４０】
２．２  ＰＤＬ評価規則
ＰＤＬの式を用いて、パラメータ割り当てセット内に含まれる値を提供することができる。ＰＤＬの式の幾つかの部分は、ＰＤＬの式の変換に対してローカルの値を操作するステートメントを含むことができ、得られるターゲット式に直接反映されない。コンピュータシステム１１０は、ＰＤＬ式内の文字を解釈する下記の例示の規則セットを用いる。
【００４１】
２．２．１  パラメータ割り当て
ソースのＰＤＬの式で参照されるパラメータ値は、ＰＤＬの式とは別に割り当てることができ（例えば、一セットのパラメータ割り当てを含むファイル内で）、またはＰＤＬの式とインラインで割り当てることができる（例えば、一つ以上のＰＤＬの式を含むスクリプト内で）。このようなインラインパラメータ割り当ては、対応するターゲットの式へ変換されない。ＰＤＬの式で参照されるパラメータの値を決定するステップは、他のＰＤＬの式を変換するステップ、および得られるターゲット式を評価するステップを含むことができる。
【００４２】
２．２．２  直接代入パラメータ参照
引用符なしでトークンに直接先行する「＄」文字は、「直接代入」パラメータ参照を指示する。パラメータ参照は、パラメータ参照に代入される値とバインドされる。例えば、式中の文字シーケンス$BARが、文字シーケンスxxxを生成するよう評価されるとする。その場合、式中の文字シーケンスFOO$BARは、文字シーケンスFOOxxxを生成するよう評価されることになる。
【００４３】
区切り文字を用いて、参照されるパラメータを表す文字を区切ることができる。例えば、大括弧を用いることにより、文字シーケンスFOO${BAR}BAZが、文字シーケンスFOO$BARBAZではなく、FOOxxxBAZを生成すると評価することができる。
【００４４】
２．２．３  代入および引用のパラメータ参照
一重または二重の引用符と組み合わせて用いてトークンを区切る「＄」文字は、「代入および引用」パラメータ参照を指示する。パラメータは、参照されるパラメータに代入される値にバインドされ、得られる文字シーケンスは、ターゲットシンタックスに基づいて引用される。例えば、式の文字シーケンス$"BAR"または文字シーケンス$'BAR'は、評価されて文字シーケンス'xxx'を生成する（一重引用符を用いるターゲットシンタックスについて、上記例示のようにBARに値xxxが割り当てられる場合）。同様に、パラメータ割り当てをTERMINATOR=|とした場合、式中の文字シーケンスstring($"TERMINATOR")が評価されて、文字シーケンスstring('|')が生成される。
【００４５】
別の実施例では、ターゲットシンタックスは、一本のリテラルバックスラッシュ文字「＼」が、引用されるリテラル文字列内で２本のバックスラッシュ文字「＼＼」により指定されることを必要とする。この場合には、パラメータ割り当てをTERMINATOR=＼とすると、式中の文字シーケンスstring($"TERMINATOR")が評価されて、文字シーケンスstring('＼＼')が生成される。
【００４６】
２．２．４  特殊文字のエスケープ
リテラル「$」文字は、文字をプレフィックスとして用いてパラメータ代入の振る舞いを「エスケープ」することにより、ソースＰＤＬシンタックスで規定することができる。例えば、エスケープ文字がバックスラッシュの場合、式内の文字シーケンスFOO＼$BARが評価されて文字シーケンスFOO$BARが生成される。
【００４７】
「$」文字の前にリテラル「＼」文字を生成するために、二本のバックスラッシュ文字「＼＼」を用いることができる。例えば、式中の文字シーケンス＼＼$BARが評価されると、直接パラメータ代入が行われて文字シーケンス＼xxxが生成される。一般に、「$」文字の前に偶数個の「＼」文字がある場合、「＼」文字は対にされ、「$」文字がパラメータ参照として解釈される。「$」文字の前に奇数個の「＼」文字がある場合、隣接する「＼」文字は、「$」文字をリテラルに解釈させ、残りの「＼」文字は対にされる。従って、式中の文字シーケンス＼＼＼$BARは文字シーケンス＼$BARを生成するよう評価され、式中の文字シーケンス＼＼＼＼$BARは、文字シーケンス＼＼xxxを生成するよう評価される。
【００４８】
２．２．５  保護区切り文字
コンピュータシステム１１０は、保護区切り文字内側の「直接代入」パラメータ参照および「代入および引用」パラメータ参照をともにＯＦＦにすることにより、保護区切り文字を順守することが好ましい。例えば、文字シーケンス$BARをリテラル文字として解釈するために、二重または一重引用符等の保護区切り文字を用いて、保護されたリテラル文字列"＄BAR"を得ることができる。更に、特殊文字のエスケープは、保護されたリテラル文字列内側では不要である。
【００４９】
２．２．６  インライン実行
「インライン」で実行可能な計算またはスクリプトを、ＰＤＬの式を評価しながら実行することができる。このインライン実行は、別の種類の区切り文字を用いて示す。実行可能な計算またはスクリプトの名称、例えば、execを、式の中で$(exec)として区切り、execを実行した結果（例えば、計算またはスクリプトの出力を取得したもの）で置換する。
【００５０】
インラインスクリプトは、「透明」なパラメータ参照を含むことができる。パラメータPARMの透明な参照は、次の二つの形式、$PARMまたは${PARM}のどちらかの形式を取る。従って、式中の文字シーケンス$(echo$BAR)が評価されると文字シーケンスxxxが生成される。しかし、$(eval echo'$'FOO)または$(printenv FOO)のような他の種類の「不透明」なパラメータ参照の場合は、パラメータがそれらの割り当てられた値へバインドされることにはならない。
【００５１】
特定の種類の区切り文字を用いて、実行可能な計算またはスクリプトは特定言語で実行すべきであることを示すことができる。例えば、$(exec)はｋｓｈに基づいてexecを実行することを示し、$[exec]はＤＭＬに基づいてexecを実行することを示すことができる。代替として、インライントークンを用いて特定言語での実行を指示することができる。例えば、$(ksh exec)は、ｋｓｈに基づいてexecを実行することを示し、$(dml exec)は、ＤＭＬに基づいてexecを実行することを示すことができる。
【００５２】
３  パラメーターバインド手法
図３は、データ収納庫１３０内に格納される例示のパラメータ割り当て１３６を示す。パラメータ割り当て１３６は、パラメータ名称２００、パラメータ値２０２、およびオプションで、パラメータ属性２０４を含む。パラメータ属性は、データ種類または記述等の、パラメータまたはその値と関係付けられる何らかの情報を含むことができる。本実施例では、パラメータに割り当てられた値は、$FOOの値を有するパラメータDATE等の、何らかの先行するパラメータへの参照を含むことができる。
【００５３】
図４を参照すると、例示のパラメーターバインド手法では、コンピュータシステム１１０は、評価中のソーススクリプト３０２と関係付けられるパラメータに対して、ローカルメモリ１２０内にバインド環境３００を維持する。コンピュータシステム１１０がソーススクリプト３０２を評価する時、コンピュータシステム１１０は、バインド環境３００内に、ソーススクリプト３０２内で参照されるそれぞれのパラメータのコピーを維持する。バインド環境３００内に格納される情報は、パラメータ名称３０４およびそのパラメータの現在の値３０６を含む。それぞれのパラメータは適切なスコープ規則に基づいて値へバインドされる。場合により、コンピュータシステム１１０は、バインド環境３００内の多数のコンテクストを維持して、異なるスコープを有するパラメータを格納する。
【００５４】
本実施例では、ソーススクリプト３０２は、文字シーケンス"$BASE/file.dml"を含むソースの第１式３１０を含む。この文字シーケンスは、引用符付きリテラルの式として文字列の値を表す（例えば、ＤＭＬ処理モードで）。コンピュータシステム１１０は、ソースシンタックス内の通常であればパラメータ参照$BASEとなる筈のもののバインドを無効にする。そして、パラメータ参照$BASEは、そのまま維持されて後でバインドされる（例えば、対応するターゲット式を評価するときに、値〜＼dirへバインドされる）。
【００５５】
ソーススクリプト３０２は、文字シーケンス$"DATE"を含むソースの第２式３１２を含み、この文字シーケンスは、「代入および引用」のパラメータ参照により文字列の値を表す。参照されるパラメータDATEは、別のパラメータFOOで定義される（図３で）ので、コンピュータシステム１１０は、パラメータFOOをそれが割り当てられた値$TODAYへ最初にバインドして、
May 1, 2000
と解決し、バインド環境３００にその結果を格納する。次いで、コンピュータシステム１１０は、次の値へパラメータDATEをバインドし、
May 1, 2000
バインド環境３００にその結果を格納する。
【００５６】
ソーススクリプト３０２は、文字シーケンス$"BAR"を含むソースの第３式３１４を含み、この文字シーケンスは、「代入および引用」のパラメータ参照により文字列の値を表す。コンピュータシステム１１０は、パラメータBARを次の値へバインドし、
test 1
バインド環境３００にその結果を格納する。
【００５７】
コンピュータシステム１１０は、ターゲットシンタックスでソースの第１式３１０を表す第１ターゲット式３２０を含むターゲットスクリプト３０８を生成する。ソース式３１０内の文字シーケンス"$BASE/file.dml"は、保護区切り文字（ＤＭＬ処理モードに基づく）を含むので、ターゲット式３２０は、同一の文字シーケンスを含む。
【００５８】
ターゲットスクリプト３０８は、引用される値"May 1, 2000"が、パラメータ参照$"DATE"の代わりに代入されている第２のターゲット式３２２、および引用される値"test 1"が、パラメータ参照$"BAR"の代わりに代入されている第３のターゲット式３２４を含む。
【００５９】
コンピュータシステム１１０は、ソーススクリプト３０２をパラメータ参照に対してスキャンし、その参照した値をバインド環境３００内に格納した後に、ターゲット式を生成する。代替として、コンピュータシステムは、ソーススクリプト３０２をスキャンしているときにターゲット式を生成することができる。次いで、コンピュータシステム１１０は、生成したターゲットスクリプト３０８を実行でき、および／または後で実行するためにターゲットスクリプト３０８を格納することができる。
【００６０】
上記説明した式の評価技法は、コンピュータ上で実行するためのソフトウエアを用いて実装することができる。例えば、ソフトウエアは、一つ以上のプログラム済み、またはプログラム可能なコンピュータシステム（分散型、クライアント／サーバ型、またはグリッド型等の各種のアーキテクチャから構成される）を実行する、一つ以上のコンピュータープログラム内の手順を形成する。それぞれのシステムは、少なくとも一つのプロセッサ、少なくとも一つのデータ格納システム（揮発性メモリおよび不揮発性メモリおよび／または記憶素子を含む）、少なくとも一つの入力装置またはポート、および少なくとも一つの出力装置またはポートを含む。本ソフトウエアは、例えば、計算グラフの設計および構成と関連する他のサービスを提供する、規模の大きなプログラムの内の一つ以上のモジュールを形成してもよい。グラフのノードおよび要素は、コンピュータ可読媒体内に格納したデータ構造、またはデータ収納庫内に格納したデータモデルに準拠する他の体系化したデータ、として実装することができる。
【００６１】
本ソフトウエアは、汎用または専用プログラム可能なコンピュータにより読み込むことができるＣＤ−ＲＯＭのような媒体上で提供するか、またはネットワークを介してソフトウエアが実行される場所であるコンピュータへ配布する（伝搬信号で符号化される）ことができる。機能全てを専用コンピュータ上で、またはコプロセッサ等の専用ハードウエアを用いて、実行することができる。本ソフトウエアは、ソフトウエアにより規定される異なる計算部分を異なるコンピュータで実行する分散型で実装できる。このようなコンピュータープログラムはそれぞれ、汎用もしくは専用のプログラム可能なコンピュータに可読の格納媒体または装置（例えば、固体メモリもしくは媒体、または磁気もしくは光学媒体）に格納するか、ダウンロードして、格納媒体または格納装置をコンピュータシステムが読み出す際に、本明細書で説明した手順を実行するようにコンピュータを構成し、動作させることが好ましい。本発明のシステムは、コンピュータープログラムで構成されたコンピュータ可読格納媒体として実装し、そのように構成される格納媒体が、コンピュータシステムを規定の方法、所定の方法で動作させて、本明細書で説明した機能を実行させると考えることもできる。
【００６２】
言うまでもなく、上記説明が説明を意図していて本発明の範囲を限定する意図はなく、本発明の範囲は、付帯のクレーム範囲により定義されるということである。例えば、上記説明の機能ステップの幾つかは、全体の処理に実質的に影響を与えることなく異なる順序で実行してもよい。他の実施の形態は以下のクレームの範囲内にある。
【図１】
2015084256.tif 000003
【図２】
2015084256.tif 000004
【図３】
2015084256.tif 000005
【図４】
2015084256.tif 000006
【外国語明細書】
2015084256000001.pdf