(57)【特許請求の範囲】
【請求項１】
スクリプトのコマンドライン実行を開始するためのコマンドラインを機械によって準備するための方法であって、該スクリプトは、スクリプト実行時にコマンドラインの引数としてユーザがその値を入力する少なくとも１つの未定義変数を含み、該機械で実行される方法が前記スクリプトの実行に先立って実行され、該機械で実行される方法は、
（ａ）該スクリプトを提供する段階、
（ｂ）該コマンドラインの引数として該ユーザがその値を入力する該未定義変数の該スクリプトにおけるインスタンスを見出す段階、
（ｃ）少なくとも１つの該未定義変数をそれぞれ入力するよう該ユーザに指示を出す段階、及び
（ｄ）完全コマンドラインを生成する段階であって、該完全コマンドラインの該機械への発信によって前記スクリプトの実行を開始し、該完全コマンドラインが段階（ｃ）で得られた値に対応する引数を有する段階
からなることを特徴とする方法。
【請求項２】
請求項１記載の方法において、該段階（ｂ）は、
（ｂ１）テキストストリングとして該スクリプトの第１ラインを取り扱う段階、及び
（ｂ２）該未定義変数に対応する全サブストリングについて該テキストストリングを検索する段階を含み、
該段階（ｃ）は、該段階（ｂ２）で見出された少なくとも１つの対応する未定義変数の値をそれぞれ入力するよう該ユーザに指示を出すものであり、
該方法はさらに、
（ｅ）該段階（ｃ）で該ユーザから受け取った該１つ以上の値を記憶する段階、及び
（ｆ）該スクリプトの残りのラインに対して該段階（ｂ）乃至（ｃ）および段階（ｅ）を繰り返す段階
からなることを特徴とする方法。
【請求項３】
請求項１に記載の方法において、該方法はさらに、
(e)該スクリプト実行のために該完全コマンドラインを機械へ提出する段階からなることを特徴とする方法。
【請求項４】
請求項１に記載の方法において、該スクリプトにおける少なくとも１つの該未定義変数は、無線通信システムのパラメータを表すことを特徴とする方法。
【請求項５】
スクリプトのコマンドライン実行を開始するためのコマンドラインを機械によって準備するための方法であって、該スクリプトは、スクリプト実行時にコマンドラインの引数としてユーザがその値を入力する少なくとも１つの未定義変数を含み、該機械で実行される方法が前記スクリプトの実行に先立って実行され、該機械で実行される方法は、
（ａ）該スクリプトを提供する段階、
（ｂ）テキストストリングとして該スクリプトの第１ラインを取り扱う段階、
（ｃ）該コマンドラインの引数として該ユーザがその値を入力する該未定義変数に対応する全サブスクリプトについて該テキストストリングを検索する段階、
（ｄ）対応する少なくとも１つの該未定義変数の値を入力するよう該ユーザに指示を出す段階、
（ｅ）該段階（ｄ）で該ユーザから受け取った該１つ以上の値を記憶する段階、
（ｆ）該スクリプトの残りのラインについて該段階（ｂ）乃至（ｅ）を繰り返す段階、及び、
（ｇ）完全コマンドラインを生成する段階であって、該完全コマンドラインの該機械への発信によって前記スクリプトの実行を開始し、該完全コマンドラインが段階（ｅ）で得られた値に対応する引数を有する段階
からなることを特徴とする方法。
【請求項６】
スクリプトのコマンドライン実行を開始するための完全コマンドラインをコンピュータによって準備するためのプログラムを収録したコンピュータ読み取り可能記憶媒体であって、該スクリプトは、スクリプト実行時にコマンドラインの引数としてユーザがその値を入力する少なくとも１つの未定義変数を含み、該コンピュータ読み取り可能記憶媒体に収録されたプログラムは該スクリプトの実行に先立って実行され、該コンピュータ読み取り可能記憶媒体に収録されたプログラムは、
該スクリプトを提供する第１コードセグメント、
該コマンドラインの引数として該ユーザがその値を入力する該未定義変数の該スクリプトにおけるインスタンスを見出す第２コードセグメント、
少なくとも１つの該未定義変数の値をそれぞれ入力するよう該ユーザに指示を出す第３コードセグメント、及び
完全コマンドラインを生成する第４コードセグメントであって、該完全コマンドラインの該コンピュータへの発信によって前記スクリプトの実行を開始し、該完全コマンドラインが該第３コードセグメントから得られた値に対応する因数を有する第４コードセグメント、
からなることを特徴とするコンピュータ読み取り可能記憶媒体。
【請求項７】
請求項６記載のコンピュータ読み取り可能記憶媒体において、
該第２コードセグメントは、
該スクリプトの第１ラインをテキストストリングとして取り扱う第１コードセグメント、及び
該未定義変数に対応する全サブストリングについて該テキストストリングを検索する第２コードセグメントを含み、
該第３コードセグメントは、該第２コードセグメントで見出された対応する少なくとも１つの未定義変数の値をそれぞれ入力するよう該ユーザに指示を出すものであり、該コンピュータ読み取り可能記憶媒体はさらに、
該第３コードセグメントを介して該ユーザから受け取った該１つ以上の値を記憶する第５コードセグメント、及び
該スクリプトの残りのラインについて該第２コードセグメントと第３コードセグメントとを繰り返すための第６コードセグメント
からなることを特徴とするコンピュータ読み取り可能記憶媒体。
【請求項８】
請求項６に記載のコンピュータ読み取り可能記憶媒体においてさらに、
該スクリプト実行のために該機械に該完全コマンドラインを渡す第５コードセグメントからなることを特徴とするコンピュータ読み取り可能記憶媒体。
【請求項９】
請求項８に記載のコンピュータ読み取り可能記憶媒体において、該プログラム具現化コンピュータ読み取り可能記憶媒体における少なくとも１つの未定義変数は、無線通信システムのパラメータに対応することを特徴とするコンピュータ読み取り可能記憶媒体。
【請求項１０】
スクリプトのコマンドライン実行を開始するためのコマンドラインをコンピュータによって準備するためのプログラムを収録したコンピュータ読み取り可能記憶媒体であって、該スクリプトは、スクリプト実行時にコマンドラインの引数としてユーザがその値を入力する少なくとも１つの未定義変数を含み、該コンピュータ読み取り可能記憶媒体に収録されたプログラムは該スクリプトの実行に先立って実行され、該コンピュータ読み取り可能記憶媒体に収録されたプログラムは、
該スクリプトの第１ラインをテキストストリングとして取り扱う第１コードセグメント、
コマンドラインの引数として該ユーザがその値を入力する該未定義変数に対応する全サブストリングについて該テキストストリングを検索する第２コードセグメント、
対応する少なくとも１つの未定義変数の値をそれぞれ入力するよう該ユーザに指示を出す第３コードセグメント、
該第３コードセグメントを介して該ユーザから受け取った該１つ以上の値を記憶する第４コードセグメント、
該スクリプトの残りのラインに対して該第１コードセグメントから第４コードセグメントを繰り返すための第５コードセグメント、及び
完全コマンドラインを生成する第６コードセグメントであって、該完全コマンドラインの該コンピュータへの発信によって前記スクリプトの実行を開始し、該完全コマンドラインが該第４コードセグメントから記憶された値に対応する因数を有する第４コードセグメント
からなることを特徴とするコンピュータ読み取り可能記憶媒体。
【発明の詳細な説明】
【０００１】
【発明の分野】
本発明はスクリプトのコマンドライン実行の分野に向けられている。さらに詳細には、スクリプトを実行するために必要とされる完全コマンドラインを生成する技術に関する。またさらに詳細には、スクリプトにおける未定義変数の値をユーザに入力させ、そのスクリプトの実行に必要な完全コマンドラインを生成する技術に関する。
【０００２】
【発明の背景】
スクリプトとは、他のプログラムにより解読または実行されるコマンドのシーケンスまたはプログラムである。これに対し、コンパイルされたプログラムは、プロセッサによる直接実行のためにプロセッサの機械語コードに変換されたコマンドのシーケンスである。一般的にスクリプトは、コンパイルされるプログラムよりもコードについてより簡単でより速い。
【０００３】
スクリプトは一般的にコマンドラインより実行される。ユーザはスクリプト名と、スクリプトに渡される引数を入力する。そのような引数はしばしばスクリプト内の未定義変数を表す。未定義変数は、最も一般的にはコマンドラインに付加される引数の形で、実行時に値がスクリプトに供給されるものである。
【０００４】
図１は従来技術によるコマンドライン実行１００の図である。ブロック１０２は、マニュアルで生成される全コマンドラインを示し、ユーザによりスクリプト言語インタプリタ１０４に入力される。さらに、コマンドラインに付加される引数として未定義変数の値を渡すために必要なフォーマットだけでなく、スクリプト内の未定義変数を思い出さなくてはならないという負荷がユーザにかかる。
【０００５】
あるいは、全ての未定義変数をユーザに入力させるよう指示を与えるスクリプトを作成することも出来る。しかし、スクリプトに付加される専用のユーザインタフェース部分が必要となり、これは非常に複雑で長くなる。さらに、このような専用のユーザインタフェース部分はスクリプトに精通したユーザだけの使用にとどまる。なぜなら、彼はスクリプト内の未定義変数を知り、これら引数のフォーマットと同様、コマンドラインにおける引数として渡される必要があるものに関する知識があるからである。また、専用のユーザインタフェース部分はスクリプトの実行スピードを遅らせる。
【０００６】
熟達したユーザにとっては、コマンドラインインタフェースはスクリプトを実行する上で非常に融通のきくツールである。また、スクリプト内の専用のユーザインタフェース部分とするよりは、むしろ、他の引数だけでなく、未定義変数を覚えて入力するという負担をユーザにかけることにより、スクリプトはより書きやすく、より短く、かつ、より速く実行することができる。
【０００７】
しかしながら、この従来のコマンドライン生成において、不慣れなユーザにとっては、コマンドラインの実行はある人にはとってフラストレーションのもとであったり、また他の人にとっては全くの障壁であるかもしれない。一般的に、不慣れなユーザはスクリプトにおいて使用される未定義変数に慣れておらず、もし何らかの理由でユーザがこれら変数に気づいた場合でも、コマンドラインでこれら変数の値を入力すべきフォーマットを熟知していないケースが少なくない。結果、不慣れなユーザは、コマンドラインを完成させるために何度も試行錯誤を繰り返して悩むことになる。また、中にはコマンドを正確に作れない場合さえある。
【０００８】
【発明の概要】
上述した問題を解決するため、本発明は、一つには、コマンドライン実行に熟達したユーザを対象としたスクリプトを多数の不慣れなユーザが使用を望むうえでの問題点を認識する。
【０００９】
本発明は、また一つには、スクリプトのコマンドラインを生成する方法（および対応するソフトウェアと装置）を提供する。このようなコマンドライン生成においては、不慣れなユーザにスクリプトの全ての未定義変数の値を入力するよう指示を出し、他の必要な引数と同様、必要なフォームの引数として付加されるべき変数に必要な全ての値でコマンドラインを生成する。
【００１０】
本発明は、また一つには、スクリプトのコマンドライン実行の方法（関連するソフトウェアおよび装置）を提供する。スクリプトは少なくとも１つの未定義変数を含み、その値はスクリプト実行時にコマンドラインにおける引数としてユーザにより入力されることを意図する。この方法は、(a)スクリプトを提供し、(b)コマンドラインにおける引数として値がユーザにより入力されることが意図される未定義変数のスクリプトにおける例（instance)を見出し、(c)ユーザに、少なくとも１つの未定義変数の値を入力するよう指示を出し、(d)ステップ(c)にて得られた値に対応する引数を有する完全なコマンドラインを生成することからなる。
【００１１】
本発明は、また一つには、スクリプトのコマンドライン実行の方法（関連するソフトウェアと装置）を提供する。スクリプトは少なくとも１つの未定義変数を含み、その値はスクリプト実行時にコマンドラインにおける引数としてユーザにより入力されることが意図される。この方法は、(a)スクリプトを提供し、(b)スクリプトの第１ラインをテキストストリング(text sring)として取り扱い、(c)コマンドラインの引数としてユーザによって入力されることが意図される未定義変数に対応する全サブストリングのストリングを検索し、(d)ユーザに、対応する少なくとも１つの未定義変数の値を入力するよう指示を出し、(e)ステップ(d)にてユーザから受け取った少なくとも１つの値を記憶し、(f)スクリプトの残りのラインについてステップ(b)乃至ステップ(e)を繰り返し、(g)ステップ(e)にて記憶された値に対応する引数を有するスクリプトの完全なコマンドラインを生成することからなる。
【００１２】
本発明の上記および他の目的は以下の詳細説明によりさらに明らかとなろう。しかし、本発明の範囲を逸脱することなく他の方法でも具体化出来ることは当業者にとって明らかである。
【００１３】
【発明の詳細な記述】
図２は、本発明によるスクリプトライン生成２００のブロック図である。ブロック２０２はスクリプトを表している。スクリプトはテキストファイルであることを思い出されたい。このようなスクリプトはグラフィカル・ユーザ・インタフェース（Ｇraphical Ｕser Ｉnterface：ＧＵＩ）スクリプタ２０４あるいはテキストエディタ２０６により生成が可能である。
【００１４】
一旦生成が行われると、スクリプト２０２はコマンドラインジェネレータ２０８によるアクセスが可能となる。コマンドラインジェネレータ２０８はユーザにディスプレイ装置２１０を通してスクリプトにおける未定義変数の値を入力するよう指示する。ユーザはマニュアル入力装置２１２を通して未定義変数の値を通信する。コマンドラインジェネレータ２０８の出力はスクリプト言語インタプリタ１０４に渡される完全なコマンドラインである。
【００１５】
本発明によるコマンドラインジェネレータ２０８は図４の例に示したように実行されることが望ましい。すなわち、図４ではプロセッサ４０２、ビデオディスプレイ装置（Ｖideo Ｄisplay Ｄevice：ＶＤＤ）４０６（図２の２１０に相当）、マウスあるいはキーボード（図２の装置２１２に相当）のようなユーザ入力装置４０８、およびメモリ装置４０４を備えたプログラムシステム４００の形態をとる。メモリ４０４は、本発明によるコマンドラインジェネレータをプロセッサ４０２に生成させる１以上のプログラムもしくはスクリプトを記憶する。例えば、本発明の実施例においては、ツールコマンド言語（Ｔool Ｃommand Ｌanguage：ＴＣＬ）を用いて書かれている。コンピュータ読み取り可能メモリ４０４は、ＲＡＭ、ＲＯＭ、固定ハードディスクドライブ、あるいは、フロッピー（登録商標）ディスクやＣＤＲＯＭといったような非固定ディスクドライブ用の着脱式記憶媒体を備えることが出来る。本発明によるコマンドラインジェネレータをプロセッサ４０２に生成させるプログラムは、任意の接続４１２により遠隔ホスト４１０からプロセッサ４０２にダウンロードすることが可能である。プログラムが任意接続４１２を通してダウンロードされる時、プログラムが具現化されるコンピュータ読み取り可能媒体は伝播信号の形態をとる。
【００１６】
本発明によるコマンドラインジェネレータの生成には、ルックアップテーブル(lookup table)へのアクセスのみならず、何回もの記憶作業と比較演算を伴う。このように、プロセッサ４０２は、無理なく確実に高速結果をもたらす十分な処理能力を有するものでなくてはならない。このような要求を満たすプロセッサの例として、Ｉｎｔｅｌ Ｉｎｃ.から市場に出されているペンティアム・ファミリがある。
【００１７】
プロセッサ４０２はコマンドラインジェネレータ２０８のみならずインタプリタ１０４のプログラムも実行する。さらに、プロセッサ４０２は、ＧＵＩスクリプタ２０４あるいはテキストエディタ２０６のプログラムをも実行する。
【００１８】
本発明によるコマンドラインジェネレータはかなり多くの数の言語に適応させることが出来る。特によく適合するものは、同時係属する出願の発明の名称となっている無線オートメーション・マネージャ・インタフェース言語（Ｗireless Ａutomation Ｍanager Ｉnterface Ｌanguage：WAMIL）である。
【００１９】
この言語名が示すように、WAMILは無線技術によりよく適合する。WAMILの正確なコンテキスト、そして、WAMILスクリプトとの関連における本発明によるコマンドライン生成技術の使用における正確なコンテキストを確認する目的において、ここで無線技術に関する短い説明を行う。
【００２０】
無線通信網は大規模システムの例である。大規模システムは、１以上のユーザに一般にシステム性能をモニタさせ、また特に大規模システムの１以上のパラメータ状況をモニタさせるモニタリングシステムを備えることが多い。多くの場合、モニタリングシステムがユーザに情報を配信する方法が負担となっている。
【００２１】
無線通信網は地理的地域にある無線ユニットに無線通信サービスを提供する。移動交換局（Ｍobile Ｓwitching Ｃenter：ＭＳＣ)は、とりわけ、無線装置間の呼、および無線装置と有線装置との間の呼の確立とこれを維持する役割を持つ。このように、移動交換局は地理的地域内の無線装置と公衆交換電話回線網（Ｐublic Ｓwitched Ｔelephone Ｎetwork：ＰＳＴＮ）とを相互接続する。移動交換局によりサービスされる地理的エリアは「セル」と呼ばれる空間上の異なるエリアに分割される。ブロック図において、各セルは図式的に蜂の巣パターンの１つの六角形で表される。しかし、実際にはセルを取りまく地形のトポロジにより各セルは不規則な形状をなす。一般的に、各セルには基地局が配置され、基地局がセル内で無線装置と通信する際に使用する無線局（radio）とアンテナを備えている。また基地局は、基地局が通信リンクにより地理的エリア内の移動交換局と通信を行う際に使用する伝送装置も備えている。時々、１セルサイトが複数のセクタをその適用範囲とする。ここで、セルとセクタとを言い換えることは可能である。
【００２２】
移動無線通信システムにおいて、基地局と無線装置は、フォワードリンク(forward link)およびリバースリンク(reverse link)により音声通信あるいはデータ通信を行う。フォワードリンクは少なくとも１つのフォワードチャネルにより基地局から無線装置に通信信号を搬送する。また、リバースリンクは少なくとも１つのリバースチャネルにより無線装置から基地局に通信信号を搬送する。無線装置と基地局とを如何にして移動通信システムにおいて通信させるかを決定するための計画案が多数ある。例えば、無線装置と基地局間の無線通信リンクは、時分割多元接続（Ｔime-Ｄivision Ｍultiple Ａccess：ＴＤＭＡ）、周波数分割多元接続（Ｆrequency-Ｄivision Ｍultiple Ａccess：ＦＤＭＡ）、符号分割多元接続（Ｃode-Ｄivision Ｍultiple Ａccess：ＣＤＭＡ）等を含む異なる無線プロトコルに基づいて定義出来る。
【００２３】
地理的地域内において、無線装置がセル間を移動するとき、移動交換局は、ハンドオフと呼ばれる、基地局間の呼をリアルタイムで交換する。現在、ＦＤＭＡ、ＴＤＭＡ、ＣＤＭＡ、およびＧＳＭにおいて、セルの地理的適用範囲決定のためのプランニング(planning)を行うセルサイトは、絶え間のない調整を必要とするマニュアルによる集中的タスクとなる。セルのプランニングにおいて、有効性およびゾーン分けの規則(zoning rules)に基づき、地理的エリアのトポロジと適するアンテナサイトが選択される。一般的にこのような選択は最適でないにしても納得のいく範囲である。次にドライブテスト(drive test)と信号データのマニュアル収集が特に適用範囲エリア周辺にて実行される。次に送信／受信アンテナとパワーの伝送をマニュアルによる相互作用方式で調整し、呼の質を改善する。時々、周波数が隣接するセルと入れ替わり、かつ／もしくは伝送パワーの再調整がなされて適用範囲を改善する。時間外に及んでセルサイトの技術者が顧客からの苦情とセルサイトからドロップした呼のリポート(cellsite dropped call reports)を再確認して、再びマニュアルによりＲＦ性能の最適化を試みる。
【００２４】
ルーセントテクノロジーズ社は、無線通信システムのパラメータに関するデータの抽出と同様、ユーザがこの無線通信システムのパラメータを変更する際に使用出来るモニタリングシステムを開発した。このモニタリングシステムはＴＩｐｄｕｎｉｘ（ＴＩ）インタフェース、ステータス・ディスプレイ・ページ（Ｓtatus Ｄisplay Ｐage：ＳＤＰ）インタフェース、またはAUTOPLEXリセント・チェンジ＆検査データベース（ＡUTOＰLEＸ Ｒecent Ｃhange & Ｖerification database：ＡＰＸＲＣＶ）インタフェースを生成することが出来る。これらのインタフェースは個々に使用することが可能である。しかし、一般的にインタフェースのうちの１つから抽出した情報は、インタフェースの中から第２のインタフェースを何かしらの方法で使用するための決定を行う際に使用される。インタフェースを使用する際にユーザは離散プロセス(discrete process)を開始しなくてはならない。ウィンドウズを基礎とする環境においては各インタフェースセッションはそれ自身のウィンドウを有する。
【００２５】
無線技術に関連するスクリプトは一般的に無線通信網のパラメータに対応する変数を含んでいる。このような多数の変数の例からいくつかをあげると、ＭＳＣ（移動交換局）、ＣＥＬＬ（セル数）、ＡＮＴ（アンテナ）、ＣＡＴ（クロックおよびトーンボードナンバ変数(clock and tone board number variable）、ＣＣＣ（ＣＤＭＡクラスタ・コントローラ数(CDMA clustor controller number)）、ＣＣＵ（ＣＤＭＡチャネル・ユニット数(CDMA channel unit number)）、およびＣＥ（チャネル・エレメント数(channel element number）などがある。
【００２６】
WAMIL言語は、コマンド、ｉｆ−コンストラクトエレメント(if-construct elements)、およびｗｈｉｌｅ−コンストラクトエレメント(while-construct elements)を含んでいる。WAMILコマンドは、例えば、「TI:OP:CELL ARGUMENT」、「WAM:CONNECT SDP」、あるいは「WAM:GETSDP」等の「インタフェース：コマンド」のフォーマットを有する。言い換えると、WAMILコマンドはインタフェースを識別する第１のフィールドと、コマンドを識別する第２のフィールドを有する。実際、第１フィールドは第２フィールドのコマンドが有効なインタフェースを識別する。第１フィールドが第２フィールドに先行するか、もしくは第１フィールドが第２フィールドのヘッダーであり、例えばコロンのようなアルファベット文字にて分けられることが望ましい。
【００２７】
WAMIL言語については、Gaspar Hernandez,IIIの、「マルチプルインタフェーススクリプト言語(Multiple Interface Scripting Language）」と題するルーセントテクノロジーズ社の出願にその詳細が述べられている。
コマンドのうちの１つは「GETSDP」コマンドである。このコマンドについては、
Gaspar Hernandez,IIIの「インジケータを表す非テキストディスプレイ生成データをテキスト変数に変換する技術（Technology to Translate Non-Text Display Generation Data Representing An Indicator Into Text Variables）」と題するルーセントテクノロジーズ社の出願にその詳細が述べられている。
WAMIL言語で書かれたスクリプトを使用するための望ましいコンテキストについては、Gaspar Hernandez,IIIの「リエゾンインタフェース(Liaison Interface）」と題するルーセントテクノロジーズ社の出願にその詳細が述べられている。
WAMIL言語によりよく適合するスクリプタおよびインタプリタの詳細は、Gaspar Hernandez,IIIの、「スクリプタおよびインタプリタ（Scriptor and Interpreter）」と題するルーセントテクノロジーズ社の出願にその詳細が述べられている。
【００２８】
図３Ａおよび図３Ｂは、本発明によるコマンドライン生成の具体例におけるステップを示したフローチャートである。このフローチャートはステップ３００より開始する。例えばユーザは、プロセッサ４０２のテキストベースのオペレーティングシステムのコマンドライン(text-based operating system command line)から、あるいはプロセッサ４０２のウィンドウベースのオペレーティングシステム(window-based operating system)のアイコンをクリックすることにより、コマンド生成プログラムを実行するであろう。テキストベースのオペレーティングシステムにおいては、コマンドライン生成プログラム２０８は、ディスプレイ装置４０６上にテキストストリングを表示することにより未定義変数の値を入力するようユーザに指示を出す。ウィンドウズベース環境においては、プロセッサ４０２はダイアログボックス（またはウィンドウ）を生成して未定義変数の値を入力するようユーザに指示を出す。
【００２９】
ステップ３００にてコマンドライン生成プログラムが開始されると、ステップ３０２に進み、ここでスクリプトが提供される。テキストベース環境においては、スクリプト名が引数としてコマンドラインに提供される。ウィンドウベース環境においては、プログラム名がリストに現れたときユーザがこれをクリックする。
【００３０】
スクリプトの提供がなされるとステップ３０４に進み、ここでスクリプト言語が識別される。コマンドラインジェネレータの要求は、スクリプトの中に埋め込まれたスクリプト言語を識別するテキストストリングを有していることである。この識別子は非実行コメント形式でスクリプトのはじめに埋め込まれていることが望ましい。また、スクリプト名は、例えばKornシェルスクリプトが「script.ksh」のように拡張子「.ksh」を有するように、スクリプト言語を識別する拡張子を有することが望ましい。
【００３１】
コマンドラインジェネレータによりサポートされる全てのスクリプト言語について、このような全てのスクリプト言語を載せたスクリプト言語ルックアップテーブル(script language lookup table)をメモリ４０４内に有する。さらに、メモリ４０４は全スクリプト言語の全部の変数を含んだルックアップテーブルをも有する。コマンドラインジェネレータは正確なコマンド実行のためにまず初めにスクリプト言語識別判断を行わなくてはならない。
【００３２】
ステップ３０６において、プロセッサ４０２は考察中のスクリプトの第１ライン、およびスクリプト言語ルックアップテーブルの第１ラインを取り出す。そして、その言語がサポートされているかどうかを判断する。プロセッサ４０２は先ず最初にスクリプト言語ルックアップテーブルのエントリとファイル名の拡張子とを比較することが望ましい。次に、必要であればプロセッサ４０２はスクリプト言語ルックアップテーブルのエントリとスクリプトの第１ラインのテキストサブストリングとを比較する。プロセッサ４０２は、これが合致するまで、あるいはスクリプト言語ルックアップテーブルの全エントリが完全網羅されるまでこの比較処理を実行する。全エントリが完全網羅された場合には、スクリプトがコマンドラインジェネレータによってサポートされていない言語で書かれているというエラープロンプト表示を返してくる。
【００３３】
合致した場合、すなわち、ステップ３０４にてスクリプト言語が識別された場合、プロセッサ４０２は全スクリプト言語の変数を有する変数ルックアップテーブルを使用する。
【００３４】
図３Ａのフローチャートはステップ３０４からステップ３０８に進み、プロセッサ４０２はスクリプトにおける現在の（ここでは、次の）ラインを得る。次のステップ３１０において、プロセッサ４０２は考察中のスクリプトラインをテキストストリングとして取り扱う。ステップ３１２において、プロセッサ４０２はメモリ４０４の変数ルックアップテーブルにアクセスして第１変数ストリングを検索する。次にステップ３１４において、プロセッサ４０２は考察中のスクリプトラインのサブストリングと変数ストリングとを比較する。
【００３５】
次の判断ステップ３１６において、合致するかどうかを判断する。合致しなかった場合、判断ステップ３１８に進み、現在の変数がルックアップテーブルにおける最終変数であるかを判断する。もしそうでなかった場合、ステップ３２０において、プロセッサ４０２はルックアップテーブルの次の変数を現在の変数に設定する。フローチャートステップはステップ３２０からステップ３１２に戻り、現在の変数（すなわち、次の変数）が検索される。
【００３６】
ステップ３１６で合致した場合には判断ステップ３２２に進み、プロセッサ４０２はコマンドストリングに合致したサブストリングに続くサブストリングがあるかどうかを判断する。もしそれがなかった場合、プロセッサ４０２は、現在の変数に索引付けされているルックアップテーブルからのテキストストリングを用いることによりユーザに入力を促す。合致するサブストリングの後にスクリプトラインにおけるサブストリングがある場合にはステップ３２４に進み、ここでプロセッサ４０２は、ユーザに表示されるプロンプトストリングとしてスクリプトラインのこれら追加サブストリングを使用することにより未定義変数の値を入力するようユーザに指示を出す。
【００３７】
フローチャートのステップは図３Ａのステップ３２４とステップ３２６の各々から図３Ｂのステップ３２８に進む。ステップ３２８において、プロセッサ４０２はステップ３２４かステップ３２６のどちらかにより判断されたテキストストリングを用いてユーザ入力を促す。次のステップ３３０において、プロセッサ４０２は、例えばマウスあるいはキーボードのようなマニュアル入力装置４０８によりユーザにより入力された変数の値を保存する。
【００３８】
フローチャートのステップはステップ３３０から判断ステップ３３２に進む。図３Ｂのステップステップ３３２において、考察中のスクリプトの現在のラインはスクリプトの最終ラインかどうかを判断する。もしそうでなかった場合、ステップ３３４においてプロセッサ４０２はスクリプトの次のラインを現在のラインに設定する。ステップはステップ３３４からステップ３０８に進み、ここでプロセッサ４０２はスクリプトの現在の次のラインを検索する。ステップ３３２で考察中のラインがスクリプトの最終ラインであると判断した場合はステップ３３６に進む。
【００３９】
ステップ３３６において、プロセッサ４０２はステップ３３０において保存された未定義変数の値を検索し、付加引数としての値を用いて完全コマンドラインを生成する。そうすることにより、プロセッサ４０２はコマンドラインにより要求される正確な引数フォーマットに変数の値を置く。プロセッサ４０２は未定義変数がスクリプトに現れる順に引数を付加することが望ましい。
【００４０】
次にステップ３３６からステップ３３８に進み、ここでプロセッサ４０２はインタプリタ１０４に完全コマンドラインを提供する。この後、ステップ３３８から最終ステップ３４０に進む。
【００４１】
ステップ３１８において、現在の変数がルックアップテーブルの最終変数であると判断された場合、フローチャートは図３Ｂのステップ３３２に進む。スクリプトのラインに対して一致する変数が見つからなかった場合、それが未定義変数を含むラインであると仮定される。
【００４２】
コマンドライン生成例をいくつかのスクリプト例を用いて説明する。
最初のスクリプト例はUNIX（登録商標） Kornシェルスクリプト言語により書かれている。
スクリプト  No.１
ライン コマンド
01       #!/bin/ksh
02       #ACCOUNT
03       #CUSTOMER
04       exec xterm-title"$2" -e account＿viewer $1 &
【００４３】
スクリプトNo.１のライン１乃至ライン３は非実行コメントラインである。ライン１は、図３Ａのステップ３０４においてシーク(seek)されるKornシェルプログラミング言語(Korn shell programming language)のテキストストリング識別子、すなわちＫＳＨを含む。ライン２は、ライン４で列挙される未定義変数ACCOUNTを識別するコメントラインである。同様に、ライン３はやはりライン４で列挙される未定義変数CUSTOMERを識別する。ライン２とライン３もまた変数名テキストストリングに続くテキストストリングを有していない。従い、図３Ａにおいてステップ３２４よりもむしろステップ３２６をプロセッサ４０２が用いてユーザに変数の値を入力するよう指示を出す。ステップ３２６によりアクセスされるルックアップテーブルの例を以下に提示する。
【００４４】
ライン４にて、テキストストリング「exec」は付加された引数、すなわちテキストストリング「xterm」を実行するためのコマンドである。しかし「xterm」はそれ自身、顧客に応じて名付けられたウィンドウを開くためのＸ−ウィンドウズコマンドである。テキストストリング「-title」はウィンドウにタイトル付けさせるスイッチオプションである。テキストストリング「＄２」はウィンドウのタイトルにて使用されるネームを表す未定義変数である。テキストストリング「-e」はプログラム（次の引数で識別された）をウィンドウ内で実行させるスイッチである。テキストストリング「account_viewer」はウィンドウ内で実行されるプログラム名である。テキストストリング「＄１」はプログラムaccount_viewerにより表示されるアカウントを表す未定義変数である。テキストストリング「＆」はバックグラウンドでの実行を示す。
【００４５】
ライン４のコマンドは実際にコマンド内でネストされたコマンドである。UNIX（登録商標） Kornシェルは最も内側にネストされたコマンドで始まるコマンドラインを構文解析して外側にワークする。このように、UNIX（登録商標） Kornシェルにより遭遇する最初の未定義変数は、表示されるアカウントを表す変数「＄１」である。このように、変数名ACCOUNTは、ライン３の変数名CUSTOMERの前のライン２に現れる。UNIX（登録商標） Kornシェルにより遭遇する第２の未定義変数は、ウィンドウに現れる顧客ネームを識別する「＄２」である。このように、変数名CUSTOMERは第２の未定義変数としてライン３に現れる。
【００４６】
スクリプト「account＿viewer.ksh」、すなわちスクリプトNo.１の熟達したユーザは、スクリプトのライン４より必要とされる変数を渡すコマンドラインをマニュアル作成することが出来るであろう。しかし不慣れなユーザは困惑し、コマンドラインを正確に入力することはおそらく不可能であろう。
【００４７】
第２スクリプト例はツールコマンド言語（Ｔool Ｃommand Ｌanguage：ＴＣＬ）で書かれたものである。
0003698976.tif 000002
【００４８】
スクリプトNo.２のライン１はテキストストリング「tcl」および「expect」を含む。このどちらかは、スクリプト言語はＴＣＬであると識別する。再び、このテキストストリングは図３Ａのステップ３０４によりシーク(seek)される。
【００４９】
スクリプトNo.２のライン２乃至ライン４は使用されている未定義変数を列挙する。ライン３およびライン４は変数識別テキストストリングの後にテキストストリングを含んでいることを注意されたい。このように、プロセッサ４０２はステップ３２２からステップ３２４に向かい、後続するテキストストリングを用いてユーザ入力を促す。これに対し、ライン２はプロセッサ４０２をステップ３２２からステップ３２６に向かわせ、以下に列挙したルックアップテーブルのテキストストリングを使用してユーザ入力を促す。
【００５０】
スクリプトNo.２を実行するコマンドライン（「sendmail」と名付けられている）は、sendmail.tcl recipients filename subject-indicating-textとなる。ここで、引数の順序は非常に重要である。もし不慣れなユーザが未定義変数を判断する場合には、付加引数に対する順序で推測を行わなくてはならない。３つの引数の順序には６つの置換が考えられる。すなわち、要求されるコマンドラインにおいて６つの試みが可能である。本発明によるコマンドラインジェネレータは、コマンドラインにおける引数として変数の値を付加する順序だけでなく、スクリプトの未定義変数を識別あるいは思い出さなくてはならないという負担をユーザから取り除く。
【００５１】
ユーザに変数の値を入力するよう指示を出す際に、スクリプトNo.１とスクリプトNo.２の例のどちらかで使用されるスクリプト言語とテキストストリングの全変数を記憶する変数ルックアップテーブルの例を以下に記載する。
変数ルックアップテーブル(Ｌook Ｕp Ｔable：ＬＵＴ）
変数名 プロンプトストリング
ACCOUNT         Please Enter The Customer Account Number
CUSTOMER        Please Enter The Customer's Full Name
FILENAME        Please Enter A File Name
RECIPIENTS      Please Enter The File Name With The List Of Recipients
SUBJECT         Please Enter A Subject Matter
本発明によるコマンドラインジェネレータは、変数セットをあらかじめ限定出来るあらゆるスクリプト言語による使用に適する。上記例はUNIX（登録商標） Kornシェルスクリプト言語およびツールコマンド言語に基づくものであり、また、本発明はWAMILスクリプト言語に特に適するものであるが、上述のように他のスクリプト言語にも適合する。
【００５２】
スクリプトは本発明によるコマンドラインジェネレータによって書かれることを意図する。このようなスクリプトにおいては使用されている未定義変数を識別する非実行ラインをまず最初に有する。そのような各非実行ラインはおそらく１つだけ変数名テキストストリングを含むであろう。しかし、既存のスクリプトにおいてはそのような非実行ラインをスクリプトのトップに挿入する修正も非常に簡単に出来る。このようにほんの少しの努力で既存スクリプトをユーザフレンドリにすることが可能である。
【００５３】
本発明によるコマンドラインジェネレータの長所は、コマンドラインに付加される引数としてこれら変数の値が提示されるべきフォーマットだけでなく、スクリプト内で使用されている未定義変数が何であるかを思い出さなくてはならない苦労からユーザを解放することである。このように、本発明は熟達したユーザ向けのスクリプトに関して、不慣れなユーザでもこのようなスクリプトが（実際的な方法で）使用出来るようにする。これに反して、従来技術においては不慣れなユーザがこのようなスクリプトを使用することを事実上不可能にしている。さらに、スクリプトライタが不慣れなユーザによる使用を考慮する場合、スクリプトライタはもはやマルチプル専用インタフェース部分をスクリプト内に挿入する必要がなくなる。スクリプトライタは本発明によるコマンドラインジェネレータの有用性に頼ることが出来るため、未定義変数を識別するコメントラインを（望ましくはスクリプトの初めに）挿入するだけでよい。
【００５４】
以上、本発明の実施例を詳細に説明したが、同じようなものが様々な方法で実現可能である。このようなバリエーションは本願発明の精神と範囲から発展するものとして考慮しなければならない。本発明の範囲を逸脱することなく他の方法でも具体化出来ることは当業者にとって明らかである。
【図面の簡単な説明】
【図１】従来技術によるコマンドライン実行図である。
【図２】本発明によるコマンドライン生成の図である。
【図３Ａ】本発明によるコマンドライン生成の実施例におけるステップを示したフローチャートである。
【図３Ｂ】本発明によるコマンドライン生成の具体的実施例におけるステップを示したフローチャートである。
【図４】本発明によるコマンドライン生成を実行するハードウェアのブロック図である。
【図１】
0003698976.tif 000003
【図２】
0003698976.tif 000004
【図３Ａ】
0003698976.tif 000005
【図３Ｂ】
0003698976.tif 000006
【図４】
0003698976.tif 000007