(57)【要約】【課題】本発明の目的は、ユーザが利用したいと考えるデータ型を選択できるような機構を提供すること、及び、その機構をユーザが利用しやすい方法を提供することである。【解決手段】プロキシプログラム生成ツールにおいて、インタフェース定義言語Ａのあるデータ型に対応するプログラム言語Ｂのデータ型を指定する情報を外部から読み込む機構を付加する。さらに、インタフェース定義言語Ａで定義された個々のデータに対応するプログラム言語Ｂのデータ型を指定するための情報を外部から読み込む機構を付加する。プロキシプログラム生成ツールでは、外部から読み込んだ設定情報に従ってプロキシプログラムを生成する。【選択図】  図４
2004178470.tif 000002
【特許請求の範囲】
【請求項１】
インタフェース定義を読み取り、インタフェース定義のデータ型に対応するプロキシプログラムのデータ型の設定情報を読み取り、前記設定情報に従ってプロキシプログラムを生成することを特徴とするプロキシプログラム生成方法。
【請求項２】
インタフェース定義を読み取り、インタフェース定義の個々のデータに対応するプロキシプログラムのデータ型の設定情報を読み取り、前記設定情報に従ってプロキシプログラムを生成することを特徴とするプロキシプログラム生成方法。
【請求項３】
インタフェース定義を読み取り、インタフェース定義のデータ型に対応するプロキシプログラムのデータ型設定情報を読み取り、インタフェース定義の個々のデータに対応するプロキシプログラムのデータ型設定情報を読み取り、インタフェースの個々のデータに対応するプログラムのデータ型の設定情報がある場合には、前記設定情報に従い生成するプロキシプログラムのデータ型を生成し、前記設定情報のない場合には、インタフェースのデータ型に対応するプロキシプログラムのデータ型の設定情報に従ってプロキシプログラムのデータ型を生成する、データ型の生成方法。
【請求項４】
インタフェース定義を読み取り、インタフェース定義の個々のデータに対応するプロキシプログラムのデータ型の候補の一覧を表示し、前記データ型の候補に対するユーザからの選択を受け取り、前記選択に従ってインタフェース定義の個々のデータに対応するプロキシプログラムのデータ型の設定情報を生成する、設定情報生成方法。
【請求項５】
プログラム定義を読み取り、プログラム定義のデータ型に対応するインタフェース定義の設定情報を読み取り、前記設定情報に従ってインタフェース定義を生成することを特徴とするインタフェース定義生成方法。
【請求項６】
プログラム定義を読み取り、プログラム定義の個々のデータに対応するインタフェース定義のデータ型の設定情報を読み取り、前記設定情報に従ってインタフェース定義を生成することを特徴とするインタフェース定義生成方法。
【請求項７】
プログラム定義を読み取り、プログラム定義のデータ型に対応するインタフェース定義のデータ型の設定情報を読み取り、プログラム定義の個々のデータに対応するインタフェース定義のデータ型の設定情報を読み取り、プログラム言語の個々のデータに対応する設定情報がある場合にはそれに従ってインタフェース定義のデータ型を生成し、そうでない場合には、プログラム言語のデータ型に対応するインタフェース言語のデータ型の設定情報に従ってデータ型を生成するデータ型の生成方法。
【請求項８】
プログラム定義を読み取り、プログラム定義の個々のデータに対応するインタフェース定義のデータ型の候補の一覧を表示し、前記データ型の候補に対するユーザからの選択を受け取り、前記選択に従ってプログラム定義の個々のデータに対応するインタフェース定義のデータ型の設定情報を生成する、設定情報生成方法。
【請求項９】
請求項１または請求項２または請求項３または請求項４または請求項５または請求項６または請求項７または請求項８の方法を用いるプログラミングツール。
【請求項１０】
請求項９記載のソフトウエアを収める記録媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、プログラミングツールに関する。特に、インタフェース定義からプロキシプログラムを生成する方法及び、プログラムからインタフェース定義を生成する方法に関する。
【０００２】
【従来の技術】
サーバとクライアント間で通信するプログラムにおいて、サーバとクライアント間の通信プロトコルの定義を、あるインタフェース定義言語Ａで記述する。インタフェース定義言語Ａで記述されたインタフェース定義からサーバと通信を行うクライアントを簡単に作成するためにプロキシプログラム生成ツールを用いてプロキシプログラムを生成するという方法が用いられている。プロキシプログラムとは、クライアントプログラムからの呼び出しをサーバの通信プロトコルに変換してサーバプログラムを呼び出し、サーバから戻された実行結果をクライアントプログラムが受け取れるように変換してクライアントプログラムに戻すプログラムである。プロキシプログラムは、クライアントプログラムを記述するプログラム言語Ｂとして受け取ったデータを内部でサーバの受け取る通信プロトコルに変換し、サーバから受け取った通信プロトコルをプログラム言語Ｂのデータに変換する。プロキシプログラムを用いることによって、クライアントプログラムは、データの変換などの作業を行う必要がなくなる。
【０００３】
このようなプロキシプログラムを生成する場合に、クライアントに用いるプログラム言語Ｂの言語仕様によっては、インタフェース定義Ａで表現されるデータ型がプログラム言語Ｂで表現されるデータ型として複数の候補に変換可能な場合がある。データ型とは、プログラム言語やインタフェース定義で定義されるデータがその定義したプログラム言語やインタフェース定義においてどのような意味を持つデータとして扱われるかを指定する方法である。従来においては、このような場合には、インタフェース定義Ａのデータ型から生成できるプログラム言語Ｂのデータ型を一種類に制限していた。例えば、インタフェース記述言語のデータ型として、ＸＭＬ  Ｓｃｈｅｍａのｄｅｃｉｍａｌ型が入力された場合には、クライアントプログラム記述言語としてＣＯＢＯＬを用いる場合には、Ｓ９（１３）Ｖ９（５）のデータ型しか利用することができず、  この場合に候補となりえるＳ９（１６）Ｖ９（２）のデータ型としては利用することができなかった。インタフェース定義からプロキシプログラムを生成する例として、ＩＤＬからＪａｖａ（登録商標）への生成をあげることができる（下記の非特許文献１）。この変換では、ＩＤＬの型ｕｎｓｉｇｎｅｄ  ｌｏｎｇからＪａｖａ（登録商標）の型へのマッピングがｉｎｔへの一種類と限定されているが、この他にもＪａｖａ（登録商標）のｌｏｎｇ型へマッピングすることが可能である。
【０００４】
また、プログラム言語Ｂで記述されたプログラムをサーバプログラムとして利用できるようにする場合、サーバが受け取る通信プロトコルをインタフェース定義言語Ａによってクライアントプログラムに示す必要がある。この場合、プログラム言語Ｂによって記述されたデータ型をインタフェース定義言語Ａによって表されるデータ型で表現する場合に、あるプログラム言語Ｂに対するデータ型に対してインタフェース定義言語Ａの複数のデータ型が候補となりえる場合が存在した。この場合に、インタフェース定義言語Ａで記述されたサーバのインタフェースの定義をプログラム言語Ｂで記述されたプログラムからインタフェース定義生成ツールによって自動的に生成する場合には、あるプログラム言語Ｂのデータ型から生成されるインタフェース定義言語Ａのデータ型を一種類に限定していた。例えば、ＣＯＢＯＬで記述されたプログラムをサーバとする場合、Ｘ（２５６）というデータ型が現れた場合には、ＸＭＬ  Ｓｃｈｅｍａのｓｔｒｉｎｇ型として生成されていた。しかし、この場合には、他にもｄａｔｅＴｉｍｅ型やｂａｓｅ６４ｂｉｎａｒｙ型などが対応する型の候補になりえていたがそれをユーザが指定する方法がなかった。
【０００５】
なお、プログラム言語にデータ型を変換する公知例としては、下記の特許文献１がある。
【０００６】
【非特許文献１】
「Ｊａｖａ（登録商標）＆ＣＯＲＢＡ  Ｃ／Ｓプログラミング第二版」ロバート・オーファン、ダン・ハーキー著
【特許文献１】
特開平１１−２９６３５９号公報
【０００７】
【発明が解決しようとする課題】
このようなツールの構成では、インタフェース定義のデータ型とプログラム言語のデータ型の対応を一対一にしているため、クライアントが利用したいデータ型とツールが生成したデータ型が一致しない場合がありうる。また、サーバにおいてインタフェース定義として利用したい型とツールが生成したインタフェース定義の型が一致しないことがありえる。
【０００８】
本発明の目的は、（１）ユーザが利用したいと考えるデータ型を選択できるような機構を提供すること、及び、（２）１のデータ型選択機構をユーザが利用しやすい方法を提供することである。
【０００９】
【課題を解決するための手段】
課題を解決するための手段として以下の方法を用いる。
１．プロキシプログラム生成ツールにおいて、インタフェース定義言語Ａのあるデータ型Ｔｉからプログラム言語Ｂのデータ型Ｔｐへのマッピングが標準で与えられている場合に、プログラミング言語Ｂのデータ型をＴｐ’として指定する情報を外部から読み込む機構を付加する。さらに、インタフェース定義言語Ａで定義された型Ｔｉのパラメータや変数など個々のデータｄに対応するプログラム言語Ｂのデータ型を個別指定するための情報Ｔｐ’（ｄ）を外部から読み込む機構を付加する。これにより、型Ｔｐのデータは個別指定の無い場合にはＴｐ’へ、個別指定のある場合はＴｐ’（ｄ）へマッピングされる。プロキシプログラム生成ツールでは、外部から読み込んだこれらの設定情報に従ってプロキシプログラムを生成する。
２．インタフェース定義言語Ａによって定義されたパラメータや変数など個々のデータに対応するプログラム言語Ｂでのデータ型の指定を容易にするために、インタフェース定義の個々のデータに対して変換可能なプログラム言語Ｂのデータ型を候補として一覧表示し、表示した候補に対するユーザの選択を受け取って、インタフェース定義の個々のデータに対応するプログラム言語Ｂのデータ型を設定する設定情報を生成する。
３．インタフェース定義を生成するツールにおいて、プログラム言語Ｂのあるデータ型Ｔｐからインタフェース定義言語Ａのデータ型Ｔｉへのマッピングが標準で与えられる場合に、インタフェース定義言語Ａのデータ型をＴｉ’として指定する情報を外部から読み込む機構を付加する。さらに、プログラム言語Ｂで定義された型Ｔｐのパラメータや変数などの個々のデータｄに対するインタフェース定義言語Ａのデータ型Ｔｉ’（ｄ）を指定する情報を読み込む機構を付加する。これにより、型Ｔｐのデータは個別指定の無い場合は、Ｔｉ’へ個別指定のある場合はＴｉ’（ｄ）へマッピングされる。インタフェース定義生成ツールではこれらの情報に従ってインタフェース定義言語Ａでのインタフェース定義を生成する。
４．プログラム言語Ｂによって定義されたパラメータや変数などの個々のデータとそれに対応するインタフェース定義言語Ａでのデータ型の指定を容易にするために、プログラム定義の個々のデータに対して変換可能なインタフェース定義言語Ａ  のデータ型を候補として一覧表示し、表示した候補に対するユーザの選択を受け取って、プログラム定義の個々のデータに対応するインタフェース定義言語Ａのデータ型を設定する設定情報を生成する。
【００１０】
【発明の実施の形態】
以下、本発明の実施例を、図面を参照しつつ説明する。なお、これにより本発明が限定されるものではない。
【００１１】
本発明を利用するプログラミングツールのプログラムは図１に示すような計算機上で動作する。図１の計算機はプロセッサ１０１と主記憶１０２、バス１０３、ディスク装置１０４、ＣＤ−ＲＯＭドライブ１０５を有する。そして、記録媒体の例であるＣＤ−ＲＯＭ１０６からＣＤ−ＲＯＭドライブ１０５を介してプログラミングツールのプログラムをディスク装置１０４にとりこむ。そして、ディスク装置１０４からプログラミングツールのプログラムなどを、バス１０３を介して主記憶１０２にとりこみ，プロセッサ１０１で実行する。
【００１２】
本発明を利用するプログラミングツールの構成を図２に示す。本発明のプログラミングツール２０１はインタフェース定義２０４からプログラム言語Ｂのプロキシプログラム２０３を生成する過程において、インタフェース定義のデータ型に対応するプログラム言語Ｂのデータ型の設定情報２０５及び、インタフェース定義の個々のデータに対応するプログラム言語Ｂのデータ型設定情報２０６を読み込んでプログラム言語Ｂのデータ型を決定する。インタフェース定義２０４の例として図５のインタフェース定義５０１を、プロキシプログラムのクライアントに見えるインタフェースの例として図６の６０１を示す。図５のインタフェース定義５０１は、タグと終了タグからなるデータを用いて表す。タグとは＜と＞で囲まれたデータで終了タグとは＜／と＞に囲まれたデータである。タグの＜の直後に現れるデータがタグの名前で、その後タグに対する属性が続きタグの終了を示す＞で閉じられる。インタフェース定義５０１で利用されているタグの名前としては、ｃｏｍｐｌｅｘＴｙｐｅとｓｅｑｕｅｎｃｅとｅｌｅｍｅｎｔである。またタグに対する属性は属性名とその値を等号で結んで指定する。例えばｎａｍｅ＝”ａ”は属性名ｎａｍｅを値ａに指定している。このタグづけによるデータ構造はネストすることが可能で、その場合には、タグと終了タグが一対一に対応するようにできていなければならない。タグｃｏｍｐｌｅｘＴｙｐｅは構造を持ったデータを指定するために用いられ、このタグの内側に宣言されたデータはひとつの構造の内側のデータとなる。このタグのｎａｍｅ属性の値は構造を持ったデータの名前となる。タグｓｅｑｕｅｎｃｅはデータの一連の並びを示す。タグｅｌｅｍｅｎｔはデータの要素を示し、ｎａｍｅ属性の値がデータの名前で、ｔｙｐｅがそのデータに対する型の指定である。このようなインタフェース定義言語を用いて構造を持ったデータを定義することを可能としている。
【００１３】
図６の６０１では、０１という最初の数字がデータのネストのレベルを表す。ネスとレベルは数字が大きいほど深くなる。その後に個々のデータの名前が現れ、次にそれに対応するデータの型を指定する。データの名前の後にデータの型の指定がないものは、その下のレベルにネストしたもの全体の構造を表す名前を指定するものである。
【００１４】
以下課題を解決するための手段の１の実施例について説明する。本発明のプログラミングツール２０１がプログラム言語Ｂのデータ型を決定する過程について、図３を用いて説明する。プログラミングツール２０１は処理３０１でインタフェース定義２０４を入力として受け取り、中間表現に変換する。この処理は、参考文献Ｍｏｄｅｒｎ  Ｃｏｍｐｉｌｅｒ  Ｉｍｐｌｅｍｅｎｔａｔｉｏｎ  ｉｎ  Ｊａｖａ（登録商標）（Ａｎｄｒｅｗ  Ａｐｐｅｌ著）記載の処理を用いる。続く処理３０３において設定情報２０５及び２０６を読み取り、これらの情報に従って中間表現を変更する。処理３０３は具体的には中間表現に図４に示す処理を適用することで中間表現を変更する。
【００１５】
図４の処理は，中間表現を変更する過程について説明した図である。
【００１６】
図４の処理を行うために内部で図９の９０１に示すようなテーブルを持つ。このテーブルは処理を行うまえにすべてのデータが初期化され、処理中に必要となるデータを保持するのに利用する。図４の処理ではまず、処理４０１で設定情報２０５を読み取り、型変換テーブルへの記入を行う。ここでは、設定情報２０５の例として、図８の８０１に示す設定情報を読み込むものとする。設定情報８０１はタグと値と終了タグからなるデータである。タグとは＜と＞で囲まれたデータで、終了タグとは＜／と＞で囲まれたデータである。これらに囲まれたデータをタグの名前と呼ぶ。また、タグと終了タグに囲まれたデータがタグの名前に対応する値である。インタフェース定義Ａのデータ型に対して、プログラム言語Ｂのデータ型を設定するために、８０１の設定情報では、タグの名前にインタフェース定義Ａのデータ型が、値にプログラム言語Ｂのデータ型が記入されている。このとき処理４０１で設定情報８０１の記入を行う型変換テーブルの例は、図１０のテーブル１００１である。型変換テーブルとはインタフェース定義Ａの型をプログラム言語Ｂのどの型に変換するかを記述したテーブルで、ツールのデフォルトの変換規則に従った初期値を持つ。テーブル１００１では、インタフェース定義Ａのデータ型を欄１００２に記述し、プログラム言語Ｂのデータ型を欄１００３に記述する。設定情報８０１をテーブル１００１に記入する場合には、設定情報８０１のタグの名前が欄１００２の値と一致するフィールドを探し、そのフィールドの欄１００３にタグの値を記入することでテーブル１００１を更新する。テーブル１００１への記入が終了したら、処理４１３において、中間表現に型変換テーブルの情報を記入する。中間表現はツリー構造からできていて、図１１示す中間表現１１０１の例のようになっている。図１１の中間表現は図５のインタフェース定義５０１に対応するものである。中間表現１１０１は、１１０２と１１０６に示されるｔｙｐｅ欄がｃｏｍｐｌｅｘのノードと１１０４と１１０５、１１０８及び１１０９に示されるｔｙｐｅ欄がｓｉｍｐｌｅのノードおよび、１１０３と１１０７で示されるテーブルから成り立っている。Ｔｙｐｅ欄がｃｏｍｐｌｅｘであるノード１１０２及び１１０６は名前欄とテーブルへのポインタを持ち、名前欄にインタフェース定義から読み取った名前を記入し、テーブル欄へはテーブルへのポインタを持つ。テーブル欄は１１０２のノードの場合は１１０３のテーブルへのポインタを持ち、１１０６のノードの場合は１１０７のテーブルへのポインタを持つ。テーブル１１０３及び１１０７はｃｏｍｐｌｅｘノードの子ノードを保持するためのテーブルで、テーブルのサイズ及び、子ノードへのポインタをサイズの数だけもつ。ｔｙｐｅ欄がｓｉｍｐｌｅのノードでは、名前欄とデータ型Ａの欄およびデータ型Ｂの欄を持つ。データ型Ａの欄にはインタフェース定義２０４から読み取ったインタフェース定義言語Ａの型が記入してある。この中間表現を先頭から再帰的に読み取り、ｔｙｐｅがｓｉｍｐｌｅのノードが出現したら、ノードのデータ型Ａの欄を調べ、テーブル１００１のインタフェースの定義型の欄１００２のインタフェース定義Ａのデータ型の欄に一致するプログラム言語Ｂのデータ型１００３を読み取り、そのデータをノードのデータ型Ｂの欄に書き込む。中間表現のすべてのノードに対して処理を終えると、設定情報２０５で読み込んだ情報についてすべての中間表現に対して反映したことになる。次に処理４０２に進む。処理４０２では９０１のポインタＡを設定情報２０６の先頭に設定する。設定情報２０６はタグと値と終了タグからなるデータであり、その具体例として、図７に示す設定情報７０１を示す。設定情報７０１のタグの名前はインタフェース定義の個々のデータの名前となっていて、タグのすぐ次にタグが出現するときは外側のタグのデータないに内側のタグのデータがネストした構造を表している。タグの後ろがタグでない場合には、そのタグの名前のデータに対する、データ型の設定が記載されている。次に処理４０３に進み、９０１のポインタＢを中間表現の一番上の先頭ノードにセットし深さを０に設定する。処理４０４においてポインタＡの位置から設定情報２０６を読み取る。判断４０８においてタグが出てきた場合には処理４０５に進む。処理４０５ではタグの名前とノードの名前が一致する中間表現のノードをポインタＢの指すノードの子ノードから探す。中間表現１１０１の場合は、子ノードは現在のノードのｔｙｐｅがｃｏｍｐｌｅｘの時にはテーブルポインタの指すテーブルが指しているノードで、現在のノードのｔｙｐｅがｓｉｍｐｌｅの時は、存在しない。名前が一致するノードを見つけたら、処理４０９に進み、見つけた子ノードに移動し、深さに１を足す。もし見つからなかった場合にはエラーとなり終了する。次に処理４１０に進み、ポインタＡの位置を現在のタグが終了するまで進め、処理４０４に処理を進める。次に、判断４０８においてタグが出てこなかった場合の処理について説明する。この場合、判断４１４において深さを調べ、深さが０の場合は処理を終了する。深さが０でない場合には、処理４０６において設定情報２０６内で終了タグが出現するまでの情報を記憶域に記憶して、ポインタＡを終了タグの直前まで進める。判断４０７に進み、終了タグのタグ名がポインタＢの指すノードの名前に一致するかを調べる。一致しない場合には処理を終了し、一致する場合には、処理４１１に進む。処理４１１では、ポインタＡを終了タグが終了するまで進め、記憶域の情報をポインタＢの指すノードのデータ型Ｂの欄に記入する。処理４１２に進み、ポインタＢを現在のノードの親ノードに移動し、記憶域の情報をクリアする。中間表現１１０１の場合には、親ノードとは、現在のノードを指しているテーブルを指しているノードである。次に、処理４０４に戻る。以上の処理を処理が終了するまで続けることによって設定情報２０６の情報を中間表現１１０１に記入する。図３に戻り、処理３０２において変更された中間表現１１０１をプロキシプログラム２０３に変換する。この処理も前記参考文献に従う。このような処理によって、設定情報を利用して中間表現を作成し、設定情報に基づいたプロキシプログラムを作成できる。
【００１７】
次に課題を解決するための手段２についての実施例を説明する。本発明の設定情報生成ツールは、図１４に示す構成をとる。この構成は図２のプログラミングツールの出力が設定情報２０６に変わったものである。本発明のプログラミングツールが設定情報２０６を生成する過程を図１５に示す。図１５では、処理３０１によって中間表現を生成する。その後処理１５０３によって中間表現の個々のデータに対し、プログラミング言語Ｂの変換先のデータ型の候補一覧を表示し、ユーザの選択により中間表現を変更する。次に、処理１５０２に進み、中間表現から設定情報２０６を生成する。
【００１８】
図１６は処理１５０３の手順について示したものである。処理１５０３をはじめるまえに、インタフェース定義Ａのデータ型に対応するプログラミング言語Ｂのデータ型の変換候補一覧を持ったテーブルを作成する。候補一覧テーブルの具体例として図１２のテーブル１２０１を示す。テーブル１２０１はインタフェース定義Ａの型の欄１２０２とプログラム言語Ｂの型の欄１２０３からなる。欄１２０２にはインタフェース定義の型が記述され、対応する欄１２０３には、そのインタフェース定義から生成できるプログラム言語Ｂの型が記入されている。例えば、欄１２０２がｉｎｔとなる場合はこのテーブルでは、２つあり、それぞれ欄１２０３には、Ｓ９（９）  ｂｉｎａｒｙとＳ９（９）が記入されている。この変換候補テーブルの作成の方法としては、ツールの外部から設定として与える方法および、ツール内部にツールを作成したときに保持しておく方法がある。
【００１９】
処理１５０３では、中間表現の先頭から処理を開始する。処理１６０１において中間表現のノードを一つ再帰的にたどる。処理１６０８に進みそのノードの名前を表示し、そのノードにデータ型情報があるかを調べる。判断１６０９に進み、データ型情報がある場合には、このノードについてデータ型を決定する必要があるので、処理１６０２に進み、そうでない場合には、処理１６０１に戻る。処理１６０２では、ノードインタフェース定義言語の型を読み取り、その型に対する変換候補をテーブルを参照して調べる。判断１６０３に進み、複数の変換候補があるかを調べる。複数の変換候補がある場合には、処理１６０４に進み、プログラム言語Ｂのデータ型の候補の一覧を表示し、候補に対するユーザの選択を受け付ける。次に処理１６０５に進み選択されたデータ型を中間表現に記入する。次に判断１６０７に進み、たどるべきノードがなかったら処理を終了し、まだある場合には、処理１６０１に戻る。判断１６０３において変換候補がひとつしかない場合には、処理１６０６に進み候補を中間表現に記入する。そして判断１６０７にすすむ。以上の処理を中間表現すべてに対して行う。
【００２０】
ここで、処理１６０４においてユーザからの選択を受け取るタイミングをかえた場合の実施例について示す。処理１６０４においてユーザからの選択を受け取らずに、中間表現のすべてのノードに関しての変換候補を表示し終わった後でユーザからの選択を受け取り、その後中間表現に記入するという実施方法も可能である。この場合、処理１６０５は行わずに、すべての中間表現に関しての候補を表示する。そしてその後、候補からの選択を受け取ったときに中間表現に記入する。
【００２１】
図１５に戻り、処理１５０２を行う。処理１５０２では、中間表現の先頭から中間表現をたどり設定情報２０６に変換する。例えば、中間表現１１０１から設定情報７０１を生成する場合の処理について説明する。この場合、まず、ノードの名前をタグとして設定情報７０１に記入する。そして、現在のノードのｔｙｐｅがｃｏｍｐｌｅｘなら、テーブルへのポインタの指すテーブルを調べその子要素について処理を行う。現在のノードのｔｙｐｅがｓｉｍｐｌｅなら、データ型Ｂの欄のデータを設定情報７０１に記入し、ノードの名前の終了タグを記入する。そして、その親ノードに戻り、他にも子ノードが存在するならそれぞれの子ノードについて同じ処理を行う。すべての子ノードに対して処理を終えたら、その親ノードに戻る。親ノードに戻る場合に、現在のノードの名前の終了タグを設定情報７０１に記入する。以上の処理によって、設定情報２０６を作成する。
【００２２】
次に課題の解決するための手段３について実施例を示す。サーバプログラム１３０３からインタフェース定義２０４を作成する方法について説明する。本発明を利用するプログラミングツールの構成を図１３に示す。プログラミングツールは本発明のプログラム言語Ｂからインタフェース定義言語Ａで定義されたインタフェース定義を生成するプログラミングツール２０１から構成されている。本発明のプログラミングツール２０１はサーバプログラム１３０３をインタフェース定義言語Ａのインタフェース定義２０４に変換する過程において、プログラム言語Ｂのデータ型に対応するインタフェース定義言語Ａのデータ型の設定情報１３０５及び、プロキシプログラムの個々のデータに対応するインタフェース定義言語のデータ型設定情報１３０６を読み込んでインタフェース定義言語Ａのデータ型を決定する。この処理の詳細は図３に示す方式に類似しているのでこれを用いて説明する。まず、プロキシプログラム定義２０３を中間表現１１０１に変換する。次に設定情報１３０５および設定情報１３０６を読み取り、これらの情報に従って、中間表現を変更する。そして変更された中間表現をインタフェース定義２０４へと変換する。この詳細は図４に示す方法を用いる。この場合には、設定情報２０６の代わりに設定情報１３０６を読み取り、設定情報２０５の代わりに設定情報１３０６を読み取る以外は処理は同じものとなる。
【００２３】
次に課題を解決するための手段４の実施例について説明する。この実施例は解決方法２の実施例に類似しているのでそれを参照しながら説明する。ツールの処理の概要は、図１５において入力となるインタフェース定義２０４をプログラム定義２０４に変更し、出力となる設定情報２０６を設定情報１３０６に変更したものとなる。処理１５０３では、プログラミング言語Ｂでの候補を表示する代わりにインタフェース定義での候補を表示する。図１６の処理は同じであるので省略する。
【００２４】
【発明の効果】
以上のべたように、本発明によれば、プロキシプログラム、及びインタフェース定義の生成においてユーザが利用したいと考えるデータ型の選択機構が利用できるようになると共に、その選択をユーザが簡便に行うことが可能となる。
【図面の簡単な説明】
【図１】実行機械の例。
【図２】プログラミングツールの構成例。
【図３】設定情報に従ったプロキシプログラム生成の例。
【図４】設定情報に従った中間語の変更方法の例。
【図５】インタフェース定義言語Ａのインタフェース定義例。
【図６】プログラム言語Ｂのプロキシプログラムの例。
【図７】インタフェース定義言語Ａの各データに対応するプログラム言語Ｂのデータ型の設定例。
【図８】インタフェース定義言語Ａのデータ型に対応するプログラム言語Ｂのデータ型の設定例。
【図９】ツール内部データの例。
【図１０】インタフェース定義Ａのデータ型に対応するプログラム言語Ｂのデータ型のテーブル例。
【図１１】中間表現の例。
【図１２】インタフェース定義Ａのデータ型に対応するプログラム言語Ｂのデータ型のテーブル例。
【図１３】設定情報に従ったインタフェース定義生成の例。
【図１４】プログラミングツールの構成例。
【図１５】プログラミングツールの構成例。
【図１６】候補一覧を表示して設定情報を生成する例。
【符号の説明】
２０１…プログラミングツール、２０５…インタフェース定義のデータ型に対応するプログラム言語のデータ型情報、２０６…インタフェース定義のデータに対応するプログラム言語のデータ型情報、４０１…テーブルを作成する処理、４０２…ポインタＡを設定する処理、４０３…ポインタＢとノードの深さを設定する処理、４０４…設定情報２０６から読み取る処理、４０５…ノードを検査する処理、４０６…記憶域に情報を記憶する処理、４０７…終了タグの名前がノードの名前に一致するか判断する処理、４０８…タグが出現したか判断する処理、４０９…ノードを移動し、深さをインクリメントする処理、４１０…ポインタＡを移動する処理。
【図１】
2004178470.tif 000003
【図２】
2004178470.tif 000004
【図３】
2004178470.tif 000005
【図４】
2004178470.tif 000006
【図５】
2004178470.tif 000007
【図６】
2004178470.tif 000008
【図７】
2004178470.tif 000009
【図８】
2004178470.tif 000010
【図９】
2004178470.tif 000011
【図１０】
2004178470.tif 000012
【図１１】
2004178470.tif 000013
【図１２】
2004178470.tif 000014
【図１３】
2004178470.tif 000015
【図１４】
2004178470.tif 000016
【図１５】
2004178470.tif 000017
【図１６】
2004178470.tif 000018