(57)【要約】【課題】異なるプログラム言語のソースプログラム間で引き渡されるデータのデータ型の整合性を自動的にチェック可能にする。【解決手段】複数のプログラム言語に対して共通に定められた、データ長とデータの種別の異なる組合せを少なくとも区別可能なインターフェイス整合性チェック用の複数のデータ型の中から、各ソースプログラムに含まれた、当該ソースプログラムと他のソースプログラムとの間で引き渡されるデータのデータ型に対応するインターフェイス整合性チェック用のデータ型を検出し、それらのソースプログラムの間で引き渡される各データについて、それらのソースプログラムが当該データに対して指定する第１、第２のデータ型の整合性を、当該第１、第２のデータ型に対して検出された第１、第２のインターフェイス整合性チェック用のデータ型を照合して判別する。【選択図】　　　図１
2004118494.tif 000002
【特許請求の範囲】
【請求項１】
異なるプログラム言語によって記述された複数のソースプログラムの各々について、当該ソースプログラムと他のソースプログラムとの間で引き渡されるデータとして、当該ソースプログラムが指定するデータとそのデータ型を検出し、
前記複数のプログラム言語数以上のあらかじめ定められた複数のプログラム言語に対して共通にあらかじめ定められた、データ長とデータ種別の異なる組合せを少なくとも区別可能なインターフェイス整合性チェック用の複数のデータ型の中から、各ソースプログラムについて検出された、当該ソースプログラムと他のソースプログラムとの間で引き渡されるデータのデータ型に対応するインターフェイス整合性チェック用のデータ型を決定し、
各ソースプログラムと他のソースプログラムとの間で引き渡される各データについて、引き渡し元のソースプログラム及び引き渡し先のソースプログラムが当該データに対してそれぞれ指定する第１、第２のデータ型の整合性を、当該第１、第２のデータ型に対して決定された第１、第２のインターフェイス整合性チェック用のデータ型を照合して判別する、
ステップをコンピュータに実行させるようにプログラムされていることを特徴とする異種言語プログラム間インターフェイスのチェックプログラム。
【請求項２】
前記複数のインターフェイスチェック用のデータ型のうちの、各プログラム言語で使用可能な複数のデータ型の各々に対するインターフェイスチェック用のデータ型は、当該プログラム言語で記述されたソースプログラムをコンパイルして得られるオブジェクトプログラムの実行を制御するオペレーティングシステム（ＯＳ）が当該プログラム言語の当該データに対して定めているデータ長を有する、ことを特徴とする請求項１に記載の異種言語プログラム間インターフェイスのチェックプログラム。
【請求項３】
前記判別ステップでは、引き渡し元のソースプログラムが指定するデータに対して決定されたインターフェイスチェック用のデータ型と、引き渡し先のソースプログラムが指定するデータに対して決定されたインターフェイスチェック用のデータ型について、両者が整合している場合と両者が整合していない場合以外に、両者のデータ型は形式的には整合しているがデータ値が整合しなくなる可能性がある場合及びデータ型は形式的には整合していないがデータ値が整合する可能性がある場合とを少なくとも区別する、ことを特徴とする請求項１又は２に記載の異種言語プログラム間インターフェイスのチェックプログラム。
【請求項４】
前記インターフェイスチェック用の複数のデータ型は、データの種別として、文字、整数、浮動小数点データを少なくとも区別でき、当該データが整数の場合は符号付きか否かを区別できるように定められていることを特徴とする請求項１から３のいずれか一つに記載の異種言語プログラム間インターフェイスのチェックプログラム。
【請求項５】
前記整合性を判別するステップでは、引き渡し元のソースプログラムが指定するデータに対して決定されたインターフェイスチェック用のデータ型と、引き渡し先のソースプログラムが指定するデータに対して決定されたインターフェイスチェック用のデータ型について、両者がともに整数で、データ長が同じであるが、符号付きか否かにおいて異なる場合には、データ型が符号付きか否かにおいて形式的に異なるが、データ値が整合する場合もあることを示唆する警告メッセージを出力する、ことを特徴とする請求項４に記載の異種言語プログラム間インターフェイスのチェックプログラム。
【請求項６】
各ソースプログラムが指定する整数を表すデータに対応する、前記インターフェイスチェック用の複数のデータ型内のデータ型は、当該ソースプログラム内の前記整数を表すデータが表すことが可能な整数の桁数を識別可能になっている、ことを特徴とする請求項１から５のいずれか一つに記載の異種言語プログラム間インターフェイスのチェックプログラム。
【請求項７】
前記整合性を判別するステップでは、引き渡し元のソースプログラムが指定するデータに対して決定されたインターフェイスチェック用のデータ型と、引き渡し先のソースプログラムが指定するデータに対して決定されたインターフェイスチェック用のデータ型について、両者がともに整数で、データ長が同じであるが、引き渡し元のソースプログラムが指定した前記データにより表すことができる整数の桁数と引き渡し先のソースプログラムが指定した前記データにより表すことができる整数の桁数とが異なる場合、データ型が形式的に整合するが、データ値が異なる場合が起こりうることを示唆する警告メッセージを出力する、ことを特徴とする請求項６に記載の異種言語プログラム間インターフェイスのチェックプログラム。
【請求項８】
前記インターフェイスチェック用の複数のデータ型は、データの種別として、ポインタを更に区別可能に定められていることを特徴とする請求項１から７のいずれか一つに記載の異種言語プログラム間インターフェイスのチェックプログラム。
【請求項９】
前記整合性を判別するステップでは、引き渡し元のソースプログラムが指定するデータに対して決定されたインターフェイスチェック用のデータ型と、引き渡し元のソースプログラムが指定するデータに対して決定されたインターフェイスチェック用のデータ型について、両者のデータ長が同じであるが、一方がポインタであり、他方が符号付き又は符号なし整数である場合、データ型が形式的に異なるが、データ値が整合する場合があることを示唆する警告メッセージを出力する、ことを特徴とする請求項８に記載の異種言語プログラム間インターフェイスのチェックプログラム。
【請求項１０】
異なるプログラム言語によって記述された複数のソースプログラムの各々について、当該ソースプログラムと他のソースプログラムとの間で引き渡されるデータとして、当該ソースプログラムが指定するデータとそのデータ型を検出し、
前記複数のプログラム言語数以上のあらかじめ定められた複数のプログラム言語に対して共通にあらかじめ定められた、データ長とデータ種別の異なる組合せを少なくとも区別可能なインターフェイス整合性チェック用の複数のデータ型の中から、各ソースプログラムについて検出された、当該ソースプログラムと他のソースプログラムとの間で引き渡されるデータのデータ型に対応するインターフェイス整合性チェック用のデータ型を決定し、
各ソースプログラムと他のソースプログラムとの間で引き渡される各データについて、引き渡し元のソースプログラム及び引き渡し先のソースプログラムが当該データに対してそれぞれ指定する第１、第２のデータ型の整合性を、当該第１、第２のデータ型に対して決定された第１、第２のインターフェイス整合性チェック用のデータ型を照合して判別する、
ステップを含むことを特徴とする異種言語プログラム間インターフェイスのチェック方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、異なるプログラム言語によって記述された複数のプログラム間のデータ引き渡しインターフェイスにおいて、データの引き渡し元のソースプログラムが指定するデータ型とデータの引き渡し先のソースプログラムが指定するデータ型の整合性をチェックする、異種言語プログラム間インターフェイスのチェックプログラム及びチェック方法に関する。
【０００２】
【従来の技術】
ソースプログラムを開発するときには、他の複数のソースプログラムを呼び出して使用するように、メインのソースプログラムを生成することが多い。このような構造のプログラムを起動すると、呼び出し元であるメインのソースプログラムが最初に実行され、当該ソースプログラムが実行中の適当な時点で他のソースプログラムが呼び出される。呼び出し元のソースプログラムが、更に他のソースプログラムから呼び出し可能なソースプログラムであってもよい。
【０００３】
このようなプログラム間呼び出しを使用する場合には、一般には呼び出し元のソースプログラムには、呼び出し先のソースプログラムを呼び出す呼び出し文が含まれ、当該呼び出し文は、呼び出すべきソースプログラムの名称と、呼び出し時に引き渡すべき一つ又は複数の引数があるときには、それらの引数を指定する。呼び出し元のソースプログラムは、それらの引数の引き渡し元となる。更に、呼び出し元のソースプログラムが呼び出し先のソースプログラムから戻り値を受け取る場合には、呼び出し元のソースプログラムは、呼び出し先のプログラムが供給する戻り値を受け取るべきデータを指定する。このデータに関しては、呼び出し元のソースプログラムは、呼び出し先から引き渡されるデータ（戻り値）の引き渡し先となる。
【０００４】
呼び出し先のソースプログラムは、呼び出し元のソースプログラムが呼び出し時に指定すべきプログラム名と、呼び出し元のソースプログラムが引き渡すべき一つ又は複数の引数を指定する。呼び出し先のソースプログラムは、戻り値として戻すべきデータを指定する。呼び出し先のソースプログラムは、呼び出されたときには、呼び出し元が指定した引数を自己が指定した引数として使用し、処理結果を得ると、戻り値を戻す場合には、当該呼び出し先のソースプログラムによりあらかじめ定めたデータの値を戻り値として呼び出し元ソースプログラムに戻す。呼び出し元のソースプログラムは、戻された戻り値を、当該呼び出し元があらかじめ指定したデータとして受け取る。
【０００５】
このようなプログラム間でデータを引き渡すには、引き渡し元のソースプログラムと引き渡し先のソースプログラムのそれぞれについて、各引き渡し（インターフェイス）に関与する部分（以下、インターフェイス部分と呼ぶことがある）が整合していなければならない。ここでインターフェイス部分の整合とは、そのインターフェイスで引き渡されるデータの引き渡しが正常に行われるための条件をデータの引き渡し元ソースプログラム及び引き渡し先ソースプログラムが満たしていることである。以下では、インターフェイス部分の整合のことを単にインターフェイスの整合ある　いは呼び出し引き渡し元ソースプログラムと引き渡し先ソースプログラムの整合と呼ぶこともある。
【０００６】
より具体的には、上に述べたような、呼び出し文により、呼び出し元のソースプログラムがデータを呼び出し先に引き渡すというデータ引き渡しインターフェイスでは、データを引き渡す引き渡し元のソースプログラムの呼び出し文が指定する引き渡し先ソースプログラムの名称が、引き渡し先ソースプログラムが呼び出し用に指定するプログラム名称と一致する必要があり、更に、引き渡し元のソースプログラム内の上記呼び出し文が指定する引数のデータ型と引数の数が、引き渡し先のソースプログラムが指定する引数のデータ型と引数の数に一致しなければならない。
【０００７】
更に、呼び出し文により呼び出された呼び出し先のソースプログラムから呼び出し元のソースプログラムに戻り値を戻すというデータ引き渡しインターフェイスでは、呼び出し先のソースプログラムがデータの引き渡し元となり、呼び出し元のソースプログラムがデータの引き渡し先になり、引き渡し元のソースプログラムが指定する戻り値のデータ型と、引き渡し先が指定する戻り値を受ける変数のデータ型が整合している必要がある。なお、データ型は、データが表現する情報の種別、例えば文字、整数、浮動小数点等とデータ長により決められたデータの区分であり、整数の場合には符号付きか否か、浮動小数点の場合には単精度あるいは倍精度等の精度が更に区別されている。なお、プログラム言語によっては、データ型に代えて他の用語が使用される場合もあるが、本明細書では、プログラム言語に依らないでデータ型という用語を用いることにする。
【０００８】
プログラム開発者がソースプログラムを目視してこのようなプログラム間インターフェイスの整合性をチェックすると、労力を要するうえにチェック漏れも生じる恐れがある。そこでこのチェックを自動化してプログラム開発者の労力を軽減し又はミスを防止する試みも提案されている（例えば、特許文献１参照）。
【０００９】
【特許文献１】
特開平５−１１９８３号公報
【００１０】
特許文献１では、異なるプログラム言語で記述された一対のソースプログラム間でデータを引き渡すシステムの例として、一方のソースプログラムから他方のソースプログラムに引き渡すべきデータを入力レジスタに書き込み、これを他方のソースプログラムが読み取ることにより、更に、上記他方のソースプログラムは、引き渡されたデータに対する処理結果データを出力レジスタに書き込み、上記一方のソースプログラムが、上記出力レジスタに書き込まれたデータを読み出して利用させるようにして、上記二つのソースプログラムの間で２つのデータの受け渡しを行う例が示されている。
【００１１】
特許文献１では、各プログラム言語に対する言語仕様書と当該プログラム言語に対応するプログラム間インターフェイス仕様書とに基づいて、当該プログラム言語に対応するプログラム間インターフェイスを定義した定義情報を生成し、この定義情報をインターフェイスのチェックに利用している。このプログラム間インターフェイス定義情報は、対応するプログラム言語で記述された一方のソースプログラムから他方のソースプログラムにデータを引き渡すインターフェイス部分が満たすべき条件と当該他方のソースプログラムから当該一方のソースプログラムに対してデータを引き渡す当該他方のソースプログラム内の他のインターフェイス部分が満たすべき条件とを規定している。具体例として、定義情報には、引き渡しに使用するパラメータの形式、基本データの表現形式及びプログラム間の呼び出し方法が含まれている。
【００１２】
特許文献１では、一方のソースプログラムの上記インターフェイス部分及び上記他方のソースプログラムの上記他のインターフェイス部分が、当該一方のソースプログラムを記述したプログラム言語に対応するプログラム間インターフェイス定義情報により指定された条件を満たしているか否かを自動的に判別することにより、上記二つのソースプログラム間のインターフェイスの整合性を自動的に検査することが提案されている。
【００１３】
【発明が解決しようとする課題】
特許文献１では、他言語プログラム間インターフェイスの整合性のチェックを行うと記載されてはいるが、そこに記載のプログラム間インターフェイスのチェック方法の適用例では、二つのソースプログラムで指定しているデータのデータ型はいずれも　ｓｈｏｒｔ　型と　ｌｏｎｇ　型の整数であり、更にこれらの二つのプログラムについてそれぞれのデータの種別が同じと仮定されている。すなわち、ｌｏｎｇ　型のデータの長さ、符号の有無等はいずれのプログラムを記述するプログラム言語に関しても同一であり、このことは　ｓｈｏｒｔ　型のデータに関しても同じと仮定されている。
【００１４】
しかし、データを引き渡す二つのプログラムを記述するプログラム言語が大幅に異なる場合には、各プログラム言語が指定可能なデータ型が大きく異なることが生じる。例えば、Ｃ言語では、整数を表すために使用可能なデータ型は、符号付き整数（ｓｉｇｎｅｄ　ｃｈａｒ）（１バイト）、符号なし整数（ｕｎｓｉｇｎｅｄ　ｃｈａｒ）（１バイト）、符号付き短整数（ｓｉｇｎｅｄ　ｓｈｏｒｔ）（２バイト）、符号なし短整数（ｕｎｓｉｇｎｅｄ　ｓｈｏｒｔ）（２バイト）、符号付き倍長整数（ｓｉｇｎｅｄ　ｌｏｎｇ）（４バイト）、符号なし倍長整数（ｕｎｓｉｇｎｅｄ　ｌｏｎｇ）（４バイト）である。上記種々のデータ型に対してカッコ内に示したバイト数は、それぞれの種別のデータの長さを表す。一方、ＣＯＢＯＬ（コボル）ではＰＩＣ形式を用いたいろいろなデータ型を使用できるが、上に記載したＣ言語で使用可能なデータ型はいずれも使用できない。
【００１５】
また、ＦＯＲＴＲＡＮ（フォートラン）では、整数を指定するデータ型として使用可能なものは、符号付き整数（Ｉｎｔｅｇｅｒ＊１）（１バイト）、符号付き整数（Ｉｎｔｅｇｅｒ＊２）（２バイト）、符号付き整数（Ｉｎｔｅｇｅｒ）（４バイト）、符号付き整数（Ｉｎｔｅｇｅｒ＊４）（４バイト）であり、Ｃ言語、ＣＯＢＯＬで使用可能なものとも異なっている。一方、Ｃ言語では、ポインタというメモリアドレスを表すデータ型を使用可能であり、ＣＯＢＯＬもポインタあるいはアドレスを指定可能であるが、ＦＯＲＴＲＡＮではポインタを使用できない。
【００１６】
一般に、データの引き渡し元のソースプログラムとそのデータの引き渡し先のソースプログラムの両方を新規に開発する場合にはそれらの一対のソースプログラムを同一のプログラム言語で記述することは可能である。しかし、ソースプログラムを開発するときに、そのソースプログラムから呼び出す呼び出し先のソースプログラムとして、既に開発済みのソースプログラムを再利用する場合も増えてきている。このような場合に、呼び出し元のソースプログラムと呼び出し先のソースプログラムを記述する言語が大きく異なる場合が起こり得る。
【００１７】
もちろん、呼び出し元のソースプログラムと呼び出し先のソースプログラムを新規に開発する場合でも、これらを記述するプログラム言語が大きく異なる場合も起こり得る。例えば、引き渡し先のソースプログラムに実行させる処理が特殊な場合に、その処理を実行するプログラムを記述するのに適したプログラム言語でもって当該呼び出し先のプログラムを記述することが望ましい場合がある。この場合には呼び出し元のソースプログラムと呼び出し先のソースプログラムとを記述するプログラム言語が大きく異なることが生じ得る。
【００１８】
このように、呼び出し元（データの引き渡し元）のソースプログラムを記述するプログラム言語と呼び出し先（データの引き渡し先）のソースプログラムを記述するプログラム言語が大きく異なる場合、それぞれのプログラム言語で使用可能なデータ型が大きく異なる場合があり、このため二つのソースプログラムが指定する互いに対応する二つのデータのデータ型が整合しているか否かを判別するためには、二つのプログラム言語の言語仕様を参照して判別する必要がある。このため、整合性のチェックが複雑になる。この問題は、同時に使用する引き渡し先のソースプログラムの数が増え、それに伴いそれらのソースプログラムを記述するのに使用されているプログラム言語の数が増えるほど深刻になる。
【００１９】
本発明の目的は、異種プログラム言語で記述された複数のソースプログラム間で引き渡されるデータについて、引き渡し元のソースプログラムが指定するデータ型と引き渡し先のソースプログラムが指定するデータ型の整合性のチェックを容易にする、異種言語プログラム間インターフェイスのチェックプログラム及びチェック方法を提供することである。
【００２０】
【課題を解決するための手段】
上記目的を達成するために、本発明に係る異種言語プログラム間インターフェイスのチェックプログラムは、下記のステップをコンピュータに実行させるようにプログラムされているものである。すなわち、まず、異なるプログラム言語によって記述された複数のソースプログラムの各々について、当該ソースプログラムと他のソースプログラムとの間で引き渡されるデータとして、当該ソースプログラムが指定するデータとそのデータ型を検出し、前記複数のプログラム言語数以上のあらかじめ定められた複数のプログラム言語に対して共通にあらかじめ定められた、データ長とデータ種別の異なる組合せを少なくとも区別可能なインターフェイス整合性チェック用の複数のデータ型の中から、各ソースプログラムについて検出された、当該ソースプログラムと他のソースプログラムとの間で引き渡されるデータのデータ型に対応するインターフェイス整合性チェック用のデータ型を決定し、各ソースプログラムと他のソースプログラムとの間で引き渡される各データについて、引き渡し元のソースプログラム及び引き渡し先のソースプログラムが当該データに対してそれぞれ指定する第１、第２のデータ型の整合性を、当該第１、第２のデータ型に対して決定された第１、第２のインターフェイス整合性チェック用のデータ型を照合して判別する。
【００２１】
これにより、複数のプログラム言語のいずれかで記述されたソースプログラム間で引き渡しされるデータ型の整合性のチェックをする場合、チェック対象となるデータ型、すなわち引き渡し元のソースプログラムが指定するデータ型と引き渡し先のソースプログラムが指定するデータ型を、それらの複数のプログラム言語に対して共通に定めた複数のインターフェイスチェック用の複数のデータ型内の対応するものに変換し、得られた変換後のデータ型を照合して整合性をチェックすることができるので、プログラム言語によりデータ型が大きく異なっていても、整合性のチェックを自動的に実行することが可能になる。更に、上記のチェック方法では、３つ以上のソースプログラム間で引き渡される複数のデータについてのデータ型の整合性のチェックも同じインターフェイスチェック用の複数のデータ型を使用してチェックすることができる。
【００２２】
本発明の望ましい態様では、前記複数のインターフェイスチェック用のデータ型のうちの、各プログラム言語で使用可能な複数のデータ型の各々に対するインターフェイスチェック用のデータ型は、当該プログラム言語で記述されたソースプログラムをコンパイルして得られるオブジェクトプログラムの実行を制御するオペレーティングシステム（ＯＳ）が当該プログラム言語の当該データに対して定めているデータ長を有する。これにより、引き渡し元のソースプログラムが指定するデータ型と引き渡し先のソースプログラムが指定するデータ型とが整合していると判断されれば、それらのソースプログラムから生成された２つのオブジェクトプログラム間でデータを当該データが引き渡される場合には、そのデータはＯＳが指定するデータ長により引き渡されるので、引き渡し時にデータの欠落又はデータの変更等は生じないで、正常に引き渡しが終了することになる。
【００２３】
本発明の更に望ましい態様では、前記判別ステップでは、引き渡し元のソースプログラムが指定するデータに対して決定されたインターフェイスチェック用のデータ型と、引き渡し先のソースプログラムが指定するデータに対して決定されたインターフェイスチェック用のデータ型について、両者が整合している場合と両者が整合していない場合以外に、両者のデータ型は形式的には整合しているがデータ値が整合しなくなる可能性がある場合及びデータ型は形式的には整合していないがデータ値が整合する可能性がある場合とを少なくとも区別する。
【００２４】
これにより、データ型が形式的に不整合でもデータ値が整合する場合、あるいはデータ型が形式的に整合しているが、データ値が異なりうる場合について、利用者はチェック対象のデータが取りうる値をチェックすることにより、データ型が不整合でもデータ値が整合するために、実質的にデータ型が整合していると判断したり、あるいは、データ型が形式的に整合していてもデータ値が異なりうるために、実質的にデータ型が不整合であると判断することが可能になる。
【００２５】
より具体的には、前記インターフェイスチェック用の複数のデータ型は、データの種別として、文字、整数、浮動小数点データを少なくとも区別でき、当該データが整数の場合は符号付きか否かを区別できるように定められている。更に、前記整合性を判別するステップでは、引き渡し元のソースプログラムが指定するデータに対して決定されたインターフェイスチェック用のデータ型と、引き渡し先のソースプログラムが指定するデータに対して決定されたインターフェイスチェック用のデータ型について、両者がともに整数で、データ長が同じであるが、符号付きか否かにおいて異なる場合には、データ型が符号付きか否かにおいて形式的に異なるが、データ値が整合する場合もあることを示唆する警告メッセージを出力する。
【００２６】
更に具体的には、各ソースプログラムが指定する整数を表すデータに対応する、前記インターフェイスチェック用の複数のデータ型内のデータ型は、当該ソースプログラム内の前記整数を表すデータが表すことが可能な整数の桁数を識別可能になっている。更に、前記整合性を判別するステップでは、引き渡し元のソースプログラムが指定するデータに対して決定されたインターフェイスチェック用のデータ型と、引き渡し先のソースプログラムが指定するデータに対して決定されたインターフェイスチェック用のデータ型について、両者がともに整数で、データ長が同じであるが、引き渡し元のソースプログラムが指定した前記データにより表すことができる整数の桁数と引き渡し先のソースプログラムが指定した前記データにより表すことができる整数の桁数とが異なる場合、データ型が形式的に整合するが、データ値が異なる場合が起こりうることを示唆する警告メッセージを出力する。
【００２７】
更に具体的には、前記インターフェイスチェック用の複数のデータ型は、データの種別として、ポインタを更に区別可能に定められている。更に、前記整合性を判別するステップでは、引き渡し元のソースプログラムが指定するデータに対して決定されたインターフェイスチェック用のデータ型と、引き渡し元のソースプログラムが指定するデータに対して決定されたインターフェイスチェック用のデータ型について、両者のデータ長が同じであるが、一方がポインタであり、他方が符号付き又は符号なし整数である場合、データ型が形式的に異なるが、データ値が整合する場合があることを示唆する警告メッセージを出力する。
【００２８】
【発明の実施の形態】
以下、本発明に係る異種言語プログラム間インターフェイスのチェックプログラム及びチェック方法の実施の形態を図面を参照して具体的に説明する。
図１は、本発明に係るチェックプログラムの一つの実施の形態を使用した情報処理装置１の概略ブロック図である。１０は、ワークステーションあるいはパソコン等により実現されうる情報処理装置であり、１１は、キーボード及びマウス等のポインティングデバイスを含む入力装置であり、１２はＣＲＴ表示装置あるいは液晶表示装置等の表示装置である。１３は、処理装置１０に接続された補助記憶装置であり、磁気記憶装置その他により構成される。
【００２９】
処理装置１０ではチェックプログラム２０が実行される。チェックプログラム２０は、本発明に係る異種言語プログラム間インターフェイスのチェックプログラムの一つの実施の形態を示すものであり、処理装置１０、入力装置１１、表示装置１２、補助記憶装置１３を使用してチェックプログラム２０が実行されたときに、本発明に係る異種言語プログラム間インターフェイスのチェックチェック方法の一つの実施の形態が使用されることになる。チェックプログラム２０は、変換処理部２１と比較処理部２２とを含んでいる。これらの処理部あるいはその一部は、専用の論理回路により実現されてもよい。
【００３０】
補助記憶装置１３には以下の情報が記憶される。３１Ａ、３１Ｂは、利用者がプログラム間インターフェイスの整合性をチェックしようとする第１、第２のソースプログラムである。第１、第２のソースプログラム３１Ａ、３１Ｂは互いに異なる第１、第２のプログラム言語で記述されていると仮定する。他のプログラム言語で記述された更に多くのソースプログラムをチェック対象とする場合でも本発明は全く同様に適用できるが、以下では特に述べない限り、チェック対象として上記二つのソースプログラムを例にとり説明する。
【００３１】
３２Ａ、３２Ｂは、第１、第２のソースプログラムに対応する第１、第２のインターフェイス関連情報である。各インターフェイス関連情報は、対応するソースプログラムと他のソースプログラムとの間のデータの引き渡しインターフェイスに関連する情報である。変換処理部２１は、第１、第２のソースプログラム３１Ａ、３１Ｂのそれぞれからインターフェイスに関連する情報を集め、第１、第２のインターフェイス関連情報３２Ａ、３２Ｂとして出力する。具体的には、インターフェイス関連情報には、当該ソースプログラム自身に関する情報と当該ソースプログラム内の引き渡しに関連する複数の部分（インターフェイス部分）のそれぞれに関するインターフェイス部分情報、例えば、データ名とデータ型等が含まれる。
【００３２】
本実施の形態では、チェック対象の２つのソースプログラムを記述するのに用いられる２つのプログラム言語以上のプログラム言語に対して共通にインターフェイス整合性チェック用の複数のデータ型が定義される。これらのデータ型を指定するプログラム言語をインターフェイスチェック言語と呼ぶことにする。３３Ａ、３３Ｂ、３３Ｃ、…は、それぞれ第１、第２、第３のプログラム言語に対応して設けられた第１、第２、第３、…のデータ型変換情報である。例えば、第１、第２、第３のプログラム言語は、Ｃ言語、ＣＯＢＯＬ（コボル）、ＦＯＲＴＲＡＮ（フォートラン）である。各データ型変換情報は、対応するプログラム言語で使用可能な複数のデータ型の各々を、上記共通のインターフェイス整合性チェック用の複数のデータ型内の対応する一つのデータ型に変換するための情報を保持する。
【００３３】
変換処理部２１は、チェック対象の第１、第２のソースプログラム３１Ａ又は３１Ｂから生成した第１、第２のインターフェイス関連情報３２Ａ、３２Ｂに含まれた、複数のインターフェイスのそれぞれに関係する引き渡し対象のデータのデータ型を、それぞれ対応するソースプログラムを記述するプログラム言語に対応するデータ型変換情報３３Ａ又は３３Ｂを参照して、インターフェイスチェック用のデータ型に変換して、第１、第２インターフェイスチェック言語プログラム３４Ａ又は３４Ｂを生成する。
【００３４】
比較処理部２２は、第１、第２のインターフェイスチェック言語プログラム３４Ａと３４Ｂを比較照合して、元の第１、第２のソースプログラム３１Ａ、３１Ｂ内の引き渡されるデータについてのデータ型の整合性をチェックし、比較結果データ３５を出力する。比較結果データ３５は、整合していないインターフェイスに関して整合していない点を指摘する情報を含んでいる。比較結果データ３５は表示装置１２に表示され、利用者は表示された比較結果情報内の、整合していないインターフェイスについての整合していない点に関する情報に基づいて、ソースプログラム３１Ａ又は３１Ｂのうち当該インターフェイスに関与する部分を修正することができる。
【００３５】
図２は、Ｃ言語に対するデータ型変換情報の例を示す図である。図に示すように、Ｃ言語では、図の第１列、第２列にあるように、文字　ｃｈａｒ、符号付き整数　ｓｉｇｎｅｄ　ｃｈａｒ、符号なし整数　ｕｎｓｉｇｎｅｄ　ｃｈａｒ、符号付き短整数　ｓｈｏｒｔ、符号なし短整数　ｕｎｓｉｇｎｅｄ　ｓｈｏｒｔ、符号付き整数　ｉｎｔ　又は　ｓｉｇｎｅｄ　ｉｎｔ、符号なし整数　ｕｎｓｉｇｎｅｄ　ｉｎｔ、符号付き倍長整数　ｌｏｎｇ　又は　ｓｉｇｎｅｄ　ｌｏｎｇ、符号なし倍長整数　ｕｎｓｉｇｎｅｄ　ｌｏｎｇ、単精度浮動小数点データ　ｆｌｏａｔ、倍精度浮動小数点データ　ｄｏｕｂｌｅ、ポインタ（アドレス）　ｐｏｉｎｔｅｒ、ｎ個の文字（ｃｈａｒ）型の配列　ｃｈａｒ　ｘｘ［ｎ］というデータ型が使用可能である。
【００３６】
これらのデータ型に対するインターフェイスチェック言語用のデータ型は、図の第３列と第４列に示すように、要部と属性とを含んでいる。要部は、どのデータ型についても定義される部分であり、ここでは、データの種別を表す英字列の末尾にデータ長を表す数字を組み合わせて表されている。データの種別は、複数のプログラム言語で扱えるデータ型に対して共通に定められたものである。すなわち、文字　ｃｈａｒａｃｔｅｒ、符号付き整数　ｓｉｇｎｅｄ　ｉｎｔｅｇｅｒ、符号なし整数　ｕｎｓｉｇｎｅｄｉｎｔｅｇｅｒ、浮動小数点データ　ｆｌｏａｔ、ポインタ　ｐｏｉｎｔｅｒ、ｎ個の文字列　ｃｈａｒａｃｔｅｒ＊ｎである。データ長は、各ソースプログラムに対して、当該ソースプログラムをコンパイルして得られるオブジェクトプログラムの実行を制御するオペレーティングシステム（ＯＳ）が、当該ソースプログラムのプログラム言語の各データ型に対して指定するバイト単位のデータ長を表すようになっている。属性は、ここでは、整数を表すデータ型についてのみ指定されている。属性は、元の言語（ここではＣ言語）のデータ型により表せる整数の桁数を示している。Ｃ言語の場合、図の第４列に示すように、元のＣ言語の整数のデータ型が表せる桁数は、インターフェイスチェック言語用のデータ型内のデータ長が同じときには、Ｃ言語のデータ型の内容により変化することはない。
【００３７】
いずれかのプログラム言語で使用可能ないずれのデータ型に対しても、それが扱えるデータ種別とそのデータ型に対してＯＳが指定するデータ長と、元のデータ型で扱えるデータが整数である場合には更に属性との組で表されるデータ型が、インターフェイスチェック用の複数のデータ型に含まれるようになっている。データ種別、データ長、属性のいずれが異なっても、インターフェイスチェック用のデータ型は異なるデータ型として扱われる。異なるプログラム言語の複数のデータ型に対する、インターフェイスチェック用のデータ型が同じになるときには、そのデータ型は一つのみインターフェイスチェック用のデータ型に含まれる。
【００３８】
元のＣ言語で扱えるデータ型には、扱えるデータの種別とデータ長との組により異なる名称（英字列）が与えられていたが、インターフェイスチェック用のデータ型では、扱えるデータ種別とデータ長を示す数字を組み合わせ、扱えるデータ種別には、データ長とは独立に定められた名称（英字列）が与えられているので、データ種別を示す名称によりデータ種別を容易に識別可能である。更に、元のＣ言語で扱えるデータ型では、データ長は陽に表示されなかったが、インターフェイスチェック用のデータ型では、扱えるデータ種別にデータ長を組み合わせるので、各データ型のデータ長を容易に知ることができる。このようにインターフェイスチェック用のデータ型を定義し表現すると、使用されるデータ種別の名称の数が少なくなり、更にデータ長がデータ種別に付加されるので、データ種別が同じでデータ長が異なる複数のデータ型の識別が容易になる。ただし、本発明は、このようなデータ型の表示の仕方に限定されるものではない。
【００３９】
図３は、ＣＯＢＯＬに対するデータ型変換情報の例を示す図である。ＣＯＢＯＬでは、図の第１列、第２列にあるように、Ｃ言語とは非常に異なる多くのデータ型が使用可能である。しかし、これらのデータ型に対するインターフェイスチェック言語用のデータ型の要部は、図の第３列に示すように、データ種別、データ長とも、Ｃ言語の場合と類似している。図の第４列に示すように、Ｃ言語の場合と異なり、元のＣＯＢＯＬの整数のデータ型が表せる桁数は、インターフェイスチェック言語用のデータ型内のデータ長が同じでも、ＣＯＢＯＬのデータ型の内容により変化する。なお、図において、内部１０進数形式の１〜１８桁の符号付き整数　ＰＩＣ　Ｓ９（１）〜ＰＩＣ　Ｓ９（１８）と、内部１０進数形式の１〜１８桁の符号なし整数　ＰＩＣ　９（１）〜ＰＩＣ　９（１８）については、対応するデータ型が、ここで使用することを想定しているプログラム言語の範囲では、他のプログラム言語にはないので、インターフェイスチェック言語用のデータ型も定義していない。
【００４０】
図４は、ＦＯＲＴＲＡＮに対するデータ型変換情報の例を示す図である。ＦＯＲＴＲＡＮでは、図の第１列、第２列にあるように、使用可能なデータ型はＣ言語よりも少ない。符号なし整数は使用できない。ポインタも使用できない。図の第４列に示すように、Ｃ言語の場合と同様に、元のＦＯＲＴＲＡＮの整数のデータ型が表せる桁数は、インターフェイスチェック言語用のデータ型内のデータ長が同じときには、ＦＯＲＴＲＡＮのデータ型の内容により変化することはない。
【００４１】
以下において、チェックプログラム２０の処理の詳細を、ソースプログラムの具体例を用いて説明する。その説明の前に、使用するソースプログラムの例を説明する。
図５は、第１のソースプログラム３１Ａの例として使用可能なＣ言語で記述されたプログラムの例を示す図である。図内の最も左側に表示された番号はプログラムの行番号である。図において、プログラム文５１は、本ソースプログラム３１Ａのプログラム名を設定するプログラム文であり、このプログラム文５１は、プログラム名の後に、ピリオドを付け、その後に当該ソースプログラムを記述するのに使用されたプログラム言語に対してあらかじめ定められた識別記号を指定する。図の例では、プログラム文５１は、ソースプログラム名ｓｕｂａを指定し、Ｃ言語に対する言語識別記号ｃを指定している。
【００４２】
Ｃ言語では一般にソースプログラムは関数と呼ばれるプログラムを呼び出して使用する。図の例ではソースプログラム３１Ａ自身が他から呼び出し可能な関数である。したがって、以下ではソースプログラム３１Ａあるいは他のソースプログラムを関数と呼ぶことがある。プログラム文５１は、本ソースプログラム３１Ａのプログラム名を設定するプログラム文であり、このプログラム文５１は、ソースプログラム名ｓｕｂａと、本ソースプログラムがＣ言語で記述されていることを示す、Ｃ言語に対応する言語識別記号ｃとを示している。
【００４３】
プログラム文５２は、ソースプログラム３１Ａのプロトタイプ宣言であり、当該ソースプログラムを他のプログラムから呼び出すときに呼び出し元が指定すべき関数名ｓｕｂａと、呼び出し元が指定すべき二つの引数ａｒｇ１、ａｒｇ２を指定している。関数ｓｕｂａのデータ型は符号付き整数ｉｎｔであり、二つの引数ａｒｇ１、ａｒｇ２のデータ型も符号付き整数ｉｎｔであることが示されている。
【００４４】
プログラム文群５３は、複数のデータのデータ型を宣言している。すなわち、ｌｅｎｇｔｈ１は符号付き整数（ｉｎｔ）であり、ｄａｔａ１は文字型（ｃｈａｒ）で要素数が１００の配列である。ｓｈｏｒｔは符号付き短整数（ｓｈｏｒｔ）であり、ｆｌｏａｔ１は単精度浮動小数点データ（ｆｌｏａｔ）であり、ｒｔｃは符号付き整数（ｉｎｔ）である。プログラム文５４は、関数ｓｕｂ１を呼び出すプログラム文であり、引数として３つの引数ｌｅｎｇｔｈ１、ｄａｔａ１、ａｒｇ１を指定し、戻り値をデータｒｔｃとして受けることを示している。したがって、このプログラム文５４により、３つの引数ｌｅｎｇｔｈ１、ｄａｔａ１、ａｒｇ１が引き渡し元のソースプログラム３１Ａから引き渡し先のソースプログラムプログラム関数ＳＵＢ１に引き渡されるデータであることが分かる。更に、関数ＳＵＢ１での処理結果が戻り値としてソースプログラム３１Ａに引き渡され、データｒｔｃに格納される。この戻り値の引き渡しについては、関数ＳＵＢ１が引き渡し元になり、ソースプログラム３１Ａが引き渡し先になる。
【００４５】
プログラム文５５は、他の関数呼び出し文の例であり、関数ｓｕｂ２を呼び出し、引数としてｆｌｏａｔ１とｓｈｏｒｔ１、ａｒｇ２を指定し、戻り値を変数ｒｔｃに受け取ることを示す。最後のリターン文５６は、戻り値として値「０」を戻して関数を終了することを示す。したがって、このプログラム文５５により、３つの引数ｆｌｏａｔ１とｓｈｏｒｔ１、ａｒｇ２が引き渡し元のソースプログラム３１Ａから引き渡し先のソースプログラムプログラム関数ＳＵＢ２に引き渡されるデータであることが分かる。更に、関数ＳＵＢ２の処理結果が戻り値としてソースプログラム３１Ａに引き渡され、データｒｔｃに格納される。この戻り値の引き渡しについては、関数ＳＵＢ２が引き渡し元になり、ソースプログラム３１Ａが引き渡し先になる。
【００４６】
図６は、第２のソースプログラム３１Ｂとして使用可能なＣＯＢＯＬで記述されたプログラムの例を示す図である。図内の最も左側に表示された番号はプログラムの行番号である。図において、プログラム文６１は、本ソースプログラム３１Ｂのプログラム名を設定するプログラム文であり、このプログラム文６１は、ソースプログラム名ｓｕｂｘと、本ソースプログラムがＣＯＢＯＬで記述されていることを示す、ＣＯＢＯＬに対応する言語識別記号ｃｂｌとを示している。本ソースプログラム３１Ｂには複数のプログラムルーチンから構成されており、各プログラムルーチンが他のソースプログラムから呼び出し可能になっている。
【００４７】
プログラム文６２は、その内の最初のプログラムルーチンの名称がＳＵＢ１であることを示し、この名称は、呼び出し元ソースプログラムから呼び出し時に指定されるべきプログラム名称である。プログラム文群６３は、当該プログラムＳＵＢ１において使用する複数のデータのうち他のプログラムと共通に使用する複数のデータのデータ型を宣言している。図の例では、データＬＥＮＧＴＨ１、ＤＡＴＡ１、ＡＲＧ１と戻り値を設定する変数ＲＴＣが宣言され、それぞれのデータ型は、ＰＩＣ　Ｓ９（９）　ＣＯＭＰ（２進数表示の９桁の符号付き整数）、ＰＩＣ　Ｘ（１００）（１００個の英数字の配列）、ＰＩＣ　Ｓ９（９）　ＣＯＭＰ（２進数表示の９桁の符号付き整数）、ＰＩＣ　Ｓ９（９）　ＣＯＭＰ（２進数表示の９桁の符号付き整数）である。
【００４８】
プログラム文６４は、実行すべき処理を記述する部分の先頭部分であり、当該処理で使用されるデータを宣言する。ここでは、上記３つのデータが使用されることが示されている。プログラム文群６５は、処理の詳細を記述する部分であり、図ではその詳細は省略している。以上から、上記３つのデータについては、関数ＳＵＢ１の呼び出し元のソースプログラムがこれらのデータの引き渡し元ソースプログラムであり、関数ＳＵＢ１は、これらのデータの引き渡し先ソースプログラムである。処理結果データについては、関数ＳＵＢ１は、このデータの引き渡し元のソースプログラムであり、関数ＳＵＢ１の呼び出し元のソースプログラムがこれらのデータの引き渡し先のソースプログラムである。
【００４９】
プログラム文６６は、プログラム文６２と同様に、ソースプログラム３１Ｂに含まれた他のプログラムルーチンの名称ＳＵＢ２を示し、この名称が呼び出し元から指定されるべきプログラム名称である。プログラム文群６７は、プログラム文群６３と同様に、当該プログラムＳＵＢ２において使用する複数のデータのうち他のプログラムと共通に使用する複数のデータのデータ型を宣言している。図の例では、データＦＬＯＡＴ１とＳＨＯＲＴ１とＡＲＧ２と戻り値を設定する変数ＲＴＣとが宣言されている。それぞれのデータ型は、ＦＬＯＡＴ１は　ＵＳＡＧＥ　ＣＯＭＰ−１　型（２進数表示の単精度浮動小数点データ）であり、ＳＨＯＲＴは　ＰＩＣ　Ｓ９（４）　ＣＯＭＰ型（２進数表示の４桁の符号付き整数）であり、ＡＲＧ２はＰＩＣ　Ｓ９（９）ＣＯＭＰ　型（２進数表示の９桁の符号付き整数）であり、戻り値を設定するデータＲＴＣは、ＰＩＣ　９（９）　ＣＯＭＰ　型（２進数表示の９桁の符号なし整数）である。プログラム文６８は、プログラム文６４と同様に、実行すべき処理の実体を記述している部分の先頭部分であり、当該処理で使用されるデータを宣言している。図の例では、上記三つの変数ＦＬＯＡＴ１とＳＨＯＲＴ１とＡＲＧ２が使用されるべきことを示している。
【００５０】
図５と図６の比較から分かるように、図５のソースプログラム３１Ａのプログラム文５４により図６のソースプログラム３１Ｂに引き渡されるデータは、ｌｅｎｇｔｈ１、ｄａｔａ１、ｓｈｏｒｔであり、それらのデータに対して引き渡し元のソースプログラム３１Ａが指定するデータ型と引き渡し先のソースプログラム３１Ｂが指定するデータ型とを併記すると、ｌｅｎｇｔｈ１については、ｉｎｔ（符号付き整数）と　ＰＩＣ　Ｓ９（９）　ＣＯＭＰ（２進数表示の９桁の符号付き整数）であり、ｄａｔａ１については、ｃｈａｒ［１００］（文字型で要素数が１００の配列）とＰＩＣ　Ｘ（１００）（１００個の英数字の配列）であり、ａｒｇ１については、ｓｈｏｒｔ（符号付き短整数）とＰＩＣ　Ｓ９（９）　ＣＯＭＰ　（２進数表示の９桁の符号付き整数）である。
【００５１】
同様に、図５のソースプログラム３１Ａのプログラム文５５により図６のソースプログラム３１Ｂに引き渡されるデータは、ｆｌｏａｔ１とｓｈｏｒｔ１とａｒｇ２であり、ｆｌｏａｔ１に対して引き渡し元のソースプログラム３１Ａが指定するデータ型と引き渡し先のソースプログラム３１Ｂが指定するデータ型は、ｆｌｏａｔ　（単精度浮動小数点データ）とＵＳＡＧＥ　ＣＯＭＰ−１（２進数表示の単精度浮動小数点データ）である。このように、プログラム間で引き渡されるデータについて、引き渡し元のソースプログラムが指定するデータ型と引き渡し先のソースプログラムが指定するデータ型が異なっているため、両者が一定しているか否かを利用者が判別することは容易でない。
【００５２】
図７は、チェックプログラム２０内の変換処理部２１の処理の概略フローチャートである。変換処理部２１は、インターフェイスチェック対象の複数のソースプログラム３１Ａ、３１Ｂの各々に対して図に示す処理を実行する。図では、３１はチェック対象のソースプログラム３１Ａ、３１Ｂの一つを示し、３２は当該ソースプログラムから生成されるインターフェイス関連情報を一般的に示す。３３は当該ソースプログラムを記述しているプログラム言語に対応するデータ型変換情報を一般的に示し、３４は当該チェック対象のソースプログラムに対して得られるインターフェイスチェック言語プログラムを一般的に示している。
【００５３】
まずチェック対象のソースプログラム３１を補助記憶装置１３から読み込み（ステップＳ２１１）、当該ソースプログラム３１からそのソースプログラムの記述に使用されているプログラム言語を判定する（ステップＳ２１２）。ソースプログラム３１が、図５に示されたソースプログラム３１Ａの例である場合は、プログラム文５１から当該ソースプログラムを記述するプログラム言語がＣ言語であると判定される。同様に、ソースプログラム３１が、図６のソースプログラム３１Ｂの場合には、プログラム文６１から当該ソースプログラムが、ＣＯＢＯＬで記述されていることが判定される。
【００５４】
図７に戻り、ステップＳ２１３では、当該ソースプログラム３１と他のソースプログラムとの間のデータの引き渡しインターフェイスに関連する情報を取得してインターフェイス関連情報を生成する。このインターフェイス関連情報は、具体的には、当該ソースプログラム３１自身に関する情報と当該ソースプログラム３１内の引き渡しに関連する複数の部分（インターフェイス部分）のそれぞれに関するインターフェイス部分情報とを含む。チェック対象のソースプログラム３１中のどの部分がインターフェイス部分であるかは、そのソースプログラムについてステップＳ２１２で判定された当該ソースプログラムを記述するプログラム言語に対応してあらかじめ定めることができる。
【００５５】
ソースプログラム３１自身に関する情報は、プログラム名称と、当該プログラムの記述に使用されているプログラム言語名を含んでいる。なお、当該ソースプログラム３１が関数であるときにはその関数名と関数の型等の情報が含まれる。各インターフェイス部分情報は、呼び出し文により他のソースプログラムを呼び出すインターフェイス部分では、引き渡し先のソースプログラムの名称と、引き渡しに関係する複数のパラメータの各々の名称と各パラメータのデータ型等が含まれる。
【００５６】
インターフェイス部分は、処理中のソースプログラムから他のソースプログラムを呼び出す部分（例えばコール文）が含まれている場合には、当該呼び出し部分が呼び出し側のソースプログラムのインターフェイス部分を表すことになる。当該インターフェイス部分に関するインターフェイス部分情報として、呼び出し部分が指定する引き渡し先のソースプログラムの名称及び引き渡し先に渡すべき引数若しくは引き渡し先のソースプログラムからの戻り値を受け取るべき変数のいずれか又は両方を含む一つ又は複数の変数が使用される。引き渡し先に渡すべき引数が複数個指定されているときには、それらの引数をソースプログラムが指定する順序通りに保持する。戻り値を受け取るべき変数が複数個指定されている場合も同様である。
【００５７】
図８は、図５に示されたソースプログラム３１Ａに対して得られる第１インターフェイス関連情報３２Ａの例を示す図である。図において情報８１は、ソースプログラム３１Ａのプログラム文５１から生成された、当該ソースプログラムに関する情報であり、具体的には、プログラム名は、「ｓｕｂａ．ｃ」であり、プログラム言語が「Ｃ」、すなわちＣ言語であることを示している。なお、情報８１の最後の数字「０」は、情報８１が元のソースプログラムプログラム３１Ａ内に位置する行の番号を示す。このことは他の情報８２、…についても同じである。情報８２と８３と８４は、元のプログラム文５２から生成された情報であり、情報８２は、関数名が「ｓｕｂａ」であることを示し、情報８３は、インターフェイスで引き渡すパラメータが、ｉｎｔ　型のａｒｇ１とｉｎｔ　型のａｒｇ２であることを示し、情報８４は、他の呼び出し元のソースプログラムに戻す戻り値は、関数ｓｕｂａの値であり、その型は　ｉｎｔ　型であることを示している。
【００５８】
情報８５、８６、８７は、元のソースプログラム３１Ａ内の関数呼び出し文５４とプログラム文群５３とから生成された情報であり、情報８５は、呼び出し先の関数名が「ＳＵＢ１」であることを示し、情報８６は、引き渡し先の関数がＳＵＢ１であり、引き渡すデータが、ｉｎｔ　型のｌｅｎｇｔｈ１と、ｃｈａｒ　型の要素数１００の配列であるｄａｔａ１と、ｉｎｔ　型のａｒｇ１であることを示している。情報８７は、戻り値を引き渡す引き渡し元の関数がＳＵＢ１であり、戻り値を受け取るデータが　ｉｎｔ　型のｒｔｃであることを示している。同様に、情報８８、８９、９０は、元のソースプログラム３１Ａ内の関数呼び出し文５５とプログラム文群５３とから生成された情報であり、情報８８は、呼び出し先の関数名が「ＳＵＢ２」であることを示し、情報８９は、引き渡し先の関数がｓｕｂ２であり、引き渡すデータが、ｆｌｏａｔ　型のｆｌｏａｔ１と、ｓｈｏｒｔ　型のｓｈｏｒｔ１とｉｎｔ　型のａｒｇ２であることを示す。情報９０は、戻り値の引き渡し元の関数がＳＵＢ２であり、戻り値を受けるデータが　ｉｎｔ　型のｒｔｃであることを示している。
【００５９】
図９は、図６に示されたソースプログラム３１Ｂに対して得られる第２のインターフェイス関連情報３２Ｂの例を示す図である。図において情報９１は、ソースプログラム３１Ｂのプログラム文６１から生成された、当該ソースプログラムに関する情報であり、具体的には、プログラム名は、「ＳＵＢＸ．ｃｂｌ」であり、プログラム言語が「ＣＯＢＯＬ」であることを示している。
【００６０】
情報９２は、元のプログラム文６２から生成された情報であり、関数名が「ＳＵＢ１」であることを示し、情報９３は、元のプログラム文６３と６４から生成された情報であり、データの引き渡しを受けるべき関数（引き渡し先の関数）が「ＳＵＢ１」であり、引き渡されるべきデータが、ＰＩＣ　Ｓ９（９）　ＣＯＭＰ　型のｌｅｎｇｔｈ１と、ＰＩＣ　Ｘ（１００）　型の配列であるｄａｔａ１と、ＰＩＣ　Ｓ９（９）　ＣＯＭＰ　型のａｒｇ１であることを示している。情報９４は、関数ＳＵＢ１の戻り値を受け取るデータがＲＴＣであり、そのデータ型がＰＩＣ　Ｓ９（９）　ＣＯＭＰ　型（２進数表示の９桁の符号付き整数）であることを示している。
【００６１】
同様に、情報９５は、元のプログラム文６６から生成された情報であり、関数名が「ＳＵＢ２」であることを示し、情報９６は、元のプログラム文群６７とプログラム文６８から生成された情報であり、データの引き渡しを受けるべき関数（引き渡し先の関数）が「ＳＵＢ２」であり、引き渡されるべきデータが、ＵＳＡＧＥ　ＣＯＭ−１　型のＦＬＯＡＴ１と　ＰＩＣ　Ｓ９（９）　ＣＯＭＰ型のＳＨＯＲＴ１とＰＩＣ　Ｓ９（９）　ＣＯＭＰ型のＡＲＧ２であることを示している。情報９７は、関数ＳＵＢ２の戻り値を受け取るべきデータがＲＴＣであり、そのデータ型がＰＩＣ　９（９）　ＣＯＭＰ　型（２進数表示の９桁の符号なし整数）であることを示している。
【００６２】
図７に戻り、変換処理部２１では、ステップＳ２１４において、ステップＳ２１３で生成されたインターフェイス関連情報３２内のデータ型を、あらかじめ複数のプログラム言語に対応して定められた複数のデータ型変換情報３３Ａ、３３Ｂ、３３Ｃ、…のうち、元のソースプログラム３１の記述に使用されたプログラム言語に対応して定められたデータ型変換情報３３を使用して、インターフェイスチェック言語用のデータ型に変換して、インターフェイスチェック言語プログラム３４を生成する。こうして、変換処理部２１の処理が終了する。
【００６３】
図１０は、図８に示された第１インタフェイス関連情報３２Ａに基づいて生成された第１インターフェイスチェック言語プログラム３４Ａの例を示す図である。図において、図８に示された第１インタフェイス関連情報３２Ａ内のデータ型が、Ｃ言語用データ型変換情報３３Ａ（図２）に基づいて、インターフェイスチェック言語のデータ型に変換され、更に、各行の情報に命令コードｓｅｔが付加されて、第１インターフェイスチェック言語プログラム３４Ａが生成される。したがって、命令１０１から１１０は図８の情報８１から９０に対応している。
【００６４】
命令コードｓｅｔは、その命令コード以降の部分をメモリ等に設定することを指示する命令コードであり、第１インターフェイスチェック言語プログラム３４Ａが読み込まれたときに、各行のｓｅｔ命令が実行され、各行のｓｅｔ命令コード以降の部分がメモリに記憶される。図１０に示すように、インターフェイスチェック言語のデータ型は、そのデータ型が整数型でないときには要部のみが使用され、そのデータ型が整数型であるときには、その属性である元のソースプログラムのプログラム言語のデータ型により表すことができた桁数が括弧内に入れて要部に付加されている。
【００６５】
図１１は、図９に示された第２インタフェイス関連情報３２Ｂに基づいて生成された第２インターフェイスチェック言語プログラム３４Ｂの例を示す図である。図において、図９に示された第１インタフェイス関連情報３２Ｂ内のデータ型が、ＣＯＢＯＬ用データ型変換情報３３Ｂ（図３）に基づいてインターフェイスチェック言語のデータ型に変換され、更に、各行の情報に命令コードｓｅｔが付加され、第２インターフェイスチェック言語プログラム３４Ｂが生成される。したがって、命令１１１から１１７は図９の情報９１から９７に対応している。
【００６６】
図１に戻り、チェックプログラム２０では、比較処理部２２が、複数のソースプログラム、例えば３１Ａ、３１Ｂに対して得られたインターフェイスチェック言語プログラム３４Ａ、３４Ｂを比較して、インターフェイスの整合性をチェックする。以下では、インターフェイスの整合性のチェックのうち、データ型の整合性について主に説明する。
【００６７】
比較処理部２２では、各ソースプログラム内のデータの引き渡しに関する部分について、いくつかのチェックを行う。例えば、呼び出し元のソースプログラムが指定する呼び出し先のソースプログラムの名称と、呼び出し先のソースプログラムが指定する呼び出し用のソースプログラムの名称とが一致している必要がある。更に、呼び出し元のソースプログラム（引き渡し元のソースプログラム）と呼び出し先のソースプログラム（引き渡し先のソースプログラム）との間で引き渡されるデータのデータ型とデータ数についてのそれぞれのソースプログラムの指定が合っている必要がある。
【００６８】
すなわち、引き渡し元のソースプログラムが引き渡されるべきデータとして指定するデータに対応するデータを引き渡し先のソースプログラムが引き渡されるデータとして指定している必要があり、かつ、当該データについて、引き渡し元のソースプログラムと引き渡し先のソースプログラムがそれぞれ指定するデータ型が整合している必要がある。更に、引き渡し元のソースプログラムが複数のデータを引き渡されるべきデータとして指定するときには、引き渡し先のソースプログラムも同数のデータを引き渡されるデータとして指定する必要がある。なお、引き渡されるデータについて、引き渡し元のソースプログラムと引き渡し先のソースプログラムがそれぞれ指定するデータ名が一致していなくてもよいのが普通である。
【００６９】
比較処理部２２は、以上の処理を、比較すべき２つのソースプログラムに対して得られた第１、第２のインターフェイスチェック言語プログラム３４Ａ、３４Ｂに基づいて行う。以上の処理の結果、インターフェイスの整合性について問題点を見つけた場合、比較処理部２２は、その問題点に言及する警告メッセージを出力する。以下では、比較処理部２２の処理のうち、データ型の整合性のチェックに関する部分のみを詳細に説明する。
【００７０】
大きく異なるプログラム言語で記述された２つのソースプログラムの間では、データの整合性に関しては、整合している、あるいは不整合であるという場合だけではなく、形式的には整合しているが、データ値によっては実質的には不整合になる可能性がある場合（形式的に整合しかし実質的に不整合の可能性がある場合）あるいは逆に形式的には整合していないがデータ値によっては実質的に整合していると扱うことができる可能性がある場合（形式的に不整合しかし実質的に整合の可能性がある場合）も起こりうる。したがって、比較処理部２２は、データの整合性に関して、単に整合、不整合という判別だけでなく、以上に述べた形式的に整合しかし実質的に不整合の可能性がある場合と形式的に不整合しかし実質的に整合の可能性がある場合も識別するようになっている。
【００７１】
以下では、Ｃ言語ソースプログラム３１Ａ（図５）から生成された第１のインターフェイスチェック言語プログラム３４Ａ（図１０）と、ＣＯＢＯＬソースプログラム３１Ｂ（図６）から生成された第２のインターフェイスチェック言語プログラム３４Ｂ（図１１）とを例に用いて比較処理部２２の処理を説明する。
【００７２】
なお、以下に説明する処理の前に、引き渡し元のソースプログラムが指定する引き渡されるべきデータに対応するデータを当該引き渡しされるべきデータの引き渡し先のソースプログラムが指定していること、及び引き渡し元のソースプログラムが指定する当該データの名称とそのデータ型と、それに対応するデータとして当該引き渡されるべきデータの引き渡し先のソースプログラムが指定するデータの名称とデータ型とが、比較処理部２２により、当該比較すべき２つのソースプログラムから得られた２つのインターフェイスチェック言語プログラムに基づいて確認されているとする。
【００７３】
例えば、図１０の命令１０６が指定する、関数ＳＵＢ１に引き渡すべきデータｌｅｎｇｔｈ１、ｄａｔａ１、ａｒｇ１に対しては、図１１の命令１１３が指定する、引き渡されるべきデータＬＥＮＧＴＨ１、ＤＡＴＡ１、ＡＲＧ１がそれぞれ対応し、図１０の命令１０７が指定する、関数ＳＵＢ１から引き渡される戻り値を受け取る変数ｒｔｃに対しては、図１１の命令１１４が指定する、関数ＳＵＢ１の値として戻すべき変数ＲＴＣが対応することが判明している。同様に、図１０の命令１０９が指定する、関数ＳＵＢ２に引き渡すべきデータｆｌｏａｔ１、ｓｈｏｒｔ１、ａｒｇ２に対しては、図１１の命令１１６が指定する、引き渡されるべきデータＦＬＯＡＴ１、ＳＨＯＲＴ１、ＡＲＧ２がそれぞれ対応し、図１０の命令１１０が指定する、関数ＳＵＢ２から引き渡されるべき戻り値を受け取る変数ｒｔｃにに対しては、図１１の命令１１７が指定する、関数ＳＵＢ２の値として戻すべき変数ＲＴＣが対応することが判明している。
【００７４】
図１２は、比較処理部２２の処理のうちデータ型の整合性のチェック処理に関する概略フローチャートである。まず、引き渡し元と引き渡し先のソースプログラムの間で引き渡されるべきいずれかのデータに対する、引き渡し元と引き渡し先のインターフェイスチェック言語プログラムが指定するデータ型を抽出する（ステップＳ２２１）。データ長が一致するか否かがまず判別される（ステップＳ２２２）。ステップＳ２２２でデータ長が一致していると判断された場合、データ種別が一致するか否かが判別される（ステップＳ２２３）。ここで、データ種別の一致は、インターフェイスチェック言語のデータ型の要部に基づいて判別するとする。データ型が整数の場合の属性は後に別に判別する。
【００７５】
すなわち、ステップＳ２２３でデータ種別が一致すると判断されたときには、データ種別が整数であるか否かが判別される（ステップＳ２２４）。整数であるときには、属性が一致するか、すなわち、元のソースプログラムのデータ型が表せる整数の桁数が一致するか否かが判別され（ステップＳ２２５）。ステップＳ２２４において整数でないと判断されたとき、あるいはステップＳ２２４において整数であると判断されたがステップＳ２２５において桁数が一致すると判断されたときには、データ型は整合すると判断することができる。このときには、比較処理部２２は、チェック結果として何も出力しない。
【００７６】
図１３は、異なるプログラム言語の間で整合すると判断できるいくつかの例を示す図である。以下では、プログラム言語の例として、Ｃ言語、ＣＯＢＯＬ、ＦＯＲＴＲＡＮを用いる。図のＡＡの場合に示すように、文字同士では、データ長が一致することが整合するための必要十分条件である。すなわち、文字数が１文字同士、ｎ文字同士（ｎは複数）が整合する。図のＡＢの場合に示すように、整数同士は、データ長が同じであるだけでなく、符号の有無と元のデータ型で表せる桁数が一致するときに整合する。すなわち、符号付き整数同士は、Ｃ言語とＦＯＲＴＲＡＮのデータ型が表す桁数は２桁、４桁、９桁のみであるので、これらの言語の整数のデータ型は、符号の有無とデータ長により、整合するか否かを判別することができる。一方、ＣＯＢＯＬでは、整数は、１桁から１８桁までの任意の桁数を表すことができる。しかし、ＣＯＢＯＬの整数型が表す桁数が２桁、４桁、９桁のときには、Ｃ言語あるいはＦＯＲＴＲＡＮの整数型のデータと比べると、当該データは、Ｃ言語又はＦＯＲＴＲＡＮの整数型のデータと整合することは間違いがない。
【００７７】
図１４は、異なるプログラム言語の間で整合すると判断できる他の例を示す図である。図１３には、符号付き整数同士で整合する例が示されているが、図１４には、符号なし整数同士で整合する例が示されている。図１４には、浮動小数点データ同士で整合するいくつかのデータ長のデータ型の例も示されている。浮動小数点データの場合には、データ長が一致すれば整合する。図１４には、ポインタ同士で整合するデータ型の例も示されている。Ｃ言語とＣＯＢＯＬでは、ポインタ（アドレス）を表すことができる。ここでは、いずれの言語に対してもデータ長はＯＳにより４バイトと指定されているので、Ｃ言語とＣＯＢＯＬの間では、ポインタ（アドレス）を表すデータ型は整合する。しかし、ＦＯＲＴＲＡＮには、ポインタ（アドレス）を表すデータ型はない。
【００７８】
図１２に戻り、ステップＳ２２５において２つの整数型のデータの元のデータ型が表すことができる整数の桁数が異なると判断される場合もある。例えば、ＣＯＢＯＬの符号付き整数を表す２バイトのデータ　ＰＩＣ　Ｓ９（３）　ＣＯＭＰ　は３桁の整数を表す。一方、Ｃ言語では、２バイトの符号付き整数を表すデータ型は　ｓｈｏｒｔ　又は　ｓｉｇｎｅｄ　ｓｈｏｒｔ　であるが、これらは４桁の整数を表すことができる。したがって、これらの２つの言語の２バイトの符号付き整数を表すデータ型は、表すことができる桁数が異なるので、不整合である。しかし、Ｃ言語の上記データ型のデータが、ソースプログラム上では３桁以下の整数を表し、４桁の整数を表さない範囲で使用されていることが利用者に分かるときには、両データ型は、形式的には整合しないが、実質的に整合しているとしてそのまま使用してもよい。
【００７９】
したがって、ステップＳ２２５において２つの元のデータ型が表せる桁数が異なると判断されたときには、単に不整合とする警告メッセージではなく、桁数が異なることを指摘し、実際に使用される整数の桁数が一致する範囲で使用されるならば整合するとしてよいことを示唆する警告メッセージ＃１を比較結果データ３５に出力する（ステップＳ２２６）。例えば、「ソースプログラムｓｕｂａ．ｃの○○行目のデータ△△と、ソースプログラムＳＵＢＸ．ｃｂｌの□□行目のデータ××はともに整数を表すデータ型であるが、表せる桁数が異なる。しかし、両者が桁数が一致する範囲で使用されているならば、整合しているとしてもよい。」という２つの文章からなる。ただし、後の文章を省略してもよい。前の文章が後の文章の内容を陰に示唆しているからである。
【００８０】
図１５は、そのような、元のデータ型が表せる桁数のみが異なる整数を表す２つのデータ型の例を示す図である。図には、元のデータ型が表せる桁数のみで異なる符号付き整数の例を示す。図１６は、元のデータ型が表せる桁数のみが異なる整数を表す２つのデータ型の他の例を示す図である。図には、元のデータ型が表せる桁数のみで異なる符号なし整数の例を示す。図１５と図１６から分かるように、Ｃ言語とＦＯＲＴＲＡＮの間では、データ長が同じ整数型の間で、表せる桁数が異なる場合はないが、ＣＯＢＯＬとＣ言語の間又はＣＯＢＯＬとＦＯＲＴＲＡＮの間には、そのような桁数の相違が発生する。
【００８１】
さて、ステップＳ２２３においてデータ種別が一致しないと判断されたときには、データ型はともに整数であって不一致点が符号の有無である場合か否かが判別される（ステップＳ２２７）。２つのデータ型が、データ長が一致し、ともに整数であり、符号の有無が異なる場合、２つのデータ型は形式的には異なるではあるが、ソースプログラム上では、符号なしのデータ型が、最上位ビットが０である正の整数を表す範囲で使用されていることが利用者に分かるならば、２つのデータ型のデータは実質的に整合するとしてそのまま使用してもよいことが分かる。
【００８２】
したがって、ステップＳ２２８において２つのデータ型が整数を表し、符号の有無のみで異なると判断されたときには、単に不整合とする警告メッセージではなく、符号の有無が異なることを指摘し、符号なし整数の実際に使用される値が符号付き整数と同じとなる範囲で使用されるならば、両データ型は整合するとしてよいことを示唆する警告メッセージ＃２を比較結果データ３５に出力する（ステップＳ２２８）。例えば、「ソースプログラムｓｕｂａ．ｃの○○行目のデータ△△と、ソースプログラムＳＵＢＸ．ｃｂｌの□□行目のデータ××は、ともに整数を表すデータ型であるが、符号の有無で異なる。しかし、符号なし整数が、符号付き整数と同じ値になる範囲で使用されているならば、両データ型を整合しているとしてもよい。」という２つの文章からなる。ただし、後の文章を省略してもよい。前の文章が後の文章の内容を陰に示唆しているからである。
【００８３】
例えば、図１０の命令１１０が指定する、関数ＳＵＢ２の戻り値を受け取る変数ｒｔｃは、４バイト長の９桁の符号付き整数である。図１１の命令１１７が指定する関数ＳＵＢ２の戻り値として戻すべき変数ＲＴＣは、４バイト長の９桁の符号なし整数である。したがって、それらの二つの変数ｒｔｃとＲＴＣは、符号の有無だけが異なるデータ型である。このため、次のような警告メッセージ＃２を比較結果データ３５に出力する。「ソースプログラムｓｕｂａ．ｃの２０行目のデータｒｔｃと、ソースプログラムＳＵＢＸ．ｃｂｌの２７行目のデータＲＴＣは、ともに整数を表すデータ型であるが、符号の有無で異なる。しかし、符号なし整数が、符号付き整数と同じ値になる範囲で使用されているならば、両データ型は整合しているとしてもよい。」
【００８４】
図１７は、そのような、符号の有無が異なる２つのデータ型の例を示す図である。図において、ＦＯＲＴＲＡＮの例が示されていない場合には、ＦＯＲＴＲＡＮには該当するデータ型がないことを意味する。なお、図１７からも分かるように、図１７に示された例には、符号の有無以外に、元のデータ型が表示される桁数が異なる場合も含まれている。したがって、図１２に戻り、ステップＳ２２８で警告メッセージ＃２を出力した後、先に述べたステップＳ２２５に処理が移り、そこで比較中のデータ型の表示できる桁数が比較され、桁数が異なると判断された場合には、ステップＳ２２６において、桁数が異なる旨を示唆する警告メッセージ＃１が追加して出力される。
【００８５】
ステップＳ２２７においてデータ種別がともに整数であり不一致点が符号の有無である場合ではないと判断されたときには、データ種別が文字型　ｃｈａｒａｃｔｅｒ　と整数　ｉｎｔｅｇｅｒ　であり、データ長がともに１バイトである否かが判断される（ステップＳ２２９）。ｃｈａｒａｃｔｅｒ型のデータは１バイトであるため、文字を示した値を１バイトの数値としても表し得る。したがって、ｃｈａｒａｃｔｅｒ型は、ｉｎｔｅｇｅｒ型とはデータ型が異なるが、数値として扱う場合には、ｉｎｔｅｇｅｒ　型のデータとデータ値が一致し結果として整合するとしてもよい場合がある。
【００８６】
したがって、ステップＳ２２９において２つのデータ種別が文字型　ｃｈａｒａｃｔｅｒと整数　ｉｎｔｅｇｅｒ　であり、データ長がともに１バイトであると判断されたときには、単に不整合とする警告メッセージではなく、同じデータ長のデータ型が文字と整数であってデータ値によっては両データ型は整合するとしてよいことを示唆する警告メッセージ＃３を比較結果データ３５に出力する（ステップＳ２３０）。例えば、「ソースプログラムｓｕｂａ．ｃの○○行目のデータ△△と、ソースプログラムＳＵＢＸ．ｃｂｌの□□行目のデータ××は、データ型は、文字と整数であり異なる。しかし、ともに１バイト長であり、データ値によっては、両データ型を整合しているとしてもよい場合がある。」という２つの文章からなる。ただし、後の文章を省略してもよい。前の文章が後の文章の内容を陰に示唆しているからである。
図１８は、データ種別が文字型と整数型であって、データ長が同じデータ型の例を示す図である。
【００８７】
図１２に戻り、ステップＳ２２９において２つのデータ種別が文字型　ｃｈａｒａｃｔｅｒ　と整数　ｉｎｔｅｇｅｒ　ではないと判断されたときには、データ種別の不一致の点がポインタと整数との不一致か否かが判断される（ステップＳ２３１）。ポインタはＦＯＲＴＲＡＮにはない。しかし、Ｃ言語のＰＯＩＮＴＥＲとＣＯＢＯＬの　ＰＯＩＮＴＥＲ、　ＡＤＤＲＥＳＳ　に対して、ＦＯＲＴＲＡＮには４バイトの符号付き整数型　ＩＮＴＥＧＥＲ　又は　ＩＮＴＥＧＥＲ＊４　がある。これらは、Ｃ言語の　ＰＯＩＮＴＥＲ　と同じく４バイト長であるので、データ値によっては整合すると考えてよい場合もある。
【００８８】
したがって、ステップＳ２３１においてデータ種別の不一致がポインタと整数との不一致であると判断された場合、単に不整合とする警告メッセージではなく、データ型がポインタと整数であり異なるが、データ値によっては両データ型は整合するとしてよいことを示唆する警告メッセージ＃４を比較結果データ３５に出力する（ステップＳ２３２）。例えば、「ソースプログラムｓｕｂａ．ｃの○○行目のデータ△△と、ソースプログラムＳＵＢＸ．ｃｂｌの□□行目のデータ××は、ポインタと整数を表しデータ型が異なる。しかし、データ値によっては、両データ型を整合しているとしてもよい場合がある。」という２つの文章からなる。ただし、後の文章を省略してもよい。前の文章が後の文章の内容を陰に示唆しているからである。
図１９は、データ種別がポインタと整数であって、データ長が同じデータ型の例を示す。
【００８９】
ステップＳ２２２において、比較対象の２つのデータ型のデータ長が異なると判別されたときには、その旨を示す警告メッセージ＃５が比較結果データ３５に出力される（ステップＳ２３３）。例えば、「ソースプログラムｓｕｂａ．ｃの○○行目のデータ△△と、ソースプログラムＳＵＢＸ．ｃｂｌの□□行目のデータ××は、データ長が異なる。」
【００９０】
図５のプログラムと図６のプログラムの場合には、図１０の命令１０９が指定する、関数ＳＵＢ２の呼び出しに使用する引数ｓｈｏｒｔ１は、２バイト長の４桁の符号付き整数である。図１１の命令１１６が指定する関数ＳＵＢ２の引数ＳＨＯＲＴ１は、４バイト長の９桁の符号付き整数である。したがって、これらの２つの整数のデータ長は異なるので、次のような警告メッセージ＃５が比較結果データ３５に出力される。「ソースプログラムｓｕｂａ．ｃの２０行目のデータｓｈｏｒｔ１と、ソースプログラムＳＵＢＸ．ｃｂｌの２７行目のデータＳＨＯＲＴ１は、データ長が異なる。」
図２０は、データ長が異なり不整合となるデータ型の他の例を示す図である。図にあるように、ｎ文字とｍ文字はｎとｍが異なる場合には、データ長が異なり不整合となる。
【００９１】
図１２に戻り、ステップＳ２３１において２つのデータ種別がポインタと整数ではない判断されたときには、データ型は不整合と判断され、その旨を示す警告メッセージ＃６が比較結果データ３５に出力される（ステップＳ２３４）。例えば、「ソースプログラムＳＵＢＡ．Ｃの○○行目のデータ△△と、ソースプログラムＳＵＢＸ．ＣＢＬの□□行目のデータ××はデータ型が不整合である。」
【００９２】
以上の処理の後に、比較照合すべきデータ型がまだあるかが判定され（ステップＳ２３５）、比較照合すべきデータ型がまだある場合には、処理はステップＳ２２１に戻って、以上の処理が繰り返される。ステップＳ２３５において、比較照合すべきデータ型がないと判断されたときには、比較処理部２２の処理が終了する。このように、本実施の形態では、各ソースプログラムが指定するデータ型が、複数のソースプログラムに対して共通に定めたインターフェイスチェック言語のデータ型に変換されて比較されるので、プログラム言語が大きく異なる場合でもデータ型の整合性を自動的に判別することが可能になる。更に、単に整合、不整合以外にも、形式的には不整合、しかし実質的に整合といえる場合あるいは形式的には整合、しかしデータ値によっては不整合となりうる場合も判断させることが可能になる。
【００９３】
なお、本発明は、以上に説明した実施の形態に限定されず、請求項に記載した発明の範囲を変更しない範囲で、上記実施の形態を修正あるいは変更してもよいことは言うまでもない。
【００９４】
【発明の効果】
以上述べたように、本発明によれば、異なるプログラム言語で記述された複数のソースプログラムの間で引き渡されるパラメータのデータ型の整合性を自動的にチェックすることが可能になる。
本発明の望ましい態様では、整合か不整合かに加えて、見かけ上データ型が不整合であっても、データ値によっては整合しているとしてもよい可能性がある場合あるいは、見かけ上データ型が整合しても、データ値によっては不整合となる可能性がある場合等を検出して利用者に知らせることができる。
【図面の簡単な説明】
【図１】本発明に係るチェックプログラムの一つの実施の形態を使用した情報処理装置の概略ブロック図である。
【図２】Ｃ言語に対するデータ型変換情報の例を示す図である。
【図３】ＣＯＢＯＬに対するデータ型変換情報の例を示す図である。
【図４】ＦＯＲＴＲＡＮに対するデータ型変換情報の例を示す図である。
【図５】Ｃ言語で記述されたソースプログラムの例を示す図である。
【図６】ＣＯＢＯＬで記述されたソースプログラムの例を示す図である。
【図７】チェックプログラム内の変換処理部の処理の概略フローチャートである。
【図８】図５に示したソースプログラムに対して得られるインターフェイス関連情報の例を示す図である。
【図９】図６に示したソースプログラムに対して得られる他のインターフェイス関連情報の例を示す図である。
【図１０】図８に示されたインタフェイス関連情報に基づいて生成されたインターフェイスチェック言語プログラムの例を示す図である。
【図１１】図９に示された他のインタフェイス関連情報に基づいて生成された他のインターフェイスチェック言語プログラムの例を示す図である。
【図１２】比較処理部の処理のうちデータ型の整合性のチェック処理に関する概略フローチャートである。
【図１３】異なるプログラム言語の間で整合すると判断できるいくつかの例を示す図である。
【図１４】異なるプログラム言語の間で整合すると判断できる他の例を示す図である。
【図１５】元のデータ型が表せる桁数のみが異なる整数を表す２つのデータ型の例を示す図である。
【図１６】元のデータ型が表せる桁数のみが異なる整数を表す２つのデータ型の他の例を示す図である。
【図１７】符号の有無が異なる２つのデータ型の例を示す図である。
【図１８】データ種別が文字型と整数であり、データ長が同じデータ型の例を示す図である。
【図１９】データ種別がポインタと整数であり、データ長が同じデータ型の例を示す。
【図２０】データ長が異なり不整合となるデータ型の例を示す図である。
【図１】
2004118494.tif 000003
【図２】
2004118494.tif 000004
【図３】
2004118494.tif 000005
【図４】
2004118494.tif 000006
【図５】
2004118494.tif 000007
【図６】
2004118494.tif 000008
【図７】
2004118494.tif 000009
【図８】
2004118494.tif 000010
【図９】
2004118494.tif 000011
【図１０】
2004118494.tif 000012
【図１１】
2004118494.tif 000013
【図１２】
2004118494.tif 000014
【図１３】
2004118494.tif 000015
【図１４】
2004118494.tif 000016
【図１５】
2004118494.tif 000017
【図１６】
2004118494.tif 000018
【図１７】
2004118494.tif 000019
【図１８】
2004118494.tif 000020
【図１９】
2004118494.tif 000021
【図２０】
2004118494.tif 000022