(57)【要約】【課題】コマンドラインデータ型の検出および変換を提供すること。【解決手段】アップストリームコマンドとダウンストリームコマンドを有し、アップストリームコマンドが、ダウンストリームコマンドの入力として受け入れられない可能性がある型のデータを出力することができるコマンドラインの動作を可能にするために使用できるシステムおよび／または方法が提示される。【選択図】図２
2006244471.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータ装置によって実行されるときに前記コンピュータ装置に諸動作を実施させるコンピュータ可読命令を含む１つまたは複数のコンピュータ可読媒体であって、前記諸動作は、
コマンドライン中のアップストリームコマンドからデータを受信する動作であって、前記データは前記コマンドライン中のダウンストリームコマンドに受け入れられることも受け入れられないこともあるデータ型を有する動作と、
前記データ型が前記ダウンストリームコマンドに受け入れられるかどうかを判定する動作と、
前記データ型が前記ダウンストリームコマンドに受け入れられない場合は、前記データを処理して前記データを前記ダウンストリームコマンドに受け入れられるデータ型に変換する動作と
を備えることを特徴とするコンピュータ可読媒体。
【請求項２】
前記データを処理する前記動作はテキスト形式のデータを解析することなく実施されることを特徴とする請求項１に記載の媒体。
【請求項３】
前記アップストリームコマンドから前記データをコード化する動作であって、前記アップストリームコマンドは前記データのデータ型の判別を可能にするのに十分なタグを有する動作をさらに備え、
前記データ型が受け入れられるかどうかを判定する前記動作は、前記タグを使用して前記データのデータ型を判別する動作を含むことを特徴とする請求項１に記載の媒体。
【請求項４】
前記アップストリームコマンドから前記データをコード化して、前記データの前記データ型を指示する標識を提供する動作をさらに備えることを特徴とする請求項１に記載の媒体。
【請求項５】
前記アップストリームコマンドから前記データをコード化する前記動作は、前記標識の前に付けられた「＃＜」の引用符内の構文をさらに含むことを特徴とする請求項４に記載の媒体。
【請求項６】
前記コマンドライン中の第２のアップストリームコマンドから第２のデータを受信する動作であって、前記第２のデータは前記コマンドライン中の第２のダウンストリームコマンドに受け入れられることも受け入れられないこともある第２のデータ型を有する動作と、
前記第２のデータ型が前記第２のダウンストリームコマンドに受け入れられるかどうかを判定する動作と、
前記第２のデータ型が前記第２のダウンストリームコマンドに受け入れられない場合は、前記第２のデータを処理して前記第２のデータを前記第２のダウンストリームコマンドに受け入れられるデータ型に変換する動作と
をさらに備えることを特徴とする請求項１に記載の媒体。
【請求項７】
前記データを処理する前記動作は、コンバータを呼び出す前記ダウンストリームコマンドによって起動されることを特徴とする請求項１に記載の媒体。
【請求項８】
前記コンバータを呼び出す前記動作は、前記コンバータのコンバータ名を生成する動作を含み、前記コンバータ名は、前記アップストリームコマンドから前記データ中にコード化されたデータ型名と、前記ダウンストリームコマンドに受け入れられる前記データ型の受け入れられるデータ型名とを用いて生成されることを特徴とする請求項７に記載の媒体。
【請求項９】
データストリーム中のデータを受信する動作であって、前記データストリームは前記データのデータ型の判別を可能にするのに十分なタグを有する動作と、
前記タグを使用して、前記データのデータ型を判別する動作と、
あるコマンドの入力として受け入れられる他のデータ型を判別する動作と、
前記データストリーム中の前記データを前記データのデータ型から、前記コマンドの入力として受け入れられる前記他のデータ型に変換する動作と
を備えることを特徴とする方法。
【請求項１０】
前記コマンドは、前記コマンドラインのあるアップストリームコマンドに対するダウンストリームであり、前記データストリーム中のデータを受信する前記動作は前記アップストリームコマンドから前記データを受信する動作を含むことを特徴とする請求項９に記載の方法。
【請求項１１】
前記タグは、コマンドラインシェルによって前記データストリーム中にコード化されることを特徴とする請求項９に記載の方法。
【請求項１２】
前記データのデータ型を判別する前記動作は、前記コマンドによって実施されることを特徴とする請求項９に記載の方法。
【請求項１３】
前記コマンドの入力として受け入れられる前記他のデータ型を判別する前記動作は、コマンドラインシェルによって実施されることを特徴とする請求項９に記載の方法。
【請求項１４】
前記データを変換する前記動作は、
前記データのデータ型を、前記コマンドの入力として受け入れられると判別された前記他のデータ型に変換することができるコンバータを呼び出す動作を含むことを特徴とする請求項９に記載の方法。
【請求項１５】
前記タグは前記データのプリアンブルを含み、前記プリアンブルは４行以上を含み、第１行は「＃＜」の引用符内の構文で始まることを特徴とする請求項９に記載の方法。
【請求項１６】
前記タグは、前記データのデータ型に加えて、前記データストリーム中の前記データがフォーマット設定されているスキーマを指示する情報を含むことを特徴とする請求項９に記載の方法。
【請求項１７】
前記同一のコマンドライン中の他のデータストリームと他のコマンドに対し、前記諸動作を再度実施する動作をさらに含むことを特徴とする請求項９に記載の方法。
【請求項１８】
コンピュータ装置によって実行されるときに前記コンピュータ装置に諸動作を実施させるコンピュータ可読命令を含む１つまたは複数のコンピュータ可読媒体であって、前記諸動作は、
コマンドライン中のアップストリームコマンドによって出力できる１つまたは複数のデータ型を検出する動作と、
前記コマンドラインのダウンストリームコマンドの入力として受け入れられる１つまたは複数のデータ型を検出する動作と、
出力できる前記１つまたは複数のデータ型の１つが前記ダウンストリームコマンドの入力として受け入れられるデータ型であった場合は、前記アップストリームコマンドに前記データ型のデータを出力するように指示する動作と
を含むことを特徴とする媒体。
【請求項１９】
出力できるデータ型のいずれもが前記ダウンストリームコマンドの入力として受け入れられない場合は、
コンバータを呼び出して、前記アップストリームコマンドによって出力されたデータを、前記アップストリームコマンドによって出力できる前記１つまたは複数のデータ型の１つから、入力として受け入れられる前記１つまたは複数のデータ型の１つであるデータ型に変換する動作をさらに含むことを特徴とする請求項１８に記載の媒体。
【請求項２０】
出力することができる前記１つまたは複数のデータ型を検出する動作、および前記アップストリームコマンドに指示する動作は、コマンドラインシェルによって実施されることを特徴とする請求項１８に記載の媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はコマンドラインおよびコマンドラインインタフェースに関する。
【背景技術】
【０００２】
コンピュータユーザは一般に、情報を検出し使用する必要がある。多くの場合、ユーザはグラフィカルユーザインタフェースまたはコマンドラインインタフェースによって情報を検出し使用する。ユーザが自分のオフィスの近くにあるカラープリンタを検出しそのプリンタを構成したいと考えた場合、ユーザは、例えばグラフィカルユーザインタフェースのメニュー、ドロップダウンリストなどによって、あるいはコマンドラインインタフェースのコマンドライン入力によってそれを実施することができる。
【０００３】
ユーザがグラフィカルユーザインタフェースによってカラープリンタを検出し構成することを選択したと想定する。この会社が、例えば１０棟のビルに分散された１２７台のプリンタを有している場合、使用可能なプリンタのドロップダウンリストはこれら１２７台の各プリンタを表示することができる。これらのリストされた各プリンタの特性を一覧することによってユーザは、これらのプリンタのうち１８台がカラー印刷可能であり、その１８台のうちの１台がユーザの居るビル内に設置されていることを確認する。このカラープリンタの名前を用意して、次いでユーザはグラフィカルユーザインタフェースなどによってこのプリンタを構成することを選択することができる。完了した後で、ユーザはこのプリンタにカラー印刷のジョブを送信することができる。
【０００４】
多くの場合、コマンドラインインタフェースを用いると、グラフィカルユーザインタフェースと比べてユーザはより高速、高効率、かつ高性能に情報を検出し使用することができる。上記の例では、ユーザは１２７台のプリンタの特性を調査して必要な１台を検出している。このためには、かなりの時間を必要とすることがある。
【０００５】
その代わりとして、ユーザがコマンドラインインタフェースによってカラープリンタを検出し構成するものと想定する。このような状況では、多くの場合ユーザには２つの選択肢がある。第１の選択肢では、ユーザは第１のコマンドライン（例えば、「ｇｅｔ＿ｐｒｉｎｔｅｒ」）を入力し、その出力を読み取り、探しているプリンタを検出し、検出した情報を第２のコマンド（例えば、「Ｃｏｎｆｉｇｕｒｅ−Ｐｒｉｎｔｅｒ  ｐｒｉｎｔｅｒｎａｍｅ」）の入力として使用して他のコマンドを打ち込む。この方法は、様々な問題を含んでいる。その１つは、第１のコマンドの出力をユーザが読み取り、理解できることが必要になることである。このことは、多くの場合第１のコマンドラインが特定の形式の（人間可読の）テキストコード化されたデータを出力し、ユーザがそれを読み取らなければならないことを意味する。このことはまた、ユーザが第２のコマンドを入力しなければならないこと、および検出した情報を第２のコマンドによって使用可能な形式およびコード化で入力しなければならないことも意味する。多くの場合、この第１の選択肢もまたかなりの時間を必要とする。
【０００６】
第２の選択肢では、コマンドラインインタフェースはしばしば、その「シェル」によって、スクリプトを用いてユーザ動作の多くを自動化する。この場合ユーザは、全体として、プリンタを検出し構成するために使用される第１および第２のコマンド（および新しい第３のコマンド）、ならびに他の情報を含むコマンドラインを入力する。この場合、コマンドラインは以下のように書くことができる。
【０００７】
【表１】
2006244471.tif 000003
【０００８】
ここではユーザは、すべてのプリンタについての情報を取得するための第１のコマンド「ｇｅｔ＿ｐｒｉｎｔｅｒ」を呼び出すスクリプトを書いている。次いでこのスクリプトは、どのプリンタがビル番号９にあり、カラーで印刷できるか（「ｇｅｔ＿ｐｒｉｎｔｅｒｎａｍｅ  ９  ｃｏｌｏｒ」）に基づいて出力を解析する。このプリンタの名前が検出された後で、シェルはこのプリンタの名前を用いてコマンド「Ｃｏｎｆｉｇｕｒｅ−Ｐｒｉｎｔｅｒ」を呼び出してそのプリンタを構成する。
【０００９】
この第２の選択肢は強力で効率的であるが、この選択肢にも問題がある。各コマンドは型指定のものになる。すなわち、各コマンドは一般に特定の型のデータ（例えば、ＸＭＬでコード化されフォーマットされたデータ）を受け入れ、出力する。第１のコマンド「ｇｅｔ＿ｐｒｉｎｔｅｒ」はテキストコード化されフォーマットされたデータを生成するが、「Ｃｏｎｆｉｇｕｒｅ−Ｐｒｉｎｔｅｒ」コマンドがテキストコード化されフォーマットされたデータを正しく受け入れない場合は、Ｃｏｎｆｉｇｕｒｅ−Ｐｒｉｎｔｅｒコマンドは失敗することになる。
【００１０】
この問題に取り組むために、コマンドラインの各コマンドの作成者の多くは、データがテキストコード化されている場合に限り、各コマンドを標準化してデータを出力し入力データを受け入れてきた。しかし、テキストコード化されたデータには標準のフォーマットが無いので、解析が困難になることがありかつ／または解析によってエラーが生じ易くなる傾向があった。
【発明の開示】
【発明が解決しようとする課題】
【００１１】
アップストリームコマンドとダウンストリームコマンドを有し、アップストリームコマンドが、ダウンストリームコマンドの入力として受け入れられない可能性がある型のデータを出力することができるコマンドラインの動作を可能にするために使用できるシステムおよび／または方法を提供すること。
【課題を解決するための手段】
【００１２】
このシステムおよび／または方法は、例えば、コマンドライン中のアップストリームコマンドからの出力が、その出力に関係するデータ型の判別を可能にするのに十分なタグを含む形で受信されるコマンドラインデータストリームプロトコルを含むことができる。データ型を知ることによって、関係するデータをダウンストリームコマンドの入力として受け入れることができるデータ型に変換することができる。
【発明を実施するための最良の形態】
【００１３】
概要
アップストリームコマンドとダウンストリームコマンドを有し、アップストリームコマンドがダウンストリームコマンドの入力として受け入れられない型のデータを出力するコマンドラインの動作を可能にするために使用できるシステムおよび／または方法（「ツール」）が提示される。
【００１４】
一例示的実施形態では、コマンドラインデータストリームプロトコルはコマンドライン中のアップストリームコマンドからの出力を受信する。受信した出力は、出力のデータ型の判別を可能にするのに十分なタグを有する。その出力を入力として受信する、コマンドライン中のダウンストリームコマンドの受け入れ可能なデータ型も判別される。出力のデータ型がダウンストリームコマンドのデータ型に適合しない場合は、その出力のデータ型はダウンストリームコマンドに適合するデータ型に変換される。
【００１５】
他の例示的実施形態では、コマンドラインシェルが、アップストリームコマンドが出力できるデータの型およびダウンストリームコマンドが入力として受け入れられるデータの型を判別する。出力できるデータの型の１つがダウンストリームコマンドの入力として受け入れられる場合は、シェルはアップストリームコマンドにその型でデータを出力するよう指示する。一方、出力できるどの型のデータもダウンストリームコマンドの入力として受け入れられないとコマンドラインシェルが判定した場合は、コマンドラインシェルは入力として受け入れられるデータの型の１つに変換できる型のデータを出力するようアップストリームコマンドに指示することもできる。次にシェルは変換コマンドを呼び出して、出力のデータ型を入力として受け入れられる型に変換することができる。
【００１６】
他の例示の実施形態では、コマンドからの出力はタグを含むようにコード化することができる。このタグは出力データのプリアンブルを含むことができる。このプリアンブルは、出力のデータ型が、例えば特定のスキーマを有するＣＳＶ（コンマ区切り）やＸＭＬ（拡張マークアップ言語）などの構造化されたデータであることの判別を可能にするのに十分な情報を含む。
【００１７】
例示的アーキテクチャ
各ツールの態様を詳細に説明する前に、例示的アーキテクチャについての以下の議論は、ツールの様々な態様がどこでどのように使用できるかを読者が理解することを助けるために提供するものである。以下で示す説明が単なる例示に過ぎず、ツールの適用を特定のアーキテクチャまたは環境に制限することを意図したものではないことを理解されたい。
【００１８】
図１は、コンピュータ装置１０２、およびそのコンピュータ装置に含まれるまたはそれによってアクセス可能な様々なコンポーネントを含むアーキテクチャ１００を一般的に示したものである。この特定の例では、コンピュータ装置は１つまたは複数のプロセッサ１０４、およびコンピュータ可読媒体１０６を含む。このコンピュータ可読媒体は、コマンドラインインタフェース１０８、コマンドラインシェル１１０、コマンド１１２、およびコンバータ１１４を提供するソフトウェアコードを実施する。
【００１９】
様々な可能な入力および出力の型を有する複数のコマンド１１２が示されている。例えば、ｇｅｔ  ｐｒｉｎｔｅｒコマンド１１６はテキストおよびＣＳＶ型のデータを受け入れかつ出力することができ、ｃｏｎｆｉｇｕｒｅ  ｐｒｉｎｔｅｒコマンド１１８はＣＳＶおよびＸＭＬ型のデータを受け入れかつ出力することができ、またｐａｕｓｅ  ｐｒｉｎｔｅｒコマンド１２０はＡＳＮ．１およびＸＭＬ型のデータを受け入れかつ出力することができる。
【００２０】
ＣＳＶ−ＸＭＬ変換器１２２、ＸＭＬ−ＣＶＳ変換器１２４、ＴＥＸＴ−ＸＭＬ変換器１２６、ＡＳＮ．１−ＸＭＬ変換器１２８、ＸＭＬ−ＡＮＳ．１変換器１３０など複数の変換器１１４もまた示されており、これらの変換器により１つまたは複数のコマンド１１２の出力を、あるデータ型から他のデータ型に変換することができる。
【００２１】
以下でより詳細に説明するように、コマンドラインインタフェースはコマンドライン入力、例えばコンピュータ装置のユーザによって入力された入力などを受信し、関係するコマンドを実施または実行する。コマンドラインシェルは、コマンドライン中の各コマンドに対するプロセスを生成し、それらのコマンドに対する各プロセス間の入力と出力を管理することによって、コマンドライン中の各コマンドを管理する。
【００２２】
コマンドラインの動作を可能にする
上記および下記のツールは、アップストリームコマンドとダウンストリームコマンドを含み、アップストリームコマンドがダウンストリームコマンドの入力として受け入れられない型のデータを出力することができるコマンドラインの動作を可能にすることができる。以下で説明するいくつかの例示の実施形態では、各ツールはコード化および変換プロトコルによってそれを実施する。プロトコルの変換態様は、コマンドラインそれ自体の中で、あるいは外部的にコマンドラインシェルなどによって呼び出すことができる。他の例示の実施形態では、各ツールはコード化および変換プロトコルなしで動作を可能にする。
【００２３】
これらの実施形態は、単独でまたは組合せて使用することができる。したがってコマンドラインは、第１のアップストリーム−ダウンストリームペアに関してコマンドライン内部で呼び出される変換、第２のアップストリーム−ダウンストリームペアに関してシェルによって呼び出される他の変換、および第３のアップストリーム−ダウンストリームペアに関してアップストリームコマンドの出力を検出し指示することによって自動的に受け入れ可能になされたダウンストリームコマンドへの入力を含むことができる。
【００２４】
これらの様々な実施形態は例示のために記載したものであり、ツールの適用可能性を制限することを意図したものではない。
【００２５】
コード化およびプロトコル：外部的に呼び出される変換
図２を参照すると、プロセス２００には例示的なコード化およびロトコルが示されている。ただし、この変換プロトコルの変換は外部的に呼び出される。プロセス２００は、コマンドラインインタフェース１０８、コマンドラインシェル１１０、コンバータ１１４など、コンピュータ装置の各要素によって実施される個々の動作または処理を表す一連のブロックとして示されている。本明細書に記載のこのプロセスおよび他のプロセスは、任意の適切なハードウェア、ソフトウェア、ファームウェア、およびそれらの組合せとともに実装することができる。ソフトウェアおよびファームウェアの場合は、これらのプロセスは、コンピュータ実行可能な命令として実装された動作の組を表す。
【００２６】
ブロック２０２で、コマンドラインが受信される。このコマンドラインはコンピュータ装置１０２のユーザ、例えばコマンドラインインタフェース１０８にコマンドラインを打ち込んだユーザから受信することができる。コマンドラインは、１つまたは複数のアップストリームコマンドおよび１つまたは複数のダウンストリームコマンドなど複数のコマンドを含むことができる。
【００２７】
例示の実施形態では、以下の構文を有するコマンドラインが受信される。
【００２８】
【表２】
2006244471.tif 000004
【００２９】
この実施例では、コマンドラインにはアップストリームコマンド「ＧＥＴ−ＰＲＩＮＴＥＲ」とダウンストリームコマンド「ＰＡＵＳＥ−ＰＲＩＮＴＥＲ」が含まれる。これらのコマンドは図１の１１６と１２０に示されている。このコマンドラインは、システム名「ＰＲＩＮＴＳＲＶ１０」を有するコンピュータ装置によってアクセス可能なプリンタに関するデータを要求する。さらに、このコマンドはプリンタを休止させるよう要求する。このコマンドラインを実行するために、アップストリームコマンドの出力（「ＰＲＩＮＴＳＲＶ１０」に関するプリンタのデータ）を、可能な場合には、ｐａｕｓｅ  ｐｒｉｎｔｅｒコマンドに入力としてパイプすることができる。
【００３０】
しかし、ｇｅｔ  ｐｒｉｎｔｅｒコマンドの出力のデフォルト型がＣＳＶ（コンマ区切り）であると想定する。また、ｐａｕｓｅ  ｐｒｉｎｔｅｒコマンドはＡＳＮ．１（抽象構文記法１）またはＸＭＬ型（拡張マークアップ言語型）入力だけを受け入れると想定する。この場合、アップストリームコマンドは、ダウンストリームコマンドの入力として受け入れられない型を有するデータを出力することになる。
【００３１】
次にアップストリームコマンド（「ＧＥＴ＿ＰＲＩＮＴＥＲ」）の出力が以下の通りであると想定する。
【００３２】
【表３】
2006244471.tif 000005
【００３３】
ここでは、ｇｅｔ  ｐｒｉｎｔｅｒコマンドはシステム名「ＰＲＩＮＴＳＲＶ１０」を有する６台のプリンタを検出し，その出力をＣＳＶ形式で生成する。このＣＳＶ型のデータがダウンストリームのｐａｕｓｅ  ｐｒｉｎｔｅｒコマンドに提供された場合、ｐａｕｓｅ  ｐｒｉｎｔｅｒコマンドはこのデータを受け入れないので、このコマンドラインは失敗することになる。しかし、以下で説明するコード化および変換プロトコルを使用すると、ｐａｕｓｅ  ｐｒｉｎｔｅｒコマンドがＣＳＶ形式を受け入れない場合であってもコマンドラインの動作を可能にすることができる。
【００３４】
ブロック２０４で、データ出力の型が、例えばＣＳＶ、ＸＭＬであることを判別可能にするのに十分な情報を含むようにアップストリームコマンドの出力がコード化される。このコード化は、データストリームタグなどを含む出力それ自体のデータストリームの内部に存在する。一実施形態では、データストリームタグはデータのプリアンブルを含む。このプリアンブルは、データの型を指示する情報、およびデータ等を規定するスキーマなどデータについての他の情報を含むことができる。
【００３５】
このプリアンブルを用いると、アップストリームのｇｅｔ  ｐｒｉｎｔｅｒコマンドのコード化された出力は、代わりとして以下のようになる。
【００３６】
【表４】
2006244471.tif 000006
【００３７】
このコード化は様々な方法で実施することができる。ある場合には、アップストリームコマンドは、自動的にその出力をコード化するように作成または変更される。他の場合には、シェルが出力を受信し、その出力をコード化する。
【００３８】
多くの場合、コマンドラインシェルは、例えばコマンドラインを各コマンドに対するプロセスに分割し、それらのプロセスを管理するように動作することによって、コマンドライン中の各コマンドを管理する。シェルは、例えば各アップストリームコマンドの出力を、後続のダウンストリームに入力として送信することができる。
【００３９】
例示の実施形態において、アップストリームコマンドによって出力が上記のプリアンブルを含むようにコード化されていると想定する。このプリアンブルはナンバー記号（「＃」）で始まる４つの行を含む。これらの各行は、必ずしも出力データそのものを含む必要はないが、データに関する情報を含むことができる。プリアンブルの最初の行は、ナンバー記号に続く大なり記号とスペース（「＃＞  」）を含む。この３文字の構文は、この行の後続の情報が出力のデータ型を示すことを出力の読み手に示す。したがってこの例示では、次の文字列「ＣＳＶ」が、出力がコンマ区切り型であることを示す。他の３行もまた、データに関する追加の情報を示す。第２の行は以下の形をしている。
【００４０】
【表５】
2006244471.tif 000007
【００４１】
この行は、ＣＳＶデータの構造が、第１のカラムがプリンタの位置、第２がプリンタの名前、第３がプリンタの状態、第４がプリンタの状況、第５がプリンタの共有名、第６がプリンタのシステム名からなることを示す。出力の第１行目を見ると、以下のように示されている。
【００４２】
【表６】
2006244471.tif 000008
【００４３】
したがって、最初にリストされているプリンタの位置は、第１行の第１カラムに存在する「ＵＳＡ／ＲＥＤＭＯＮＤ，ＷＡ／４０／ＦＬＯＯＲ２／２０１５」である。名前は「ＰＲＩＮＴＳＲＶ１０＼ｂ４０−２０１５−ａ」である。このプリンタの状態は「０」、状況は「３」、共有名は「ｂ４０−２０１５−ａ」である。最後に、このプリンタのシステム名は「ＰＲＩＮＴＳＲＶ１０」である。
【００４４】
４つの行の第３番目の行は以下のように示されている。
【００４５】
【表７】
2006244471.tif 000009
【００４６】
この行はカラムの文字型が文字列または整数であることを示す。この行はこのデータをどのように処理するかを決定するときに有用になり得るものであり、アップストリームコマンドの出力に関する情報のもう１つの例である。ここで、出力の第１行目に注目すると、以下のように示されている。
【００４７】
【表８】
2006244471.tif 000010
【００４８】
各カラムには、プリアンブルに示されているように、カラム１から６のそれぞれに、文字列、文字列、整数、整数、文字列、文字列の各文字が含まれている。
【００４９】
第４行はナンバー記号の後が空白であるが、実施形態によっては追加の情報を含めることができる。第５行は空白であり、開始のためのナンバー記号文字も含まれていない。このことは、その次の行がデータであり、そのデータに関する情報ではないことを示している。
【００５０】
ブロック２０６で、この方法はコード化されたデータのデータ型を判別する。いくつかの実施形態では、データを受信するダウンストリームコマンドおよび／またはシェルはコード化されたデータのデータ型、例えばそのデータのコード化スキーマなどを判別することができる。ここでは、データ型はコード化されたデータのプリアンブルの第１行を読み出すことによって判別される。この行はデータのデータ型がＣＳＶであることを示す。出力に関する追加の情報、ここでは各カラムにどのような情報が含まれているか、およびそのカラムの文字の型は何かを判別するために他の情報を読み出すこともできる。
【００５１】
例示の実施形態を続けると、次にダウンストリームコマンドおよび／またはシェルは、入力としてダウンストリームコマンドに送られることになっているデータのデータ型を認識する。
【００５２】
ブロック２０８で、ダウンストリームコマンドによって受け入れられるデータ型が判別される。場合によっては、この判別は、ダウンストリームコマンドがアップストリームコマンドからのデータを受信し、受信したデータのデータ型をそのダウンストリームコマンドにとって受け入れられるデータ型と比較するときなどに内在的に実施される。シェルもまた、ダウンストリームコマンドと、各コマンドの入力として受け入れられる型をリストしたデータベースを比較することなどによってこのデータ型を判別することができる。
【００５３】
アップストリームコマンドの出力のデータ型がダウンストリームコマンドに受け入れられる場合は、ブロック２１２でダウンストリームコマンドはそのデータを受信し、それを実行する。このことは、判定ブロック２１０に続くブロック２１２への「Ｙｅｓ」パスで示されている。データ型がダウンストリームコマンドにとって受け入れられない場合は、シェルまたはダウンストリームコマンドは、「Ｎｏ」パスに沿ってブロック２１４に進むか、または場合によっては、ブロック２１４をスキップしてブロック２１６に進む。
【００５４】
一実施形態では、シェルは、ブロック２１６でアップストリームデータのデータ型をダウンストリームコマンドによってアクセス可能なものに変換できるコンバータが使用可能かどうか判定し、ブロック２１８でそのコンバータを呼び出すことができる。その結果、ブロック２１０から２１６をスキップすることができる。あるいは、コンバータが使用可能でない場合は、ブロック２２０でエラーメッセージを生成することができる。コンバータを呼び出したとき、シェルはアップストリームコマンドの出力をコンバータに入力として送り、コンバータの出力を取り出し、それをダウンストリームコマンドに送ることができる。
【００５５】
コンバータはまた、ダウンストリームコマンドによって生成できる名前または標識によって呼び出すこともできる。例えば、ダウンストリームコマンドは、プリアンブル中のデータ型の名前、例えば「ＣＳＶ」などを取り出し、そのデータ型名と、そのダウンストリームコマンドが受け入れられる型の名前とを用いてコンバータを呼び出すためのコマンドを生成することができる。
【００５６】
例示の実施形態では、ダウンストリームコマンドが、アップストリームコマンドのデータがＣＳＶで出力されたことを判別する。ダウンストリームコマンドはまた、それ自体がＡＳＮ．１またはＸＭＬを受け入れることができることを認識している。したがって、ブロック２１４で、ダウンストリームコマンドは以下のどちらかのコマンドを生成することができる。
【００５７】
【表９】
2006244471.tif 000011
【００５８】
または
【００５９】
【表１０】
2006244471.tif 000012
【００６０】
ダウンストリームコマンドは特定の規則に従ってコンバータの名前を生成し、その名前を有するコンバータを照合することができる。この場合、規則は「ＣＯＮＶＥＲＴ」で始まり、その後にスペース「 」と変換される型の名前「ＣＳＶ」が続き、その後にスペース「 」と「ＴＯ」が続き、さらにスペース「 」と必要とされる型の名前「ＸＭＬ」または「ＡＮＳ．１」が続く。
【００６１】
ダウンストリームコマンドまたはシェルは、ブロック２１６で、これらのコンバータのどちらかが使用可能かどうかを判定する。これらのコマンドのどちらかが使用可能な場合は、ダウンストリームコマンドは「Ｙｅｓ」パスに従ってブロック２１８に進み、上記のコンバータを呼び出す。どちらもが使用可能でない場合は、ダウンストリームコマンドまたはシェルは、「Ｎｏ」パスに従ってブロック２２０に進む。
【００６２】
例示の実施形態を続けると、シェルまたはダウンストリームコマンドは、図１のＣＳＶ−ＸＭＬコンバータ１２２が使用可能であると判定する。次いでブロック２１８で、そのコンバータが呼び出される。変換されたデータのその出力は、ダウンストリームコマンド（図１のＰａｕｓｅ  Ｐｒｉｎｔｅｒコマンド１２０）に送られる。
【００６３】
場合によっては、正確かつ／または効率的に出力を変換するためにアップストリームコマンド出力のコード化部分の情報が有用であることもある。前述のように、プリアンブルには、この追加の情報を含めることができる。コンバータは、この情報を使用してデータを次のダウンストリームコマンドに受け入れられる形に変換することができる。例えば、データをＣＳＶからＸＭＬに変換するとき、どのデータをどこに置くか、およびその場所での文字の形式を知ることが有用な場合もある。ＸＭＬ出力が、例えば、各プリンタの位置、名前、状態、状況、共有名、およびシステム名の順に配列されることになっている場合は、コード化された情報を使用して、データをアップストリームコマンドから特定の構造に適合するように配列することができる。
【００６４】
この情報はまた、アップストリームコマンドの出力を解析してその出力の各部の位置を求めるための助けとして有用なこともある。特に、出力データの一部だけがダウンストリームコマンドに送られる場合には有用である。このような場合には、追加のコード化された情報により、アップストリームコマンドの出力をより効率的かつ／または正確に解析することが可能になる。
【００６５】
継続中のこの例示では、アップストリームコマンドは、システム名「ＰＲＩＮＴＳＲＶ１０」を有する６台のプリンタを出力する。ダウンストリームコマンドがプリンタの共有名を受信することになっている場合は、プリアンブルの第２行および第３行の情報を使用してより容易にその共有名を見つけることができる。アップストリームコマンドのコード化された出力の第２および３行は以下の通りである。
【００６６】
【表１１】
2006244471.tif 000013
【００６７】
次にコンバータは、このコード化に基づいて、第５カラムに所要の共有名が含まれることを判別し、またこのカラムの文字が文字列であることを判別することができる。
【００６８】
コマンドラインの動作が完了した場合には、例示の実施形態の場合はプロセスが終了する。ダウンストリームコマンドの出力が、さらに他のダウンストリームコマンドで使用される場合は、このプロセスを繰り返すか、またはプロセス３００に続くことができる。
【００６９】
プロセス２００にもどって、コンバータが使用できない場合は、ブロック２２０で、（コマンドラインインタフェースまたはコマンドラインシェルを有しているかどうかにかかわらず）ダウンストリームコマンドは、ユーザによって入力されたコマンドラインを完了するためにコンバータが必要であることを指示するエラーメッセージを生成する。場合によっては、このメッセージはコンバータをダウンロードすることができるインターネット上の場所を指示することもできる。
【００７０】
コード化および変換プロトコル／内部的に呼び出される変換
場合によっては、ユーザはコマンドラインそれ自体の中からコンバータを呼び出したいと考えることがある。そうすることによって、プロセス２００の動作のいくつかをスキップすることができる。
【００７１】
一実施形態では、以下の構文を有するコマンドラインが受信される。
【００７２】
【表１２】
2006244471.tif 000014
【００７３】
ここでは、アップストリームコマンドの出力はＣＳＶである。もっともこの場合に、ユーザは、出力がＣＳＶであることを要求しているのだが。このアップストリームコマンドのダウンストリームとなるコマンドは、「ＣＯＮＶＥＲＴ  −ＣＳＶ−ＴＯ−ＸＭＬ」である。このコマンドは、図１の１２２に示されている。
【００７４】
このプロセスでは、ユーザがコンバータを選択している。したがって、ユーザは最終のダウンストリームコマンド（ｐａｕｓｅ  ｐｒｉｎｔｅｒ  １２０）がＸＭＬデータを受け入れることを知っている可能性が高い。ここでは、シェルはＣＳＶの形のアップストリームコマンドの出力を、ＣＳＶの形の入力としてコンバータ１２２に送るように動作する。次いでシェルは、ダウンストリームコンバータの出力をＸＭＬの形の入力としてｐａｕｓｅ  ｐｒｉｎｔｅｒコマンド１２０に送ることができる。
【００７５】
前と同様に、アップストリームコマンドのデータストリームにおけるコード化部分の情報は、コンバータにとって出力を変換する際に有用になることがある。この場合およびその他の場合において、困難な場合もありエラーを生ずることも多いテキスト形式出力の解析は、（ＣＳＶなどの）構造化された形式でのデータ出力を選択することによって回避することができる。
【００７６】
検出／指示によってコマンドライン動作を自動的に可能にする
プロセス３００はアップストリームコマンドおよびダウンストリームコマンドを有するコマンドラインの動作を可能にする。このプロセスは、アップストリームコマンドによって出力できるデータ型で、ダウンストリームコマンドにとって受け入れられるデータ型を自動検出し指示することによってコマンドラインの動作を可能にすることができる。場合によっては、このプロセスはアップストリームコマンドの出力をコード化すること無しに実施することができる。プロセス３００は、コマンドラインシェル１１０やコンバータ１１４などコンピュータ装置の各要素によって実施される個々の動作または処理を表す一連のブロックとして示される。
【００７７】
ブロック３０２で、プロセスはコマンドラインを受信する。このコマンドラインはユーザから受信することができ、図２のブロック２０２の部分で説明したと同様に構成することができる。
【００７８】
ブロック３０４で、コマンドラインシェル１１０はアップストリームコマンドによって出力できるデータの型を判別する。例示の実施形態では、受信されるコマンドラインは以下の通りである。
【００７９】
【表１３】
2006244471.tif 000015
【００８０】
図１に関する説明で述べたように、ｇｅｔ  ｐｒｉｎｔｅｒコマンド１１６はテキストおよびＣＳＶ型のデータを受け入れかつ出力することができる。ブロック３０４で、コマンドラインシェルがこれを判別する。
【００８１】
ブロック３０６で、シェルはダウンストリームコマンドにとって受け入れられる入力データ型を判別する。例示の実施形態を続けると、シェルはｃｏｎｆｉｇｕｒｅ  ｐｒｉｎｔｅｒコマンド１１８がＣＳＶおよびＸＭＬデータ型を受け入れ、かつ出力できることを判別する。
【００８２】
ブロック３０８で、シェルはアップストリームコマンドのいずれかの出力型がダウンストリームコマンドの入力として受け入れられる型であるかどうかを判定する。いずれかの型が受け入れられる場合は、シェルは「Ｙｅｓ」パスに従ってブロック３１０に進む。いずれの型も受け入れられない場合は、シェルは「Ｎｏ」パスに従ってブロック３１２に進む。
【００８３】
ブロック３１０で、シェルは、ダウンストリームコマンドに可読の形式でデータを出力するようにアップストリームコマンドに指示する。このように指示することによって、アップストリームコマンドの出力がダウンストリームコマンドにとって可読でない可能性がある場合でも、シェルは自動的にコマンドラインの動作を可能にすることができる。アップストリームコマンドであるｇｅｔ  ｐｒｉｎｔｅｒが、デフォルトで、例えばテキスト形式のデータを出力する場合でも、シェルにより、さもなければ失敗した可能性があるコマンドラインの動作が可能になる。
【００８４】
例示の実施形態では、シェルはコマンドラインを、受信したものからその代わりとなる以下のものに変更する。
【００８５】
【表１４】
2006244471.tif 000016
【００８６】
ブロック３１２で、シェルはアップストリームコマンドに、ダウンストリームコマンドによって可読のフォーマットに変換可能なフォーマットでデータを出力するよう指示する。
【００８７】
ブロック３０２で受信したコマンドラインが以下の通りだと想定する。
【００８８】
【表１５】
2006244471.tif 000017
【００８９】
ブロック３０４、３０６、および３０８に戻って、この実施形態のシェルは、アップストリームコマンドの出力のいずれもが、ダウンストリームコマンドにとって受け入れられるデータ型にならないことを判別する。上述のように、ｇｅｔ  ｐｒｉｎｔｅｒコマンド１１６はＴＥＸＴまたはＣＳＶ形式でデータを出力することができ、ｐａｕｓｅ  ｐｒｉｎｔｅｒコマンド１２０はＡＳＮ．１またはＸＭＬ形式のデータを受け入れることができる。
【００９０】
次にブロック３１２で、シェルはアップストリームコマンドに、ダウンストリームコマンドによって可読のフォーマットに変換できる形式でデータを出力するよう指示する。図１に示されたＣＳＶ−ＸＭＬコンバータ１２２が使用可能であることに基づき、シェルはアップストリームコマンドにデータをＣＳＶの形で出力するよう指示する。
【００９１】
ブロック３１４で、シェルは適切なコンバータを呼び出す。例示の実施形態を続けると、シェルはＣＳＶ−ＸＭＬコンバータを呼び出してＣＳＶ出力をＸＭＬに変換する。シェル（または他のアプリケーション）は、コマンドラインを変更せずにこのことを実施することもできるし、あるいはその代わりにコマンドラインを以下のように変更することによって実施することもできる。
【００９２】
【表１６】
2006244471.tif 000018
【００９３】
代替実施形態では、アップストリームコマンドの出力は、潜在的により高い精度で動作させるためおよび／またはその出力をより容易にもしくは正確に解析するために、ＣＳＶ−ＸＭＬ変換を可能にするようにコード化される。このコード化を上述のいずれかの方法で実施することができる。
【００９４】
ブロック３１６で、ダウンストリームコマンドが実施される。例示の実施形態では、プリンタが検出され休止されるか、または検出され構成される。
【００９５】
プロセス２００もしくは３００、またはそれらの別法の動作は、複数回実施することができる。以下のコマンドを含むコマンドラインが受信されると想定する。
【００９６】
【表１７】
2006244471.tif 000019
【００９７】
ここでは、コマンドは、Ａ、Ｂ、Ｃ、Ｄ、およびＥである。コマンドＡはコマンドＢのアップストリームであり、ＢはＣのアップストリームであり、以下同様に続く。ツールは、例えばＡからＤによって生成された先行データを用いてコマンドＥを実行することによって所望の結果を得るなどのコマンドライン動作を可能にすることができる。各ツールは、以下のような状況においてもコマンドラインの動作を可能にすることができる。すなわち、ＡはＢで受け入れられない出力型をデフォルトとしているが、ツールがＢによって受け入れられる型のデータを出力するようＡに指示する場合、ＢがＣによって受け入れられる型に変換可能な型を出力し、ツールがＢの出力のコード化を呼び出してその出力を変換し、それをＣに送る場合、ＣがデフォルトでＤによって可読の型を出力する場合、ＤはＥによって可読の型に変換できる型をＥに出力するが、Ｄの出力のコード化はまったく実施されない場合などである。これらの例は、ツールの柔軟性を示すために提供されたものである。コマンドライン中の各コマンドの数および複雑さはほぼ任意であり、やはり本明細書に記載したツールを使用してコマンドラインを動作させることができる。
【００９８】
結論
上述のシステムおよび／または方法を使用すると、アップストリームコマンドとダウンストリームコマンドを有しアップストリームコマンドがダウンストリームコマンドの入力として受け入れられない型のデータを出力するコマンドラインの動作を可能にすることができる。これらのシステムおよび／または方法は、コード化および変換プロトコルによって、あるいはアップストリームコマンドから出力されたデータ型を自動的に検出しダウンストリームコマンドにとって受け入れ可能な型になるように指示するプロセスによってコマンドラインの動作を可能にすることができる。
【００９９】
本発明を、構造上の機能および／または方法論的なステップに特化して説明してきたが、添付の特許請求の範囲に定義された本発明が、必ずしも記載したこの特定の機能またはステップに制限されるものではないことを理解されたい。正確にいえば、特定の機能およびステップは、特許請求の範囲に記載の発明を実装するための好ましい形態として開示したものである。
【図面の簡単な説明】
【０１００】
【図１】ツールの様々な実施形態を動作させることができる例示的アーキテクチャを示す図である。
【図２】コマンドラインの動作を可能にする例示的プロトコルを含む例示的プロセスの流れ図である。
【図３】アップストリームコマンドのデータ型の判別および指示によりコマンドラインの動作を可能にする例示的プロセスの流れ図である。
【符号の説明】
【０１０１】
１００  アーキテクチャ
１０２  コンピュータ装置
１０４  プロセッサ（群）
１０６  コンピュータ可読媒体
１０８  コマンドラインインタフェース
１１０  コマンドラインシェル
１１２  コマンド
１１４  コンバータ
１１６  ＧＥＴ  ＰＲＩＮＴＥＲ
１１８  ＣＯＮＦＩＧＵＲＥ  ＰＲＩＮＴＥＲ
１２０  ＰＡＵＳＥ  ＰＲＩＮＴＥＲ
１２２  ＣＳＶ−ＸＭＬ
１２４  ＸＭＬ−ＣＳＶ
１２６  ＴＥＸＴ−ＸＭＬ
１２８  ＡＮＳ．１−ＸＭＬ
１３０  ＸＭＬ−ＡＳＮ．１
２００  プロセス
２０２  コマンドラインを受信する
２０４  アップストリームコマンドのデータストリームをコード化する
２０６  コード化されたデータストリームのデータ型を判別する
２０８  ダウンストリームコマンドに受け入れられる入力データの型を判別する
２１０  受け入れられるか？
２１２  データを受信しコマンドを実行する
２１４  コンバータ名を生成する
２１６  コンバータは使用可能か？
２１８  コンバータを呼び出す
２２０  エラーメッセージを作成する
３００  プロセス
３０２  コマンドラインを受信する
３０４  アップストリームコマンドによって出力できるデータの型を判別する
３０６  ダウンストリームコマンドによって受け入れられるデータの型を判別する
３０８  出力の型が入力の型にマッチするかどうかを判定する
３１０  対応する型を出力するようアップストリームに指示する
３１２  変換可能な型を出力するようアップストリームに指示する
３１４  コンバータを呼び出す
３１６  ダウンストリームコマンドを実行する
【図１】
2006244471.tif 000020
【図２】
2006244471.tif 000021
【図３】
2006244471.tif 000022