(57)【特許請求の範囲】
【請求項１】
ディスク装置に予め記憶されている、複数のプログラム間の呼び出し規則を記述したものであるＩＤＬ（インターフェース定義言語）のソース情報を基に、前記プログラムのインターフェース機能を実現するサブプログラムを生成するプログラム開発支援装置において、
前記プログラムを記述するプログラム言語であるCOBOL言語で用いるデータ型、および、該データ型を予め定めた規則に従って記述したものである型定義名称が、予め対応付けて登録される特殊テーブルと、IDLの型情報とCOBOL言語の型情報とが予め対応付けて登録されている標準テーブルと、を有する型変換テーブルを記憶した記憶部と、
前記ディスク装置に記憶されている前記ＩＤＬのソース情報から、前記予め定めた規則に従って記述されている型定義名称を抽出し、前記抽出した型定義名称を、前記型変換テーブルの特殊テーブルを用いて、前記COBOL言語のデータ型に変換し、該データ型をコード生成情報として前記ディスク装置に登録し、前記登録されたコード生成情報を用いて、前記サブプログラムを生成するサブプログラム生成部と、
を備えたことを特徴とするプログラム開発支援装置。
【請求項２】
請求項１記載のプログラム開発支援装置において、
前記予め定めた規則に従って記述された型定義名称は、前記ＩＤＬのソース情報内の型定義宣言文中から抽出される
ことを特徴とするプログラム開発支援装置。
【請求項３】
請求項１記載のプログラム開発支援装置において、
前記予め定めた規則に従って記述された型定義名称は、データの表示型、長さ、および、用途を示す情報を有する
ことを特徴とするプログラム開発支援装置。
【請求項４】
ディスク装置に予め記憶されている、COBOL言語により記述されたプログラムの原始コードを基に、該プログラムの呼び出し規則を記述した、ＩＤＬ（インターフェース定義言語）のソース情報を生成するプログラム開発支援装置において、
前記プログラムを記述するプログラム言語であるCOBOL言語で用いるデータ型、および、該データ型を予め定めた規則に従って記述したものである型定義名称が、予め対応付けて登録される特殊テーブルと、IDLの型情報とCOBOL言語の型情報とが予め対応付けて登録されている標準テーブルと、を有する型変換テーブルを記憶した記憶部と、
前記プログラムが受渡しするデータ型の内の、前記特殊テーブルに登録されているデータ型を、前記特殊テーブルを用いて、型定義名称に変換し、該型定義名称をコード生成情報として前記ディスク装置に登録し、前記登録されたコード生成情報から前記ＩＤＬのソース情報を生成するＩＤＬソース生成部と、
を備えたことを特徴とするプログラム開発支援装置。
【請求項５】
請求項４記載のＩＤＬプログラム開発支援装置において、
前記変換のなされた型定義名称は、前記ＩＤＬのソース情報内の型定義宣言文中に設定されることを特徴とするプログラム開発支援装置。
【請求項６】
請求項４記載のプログラム開発支援装置において、
前記予め定めた規則に従って記述された型定義名称は、データの表示型、長さ、および、用途を示す情報を有する
ことを特徴とするプログラム開発支援装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ＩＤＬ（インターフェース定義言語）を使用するプログラム開発における支援ツールに関する。
【０００２】
【従来の技術】
計算機のプログラム開発では、プログラム（またはデータ）を機能ブロックの単位に作成することがある。この手法によれば、プログラムの開発効率を向上させ、プログラムの再利用を可能とすることができる。ただし、目的の処理を複数のプログラム処理を連携させて実現する場合には、各プログラム間の呼出し規則などのインターフェースを予め定義する必要がある。このインターフェースの定義には、ＩＤＬ（インターフェース定義言語）が用いられることがある。
【０００３】
ＩＤＬとしては、ＯＭＧ（Ｏｂｊｅｃｔ  Ｍａｎａｇｅｍｅｎｔ  Ｇｒｏｕｐ）が提案しているＣＯＲＢＡ（共通オブジェクト・リクエスト・ブローカー・アーキテクチャ）で用いられるＩＤＬが知られている。なお、ＣＯＲＢＡの言語マッピング仕様についての参考文献としては、ＯＭＧ発行の「Ｔｈｅ  Ｃｏｍｍｏｎ  Ｏｂｊｅｃｔ  Ｒｅｑｕｅｓｔ  Ｂｒｏｋｅｒ：  Ａｒｃｈｉｔｅｃｔｕｒｅ  ａｎｄ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ  Ｒｅｖｉｓｉｏｎ  ２．０，  Ｊｕｌｙ  １９９５  Ｕｐｄａｔｅｄ  Ｊｕｌｙ  １９９６」がある。また、ＣＯＲＢＡに関する一般的な背景についての参考文献として、小野沢 博文著 ソフト・リサーチ・センター発行の「分散オブジェクト指向技術 ＣＯＲＢＡ」がある。
【０００４】
ＣＯＲＢＡでは、ＩＤＬと、各種プログラム言語およびＩＤＬの間のマッピング仕様と、プログラム間の通信を管理するためのＯＲＢ（オブジェクト・リクエスト・ブローカ）とを規定している。開発者は、マッピング仕様に従って、各プログラムのインターフェースをＩＤＬで記述する。このＩＤＬソースを専用のコンパイラ（ＩＤＬコンパイラ）でコンパイルすることにより、クライアントプログラム用のスタブや、サーバプログラム用のスケルトンが生成される。ここで、スタブおよびスケルトンは、クライアントプログラムおよびサーバプログラムと、ＯＲＢとの仲介を行うためのサブプログラムである。
【０００５】
このようなＩＤＬを用いたプログラム開発には、さらに、異なる言語で記述されたプログラムの利用や、異なるアーキテクチャを持つ計算機で実行されるプログラムの利用が容易となるという利点がある。
【０００６】
以下では、ＣＯＲＢＡのＩＤＬコンパイラのように、ＩＤＬソースからスタブやスケルトンを生成する処理系を総称してＩＤＬ言語処理系と呼ぶ。また、既成のプログラムからＩＤＬソースを生成する処理系を総称してＩＤＬ生成系と呼ぶ。ＩＤＬ生成系は、既成のプログラムを流用して、他のプログラムと連携した処理を行わせる場合に有効である。
【０００７】
図８に、従来のＩＤＬ言語処理系の機能構成の一例を示す。
【０００８】
ＩＤＬ構文解析部１０２は、ＩＤＬソース１０１を入力とし、ＩＤＬの構文解析を行なって、解析情報１０３を出力する。ここで、解析情報１０３には、手続きやメソッドの名称、引数のデータ型、並びなど、プログラム間の呼び出し規則を規定するＩＤＬの情報が含まれる。
【０００９】
コード生成部１０４は、インターフェース情報解析部１０５、プログラムコード生成部１０６、および、型変換テーブル１０９から構成される。型変換テーブル１０９には、解析情報１０３に含まれるＩＤＬのデータ型の情報と、プログラムコード１０８に組み込まれるデータ型とが予め対応付けて格納されている。インターフェース情報解析部１０５は、型変換テーブル１０９を参照して、解析情報１０３内のＩＤＬのデータ型の情報を、スタブやスケルトンで使用するデータ型へ変換する。この変換結果を用いて、プログラムコード生成部１０６は、スタブ１０７やスケルトン１０８を生成する。
【００１０】
図９に、従来のＩＤＬ生成系の機能構成の一例を示す。
【００１１】
構文解析部２０２は、原始プログラム２０１を解析し、解析情報２０３を生成する。インターフェース情報抽出部２０４は、解析情報２０３から、手続やメソッドの名称、引数のデータ型、並びなどのインターフェース情報を抽出し、中間語２０５として出力する。ＩＤＬ生成系における型変換テーブル２０６には、中間語２０５に含まれるデータ型の情報と、ＩＤＬで使用されるデータ型の情報とが予め対応付けて格納されている。コード生成部２０７は、型変換テーブル２０６を参照して、中間語２０５内のデータ型の情報を、ＩＤＬソースで使用されるデータ型の情報に変換する。この変換結果を用いて、ＩＤＬ出力部２１１は、ＩＤＬの文法を満たすようにＩＤＬソース２１２を生成する。
【００１２】
一般に、異なる言語で記述されたプログラム間で、データの受け渡しを行う場合には、そのデータ型は、双方のプログラム言語で共通に利用できる型とする必要がある。このため、上述のＩＤＬ言語処理系およびＩＤＬ生成系でも、対象としている複数のプログラム言語（例えばＣ言語、Ｃ＋＋言語など）で共通に利用できるデータ型のみを処理できるようにしている。
【００１３】
【発明が解決しようとする課題】
上述の従来のＩＤＬ言語処理系およびＩＤＬ生成系では、対象としている複数のプログラム言語で共通に利用できないデータ型を処理できないため、アプリケーションプログラムによっては、スタブやスケルトン、ＩＤＬソースを正常に生成できないことがある。
【００１４】
このため、例えば、流用しようとする既成のアプリケーションプログラムで、ＩＤＬ生成系の処理できないデータ型の指定がなされる場合には、開発者は、流用するプログラムのインターフェース仕様を修正するか、呼び出し方法の変更を行なう働きをするラッパー（Ｗｒａｐｐｅｒ）関数を作成するなどの、人手による煩雑な作業を行う必要があった。
【００１５】
そこで、本発明の目的は、対象とするプログラム言語で記述されたプログラムで使用されるデータ型の制限なしに、そのプログラムのインタフェース機能を実現するサブプログラムを生成することのできるプログラム開発支援ツールを提供することにある。
【００１６】
また、本発明の他の目的は、対象とするプログラム言語で記述された任意のプログラムについて、上記プログラム開発支援ツールで処理可能なＩＤＬのソース情報を生成することのできるプログラム開発支援ツールを提供することにある。
【００１７】
【課題を解決するための手段】
上記課題を解決するため、本発明は、複数のプログラム間の呼び出し規則を記述したものであるＩＤＬのソース情報を基に、前記プログラムのインターフェース機能を実現するサブプログラム（例えばスタブやスケルトン）を生成するプログラム開発支援ツールにおいて、前記プログラムを記述するプログラム言語で用いるデータ型の型情報、および、該データ型を予め定めた規則に従って記述したものである型定義情報が、予め対応付けて登録される特殊テーブルを有する型変換テーブルと、前記ＩＤＬのソース情報から、前記予め定めた規則に従って記述されている型定義情報を抽出する手段と、抽出した型定義情報を、前記型変換テーブルを用いて、前記プログラム言語の型情報に変換し、該型情報をコード生成情報として登録する手段と、コード生成情報を用いて、前記サブプログラムを生成する手段とを備えることを特徴とするプログラム開発支援ツールを提供する。
【００１８】
また、本発明は、プログラムの原始コードを基に、該プログラムの呼び出し規則を記述した、ＩＤＬのソース情報を生成するプログラム開発支援ツールにおいて、前記プログラムを記述するプログラム言語で用いるデータ型の型情報、および、該データ型を予め定めた規則に従って記述したものである型定義情報が、予め対応付けて登録される特殊テーブルを有する型変換テーブルと、前記プログラムが受渡しするデータの型情報の内の、前記特殊テーブルに登録されている型情報を、前記型変換テーブルを用いて、型定義情報に変換し、該型定義情報をコード生成情報として登録する手段と、コード生成情報から前記ＩＤＬのソース情報を生成する手段とを備えることを特徴とするプログラム開発支援ツールを提供する。
【００１９】
【発明の実施の形態】
以下、本発明の実施形態に係るプログラム開発支援ツールについて、図面を用いて説明する。
【００２０】
本実施形態のプログラム開発支援ツールは、複数のアプリケーションプログラム（クライアントプログラムやサーバプログラム）が連携して動作する環境のプログラム開発を支援するためのものである。プログラム開発支援ツールの機能は、ＩＤＬソースからスタブやスケルトンを生成するＩＤＬ言語処理系と、既成のプログラムからＩＤＬソースを生成するＩＤＬ生成系とに分けられる。
【００２１】
図１に、プログラム開発支援ツールの実装される計算機１の構成を示す。図示のように、この計算機１は、プロセッサ２、ＲＡＭ３、ＲＯＭ４、ディスプレイ５、キーボード６、マウス７、内部ディスク装置８、外部ディスク装置９、および、各種インターフェース回路（Ｉ／Ｆ）１０〜１５を有する。ここで、内部ディスク装置としては例えばハードディスク装置、外部ディスク装置としては例えばＣＤ−ＲＯＭリーダやフロッピーディスク装置がそれぞれ用いられる。通信インターフェース回路１５は、ネットワーク１６に接続され、他の計算機との間でファイル（プログラム等）の受け渡しを行う。
【００２２】
プログラム開発支援ツールの機能は、外部ディスク装置８の記録媒体にプログラムとして格納され、このプログラムをプロセッサ２が実行することにより実現される。
【００２３】
本実施形態では、アプリケーションプログラムの作成言語としてＣＯＢＯＬ言語を対象としている。ＣＯＢＯＬ言語では、外部プログラムの引数のデータ型の定義を、その数値を１０進数で表現した時の桁数と、小数点位置と、用途とを使用して記述することができる。例えば、図２における宣言文５０１は、整数部４桁、小数部３桁のＰＡＣＫＥＤ１０進数形式の数値を定義するものである。このようなデータ型は、外部プログラムから呼び出される時の引数の定義で用いられることがある。ただし、このデータ型は、ＣＯＲＢＡのＩＤＬで記述することはできない。このため、従来は、開発者がインターフェース仕様の修正等の面倒な作業を行う必要があった。
【００２４】
本実施形態では、ＣＯＲＢＡのＩＤＬがサポートしているデータ型に一致するＣＯＢＯＬ言語のデータ型は従来通り記述し、サポートしていないＣＯＢＯＬ言語のデータ型はＩＤＬの構文要素の一つであるＴＹＰＥＤＥＦ構文を使用して記述する、新たな記述規則（以下、新記述規則）を用いる。なお、ＣＯＲＢＡのＩＤＬの文法では、ＴＹＰＥＤＥＦ構文内の型定義名称は、開発者が自由に設定することができるようになっている。
【００２５】
新記述規則では、ＣＯＲＢＡのＩＤＬで規定していないＣＯＢＯＬ言語のデータ型を、ＴＹＰＥＤＥＦ構文内の、予め定めたＩＤＬの型情報と、型定義名称とにより定義する。例えば図２の宣言文５０１の変数「ＡＲＧ」は、図３（ａ）に示すように、ＩＤＬの型情報「ｕｎｓｉｇｎｅｄ  ｌｏｎｇ」６００と、型定義名称「ＣＢＬ＿ＰＡＣＫ＿９＿４Ｖ９＿３」６０５とにより定義する。
【００２６】
型定義名称６０５の記述も、新記述規則に従ってなされる。具体的には、まず、記述言語がＣＯＢＯＬ言語であることを示す文字列「ＣＢＬ＿」６０１を記述する。続いて、用途に対応する文字列６０２を記述する。図３（ａ）の例では、「ＰＡＣＫＥＤ−ＤＥＣＩＭＡＬ」に対応する「ＰＡＣＫ＿」６０２を記述している。用途である「ＢＩＮＡＲＹ」に対しては「ＢＩＮ＿」、「ＤＩＳＰＬＡＹ」に対しては「ＤＩＳＰ」をそれぞれ記述するようにする。続いて、必要ならば符号付きを示す「Ｓ」（図示せず）を記述し、続けて数値であることを示す「９＿」６０３を記述する。続いて、１０進数の整数部の桁数（図の例では「４」）を記述し、必要ならば、小数部の桁数（「３」）を「Ｖ９＿」に続けて記述する（６０４）。
【００２７】
このようにして、ＣＯＲＢＡのＩＤＬがサポートしていないデータ型が記述される。以下で説明する本実施形態のＩＤＬ言語処理系およびＩＤＬ生成系は、上述の新記述規則に対応するための機能を備えている。
【００２８】
図４に、本実施形態のＩＤＬ言語処理系（以下、ＩＤＬコンパイラ）の機能構成を示す。
【００２９】
図示するＩＤＬコンパイラ７００は、構文解析部７０２およびコード生成部７０４を有する。構文解析部７０２およびコード生成部７０４は、計算機１のディスク装置８，９の記憶領域内のプログラムの実行により実現される機能である。
【００３０】
ＩＤＬコンパイラ７００は、ＩＤＬソース７０１を入力として、ＣＯＢＯＬ言語で記述されたスタブ７０７およびスケルトン７０８を出力する。また、この処理過程において解析情報７０３およびコード生成情報７１２を生成する。
【００３１】
ここで、ＩＤＬソース７０１は、対象のサーバプログラムのインターフェースを、新記述規則に従いＩＤＬで記述した情報である。なお、ＩＤＬソース７０１、解析情報７０３、コード生成情報７１２、スタブ７０７、および、スケルトン７０８は、計算機１のディスク装置にファイルとして格納される。
【００３２】
ＩＤＬコンパイラ７００は、新記述規則に対応するため、構文解析部７０２に組み込まれるＣＯＢＯＬ依存情報解析部７５１と、コード生成部７０４に組み込まれるＣＯＢＯＬ型情報変換部７５２と、型変換テーブル７０９に組み込まれる特殊テーブル７１１とを有する。
【００３３】
図５に示すように、型変換テーブル７０９の特殊テーブル７１１には、新記述規則により記述された型定義名称（６０５）と、ＣＯＢＯＬ言語の型情報とが予め対応付けて登録されている。型変換テーブル７０９の標準テーブル７１０には、ＩＤＬの型情報と、ＣＯＢＯＬ言語の型情報とが予め対応付けて登録されている。これにより、型変換テーブル７０９には、ＣＯＢＯＬ言語の全ての型情報が登録される。
【００３４】
なお、型変換テーブル７０９は、アクセスの高速化のため、ＩＤＬコンパイラ７００のプログラム中に配置される。もちろん、計算機１のディスク装置にファイルとして格納するようにしてもよい。
【００３５】
次に、ＩＤＬコンパイラ７００の処理について、図５を用いて説明する。
【００３６】
ＩＤＬソース７０１のコンパイルを指示するコマンドが、計算機１に入力されると、ＩＤＬコンパイラ７００の処理が開始される。まず、構文解析部７０２が、ＩＤＬソース７０１の構文解析を行なって、解析情報７０３を生成する。ＩＤＬのサポートするデータ型の定義は、従来と同様に処理され、解析情報７０３内に組み込まれる。
【００３７】
この時、ＣＯＢＯＬ依存情報解析部７５１は、図５に示すように、ＩＤＬソース７０１に記述されているＴＹＰＥＤＥＦ構文を調べ、先頭に「ＣＢＬ＿」を有する型定義名称（６０５）がある場合には、その型定義名称を、ＣＯＢＯＬ向け型情報として抽出し、解析情報７０３内に組み込む処理を行なう（Ｓ１０１，Ｓ１０２）。例えば図３（ａ）に示すＴＹＰＥＤＥＦ構文がある場合には、「ＣＢＬ＿ＰＡＣＫ＿９＿４Ｖ９＿３」６０５が抽出され、ＣＯＢＯＬ向け型情報として、解析情報７０３内に組込まれる。
【００３８】
ＣＯＢＯＬ依存情報解析部７５１により、新記述規則で記述された型定義情報のみが抽出されるため、ＴＹＰＥＤＥＦ構文に、新記述規則とは関係ない他の情報が含まれる場合にも、以降の処理でエラーが発生することはない。
【００３９】
また、構文解析部７０２では、ＩＤＬソース７０１の文法チェックを行う。本実施形態では、ＩＤＬのサポートしないデータ型を、ＴＹＰＥＤＥＦ構文を用いて定義するため、文法チェックでエラーが発生することはない。
【００４０】
続いて、コード生成部７０４が、解析情報７０３を読み取り、ＩＤＬの型情報を、ＣＯＢＯＬの型情報へ変換する処理を行なって、スタブ７０７およびスケルトン７０８を生成する。
【００４１】
この際、インターフェース情報解析部７０５は、型変換テーブル７０９の標準テーブル７１０を参照して、解析情報に７０３に含まれるＩＤＬの型情報を、ＣＯＢＯＬ言語の型情報に変換する。この変換結果は、コード生成情報７１２として登録される。これと並行して、ＣＯＢＯＬ型情報変換部７５２は、型変換テーブル７０９の特殊テーブル７１１を参照して、解析情報に７０３に含まれるＣＯＢＯＬ向け型情報を、ＣＯＢＯＬ言語の型情報に変換する。
【００４２】
具体的には、ＣＯＢＯＬ型情報変換部７５２は、解析情報７０３に含まれるＣＯＢＯＬ向け型情報を読み出し（Ｓ１０３）、その型情報に対応して型変換テーブル７０９の特殊テーブル７１１に登録されているＣＯＢＯＬの型情報を取得する（Ｓ１０４）。そして、取得した型情報にパラメータを設定して、その結果をコード生成情報７１２として登録する（Ｓ１０５）。
【００４３】
例えば、解析情報７０３から読み出した情報が「ＣＢＬ＿ＰＡＣＫ＿９＿４Ｖ９＿３」である場合には、非対応型変換テーブル７１１に、「ＣＢＬ＿ＰＡＣＫ＿９＿ｘＶ９＿ｙ」に対応して登録されている「ｐｉｃ  ９（ｘ）ｖ９（ｙ）  ＰＡＣＫＥＤ−ＤＥＣＩＭＡＬ」を取得し、そのパラメータｘ，ｙにそれぞれ‘３’，‘４’を設定する。
【００４４】
プログラムコード生成部７０６は、コード生成情報７１２を用いて、ＣＯＢＯＬ言語で記述したスタブ７０７およびスケルトン７０８を生成する。
【００４５】
スタブ７０７およびスケルトン７０８は、自らに設定されたメソッド名称の定義されたＰＲＯＧＲＡＭ−ＩＤ文と、呼び出すプログラム（メソッド）の名称の定義されたＣＡＬＬ文とを有する。スタブ７０７のＣＡＬＬ文はＯＲＢの機能を呼出し、スケルトン７０８のＣＡＬＬ文はサーバプログラムを呼出すためのものである。
【００４６】
スタブ７０７および別途作成されたクライアントプログラムは、実行される計算機において、ＣＯＢＯＬのコンパイルおよびリンクをなされて、実行形式のプログラムとなる。同様に、スケルトン７０８およびサーバプログラムも、実行される計算機において、ＣＯＢＯＬのコンパイルおよびリンクをなされて、実行形式のプログラムとなる。
【００４７】
なお、ＩＤＬコンパイラ７００は、スタブ７０７およびスケルトン７０８の一方のみを生成するモードを有する。また、スタブ７０７やスケルトン７０８の生成時に、続けて計算機１においてＣＯＢＯＬのコンパイルを行い、スタブ７０７やスケルトン７０８を実行形式のプログラムとして出力するモードを有する。ＩＤＬコンパイラ７００は、これらのモードを、ＩＤＬのコンパイルを指示するコマンドのパラメータに従い選択する。
【００４８】
スタブ７０７は、クライアントプログラム内の、サーバプログラムを呼び出すＣＡＬＬ文により起動される。起動されたスタブ７０７は、ＣＡＬＬ文により、ＯＲＢの機能を、メソッドの名称や引数の情報の指定を伴い呼び出す。これを受けて、ＯＲＢは、対応するサーバプログラムおよびスケルトン７０８の配置された計算機を特定するための処理を行い、配置先の計算機のスケルトン７０８を、メソッドの名称や引数の情報の指定を伴い呼び出す。これにより起動されたスケルトン７０８は、サーバプログラムを引数の指定を伴い呼び出す。これにより、サーバプログラムが実行される。実行結果は、逆の経路で転送され、クライアントプログラムに渡される。
【００４９】
以上で説明したように、本実施形態のＩＤＬコンパイラ７００によれば、新記述規則により記述されたＩＤＬから、ＩＤＬのサポートしていないデータ型の指定を含むＣＯＢＯＬ言語のプログラムのスタブ７０７およびスケルトン７０８を生成することができる。
【００５０】
図６に、本実施形態のＩＤＬ生成系の機能構成を示す。
【００５１】
図示するＩＤＬ生成系８００は、構文解析部８０２、インターフェース情報抽出部８０４、変換テーブル８０６、および、コード生成部８０７を有する。各部８０２、８０４、８０６および８０７は、計算機のディスク装置８，９の記憶領域内のプログラムの実行により実現される機能である。
【００５２】
ＩＤＬ生成系８００は、原始ファイル８０１を入力として、ＩＤＬソース８０９を出力する。この処理の過程では、解析情報８０３、中間言語８０５、および、コード生成情報８２３が生成される。
【００５３】
ここで、原始ファイル８０１は、ＣＯＢＯＬ言語で記述されたサーバプログラムからなる。なお、原始ファイル８０１、解析情報８０３、中間語８０５、コード生成情報８２３およびＩＤＬソース８０９は、計算機１のディスク装置にファイルとして格納される。原始ファイル８０１は、例えば、開発の行われた他の計算機からネットワーク１６を介して転送される。
【００５４】
ＩＤＬ生成系８００は、新記述規則に対応するための機能として、コード生成部８０７内のＴＹＰＥＤＥＦ生成部８０８に組込まれるＣＯＢＯＬ型ＴＹＰＥＤＥＦ生成部８１１と、型変換テーブル８０６に組込まれる特殊テーブル８２１とを有する。
【００５５】
図７に示すように、型変換テーブル８０６の特殊テーブル８２１には、ＣＯＢＯＬの型情報と、ＴＹＰＥＤＥＦ情報とが予め対応付けて登録されている。ここで、ＴＹＰＥＤＥＦ情報は、新記述規則により記述された型定義名称（６０５）である。一方、型変換テーブル８０６の標準テーブル８２０には、ＣＯＢＯＬ言語の型情報と、ＩＤＬの型情報とが予め対応付けて登録されている。これにより、型変換テーブル８０６には、ＣＯＢＯＬ言語の全ての型情報が登録される。
【００５６】
なお、型変換テーブル８０６は、アクセスの高速化のため、ＩＤＬ生成系８００のプログラム中に配置される。もちろん、計算機１のディスク装置にファイルとして格納するようにしてもよい。
【００５７】
次に、ＩＤＬ生成系８００の処理について、図７を用いて説明する。
【００５８】
ＩＤＬソースの生成を指示するメッセージが計算機に入力されると、まず、構文解析部８０２が、原始プログラム８０１の構文解析を行ない、解析情報８０３を生成する。
【００５９】
この解析情報８０３から、インターフェース情報抽出部８０４が、インターフェース情報を抽出して、中間語８０５を生成する。ここで、中間語８０５には、原始ファイル８０１を構成する各プログラムのプログラム名と、引数情報（引数の名称や型情報）とが含まれる。
【００６０】
続いて、コード生成部８０７が、中間語８０５を読み取り、引数情報内の型情報を、ＩＤＬの型情報またはＴＹＰＥＤＥＦ情報に変換する処理を行って、ＩＤＬソース８０９を生成する。
【００６１】
この際、コード生成部８０７は、まず、中間語８０５に含まれるＣＯＢＯＬ言語の型情報を型変換テーブル８０６の標準テーブル８２０で検索する。その型情報が標準テーブル８２０に登録されているもの（例えば「ＰＩＣ  Ｓ９（９）」）である場合、コード生成部８０７は、対応するＩＤＬの型情報（「ｌｏｎｇ」）を抽出し、コード生成情報８２３として登録する。これを、全てのプログラムおよび引数情報について行う。
【００６２】
ＣＯＢＯＬ型ＴＹＰＥＤＥＦ生成部８１１では、標準テーブル８２０に登録の無いＣＯＢＯＬ言語の型情報について、ＴＹＰＥＤＥＦ構文の生成を行う。まず、ＴＹＰＥＤＥＦ生成部８１１は、中間語８０５から、プログラム名を読み出し（Ｓ２０１）、標準テーブル８２０に登録の無い引数情報を読み出す（Ｓ２０２）。そして、読み出した引数情報内の型情報を、型変換テーブル８０６の特殊テーブル８２１で検索する（Ｓ２０３，Ｓ２０５）。対象の型情報の登録がない場合は、型変換エラー処理を行って、エラーメッセージを表示する（Ｓ２０６）。
【００６３】
対象の型情報が登録されている場合は、その型情報に対応付けられているＴＹＰＥＤＥＦ情報を取得する（Ｓ２０７）。そして、取得したＴＹＰＥＤＥＦ情報と一致する型定義名称が、既に追加出力しているＴＹＰＥＤＥＦチェーン（ＴＹＰＥＤＥＦ情報群）にあるかどうかをコード生成情報８２３で検索し（Ｓ２０８，Ｓ２１０）、ない場合（Ｓ２９でＮＯ）は、そのＴＹＰＥＤＥＦ情報を用いたＴＹＰＥＤＥＦ構文を生成し、コード生成情報８２３内のＴＹＰＥＤＥＦチェーンに追加出力する（Ｓ２１１）。この追加出力により、図３（ａ）の形式をとるＴＹＰＥＤＥＦ構文の文字データが追加される。
【００６４】
図３（ａ）に示すように、ＴＹＰＥＤＥＦ構文の生成では、まず、「ｔｙｐｅｄｅｆ ｌｏｎｇ」６００の文字データを構文に設定し、続いて、ＴＹＰＥＤＥＦ情報にパラメータを設定して型定義名称（６０５）を生成し、その型定義名称の文字データを構文に設定する。そして、構文の次の行に型定義名称（６０５）および引数名称６０６を設定する。
【００６５】
一方、取得したＴＹＰＥＤＥＦ情報と一致する型定義名称が既にＴＹＰＥＤＥＦチェーンに存在する時（Ｓ２０９でＹＥＳ）は、ＴＹＰＥＤＥＦチェーン内の一致する型定義名称の個所に、型定義名称および引数情報を追加する（Ｓ２１２）。例えば、ＴＹＰＥＤＥＦチェーン内に図３（ａ）の型定義名称６０５が存在し、他の引数名称「ＡＲＧ２」についての型定義名称が図３（ａ）のものに一致する場合には、既に設定されている型定義名称６０５および引数名称６０６の行の次の行に「ＣＢＬ＿ＰＡＣＫ＿９＿４Ｖ９＿３  ＡＲＧ２」が追加される。これにより、同じ情報６００および６０５を繰り返し設定しなくても済むため、ＴＹＰＥＤＥＦ構文の情報量を小さく抑えることができる。
【００６６】
続いて、ＴＹＰＥＤＥＦ生成部８０８では、同じプログラムの他の引数情報について以上の処理を繰り返し（Ｓ２１３）、さらに、他のプログラムについて以上の処理を繰り返す（Ｓ２１４）。
【００６７】
以上により作成されたコード生成情報８２３はコード出力部８１０に渡される。コード出力部８１０は、ＩＤＬソース８０９に対し、コード生成情報８２３内のＩＤＬの型情報を用いてＩＤＬの変数・数値の定義文を設定し、さらに、ＴＹＰＥＤＥＦチェーン内の各情報を、ＩＤＬソース８０９のＴＹＰＥＤＥＦ構文として設定する。
【００６８】
以上で説明したように、本実施形態のＩＤＬ生成系８００によれば、ＩＤＬのサポートしていないデータ型の指定を含むＣＯＢＯＬ言語のプログラムから、新記述規則により記述したＩＤＬソース８０９を生成することができる。開発者は、このＩＤＬソース８０９を、上述のＩＤＬコンパイラ７００でコンパイルすることにより、スタブ７０７およびスケルトン７０８を得ることができる。
【００６９】
すなわち、ＩＤＬコンパイラ７００およびＩＤＬ生成系８００を用いることにより、開発者は、既成のクライアントプログラムやサーバプログラムを流用する場合にも、インタフェース仕様の修正等を行わなわずに済み、そのスタブ７０７およびスケルトン７０８を容易に取得できるようになる。また、ＣＯＢＯＬ言語のデータ型を自由に使って、クライアントプログラムやサーバプログラムを作成できるようになる。
【００７０】
ところで、以上ではＩＤＬのサポートしていないデータ型をＴＹＰＥＤＥＦ構文を使用して定義する例を説明したが、この定義は、同じくＩＤＬにおいて開発者が自由に記述することができるＩＤＬの変数・定数の名称や、ＩＤＬのコメント文を用いて行うようにしてもよい。
【００７１】
変数や定数の名称を用いる場合には、図３（ｂ）に示すように、ＩＤＬのデータ型定義文において、定義対象の変数や定数の名称６０６の前に、仕切記号「＿」を挿んで上述の型定義名称６０５を付加する。この場合、ＩＤＬコンパイラは、データ型定義文より、「ＣＢＬ＿」の付加された名称６０６を抽出し、上述の図４のものと同様の処理を行う。ＩＤＬ生成系も、原始ファイルの引数情報を、図３（ｂ）の形式で記述し、上述の図６のものと同様の処理を行う。
【００７２】
コメントを用いる場合には、図３（ｃ）に示すように、ＩＤＬのデータ型定義文において、定義対象の変数や定数の名称６０６の後に、コメント記号「／／」を挿んで上述の型定義名称６０５を付加する。この場合も、ＩＤＬコンパイラおよびＩＤＬ生成系は、図４および図６のものと同様の処理を行う。
【００７３】
また、以上では、ＣＯＢＯＬ言語で作成するプログラムの開発を支援する場合について説明したが、本発明は、他のプログラム言語（例えばＣ言語、Ｃ＋＋言語、Ｊａｖａ言語など）を用いる開発にも、容易に適用することができる。この場合、ＩＤＬ言語処理系は、ＣＯＢＯＬ依存情報解析部７５１とＣＯＢＯＬ型情報変換部７５２との代りに、それぞれ、対象のプログラム言語の依存情報解析部と型変換部とを設けるようにする。また、ＩＤＬ生成系は、ＣＯＢＯＬ型ＴＹＰＥＤＥＦ生成部８１１の代りに、対象のプログラム言語のＴＹＰＥＤＥＦ生成部を設けるようにする。そして、型変換テーブル７０９および８０６には、対象のプログラム言語のデータ型を登録するようにする。さらに、新記述規則は、対象のプログラム言語のデータ型を一意に識別できるように型定義名称を記述するものとする。
【００７４】
【発明の効果】
以上で説明したように、本発明によれば、対象とするプログラム言語で記述されたプログラムで使用されるデータ型の制限なしに、そのプログラムのインタフェース機能を実現するサブプログラムを生成することのできるプログラム開発支援ツールを提供することができる。
【００７５】
また、本発明によれば、対象とするプログラム言語で記述された任意のプログラムについて、上記プログラム開発支援ツールで処理可能なＩＤＬのソース情報を生成することのできるプログラム開発支援ツールを提供することができる。
【図面の簡単な説明】
【図１】本発明のプログラム開発支援ツールが実装される計算機の構成例を示すブロック図である。
【図２】ＣＯＢＯＬプログラムにおける型宣言の一例を示す図である。
【図３】本発明の新記述規則を適用したＩＤＬの記述例を示す図である。
【図４】ＣＯＢＯＬに対応するＩＤＬ言語処理系の機能構成を示す図である。
【図５】依存情報解析部および型情報変換部の機能を示す図である。
【図６】ＣＯＢＯＬに対応するＩＤＬ生成系の機能構成を示す図である。
【図７】ＴＹＰＥＤＥＦ生成部の機能を示す図である。
【図８】従来のＩＤＬ言語処理系の機能構成を示す図である。
【図９】従来のＩＤＬ生成系の機能構成を示す図である。
【符号の説明】
５０１ ＣＯＢＯＬの型宣言文
６００〜６０６ ＴＹＰＥＤＥＦ構文を用いた型宣言
６０５ 型定義名称
７００ ＩＤＬ言語処理系
７０１ ＩＤＬソース
７０２ ＩＤＬ言語処理系の構文解析部
７５１ 構文解析部内のＣＯＢＯＬ依存情報解析部
７０３ ＩＤＬ言語処理系の構文解析によって得られた解析情報
７０４ ＩＤＬ言語処理系のコード生成部
７０５ ＩＤＬ言語処理系のインターフェース情報解析部
７０６ ＩＤＬ言語処理系のプログラムコード生成部
７０７ コード生成部により得られるスタブ
７０８ コード生成部により得られるスケルトン
７０９ ＩＤＬ言語処理系の型変換テーブル
７１０ 型変換テーブル内の標準テーブル
７１１ 型変換テーブル内の特殊テーブル
７１２ コード生成情報
７５２ ＣＯＢＯＬ型情報変換部
８００ ＩＤＬ生成系
８０１ 原始プログラムファイル
８０２ ＩＤＬ生成系の構文解析部
８０３ ＩＤＬ生成系の解析情報
８０４ ＩＤＬ生成系のインターフェース情報抽出部
８０５ ＩＤＬ生成系の中間語情報
８０６ ＩＤＬ生成系の型変換テーブル
８０７ ＩＤＬ生成系のコード生成部
８０８ コード生成部内のＴＹＰＥＤＥＦ生成部
８１０ ＩＤＬ生成系のＩＤＬ出力部
８１１ ＴＹＰＥＤＥＦ生成部内のＣＯＢＯＬ型ＴＹＰＥＤＥＦ生成部
８０９ ＩＤＬソース
８２０ 型変換テーブル内の標準テーブル
８２１ 型変換テーブル内の特殊テーブル
８２３ コード生成情報
【図１】
0004319706.tif 000002
【図２】
0004319706.tif 000003
【図３】
0004319706.tif 000004
【図４】
0004319706.tif 000005
【図５】
0004319706.tif 000006
【図６】
0004319706.tif 000007
【図７】
0004319706.tif 000008
【図８】
0004319706.tif 000009
【図９】
0004319706.tif 000010