(57)【特許請求の範囲】
【請求項１】
情報処理を行なう複数の計算機システムがネットワークで結ばれたネットワーク情報システムで行なわれる遠隔手続を管理する遠隔手続管理装置において、通信手段と、ユーザにより入力され前記通信手段で受信した手続呼出式を解析する手続呼出式解析手段と、複数の遠隔手続保持手段と、前記手続呼出式解析手段からの要求に基づき前記遠隔手続保持手段を検索する遠隔手続検索手段を有し、それぞれの前記遠隔手続保持手段は、属性を保持する属性保持手段と、手続仕様を出力する手続仕様公開手段と、引数に従い手続を実行する手続実行手段を有し、前記通信手段で手続呼出式を受信すると、前記手続呼出式解析手段で前記手続呼出式を解析して前記手続呼出式に該当する属性を前記属性保持手段が保持する前記遠隔手続保持手段を前記遠隔手続検索手段により検索し、検索された前記遠隔手続保持手段の手続実行手段に前記手続呼出式に基づき引数の割当を入力して手続を実行させ、前記手続実行手段で手続の実行の際に未割当の引数が存在する場合には、前記手続仕様公開手段に対して仕様を公開するよう要求し、手続仕様公開手段は手続仕様を生成し、該手続仕様を前記通信手段からクライアントへ送信し該クライアントで表示を受けたユーザによる引数の割当を前記通信手段で受け取って前記手続実行手段による手続の実行を進めることを特徴とする遠隔手続管理装置。
【請求項２】
前記手続呼出式解析手段は、与えられた手続呼出式の解析を、他の前記遠隔手続保持手段を再帰的に呼び出して行なうことを特徴とする請求項１に記載の遠隔手続管理装置。
【請求項３】
情報処理を行なう複数の計算機システムがネットワークで結ばれたネットワーク情報システムで行なわれる遠隔手続を管理する遠隔手続管理方法において、引数に従い遠隔手続の実行を行うとともに手続仕様を公開した複数の遠隔手続保持手段を有しており、ユーザにより入力された手続呼出式を手続呼出式解析手段で解析して前記手続呼出式に該当する属性を前記属性保持手段が保持する前記遠隔手続保持手段を遠隔手続検索手段により検索し、検索された前記遠隔手続保持手段の手続実行手段に前記手続呼出式に基づき引数の割当を入力して手続を実行させ、前記手続実行手段で手続の実行の際に未割当の引数が存在する場合には、手続仕様を前記手続仕様公開手段により生成してクライアントへ送信し、該クライアントで表示された該手続仕様に従って行なわれるユーザによる引数の割当を受け取って前記手続実行手段による手続の実行を進めることを特徴とする遠隔手続管理方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、情報処理を行なう複数の計算機システムがネットワークで結ばれたネットワーク情報システムで使用され、遠隔手続の管理を行なう遠隔手続管理装置および遠隔手続管理方法に関するものである。
【０００２】
【従来の技術】
近年、計算機システムをネットワークで結んだネットワーク情報システムが普及し、ネットワークに接続されている自機以外の例えばサーバ等にサービスを依頼することによって処理が実行され、必要な情報を得ることができる。しかし、このようなサービスを受ける場合、最初から完成した遠隔手続の依頼を行なわなければならないため、遠隔手続を実行するサーバ側の仕様をよく熟知していないと利用できないという問題がある。
【０００３】
例えば、ＣＯＲＢＡ（Ｃｏｍｍｏｎ  Ｏｂｊｅｃｔ  Ｒｅｑｕｅｓｔ  Ｂｒｏｋｅｒ  Ａｒｃｈｉｔｅｃｔｕｒｅ  ａｎｄ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ）は、オブジェクト指向に関する標準化団体Ｏｂｊｅｃｔ  Ｍａｎａｇｅｍｅｎｔ  Ｇｒｏｕｐによって開発された分散オブジェクトに関する標準仕様である。Ｉｎｔｅｒｆａｃｅ  ＲｅｐｏｓｉｔｏｒｙはＣＯＲＢＡで規定されるＯＲＢ（Ｏｂｊｅｃｔ  Ｒｅｑｕｅｓｔ  Ｂｒｏｋｅｒ）のコンポーネントのひとつであり、オブジェクトに対するインタフェース定義を永続化する機能を持つ。
【０００４】
ＯＲＢはＩｎｔｅｒｆａｃｅ  Ｒｅｐｏｓｉｔｏｒｙで管理されるオブジェクトのインタフェース定義を以下のように用いることが可能であるとしている。
・リクエストのタイプチェック
・インタフェース・インヘリタンス・グラフの正当性のチェック
・異なるＯＲＢの実現間でのインタオペラビリティの提供
・インタフェース定義のインストールと配布
・インタフェース・ブラウザ環境の支援
・言語系に対するインタフェース情報の提供
・エンドユーザに対するコンポーネントの提供
しかしながら、ＯＭＧの規定するＩｎｔｅｒｆａｃｅ  Ｒｅｐｏｓｉｔｏｒｙでは、オブジェクトに対するメッセージに不正が存在した場合に、オブジェクトがインタフェース情報を直接メッセージ送信元のオブジェクトに返すことや、オブジェクトの多段接続が行なわれている場合にインタフェース情報を多段にメッセージ送信元に返すこと、などが規定されていない。そのため、例えば、引数が未確定のままの遠隔手続を遠隔手続管理システムに実行させても意味のある実行は行なわれないし、実行の過程で呼出クライアントに未確定の引数を問い合わせることはなく、ユーザが会話的に引数を変更することはできない。
【０００５】
別の例として、例えば、特開平７−２８２０１７号公報に開示されるインタフェース定義ファイル生成装置では、サーバがクライアントに提供する手続を定義したソースプログラムから、分散処理環境提供のスタブ生成用コンパイラが規定する言語によって手続の仕様を記述したインタフェース定義ファイルを生成する装置が提供される。これによれば、サーバ側からクライアントへインタフェース情報が渡される。しかし、この装置の場合も、例えば、引数が未確定のままの遠隔手続呼出式を遠隔手続管理システムに実行させることは想定されていないし、未定義であることを実行の過程で呼出クライアントに報知することもない。そのため、会話的に引数を変更することはできない。
【０００６】
【発明が解決しようとする課題】
本発明は、上述した事情に鑑みてなされたもので、引数が未確定で遠隔手続が実行された、あるいは不正な引数が与えられ遠隔手続が実行された場合に、ユーザが会話的に引数を与えることにより遠隔手続を再実行することが可能な遠隔手続管理装置および遠隔手続管理方法を提供することを目的とするものである。
【０００７】
【課題を解決するための手段】
請求項１に記載の発明は、情報処理を行なう複数の計算機システムがネットワークで結ばれたネットワーク情報システムで行なわれる遠隔手続を管理する遠隔手続管理装置において、通信手段と、ユーザにより入力され前記通信手段で受信した手続呼出式を解析する手続呼出式解析手段と、複数の遠隔手続保持手段と、前記手続呼出式解析手段からの要求に基づき前記遠隔手続保持手段を検索する遠隔手続検索手段を有し、それぞれの前記遠隔手続保持手段は、属性を保持する属性保持手段と、手続仕様を出力する手続仕様公開手段と、引数に従い手続を実行する手続実行手段を有し、前記通信手段で手続呼出式を受信すると、前記手続呼出式解析手段で前記手続呼出式を解析して前記手続呼出式に該当する属性を前記属性保持手段が保持する前記遠隔手続保持手段を前記遠隔手続検索手段により検索し、検索された前記遠隔手続保持手段の手続実行手段に前記手続呼出式に基づき引数の割当を入力して手続を実行させ、前記手続実行手段で手続の実行の際に未割当の引数が存在する場合には、前記手続仕様公開手段に対して仕様を公開するよう要求し、手続仕様公開手段は手続仕様を生成し、該手続仕様を前記通信手段からクライアントへ送信し該クライアントで表示を受けたユーザによる引数の割当を前記通信手段で受け取って前記手続実行手段による手続の実行を進めることを特徴とするものである。
【０００８】
請求項２に記載の発明は、請求項１に記載の遠隔手続管理装置において、前記手続呼出式解析手段は、与えられた手続呼出式の解析を、他の前記遠隔手続保持手段を再帰的に呼び出して行なうことを特徴とするものである。
【０００９】
請求項３に記載の発明は、情報処理を行なう複数の計算機システムがネットワークで結ばれたネットワーク情報システムで行なわれる遠隔手続を管理する遠隔手続管理方法において、引数に従い遠隔手続の実行を行うとともに手続仕様を公開した複数の遠隔手続保持手段を有しており、ユーザにより入力された手続呼出式を手続呼出式解析手段で解析して前記手続呼出式に該当する属性を前記属性保持手段が保持する前記遠隔手続保持手段を遠隔手続検索手段により検索し、検索された前記遠隔手続保持手段の手続実行手段に前記手続呼出式に基づき引数の割当を入力して手続を実行させ、前記手続実行手段で手続の実行の際に未割当の引数が存在する場合には、手続仕様を前記手続仕様公開手段により生成してクライアントへ送信し、該クライアントで表示された該手続仕様に従って行なわれるユーザによる引数の割当を受け取って前記手続実行手段による手続の実行を進めることを特徴とするものである。
【００１２】
【発明の実施の形態】
図１は、本発明の遠隔手続管理装置の第１の実施の形態を示すブロック図である。図中、１は遠隔手続クライアント部、２は遠隔手続サーバ部、１１は通信部、１２はユーザ入力部、１３は手続呼出式生成部、１４は応答解析部、１５はユーザ出力部、２１は通信部、２２は手続呼出式解析部、２３は束縛置換部、２４は遠隔手続検索部、２５−１〜Ｍは遠隔手続保持部、２６−１〜Ｍは属性保持部、２７−１〜Ｍは手続仕様公開部、２８−１〜Ｍは手続実行部、２９−１〜Ｍは束縛要求処理部である。この第１の実施の形態は、手続呼出式において束縛されていない変数を、手続実行時に必要に応じて束縛する方式について示すものである。
【００１３】
遠隔手続管理装置は、遠隔手続クライアント部１と遠隔手続サーバ部２から構成される。一般には、遠隔手続管理装置は１個以上の任意個の遠隔手続クライアント部１と、１個以上の任意個の遠隔手続サーバ部２から構成されていてよい。
【００１４】
遠隔手続クライアント部１は、通信部１１、ユーザ入力部１２、手続呼出式生成部１３、応答解析部１４、ユーザ出力部１５から構成される。通信部１１は、手続呼出式生成部１３から入力される手続呼出式を遠隔の通信部に対して送信するとともに、送信先の通信部からの応答を受信し、受信した応答を応答解析部１４に出力する。ユーザ入力部１２は、キーボード、ポインティング・デバイス等の入力装置を含み、ユーザからの入力により手続呼出式生成部１３に対する手続呼出式生成要求を行なう。手続呼出式生成部１３は、ユーザ入力部１２からの要求に応じて、手続呼出式を生成し、通信部１１に出力する。応答解析部１４は、通信部１１から入力される応答を解析し、ユーザ出力部１５に対して応答をユーザに提示するよう要求するとともに、手続呼出式を生成するための情報である手続呼出式生成情報を手続呼出式生成部１３に出力する。ユーザ出力部１５は、応答解析部１４からの要求に基づき、実行結果を例えば文字、画像および音声情報としてユーザに提示する。
【００１５】
遠隔手続サーバ部２は、１個の通信部２１、１個の手続呼出式解析部２２、１個の束縛置換部２３、１個の遠隔手続検索部２４、Ｍ個の遠隔手続保持部２５−１〜Ｍにより構成される。通信部２１は、手続呼出式を受信し、手続呼出式解析部２２に出力するとともに、手続の実行結果を送信する。手続呼出式解析部２２は、通信部２１から入力される手続呼出式を解析する。束縛置換部２３は、手続呼出式解析部２２から束縛置換式を入力し、束縛置換を行なった結果を手続呼出式として手続呼出式解析部２２に出力する。遠隔手続検索部２４は、手続呼出式解析部２２から検索式を入力し、遠隔手続サーバ部２に属する遠隔手続保持部２５−１〜Ｍの中から検索式にマッチする遠隔手続保持部を検索する。
【００１６】
遠隔手続保持部２５−１〜Ｍは、属性保持部２６−１〜Ｍ、手続仕様公開部２７−１〜Ｍ、手続実行部２８−１〜Ｍ、束縛要求処理部２９−１〜Ｍにより構成されている。属性保持部２６−１〜Ｍには、遠隔手続保持部２５−１〜Ｍを一意に識別するための識別子を表わす属性が、属性名と属性値のペアのリストとして保持されている。一般的には、属性保持部２６−１〜Ｍには、任意個の属性と属性値のペアが保持されていてもよく、１個以上の属性を指定することにより遠隔手続保持部を一意に識別することができるような属性が保持されていればよい。
【００１７】
手続仕様公開部２７−１〜Ｍには、手続の引数に関する形式言語による記述、手続の引数に関する自然言語による記述、手続から返される応答に関する形式言語による記述、手続から返される応答に関する自然言語による記述、手続の動作に関する形式言語による記述、手続の動作に関する自然言語による記述、手続呼出式を生成するための手続呼出式生成情報、引数のデフォルト値が保持されている。一般的には、手続仕様公開部２７−１〜Ｍには、これらのうちの１個以上の要素を持つ任意の部分集合が保持されていてもよい。
【００１８】
手続実行部２８−１〜Ｍは、手続呼出式解析部２２によって入力される割当に従い、手続を実行する。手続の実行の過程で他の遠隔手続保持部に対して手続の実行を要求する必要が発生した場合は、手続呼出式解析部２２を通じて呼出要求を行なう。手続実行部２８−１〜Ｍは、手続が終了すると、手続の実行結果として応答を返す。
【００１９】
束縛要求処理部２９−１〜Ｍは、手続実行部２８−１〜Ｍが他の遠隔手続保持部に対して手続の実行を要求した応答として、束縛要求が返された場合、返された束縛要求の応答を手続実行部２８−１〜Ｍより入力し、第２の束縛要求応答を生成する。
【００２０】
以下、具体例を用いながら説明する。この第１の実施の形態では、手続呼出式生成情報は、形式言語であるＳ式により表わされるものとし、Ｓ式の第１要素の記号“ｂｉｎｄ”により、引数の割り当てを促す手続仕様であることを、Ｓ式の第２要素のリストにより割り当ての必要な引数とそのデフォルト値を、Ｓ式の第３要素により検索式を表わすこととする。例えば、（ｂｉｎｄ  （ｖ１  ｖ２＝（ｔｉｍｅｓ  ｖ１＝２  ｖ２＝ｕｎｄｅｆ））  ｐｌｕｓ）は手続仕様を表わす応答であり、割り当ての必要な引数はｖ１，ｖ２であり、引数ｖ１はデフォルト値を持たず、ｖ２はデフォルト値が（ｔｉｍｅｓ  ｖ１＝２  ｖ２＝ｕｎｄｅｆ）であり、検索式がｐｌｕｓであることを表わす。
【００２１】
また、属性保持部２６−１〜Ｍには、少なくとも属性“ｎａｍｅ”が保持されているものとする。さらに、便宜的に全ての手続実行部２８−１〜Ｍは、ｖ１，ｖ２，ｖ３，・・・という名前の引数を持つとする。一般的には、手続実行部２８−１〜Ｍは任意の名前の引数を持っていてよい。属性“ｎａｍｅ”の属性値が“ｆｎａｍｅ”であるような属性保持部を持つ遠隔手続保持部が、引数ｖ１，ｖ２，・・・を持ち、引数ｖ１に値ａ１、引数ｖ２に値ａ２、・・・を割り当てる場合の手続呼び出し式を、（ｆｎａｍｅ  ｖ１＝ａ１  ｖ２＝ａ２  ・・・）と表記することとする。また、引数ｖ３，ｖ４，・・・に対して割当が存在しないことをｖ３＝ｕｎｄｅｆ，ｖ４＝ｕｎｄｅｆ，・・・と表記する。
【００２２】
各部の動作の一例を説明する。図２は、本発明の遠隔手続管理装置の第１の実施の形態における手続呼出式解析部２２の動作の一例を示すフローチャートである。ここで、Ｓ式（ａ１  ・・・  ａｉ  ・・・  ａｎ）のａ１を第１要素と呼び、ａｉを第ｉ要素と呼ぶ。
【００２３】
Ｓ４１において、入力された手続呼出式を式１とする。また、式１の第１要素を式２とし、式１の第１要素を取り除いた残りの式を式３とする。Ｓ４２において、式２がリストか否かを判定し、式２がリストでない場合は、Ｓ４３において、式２を遠隔手続検索部２４に与える検索式とし、式３を検索された遠隔手続保持部に与えるパラメータとし、処理を終了する。式２がリストの場合は、Ｓ４４において、式２の第１要素が“ｂｉｎｄ”であるか否かを判定し、式２の第１要素が“ｂｉｎｄ”である場合は以下に説明する準呼出式から呼出式を生成する処理を実行し、その結果を再びこの処理の入力として、この処理を実行する。そうでない場合は、式１を束縛置換部２３に入力し、その結果を再びこの処理の入力として、この処理を実行する。
【００２４】
図３は、本発明の遠隔手続管理装置の第１の実施の形態における手続呼出式解析部２２の動作の一例で実行される準呼出式から呼出式を生成する処理の一例を示すフローチャートである。ここで、準呼出式とは、第１要素の第１要素が“ｂｉｎｄ”である式であり、例えば、（（ｂｉｎｄ  （ｖ１＝１  ｖ２）  ｐｌｕｓ）  ｖ１＝  ｖ２＝２０）等の式である。この処理では、このような準呼出式から、呼出式、例えば、（ｐｌｕｓ  ｖ１＝１  ｖ２＝２０）といった式を得るための処理である。なお、Ｓ式の（ａ１  ａ２  ・・・  ａｎ）の（ａ２  ・・・  ａｎ）をｃｄｒと呼ぶ。
【００２５】
Ｓ５１において、割当リストを空リストとする。Ｓ５２において、入力した式を式１し、式１の第１要素を式２、式１のｃｄｒを式３、式２の第２要素を式４、式２の第３要素を式５とする。
【００２６】
Ｓ５３において、式４の未処理の要素ｉを選択する。Ｓ５４において、選択された要素ｉを“＝”の左辺である左辺ｉと右辺である右辺ｉに分割する。分割できない場合は次の要素について処理を行なうべく、Ｓ５７へ進む。分割できる場合には、Ｓ５５において、分割した左辺ｉが式３の要素として値が割り当てられているか否かを判定する。割り当てられていれば、次の要素について処理を行なうべく、Ｓ５７へ進む。割り当てられていなければ、Ｓ５６において、要素ｉを割り当てリストに追加する。Ｓ５７において、式４の未処理の要素が残っているか否かを判定し、残っていればその要素についての処理を行なうべくＳ５３へ戻る。
【００２７】
Ｓ５８において、式３のそれぞれの要素ｉについて、値が割り当てられているものを割り当てリストに追加し、さらにＳ５９において、割り当てリストの先頭に式５を追加し、結果を出力する。この処理によって、例えば、（（ｂｉｎｄ  （ｖ１＝１  ｖ２）  ｐｌｕｓ）  ｖ１＝  ｖ２＝２０）という準呼出式は、（ｐｌｕｓ  ｖ１＝１  ｖ２＝２０）という呼出式に変換される。
【００２８】
図４は、本発明の遠隔手続管理装置の第１の実施の形態における束縛置換部２３の動作の一例を示すフローチャートである。手続の呼出時に束縛置換式が与えられた場合に、束縛置換部２３は、以下の処理によって束縛置換式から手続呼出式を導出する。なお、束縛置換式とは、第１要素がリストである手続呼出式である。
【００２９】
Ｓ６１において、入力した束縛置換式を式１とし、式１の第１要素を式２、式１のｃｄｒを式３とする。Ｓ６２において、式３の未処理の要素ｉを選択し、Ｓ６３において、その要素ｉを“＝”の左辺である左辺ｉと右辺である右辺ｉに分割する。そして、Ｓ６４において、式２の部分式のうち、“左辺ｊ＝左辺ｉ”の形式をしている全ての部分式を、“左辺ｊ＝右辺ｉ”で置き換える。Ｓ６５において、式３の未処理の要素が残っている場合は、その要素について処理を行なうべく、Ｓ６２へ戻る。式３の全ての要素について処理を行なうと、束縛置換処理は終了する。
【００３０】
図５は、本発明の遠隔手続管理装置の第１の実施の形態における手続実行部２８−１〜Ｍの動作の一例を示すフローチャートである。ここでは一例として、手続実行部２８−１，２について具体例を用いながら説明する。なお、遠隔手続保持部２５−１と遠隔手続保持部２５−２の動作は、遠隔手続の演算が相違するのみでほぼ同じであるので、１つのフローチャートでまとめて説明する。
【００３１】
遠隔手続保持部２５−１の属性保持部２６−１は、属性“ｎａｍｅ”の値が“ｐｌｕｓ”であるとして属性を保持し、手続仕様公開部２７−１は、Ｓ式（ｂｉｎｄ  （ｖ１  ｖ２）  ｐｌｕｓ）を保持しているものとする。また、手続実行部２８−１は、２つの引数ｖ１，ｖ２の和を計算するものである。遠隔手続保持部２５−２の属性保持部２６−２は、属性“ｎａｍｅ”の値が“ｔｉｍｅｓ”であるとして属性を保持し、手続仕様公開部２７−２は、Ｓ式（ｂｉｎｄ  （ｖ１ｖ２）  ｔｉｍｅｓ）を保持している。また、手続実行部２８−２は、２つの引数ｖ１，ｖ２の積を計算するものである。
【００３２】
Ｓ７１において、引数ｖ１の割当を調べ、１０進整数を表わす文字列ならば、Ｓ７２において、その１０進整数を表わす文字列を整数に変換し、変換した値を引数ｖ１の第２の割当とし、Ｓ７９へ進む。引数ｖ１が未割当ならば、Ｓ７３において、手続仕様公開部２７−１，２に仕様を出力するよう要求し、Ｓ７４において、出力された仕様のＳ式に割当のデフォルト値を加え、出力して処理を終了する。
【００３３】
引数ｖ１の割当が手続呼出式ならば、Ｓ７５において、手続呼出式を手続呼出式解析部２２へ入力し、応答を得る。この応答を応答１とする。Ｓ７６において、応答１が手続仕様か否かを判定する。応答１が手続仕様ならば、Ｓ７７において、応答１を束縛要求処理部２９−１，２へ入力し、束縛要求処理部２９−１，２からの出力を返して処理を終了する。応答１が手続仕様でなければ、Ｓ７８において、応答１から１０進整数を表わす文字列を抽出し、その文字列を整数に変換し、変換した値を引数ｖ１の第２の割当とする。
【００３４】
Ｓ７９において、引数ｖ２の割当を調べ、１０進整数を表わす文字列ならば、Ｓ８０において、その１０進整数を表わす文字列を整数に変換し、変換した値を引数ｖ２の第２の割当とし、Ｓ８７へ進む。引数ｖ２が未割当ならば、Ｓ８１において、手続仕様公開部２７−１，２に仕様を出力するよう要求し、Ｓ８２において、出力された仕様のＳ式に割当のデフォルト値を加え、出力して処理を終了する。
【００３５】
引数ｖ２の割当が手続呼出式ならば、Ｓ８３において、手続呼出式を手続呼出式解析部２２へ入力し、応答を得る。この応答を応答２とする。Ｓ８４において、応答２が手続仕様か否かを判定する。応答２が手続仕様ならば、Ｓ８５において、応答２を束縛要求処理部２９−１，２へ入力し、束縛要求処理部２９−１，２からの出力を返して処理を終了する。応答２が手続仕様でなければ、Ｓ８６において、応答２から１０進整数を表わす文字列を抽出し、その文字列を整数に変換し、変換した値を引数ｖ２の第２の割当とする。
【００３６】
Ｓ８７において、引数ｖ１と引数ｖ２の割当をもとに、演算を行ない、出力する。手続実行部２８−１では、引数ｖ１と引数ｖ２の割当を加えた結果を出力する。手続実行部２８−２では、引数ｖ１と引数ｖ２の割当の積を計算し、その結果を出力する。
【００３７】
図６は、本発明の遠隔手続管理装置の第１の実施の形態における束縛要求処理部２９−１〜Ｍの動作の一例を示すフローチャートである。束縛要求処理部２９−１〜Ｍでは、引数の評価結果として第１の手続仕様ｂｉｎｄ１が返された場合に、第２の手続仕様を合成する。ここでは、属性“ｎａｍｅ”の値が“ｆｎａｍｅ”である属性保持部を持つ遠隔手続保持部の手続実行部が、引数ｖ１，・・・，ｖｎの割当として、ａｒｇ１，・・・，ａｒｇｎを与えられ、引数ｖｉを評価する過程で、手続仕様ｂｉｎｄ１が返されたとする。
【００３８】
Ｓ９１において、第１の手続仕様ｂｉｎｄ１を解析し、手続仕様ｂｉｎｄ１の第２要素を抽出し、これをａｒｇｓ１とする。
【００３９】
Ｓ９２において、ａｒｇｓ１の要素をそれぞれ、ａ１，・・・，ａｍとするとき、（ｂｉｎｄ  ａｒｇｓ１  （ｆｎａｍｅ  ｖ１＝ａｒｇ１  ・・・  ｖｉ＝（ｂｉｎｄ１  ａ１＝ａ１  ・・・  ａｍ＝ａｍ）  ・・・  ｖｎ＝ａｒｇｎ））なる手続仕様２を生成し、この手続仕様２を出力する。
【００４０】
以下、具体例をもとに動作を説明する。ここでは、ユーザが（ｐｌｕｓ  ｖ１＝ｕｎｄｅｆ  ｖ２＝（ｔｉｍｅｓ  ｖ１＝２  ｖ２＝ｕｎｄｅｆ））という手続呼出式で表わされる手続呼び出しを行なう場合について説明する。この手続呼出式は、手続ｐｌｕｓの引数ｖ１を未割当とし、また、手続ｔｉｍｅｓの引数ｖ１に２を割り当て、手続ｔｉｍｅｓの引数ｖ２を未割当として呼んだ結果を手続ｐｌｕｓの引数ｖ２に割り当てることを示す。この手続呼出式を式１とする。
【００４１】
ユーザは、ユーザ入力部１２に対して、キー入力装置、ポインティング・デバイス等の入力装置を用いて、直接、手続呼出式を指定することを入力し、さらに、手続呼出式が式１であることを入力する。手続呼出式生成部１３は、ユーザの入力に基づき、式１を通信部１１に入力する。通信部１１は、式１を通信部２１に入力する。
【００４２】
通信部２１は、式１を手続呼出式解析部２２に入力する。手続呼出式解析部２２は、図２に示したフローチャートに従って動作する。まず式１を解析し、式１が呼出式であると判断する。そして、属性“ｎａｍｅ”の値が“ｐｌｕｓ”である属性保持部を持つ遠隔手続保持部を検索するよう遠隔手続検索部２４に要求する。遠隔手続検索部２４は、遠隔手続サーバ部２を検索し、遠隔手続保持部２５−１を返す。手続呼出式解析部２２は、検索された遠隔手続保持部２５−１に属する手続実行部２８−１に、式１に基づき引数の割当ｖ１＝ｕｎｄｅｆ，ｖ２＝（ｔｉｍｅｓ  ｖ１＝２  ｖ２＝ｕｎｄｅｆ）を入力し、手続を実行するよう要求する。
【００４３】
手続実行部２８−１は、図５に示したフローチャートに従って実行する。手続実行部２８−１では引数ｖ１を調べ、引数ｖ１が未割り当てであるため、手続仕様公開部２７−１に対して仕様を公開するよう要求する。手続仕様公開部２７−１は、形式言語Ｓ式で記述された手続仕様（ｂｉｎｄ  （ｖ１  ｖ２）  ｐｌｕｓ）を含む応答を生成する。生成された手続仕様を手続仕様１−１とする。手続実行部２８−１は、図５に示したフローチャートのＳ７４において、手続仕様１−１に引数ｖ２の割当をデフォルト値として加え、（ｂｉｎｄ  （ｖ１  ｖ２＝（ｔｉｍｅｓ  ｖ１＝２  ｖ２＝ｕｎｄｅｆ））  ｐｌｕｓ）を得る。この手続仕様を手続仕様１−２とする。手続実行部２８−１は、手続仕様１−２を通信部２１に出力する。通信部２１は、手続仕様１−２を通信部１１に送信する。
【００４４】
通信部１１は、手続仕様１−２を応答解析部１４に入力する。応答解析部１４は、手続仕様１−２を解析し、ユーザ出力部１５に対して、割り当ての必要な引数はｖ１，ｖ２であり、引数ｖ２のデフォルト値が（ｔｉｍｅｓ  ｖ１＝２  ｖ２＝ｕｎｄｅｆ）であることを表示するよう要求するとともに、手続呼出式生成情報（ｂｉｎｄ  （ｖ１  ｖ２＝（ｔｉｍｅｓ  ｖ１＝２  ｖ２＝ｕｎｄｅｆ））  ｐｌｕｓ）を手続呼出式生成部１３に入力する。この手続呼出式生成情報を手続呼出式生成情報１とする。
【００４５】
表示を受けたユーザは、ユーザ入力部１２に対して第１引数ｖ１を１に割り当てることを指示し、引数ｖ２はデフォルト値を割り当てるよう入力を行なう。さらに、手続呼出式を生成するよう手続呼出式生成部１３に指示する。手続呼出式生成部１３は、ユーザ入力部１２からの入力および手続呼出式生成情報１に基づき、（ｐｌｕｓ  ｖ１＝１  ｖ２＝（ｔｉｍｅｓ  ｖ１＝２  ｖ２＝ｕｎｄｅｆ））という手続呼出式を通信部１１に出力する。この手続呼出式を式２とする。通信部１１は、式２を通信部２１に送信する。
【００４６】
通信部２１は、式２を手続呼出式解析部２２に入力する。手続呼出式解析部２２は式１を解析し、式１が呼出式であると判断する。そして、属性“ｎａｍｅ”の値が“ｐｌｕｓ”である属性保持部を持つ遠隔手続保持部を検索するよう遠隔手続検索部２４に要求する。遠隔手続検索部２４は、遠隔手続サーバ部２を検索し、遠隔手続保持部２５−１を返す。手続呼出式解析部２２は、検索された遠隔手続保持部２５−１に属する手続実行部２８−１に、式２に基づき引数の割当ｖ１＝１，ｖ２＝（ｔｉｍｅｓ  ｖ１＝２  ｖ２＝ｕｎｄｅｆ）を入力し、手続を実行するよう要求する。
【００４７】
手続実行部２８−１は、図５に示したフローチャートに従い、引数ｖ１の割当として整数１を得る。また、引数ｖ２の割当“（ｔｉｍｅｓ  ｖ１＝２  ｖ２＝ｕｎｄｅｆ）”を手続呼出式解析部２２に入力する。この手続呼出式を式４とする。
【００４８】
手続呼出式解析部２２は、式４を解析し、遠隔手続検索部２４に対して属性“ｎａｍｅ”の値が“ｔｉｍｅｓ”である属性保持部を持つ遠隔手続保持部を検索するよう要求する。遠隔手続検索部２４は、検索を行なって遠隔手続保持部２５−２を返す。手続呼出式解析部２２は、検索された遠隔手続保持部２５−２の手続実行部２８−２に、式４に基づき引数ｖ１＝２、引数ｖ２＝ｕｎｄｅｆを入力する。
【００４９】
手続実行部２８−２は、図５に示したフローチャートに従って実行し、引数ｖ１の割当として整数２を得る。また、引数ｖ２が未割り当てであるため、手続仕様公開部２７−２に対して仕様を公開するよう要求する。手続仕様公開部２７−２は、形式言語Ｓ式で記述された手続仕様（ｂｉｎｄ  （ｖ１  ｖ２）  ｔｉｍｅｓ）を含む応答を生成する。この手続仕様を手続仕様２−１とする。手続実行部２８−２は、手続仕様２−１に引数ｖ１の割当をデフォルト値として加え、（ｂｉｎｄ  （ｖ１＝２  ｖ２）  ｔｉｍｅｓ）を得る。この手続仕様を手続仕様２−２とする。手続実行部２８−２は、手続仕様２−２を手続実行部２８−１に出力する。
【００５０】
手続実行部２８−１は、図５に示したフローチャートに従い、手続実行部２８−２からの応答が手続仕様であることから、手続仕様２−２を束縛要求処理部２９−１へ入力する。束縛要求処理部２９−１は、図６に示したフローチャートに従い、（ｂｉｎｄ  （ｖ１＝２  ｖ２）  （ｐｌｕｓ  ｖ１＝１  ｖ２＝（（ｂｉｎｄ  （ｖ１＝２  ｖ２）  ｔｉｍｅｓ）  ｖ１＝ｖ１  ｖ２＝ｖ２）））という手続仕様に変換して手続実行部２８−１に出力する。この変換された手続仕様を手続仕様２−３とする。手続実行部２８−１は、手続仕様２−３を通信部２１に出力する。通信部２１は、手続仕様２−３を通信部１１に送信する。
【００５１】
通信部１１は、手続仕様２−３を応答解析部１４に出力する。応答解析部１４は手続仕様２−３を入力すると、解析を行ない、ユーザ出力部１５に対して、割当の必要な引数は、ｖ１，ｖ２であり、引数ｖ２のデフォルト値が２であることを表示するよう要求するとともに、手続呼出式生成情報（ｂｉｎｄ  （ｖ１＝２ｖ２）  （ｐｌｕｓ  ｖ１＝１  ｖ２＝（（ｂｉｎｄ  （ｖ１＝２  ｖ２）  ｔｉｍｅｓ）  ｖ１＝ｖ１  ｖ２＝ｖ２）））を手続呼出式生成部１３に入力する。この手続呼出式生成情報を手続呼出式生成情報２とする。
【００５２】
表示を受けたユーザは、ユーザ入力部１２に対して、引数ｖ１に２０を、ｖ２に３を割り当てるよう入力を行なう。手続呼出式生成部１３は、ユーザ入力部１２からの入力および手続呼出式生成情報２に基づき、（（ｐｌｕｓ  ｖ１＝１  ｖ２＝（（ｂｉｎｄ  （ｖ１＝２  ｖ２）  ｔｉｍｅｓ）  ｖ１＝ｖ１  ｖ２＝ｖ２））  ｖ１＝２０  ｖ２＝３）という手続呼出式を通信部１１に出力する。この手続呼出式を式５とする。通信部１１は、式５を通信部２１に送信する。
【００５３】
通信部２１は、式５を手続呼出式解析部２２に入力する。手続呼出式解析部２２は、図２に示したフローチャートに従い、式５の第１要素はリストであり、そのリストの第１要素が“ｂｉｎｄ”ではないので、式５を束縛置換式とし、式５を束縛置換部２３へ入力する。
【００５４】
束縛置換部２３は、図４に示したフローチャートに従い、ｖ１＝２０に関する置換を行ない、（ｐｌｕｓ  ｖ１＝１  ｖ２＝（（ｂｉｎｄ  （ｖ１＝２  ｖ２）  ｔｉｍｅｓ）  ｖ１＝２０  ｖ２＝ｖ２））を得る。さらに、ｖ２＝３に関する置換を行ない、（ｐｌｕｓ  ｖ１＝１  ｖ２＝（（ｂｉｎｄ  （ｖ１＝２  ｖ２）  ｔｉｍｅｓ）  ｖ１＝２０  ｖ２＝３））を得る。この手続呼出式を式６とする。束縛置換部２３は、式６を手続呼出式解析部２２へ入力する。
【００５５】
手続呼出式解析部２２は式６を解析し、属性“ｎａｍｅ”の値が“ｐｌｕｓ”である属性保持部を持つ遠隔手続保持部を検索するよう遠隔手続検索部２４に要求する。遠隔手続検索部２４は、遠隔手続サーバ部２を検索し、遠隔手続保持部２５−１を返す。手続呼出式解析部２２は、検索された遠隔手続保持部２５−１の手続実行部２８−１に、式６に基づき引数ｖ１＝１，ｖ２＝（（ｂｉｎｄ（ｖ１＝２  ｖ２）  ｔｉｍｅｓ）  ｖ１＝２０  ｖ２＝３）を入力する。
【００５６】
手続実行部２８−１は、図５に示したフローチャートに従い、引数ｖ２に対する割当が手続呼出式であるため、“（（ｂｉｎｄ  （ｖ１＝２  ｖ２）  ｔｉｍｅｓ）  ｖ１＝２０  ｖ２＝３）”を手続呼出式解析部２２に入力する。この手続呼出式を式７とする。
【００５７】
手続呼出式解析部２２は、図２に示したフローチャートに従い、式７を解析し、さらに、図３に示したフローチャートに従い、“（ｔｉｍｅｓ  ｖ１＝２０  ｖ２＝３）”を得る。この式を式８とする。
【００５８】
手続呼出式解析部２２は式８を解析し、属性“ｎａｍｅ”の値が“ｔｉｍｅｓ”である属性保持部を持つ遠隔手続保持部を検索するよう遠隔手続検索部２４に要求する。遠隔手続検索部２４は、遠隔手続サーバ部２を検索し、遠隔手続保持部２５−２を返す。手続呼出式解析部２２は、検索された遠隔手続保持部２５−２の手続実行部２８−２に、式８に基づき引数ｖ１＝２０および引数ｖ２＝３を入力する。手続実行部２８−２は、２０と３の積である６０を応答として手続実行部２８−１に返す。
【００５９】
手続実行部２８−１は、手続実行部２８−２からの応答を引数ｖ２に割り当て、１と６０の和である６１を応答として通信部２１に返す。通信部２１は、“６１”を通信部１１に送信する。
【００６０】
通信部１１は、“６１”を応答解析部１４に返す。応答解析部１４は、式３の評価結果として６１を得たことを表示するようユーザ出力部１５に対して要求する。これにより、式３に対する遠隔手続の結果として６１が表示される。
【００６１】
このように、最初からパラメータを設定せずに遠隔手続を実行させ、対話的にパラメータを決定してゆきながら所望の遠隔手続を実行させることが可能である。
【００６２】
図７は、本発明の遠隔手続管理装置の第２の実施の形態を示すブロック図である。図中、図１と同様の部分には同じ符号を付してある。１６はメッセージ生成部、１７はハイパーテキスト解析部、３０はメッセージ解析部である。この実施の形態では、手続呼出式の代わりにメッセージを用い、応答としてハイパーテキストを得る場合について述べる。
【００６３】
遠隔手続管理装置は、遠隔手続クライアント部１、遠隔手続サーバ部２、から構成される。一般には遠隔手続管理装置は、１個以上の任意個の遠隔手続クライアント部と１個以上の任意個の遠隔手続サーバ部から構成されていてよい。
【００６４】
遠隔手続クライアント部１は、通信部１１、ユーザ入力部１２、メッセージ生成部１６、ハイパーテキスト解析部１７、ユーザ出力部１５から構成される。通信部１１は、メッセージ生成部１６から入力されるメッセージを遠隔の通信部に対して送信するとともに、遠隔の通信部からのハイパーテキストを受信し、受信したハイパーテキストをハイパーテキスト解析部１７に出力する。ユーザ入力部１２は、キーボード、ポインティング・デバイス等の入力装置を含み、ユーザからの入力によりメッセージ生成部１６に対するメッセージ生成要求を行なう。メッセージ生成部１６は、ユーザ入力部１２からの入力およびハイパーテキスト解析部１７から入力されるメッセージ生成情報に応じて、メッセージを生成し、通信部１１に出力する。ハイパーテキスト解析部１７は、通信部１１から入力されるハイパーテキストを解析し、ユーザ出力部１５に対してハイパーテキストをユーザに提示するよう要求するとともに、メッセージを生成するための情報であるメッセージ生成情報をメッセージ生成部１６に出力する。ユーザ出力部１５は、ハイパーテキスト解析部１７からの要求に基づき、実行結果を文字、画像および音声情報などとしてユーザに提示する。
【００６５】
遠隔手続サーバ部２は、１個の通信部２１、１個のメッセージ解析部３０、１個の束縛置換部２３、１個の遠隔手続検索部２４、Ｍ個の遠隔手続保持部２５−１〜Ｍにより構成される。通信部２１は、遠隔からのメッセージを受信し、メッセージ解析部３０に出力するとともに、手続の実行結果であるハイパーテキストを遠隔に送信する。メッセージ解析部３０は、通信部２１から入力されるメッセージを解析し、遠隔手続検索部２４に入力する検索式および検索された遠隔手続保持部に入力する引数のリストである引数リストを抽出する。また、メッセージ解析部３０は、入力されたメッセージに予備情報が含まれている場合には、予備情報も合わせて抽出する。束縛置換部２３は、メッセージ解析部３０がメッセージを解析した結果、特定の検索式が抽出された場合に指定され、引数リストおよび予備情報が与えられる。束縛置換部２３は、予備情報にメッセージを入力し、後述する束縛置換処理を行なった結果を第２のメッセージとしてメッセージ解析部３０に出力する。遠隔手続検索部２４は、メッセージ解析部３０から検索式を入力し、遠隔手続サーバ部２に属する遠隔手続保持部の中から検索式にマッチする遠隔手続保持部を検索する。
【００６６】
遠隔手続保持部２５−１〜Ｍは、属性保持部２６−１〜Ｍ、手続仕様公開部２７−１〜Ｍ、手続実行部２８−１〜Ｍ、束縛要求処理部２９−１〜Ｍにより構成される。属性保持部２６−１〜Ｍには、遠隔手続保持部２５−１〜Ｍを一意に識別するための識別子を表わす属性が、属性名と属性値のペアのリストとして保持されている。一般的には、属性保持部２６−１〜Ｍには任意個の属性と属性値のペアが保持されていてもよく、１個以上の属性を指定することにより遠隔手続保持部を一意に識別することができるような属性が保持されていればよい。
【００６７】
手続仕様公開部２７−１〜Ｍには、手続の引数に関する形式言語による記述、手続の引数に関する自然言語による記述、手続から返されるハイパーテキストに関する形式言語による記述、手続から返されるハイパーテキストに関する自然言語による記述、手続の動作に関する形式言語による記述、手続の動作に関する自然言語による記述、メッセージを生成するためのメッセージ生成情報、引数のデフォルト値が保持されており、仕様公開の要求に対して仕様情報をハイパーテキストとして出力する。一般的には手続仕様公開部２７−１〜Ｍにはこれらのうちの、要素が１個以上である任意の部分集合が保持されていても良い。
【００６８】
図８は、本発明の遠隔手続管理装置の第２の実施の形態において手続仕様公開部２７−１〜Ｍが出力するハイパーテキストの一例の説明図である。図８に示す例は、手続仕様を表わすＨＴＭＬに基づくハイパーテキストの一例である。割り当ての必要な引数は、ｖ１，ｖ２であり、引数ｖ１はデフォルト値を持たず、引数ｖ２はデフォルト値が１であり、遠隔手続保持部の検索式が、“ｈｔｔｐ：／／ｈｏｓｔ１／ｂｉｎ／ｐｌｕｓ”であることを表わしている。
【００６９】
図７に戻り、手続実行部２８−１〜Ｍは、メッセージ解析部３０によって入力される引数リストに従い、手続を実行する。手続の実行の過程で他の遠隔手続保持部に対して手続の実行を要求する必要が発生した場合は、メッセージ解析部３０を通じてメッセージ送信をを行なう。手続実行部２８−１〜Ｍは、引数リストに従い、手続を実行した結果をハイパーテキストとして出力する。このとき、必要な引数が未定であったり、引数が不正な組合せである場合には、手続仕様公開部に対して手続仕様を出力するよう要求する。
【００７０】
束縛要求処理部２９−１〜Ｍは、手続実行部２８−１〜Ｍが他の遠隔手続保持部に対して手続実行を要求した応答として手続仕様が返された場合、その手続仕様であるハイパーテキストを手続実行部２８−１〜Ｍより入力し、第２の手続仕様ハイパーテキストを生成する。
【００７１】
次に、本発明の遠隔手続管理装置の第２の実施の形態における各部の動作の一例について説明する。図９は、本発明の遠隔手続管理装置の第２の実施の形態における束縛置換部２３の動作の一例を示すフローチャートである。Ｓ１０１において、入力した束縛置換式から、遠隔手続検索部２４に与える検索式である式１および予備情報である式２および引数リストである式３を抽出する。
【００７２】
Ｓ１０２において、引数リストである式３から、割当ｖ１＝値１，・・・，ｖｍ＝値ｍを得る。Ｓ１０３において、式２のエスケープを１段取り除き、式４とする。Ｓ１０４において、式４から遠隔手続検索部２４に与える検索式である式５および第２の引数リストｖ１＝値２１，・・・，ｖｎ＝値２ｎを得る。
【００７３】
Ｓ１０５、Ｓ１１０、Ｓ１１１によってｉを１からｍまで変化させ、引数ｖ１からｖｍまでのそれぞれの要素ｖｉについて、Ｓ１０６〜Ｓ１０９までの処理を行なう。また、Ｓ１０６、Ｓ１０８、Ｓ１０９によってｊを１からｎまで変化させ、Ｓ１０７において、値２ｊの、“ｖｉ＝ｖｉ”を“ｖｉ＝値ｉ”で置き換える。
【００７４】
図１０は、本発明の遠隔手続管理装置の第２の実施の形態における手続実行部２８−１〜Ｍの動作の一例を示すフローチャートである。ここでは一例として、手続実行部２８−１，２について具体例を用いながら説明する。なお、遠隔手続保持部２５−１と遠隔手続保持部２５−２の動作は、遠隔手続の演算が相違するのみでほぼ同じであるので、１つのフローチャートでまとめて説明する。
【００７５】
遠隔手続保持部２５−１の手続実行部２８−１は、２つの引数ｖ１，ｖ２の和を計算するものとする。また、手続実行部２８−２は、２つの引数ｖ１，ｖ２の積を計算するものとする。
【００７６】
Ｓ１２１において、引数ｖ１あるいは引数ｖ２のいずれかの割当が空であるか否かを判定し、空であれば、Ｓ１２２において、現在の引数の割当をデフォルト値として手続仕様公開部２７−１，２に仕様を公開するよう要求し、結果を出力して処理を終了する。
【００７７】
引数ｖ１，ｖ２とも割当が空でなければ、Ｓ１２３において、引数ｖ１の割当が１０進整数かメッセージかを判定する。引数ｖ１の割当が１０進整数を表わす文字列ならば、Ｓ１２４において、その文字列を整数に変換した値を第２の割当とし、Ｓ１２９へ進む。引数ｖ１の割当がメッセージならば、Ｓ１２５において、メッセージをメッセージ解析部３０へ入力し、応答のハイパーテキストを得る。得られたハイパーテキストをハイパーテキスト１とする。Ｓ１２６において、ハイパーテキスト１が手続仕様か否かを判定し、手続仕様であるならば、Ｓ１２７において、ハイパーテキスト１を束縛要求処理部２９−１，２へ入力し、束縛要求処理部２９−１，２からの出力を返し、処理を終了する。ハイパーテキスト１が手続仕様でなければ、Ｓ１２８において、ハイパーテキスト１から１０進整数を表わす文字列を抽出し、その文字列を整数に変換した値を引数ｖ１の第２の割当とする。
【００７８】
Ｓ１２９において、引数ｖ２の割当が１０進整数を表わす文字列ならば、Ｓ１３０において、その文字列を整数に変換した値を第２の割当とし、Ｓ１３５へ進む。引数ｖ２の割当がメッセージならば、Ｓ１３１において、メッセージをメッセージ解析部３０へ入力し、応答のハイパーテキストを得る。得られたハイパーテキストをハイパーテキスト２とする。Ｓ１３２において、ハイパーテキスト２が手続仕様であるか否かを判定し、手続仕様であるならば、Ｓ１３３において、ハイパーテキスト２を束縛要求処理部２９−１，２へ入力し、束縛要求処理部２９−１，２からの出力を返し、処理を終了する。ハイパーテキスト２が手続仕様でなければ、Ｓ１３４において、ハイパーテキスト２から１０進整数を表わす文字列を抽出し、その文字列を整数に変換した値を引数ｖ２の第２の割当とする。
【００７９】
Ｓ１３５において、引数ｖ１と引数ｖ２の割当に基づいて演算を行ない、出力する。手続実行部２８−１では、引数ｖ１と引数ｖ２の割当を加えた結果を出力する。また、手続実行部２８−２では、引数ｖ１と引数ｖ２の割当の積を計算し、その結果を出力する。
【００８０】
図１１は、本発明の遠隔手続管理装置の第１の実施の形態における束縛要求処理部２９−１〜Ｍの動作の一例を示すフローチャートである。束縛要求処理部２９−１〜Ｍでは、引数の評価結果として第１の手続仕様ｂｉｎｄ１が返された場合に第２の手続仕様を合成して出力する。ここでは、属性“ｎａｍｅ”の値が“ｆｎａｍｅ”である属性保持部を持つ手続保持部の手続実行部が、引数ｖ１，・・・，ｖｎの割当として、ａｒｇ１，・・・，ａｒｇｎを与えられ、引数ｖｉを評価する過程で、手続仕様ｂｉｎｄ１が返されたとする。また、束縛置換部２３は、“ｈｔｔｐ：／／ｈｏｓｔ１／ｂｉｎ／ｂｉｎｄ”という検索式によって指定されるものとする。一般には束縛置換部２３を指定する検索式は他の検索式と区別できるものであれば何であってもよい。
【００８１】
Ｓ１４１において、手続仕様ｂｉｎｄ１から、遠隔手続検索部２４に与える検索式を抽出し、これを式１とする。また、引数ｖ１，・・・，ｖｍおよびデフォルト値ｄ１，・・・，ｄｍを抽出する。Ｓ１４２において、式１に文字列“？ｖ１＝ｖ１＆・・・＆ｖｍ＝ｖｍ”を後ろから連結した式を式２とする。そして、Ｓ１４３において、ｖｉの割当を式２とする。さらに、Ｓ１４４において、式３をｆｎａｍｅとする。
【００８２】
Ｓ１４５、Ｓ１５１、Ｓ１５２により、ｋを１からｎまで変化させ、Ｓ１４６〜Ｓ１５０の処理を繰り返し行なう。Ｓ１４６において、ｋとｉが等しくなければ、Ｓ１４７において、ａｒｇｋをエスケープして式４とし、式３にｖｋ＝式４を後ろから連結して式３とする。また、ｋとｉが等しければ、Ｓ１４８において、式２をエスケープして式５とし、式３にｖｋ＝式５を後ろから連結して式３とする。また、Ｓ１４９において、ｋとｎが等しくなければ、Ｓ１５０において式３に文字“＆”を後ろから連結し、式３とする。
【００８３】
Ｓ１５３において、式３をエスケープし式６とする。さらに、Ｓ１５４において、“ｈｔｔｐ：／／ｈｏｓｔ１／ｂｉｎ／ｂｉｎｄ”に式６を後ろから連結し、式７とする。そして、Ｓ１５５において、手続仕様ｂｉｎｄ１の遠隔手続検索部２４に与える検索式を式７に変更し、ｂｉｎｄ２としてこれを出力する。
【００８４】
次に、具体例を用いて動作の一例を説明する。以下の説明では、遠隔手続サーバ部２は、“ｈｔｔｐ：／／ｈｏｓｔ１”という検索式によって指定される。また、“ｈｔｔｐ：／／ｈｏｓｔ１／ｂｉｎｄ”という検索式によって束縛置換部２３を指定する。一般には、遠隔手続サーバ部２や束縛置換部２３などを指定する検索式は他の検索式と区別できるものであれば何であってもよい。以下同様である。
【００８５】
また、属性保持部２６−１〜Ｍは、少なくとも属性“ｎａｍｅ”を有しており、属性保持部２６−１は、属性“ｎａｍｅ”の値が“／ｂｉｎ／ｐｌｕｓ”であるとして属性を保持し、属性保持部２６−２は、属性“ｎａｍｅ”の値が“／ｂｉｎ／ｔｉｍｅｓ”であるとして属性を保持している。
【００８６】
全ての手続実行部は、便宜的にｖ１，ｖ２，ｖ３，・・・という名前の引数を持つとする。一般的には手続実行部は任意の名前の引数を持っていてよい。属性“ｎａｍｅ”の属性値が“ｆｎａｍｅ”であるような属性保持部を持つ手続保持部が、引数ｖ１，ｖ２，・・・を持ち、引数ｖ１に値ａ１、引数ｖ２に値ａ２、・・・を割り当てる場合のメッセージを、
ｈｔｔｐ：／／ｈｏｓｔ１／ｆｎａｍｅ？ｖ１＝ａ１＆ｖ２＝ａ２＆・・・
と表記することとする。また、引数ｖ３，ｖ４，に対して割当が存在しないことをｖ３＝＆ｖ４＝＆・・・と表記する。ここでは、具体例として、手続実行部２８−１は引数ｖ１，ｖ２を持ち、メッセージ“ｈｔｔｐ：／／ｈｏｓｔ１／ｂｉｎ／ｐｌｕｓ？ｖ１＝ａ１＆ｖ２＝ａ２”によって指定されるものとする。また、手続実行部２８−２は引数ｖ１，ｖ２を持ち、メッセージ“ｈｔｔｐ：／／ｈｏｓｔ１／ｂｉｎ／ｔｉｍｅｓ？ｖ１＝ａ１＆ｖ２＝ａ２”によって指定されるものとする。
【００８７】
なお、引数の割当の値として現れる文字は、Ｃｏｍｍｏｎ  Ｇａｔｅｗａｙ  Ｉｎｔｅｒｆａｃｅの規定と同様に、“：”，“／”，“？”，“＝”，“＆”，“％”等の文字が現れる場合は、“％”の後にそれぞれの文字のＡＳＣＩＩコードを連結して、それぞれ“％３Ａ”，“％２Ｆ”，“％３Ｆ”，“％３Ｄ”，“％２６”，“％２５”と表現することとする。一意に引数名と値のペアを抽出するために用いる方式として一般には、“（”と“）”等の開始、終了記号を用いる方式や、文字を別の文字列に変換するエスケープ方式を用いてもよい。
【００８８】
図１２は、本発明の遠隔手続管理装置の第２の実施の形態において手続仕様公開部２７−１が保持するハイパーテキストの一例の説明図である。以下の説明では、手続仕様公開部２７−１は、図１２に示すようなハイパーテキストを手続仕様として保持している。
【００８９】
以下、ユーザがメッセージを入力してから遠隔手続の結果を得るまでについて、具体例を用いて説明する。図１３ないし図１５は、本発明の遠隔手続管理装置の第２の実施の形態における具体的な動作の一例においてやりとりされる一部のデータの一例の説明図である。具体例としてユーザが図１３（Ａ）に示すメッセージで表わされる手続呼び出しが行なわれた場合の動作を示す。このメッセージは、手続ｈｔｔｐ：／／ｈｏｓｔ１／ｂｉｎ／ｐｌｕｓの引数ｖ１を未割当とし、手続ｈｔｔｐ：／／ｈｏｓｔ１／ｂｉｎ／ｔｉｍｅｓの引数ｖ１に２を割り当て、手続ｔｉｍｅｓの引数ｖ２を未割当として呼んだ結果を手続ｈｔｔｐ：／／ｈｏｓｔ１／ｂｉｎ／ｐｌｕｓの引数ｖ２に割り当てることを示している。このメッセージを式１とする。
【００９０】
ユーザはユーザ入力部１２に対して、キー入力装置、ポインティング・デバイス等の入力装置を用いて、ユーザが直接メッセージを指定すること、および、メッセージが式１であることを入力する。メッセージ生成部１６は、ユーザの入力に基づき、式１を通信部１１に入力する。通信部１１は、式１の“ｈｔｔｐ：／／ｈｏｓｔ１”に対応する通信部として通信部２１を検索し、式１を通信部２１に入力する。
【００９１】
通信部２１は、式１をメッセージ解析部３０に入力する。メッセージ解析部３０は式１を解析し、式１が呼出式であると判断する。そして、属性“ｎａｍｅ”の値が“／ｂｉｎ／ｐｌｕｓ”である属性保持部を持つ遠隔手続保持部を検索するよう遠隔手続検索部２４に要求する。遠隔手続検索部２４は、遠隔手続サーバ部２を検索し、遠隔手続保持部２５−１を返す。メッセージ解析部３０は、検索された遠隔手続保持部２５−１に属する手続実行部２８−１に、式１に基づき引数の割当ｖ１＝，ｖ２＝ｈｔｔｐ：／／ｈｏｓｔ１／ｂｉｎ／ｔｉｍｅｓ？ｖ１＝２＆ｖ２＝を入力し、手続を実行するよう要求する。
【００９２】
手続実行部２８−１は、図１０に示したフローチャートに従い、引数ｖ１を調べる。引数ｖ１が未割当であるため、手続仕様公開部２７−１に対して仕様を公開するよう要求する。手続仕様公開部２７−１は、図１３（Ｂ）に示すような形式言語で記述された手続仕様を含むハイパーテキストを生成する。この手続仕様を手続仕様１−１とする。手続実行部２８−１は、手続仕様１−１を通信部２１に出力する。通信部２１は、手続仕様１−１を通信部１１に送信する。
【００９３】
通信部１１は、手続仕様１−１をハイパーテキスト解析部１７に入力する。ハイパーテキスト解析部１７は、手続仕様１−１を解析し、ユーザ出力部１５に対して、割当の必要な引数はｖ１，ｖ２であり、引数ｖ２のデフォルト値がｈｔｔｐ：／／ｈｏｓｔ１／ｂｉｎ／ｔｉｍｅｓ？ｖ１＝２＆ｖ２＝であることを表示するよう要求するとともに、メッセージ生成情報“ｈｔｔｐ：／／ｈｏｓｔ１／ｂｉｎ／ｐｌｕｓ”をメッセージ生成部１６に入力する。このメッセージ生成情報をメッセージ生成情報１とする。
【００９４】
表示を受けたユーザは、ユーザ入力部１２に対して第１の引数ｖ１に１を割り当て、引数ｖ２にはデフォルト値を割り当てるよう入力を行なうとともに、メッセージを生成するようメッセージ生成部１６に指示する。メッセージ生成部１６は、ユーザ入力部１２からの入力およびメッセージ生成情報１に基づき、図１３（Ｃ）に示すようなメッセージを通信部１１に出力する。このメッセージを式２とする。通信部１１は式２の“ｈｔｔｐ：／／ｈｏｓｔ１”に対応する通信部を検索し、通信部２１を得て、式２を通信部２１に送信する。
【００９５】
通信部２１は、式２をメッセージ解析部３０に入力する。メッセージ解析部３０は式２を解析し、式２が呼出式であると判断する。そして、属性“ｎａｍｅ”の値が“／ｂｉｎ／ｐｌｕｓ”である属性保持部を持つ遠隔手続保持部を検索するよう遠隔手続検索部２４に要求する。遠隔手続検索部２４は、遠隔手続サーバ部２を検索し、遠隔手続保持部２５−１を返す。メッセージ解析部３０は、検索された遠隔手続保持部２５−１に属する手続実行部２８−１に、式２に基づき引数の割当ｖ１＝１，ｖ２＝ｈｔｔｐ：／／ｈｏｓｔ１／ｂｉｎ／ｔｉｍｅｓ？ｖ１＝２＆ｖ２＝を入力し、手続を実行するよう要求する。
【００９６】
手続実行部２８−１は、図１０に示したフローチャートに従い、引数ｖ１の割当として整数１を得る。また、引数ｖ２の割当“ｈｔｔｐ：／／ｈｏｓｔ１／ｂｉｎ／ｔｉｍｅｓ？ｖ１＝２＆ｖ２＝”をメッセージ解析部３０に入力する。この引数ｖ２の割当のメッセージを式４とする。
【００９７】
メッセージ解析部３０は、式４を解析し、遠隔手続検索部２４に対して属性“ｎａｍｅ”の値が“／ｂｉｎ／ｔｉｍｅｓ”である属性保持部を持つ遠隔手続保持部を検索するよう要求する。遠隔手続検索部２４は、遠隔手続サーバ部２を検索し、遠隔手続保持部２５−２を返す。メッセージ解析部３０は、検索された遠隔手続保持部２５−２の手続実行部２８−２に、式４に基づき引数ｖ１＝２，ｖ２＝を入力する。
【００９８】
手続実行部２８−２は、図１０に示したフローチャートに従い、引数ｖ１の割当として整数２を得る。また、引数ｖ２が未割当であるため、手続仕様公開部２７−２に対して仕様を公開するよう要求する。手続仕様公開部２７−２は、図１３（Ｄ）に示すような形式言語で記述された手続仕様を含むハイパーテキストを生成する。この手続仕様を手続仕様２−２とする。手続実行部２８−２は、手続仕様２−２を手続実行部２８−１に出力する。
【００９９】
手続実行部２８−１は、図１０に示したフローチャートに従い、手続実行部２９−２から受け取ったハイパーテキストが手続仕様であることから、手続仕様２−２を束縛要求処理部２９−１へ入力する。束縛要求処理部２９−１は、図１１に示したフローチャートに従い、図１４（Ａ）に示す手続仕様２−３を手続実行部２８−１に出力する。手続実行部２８−１は、図１０に示したフローチャートに従い、手続仕様２−３を通信部２１に出力する。通信部２１は、手続仕様２−３を通信部１１に送信する。
【０１００】
通信部１１は、手続仕様２−３をハイパーテキスト解析部１７に出力する。ハイパーテキスト解析部１７は、手続仕様２−３を入力すると解析を行ない、ユーザ出力部１５に対して、割り当ての必要な引数はｖ１，ｖ２であり、引数ｖ２のデフォルト値が２であることを表示するよう要求するとともに、メッセージ生成情報として図１４（Ｂ）に示すような情報をメッセージ生成部１６に入力する。この図１４（Ｂ）に示したメッセージ生成情報をメッセージ生成情報２とする。
【０１０１】
表示を受けたユーザは、ユーザ入力部１２に対して、例えば、引数ｖ１に２０を、引数ｖ２に３を割り当てるよう入力を行なったとする。メッセージ生成部１６は、ユーザ入力部１２からの入力およびメッセージ生成情報２に基づき、図１４（Ｃ）に示すようなメッセージを通信部１１に出力する。このメッセージを式５とする。通信部１１は、式５の“ｈｔｔｐ：／／ｈｏｓｔ１”に対応する通信部を検索し、通信部２１を得る。通信部１１は、式５を通信部２１に送信する。
【０１０２】
通信部２１は、式５をメッセージ解析部３０に入力する。メッセージ解析部３０は、式５から抽出される検索式が“／ｂｉｎ／ｂｉｎｄ”であるため、式５を束縛置換式とし、式５を束縛置換部２３へ入力する。
【０１０３】
束縛置換部２３は、図９に示したフローチャートに従い、式５から、検索式としてｈｔｔｐ：／／ｈｏｓｔ１／ｂｉｎ／ｂｉｎｄを抽出し、予備情報として図１４（Ｄ）に示す情報を抽出し、引数リストとしてｖ１＝２０＆ｖ２＝３を抽出する。この引数リストを引数リスト１とする。
【０１０４】
次に束縛置換部２３は、予備情報のエスケープを１段取り除き、図１５（Ａ）に示す情報を得る。この式を式６とする。さらに、束縛置換部２３は式６の割当として、ｖ１＝１，ｖ２＝ｈｔｔｐ：／／ｈｏｓｔ１／ｂｉｎ／ｔｉｍｅｓ？ｖ１＝ｖ１＆ｖ２＝ｖ２を得る。この割当を割当１とする。
【０１０５】
さらに、束縛置換部２３は、割当１を、引数リスト１を用いて置換する。すなわち、割当ｖ１＝１，ｖ２＝ｈｔｔｐ：／／ｈｏｓｔ１／ｂｉｎ／ｔｉｍｅｓ？ｖ１＝２０＆ｖ２＝３を得る。この割当を割当２とする。束縛置換部２３は、割当２に従い、式６から図１５（Ｂ）に示すメッセージを得る。このメッセージを式７とする。束縛置換部２３は、式７をメッセージ解析部３０へ入力する。
【０１０６】
メッセージ解析部３０は式７を解析し、属性“ｎａｍｅ”の値が“／ｂｉｎ／ｐｌｕｓ”である属性保持部を持つ遠隔手続保持部を検索するよう遠隔手続検索部２４に要求する。遠隔手続検索部２４は、遠隔手続サーバ部２を検索し、遠隔手続保持部２５−１を返す。メッセージ解析部１は、検索された遠隔手続保持部２５−１の手続実行部２８−１に、式７に基づき引数ｖ１＝１，ｖ２＝ｈｔｔｐ：／／ｈｏｓｔ１／ｂｉｎ／ｔｉｍｅｓ？ｖ１＝２０＆ｖ２＝３を入力する。
【０１０７】
手続実行部２８−１は図１０に示したフローチャートに従い、引数ｖ２に対する割当がメッセージであるため、“ｈｔｔｐ：／／ｈｏｓｔ１／ｂｉｎ／ｔｉｍｅｓ？ｖ１＝２０＆ｖ２＝３”をメッセージ解析部３０に入力する。このメッセージを式８とする。
【０１０８】
メッセージ解析部３０は、遠隔手続検索部に入力する検索式“／ｂｉｎ／ｔｉｍｅｓ”を式８から抽出し、属性“ｎａｍｅ”の値が“／ｂｉｎ／ｔｉｍｅｓ”である属性保持部を持つ遠隔手続保持部を検索するよう遠隔手続検索部２４に要求する。遠隔手続検索部２４は、遠隔手続サーバ部２を検索し、遠隔手続保持部２５−２を返す。メッセージ解析部３０は、検索された遠隔手続保持部２５−２の手続実行部２８−２に、式８に基づき引数ｖ１＝２０，ｖ２＝３を入力する。
【０１０９】
手続実行部２８−２は、図１０に示したフローチャートに従い、２０と３の積である６０を計算し、図１５（Ｃ）に示すようなハイパーテキスト１として手続実行部２８−１に返す。
【０１１０】
手続実行部２８−１は、ハイパーテキスト１を解析し、“結果：”という文字列のある行から文字列“６０”を抽出し、引数ｖ２の割当として整数６０を得る。さらに手続実行部２８−１は、１と６０の和である６１を計算し、図１３（Ｌ）に示すようなハイパーテキスト２を通信部２１に返す。通信部２１は、ハイパーテキスト２を通信部１１に送信する。
【０１１１】
通信部１１は、ハイパーテキスト２をハイパーテキスト解析部１７に返す。ハイパーテキスト解析部１７は、式３の評価結果として６１を得たことを表示するようユーザ出力部１５に対して要求する。
【０１１２】
このようにして、ハイパーリンクを用いた遠隔手続呼出において、予め引数を設定しなくても、インタラクティブに引数を決定し、遠隔手続を実行させることが可能となる。
【０１１３】
なお、上述の例では、未定義の引数を含む遠隔手続呼出の動作の例を示したが、例えば引数の設定方法がわからない場合など、誤った遠隔手続呼出を行なった場合にも手続仕様が表示され、ユーザは表示された手続仕様に沿って引数の設定などを行なうことができ、遠隔手続を簡単に利用できるようになる。
【０１１４】
【発明の効果】
以上の説明から明らかなように、本発明によれば、引数が未確定で遠隔手続が実行されたり、あるいは不正な引数が与えられ遠隔手続が実行された場合に、ユーザが会話的に引数を与えることができ、引数の設定後、遠隔手続を再実行することが可能となる。そのため、ユーザは、所望の遠隔手続の仕様を予め熟知していなくても、その遠隔手続を実行させることができ、利便性を向上させることができるという効果がある。
【図面の簡単な説明】
【図１】  本発明の遠隔手続管理装置の第１の実施の形態を示すブロック図である。
【図２】  本発明の遠隔手続管理装置の第１の実施の形態における手続呼出式解析部２２の動作の一例を示すフローチャートである。
【図３】  本発明の遠隔手続管理装置の第１の実施の形態における手続呼出式解析部２２の動作の一例で実行される準呼出式から呼出式を生成する処理の一例を示すフローチャートである。
【図４】  本発明の遠隔手続管理装置の第１の実施の形態における束縛置換部２３の動作の一例を示すフローチャートである。
【図５】  本発明の遠隔手続管理装置の第１の実施の形態における手続実行部２８−１〜Ｍの動作の一例を示すフローチャートである。
【図６】  本発明の遠隔手続管理装置の第１の実施の形態における束縛要求処理部２９−１〜Ｍの動作の一例を示すフローチャートである。
【図７】  本発明の遠隔手続管理装置の第２の実施の形態を示すブロック図である。
【図８】  本発明の遠隔手続管理装置の第２の実施の形態において手続仕様公開部２７−１〜Ｍが出力するハイパーテキストの一例の説明図である。
【図９】  本発明の遠隔手続管理装置の第２の実施の形態における束縛置換部２３の動作の一例を示すフローチャートである。
【図１０】  本発明の遠隔手続管理装置の第２の実施の形態における手続実行部２８−１〜Ｍの動作の一例を示すフローチャートである。
【図１１】  本発明の遠隔手続管理装置の第１の実施の形態における束縛要求処理部２９−１〜Ｍの動作の一例を示すフローチャートである。
【図１２】  本発明の遠隔手続管理装置の第２の実施の形態において手続仕様公開部２７−１が保持するハイパーテキストの一例の説明図である。
【図１３】  本発明の遠隔手続管理装置の第２の実施の形態における具体的な動作の一例においてやりとりされる一部のデータの一例の説明図である。
【図１４】  本発明の遠隔手続管理装置の第２の実施の形態における具体的な動作の一例においてやりとりされる一部のデータの一例の説明図（続き）である。
【図１５】  本発明の遠隔手続管理装置の第２の実施の形態における具体的な動作の一例においてやりとりされる一部のデータの一例の説明図（続き）である。
【符号の説明】
１…遠隔手続クライアント部、２…遠隔手続サーバ部、１１…通信部、１２…ユーザ入力部、１３…手続呼出式生成部、１４…応答解析部、１５…ユーザ出力部、１６…メッセージ生成部、１７…ハイパーテキスト解析部、２１…通信部、２２…手続呼出式解析部、２３…束縛置換部、２４…遠隔手続検索部、２５−１〜Ｍ…遠隔手続保持部、２６−１〜Ｍ…属性保持部、２７−１〜Ｍ…手続仕様公開部、２８−１〜Ｍ…手続実行部、２９−１〜Ｍ…束縛要求処理部、３０…メッセージ解析部。
【図１】
0003904037.tif 000002
【図２】
0003904037.tif 000003
【図３】
0003904037.tif 000004
【図４】
0003904037.tif 000005
【図５】
0003904037.tif 000006
【図６】
0003904037.tif 000007
【図７】
0003904037.tif 000008
【図８】
0003904037.tif 000009
【図９】
0003904037.tif 000010
【図１０】
0003904037.tif 000011
【図１１】
0003904037.tif 000012
【図１２】
0003904037.tif 000013
【図１３】
0003904037.tif 000014
【図１４】
0003904037.tif 000015
【図１５】
0003904037.tif 000016