(57)【要約】【課題】ソースコードの整合性を判定することができるプログラミング言語変換支援装置、プログラミング言語変換支援方法、およびプログラムを提供することである。【解決手段】実施形態のプログラミング言語変換支援装置は、第一ソースコード記憶部と、第一実行部と、第二ソースコード記憶部と、第二実行部と、言語変換支援部と、変換ルール記憶部と、実行結果照合部とを持つ。第一ソースコード記憶部は、第一ソースコードを記憶する。第二ソースコード記憶部は、第二ソースコードを記憶する。第一コンパイラ部は、第一ソースコードを第一実行ファイルに変換する。第二コンパイラ部は、第二ソースコードを第二実行ファイルに変換する。第一実行部は、第一実行ファイルを実行する。第二実行部は、第二実行ファイルを実行する。実行結果照合部は、第一実行部及び第二実行部の実行結果を所定の有効桁数で照合する。【選択図】図１
2019109687.tif 000002
【特許請求の範囲】
【請求項１】
第一ソースコードを記憶する第一ソースコード記憶部と、
第二ソースコードを記憶する第二ソースコード記憶部と、
前記第一ソースコードを第一実行ファイルに変換する第一コンパイラ部と、
前記第二ソースコードを第二実行ファイルに変換する第二コンパイラ部と、
前記第一実行ファイルを実行する第一実行部と、
前記第二実行ファイルを実行する第二実行部と、
前記第一実行部から出力される変数値と前記第二実行部から出力される変数値とを所定の有効桁数で照合する実行結果照合部と、
を備えるプログラミング言語変換支援装置。
【請求項２】
前記第一ソースコードから前記第二ソースコードへの言語変換の支援を行う言語変換支援部、
をさらに備える請求項１に記載のプログラミング言語変換支援装置。
【請求項３】
第一ソースコードにおけるモジュール名と第二ソースコードにおけるモジュール名との対応関係を変換規則として記憶する変換ルール記憶部、
をさらに備え、
前記言語変換支援部は、前記変換ルール記憶部から読み出した前記変換規則に基づいて、前記第一ソースコードにおけるモジュール名を前記第二ソースコードにおけるモジュール名に変換するための支援を行う、
請求項２に記載のプログラミング言語変換支援装置。
【請求項４】
前記第一実行部および前記第二実行部のそれぞれに対して割込信号を通知する割込制御部、
をさらに備え、
前記実行結果照合部は、前記割込制御部による割込の時点における、前記第一実行部から出力される変数値と前記第二実行部から出力される変数値とを照合する、
請求項１から３までのいずれか一項に記載のプログラミング言語変換支援装置。
【請求項５】
前記第一実行部における実行をトレースした結果を記憶する第一トレース記憶部と、
前記第二実行部における実行をトレースした結果を記憶する第二トレース記憶部と、
前記割込制御部による割込の時点における前記第一トレース記憶部と前記第二トレース記憶部を照合して整合性を判定するトレース結果照合部と、
をさらに備え、
前記第一実行部は、前記第一実行ファイルの実行をトレースした結果を前記第一トレース記憶部に書き込み、
前記第二実行部は、前記第二実行ファイルの実行をトレースした結果を前記第二トレース記憶部に書き込む、
請求項４に記載のプログラミング言語変換支援装置。
【請求項６】
第一ソースコード記憶部が、第一ソースコードを記憶し、
第二ソースコード記憶部が、第二ソースコードを記憶し、
第一コンパイラ部が、前記第一ソースコードを第一実行ファイルに変換し、
第二コンパイラ部が、前記第二ソースコードを第二実行ファイルに変換し、
第一実行部が、前記第一実行ファイルを実行し、
第二実行部が、前記第二実行ファイルを実行し、
実行結果照合部が、前記第一実行部から出力される変数値と前記第二実行部から出力される変数値とを所定の有効桁数で照合する、
プログラミング言語変換支援方法。
【請求項７】
コンピューターを、
請求項１から５までのいずれか一項に記載のプログラミング言語変換支援装置
として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、プログラミング言語変換支援装置、プログラミング言語変換支援方法、およびプログラムに関する。
【背景技術】
【０００２】
従来、システム開発などでは、科学技術計算に向いている古典的なプログラミング言語が用いられている。例えば、Ｆｏｒｔｒａｎ（フォートラン）などの古典的なプログラミング言語は、現在も大規模な計算を行う分野において用いられていることが多い。しかし、古典的なプログラミング言語は、計算処理言語として高い評価を受けている一方、扱えるＩＴ（Information Technology）技術者が減少しているという課題がある。このため、従来技術では、古典的言語のプログラムソースを、例えばＣ（シー）などの広く使用されている言語に自動で変換する手法が提案されている。この手法では、あらかじめプログラミング言語変換用の変換規則データファイルに基づき、字句変換、構文変換及び意味変換などが行われる。変換規則データファイルは、Ｆｏｒｔｒａｎの機能を一旦仕様に変換し、変換された仕様に基づき、Ｃの機能を構築するための変換規則を持つ。しかし、古典的なプログラミング言語では、長期間の運用によるソースコードの変更が行われていることが多い。このため、変換規則データファイルを用いた変換方法を用いると、変換前後のプログラム間での字面としての対応付けがし難いという場合があった。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開平５−１９７５６０号公報
【特許文献２】特開２００９−１５１６１３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
本発明が解決しようとする課題は、ソースコードの整合性を判定することができるプログラミング言語変換支援装置、プログラミング言語変換支援方法、およびプログラムを提供することである。
【課題を解決するための手段】
【０００５】
実施形態のプログラミング言語変換支援装置は、第一ソースコード記憶部と、第一実行部と、第二ソースコード記憶部と、第二実行部と、言語変換支援部と、変換ルール記憶部と、実行結果照合部とを持つ。第一ソースコード記憶部は、第一ソースコードを記憶する。第二ソースコード記憶部は、第二ソースコードを記憶する。第一コンパイラ部は、前記第一ソースコードを第一実行ファイルに変換する。第二コンパイラ部は、前記第二ソースコードを第二実行ファイルに変換する。第一実行部は、前記第一実行ファイルを実行する。第二実行部は、前記第二実行ファイルを実行する。実行結果照合部は、前記第一実行部から出力される変数値と前記第二実行部から出力される変数値とを所定の有効桁数で照合する。
【図面の簡単な説明】
【０００６】
【図１】第１の実施形態におけるプログラミング言語変換支援装置を示すブロック図。
【図２】第１の実施形態における変換規則のデータテーブルの具体例を示すデータ構成図。
【図３】第１の実施形態における実行結果の具体例を示すデータ構成図。
【図４】第２の実施形態におけるプログラミング言語変換支援装置を示すブロック図。
【図５】第２の実施形態における割り込み結果の具体例を示すデータ構成図。
【図６】第２の実施形態におけるトレース結果の具体例を示すデータ構成図。
【発明を実施するための形態】
【０００７】
以下、実施形態のプログラミング言語変換支援装置を、図面を参照して説明する。なお以下の説明では、同一又は類似の機能を有する構成に同一の符号を付す。そして、それら構成の重複する説明は省略する場合がある。
【０００８】
（第１の実施形態）
図１は、第１の実施形態におけるプログラミング言語変換支援装置１Ａの機能構成を示すブロック図である。プログラミング言語変換支援装置１Ａは、プログラムを第一ソースコードから第二ソースコードへ変換するための支援を行うとともに、その変換が正しく行われているか否かを判定する装置である。プログラミング言語変換支援装置１Ａは、各ソースコードのモジュールを分析した結果に基づいて言語の変換規則を生成し、第二ソースコードの記述を支援する。また、プログラミング言語変換支援装置１Ａは、第一実行部１２ａと第二実行部１５ａの出力結果を照合することによって変換の整合性を判定する。なお、以下では例として、第一ソースコードの記述言語をＦｏｒｔｒａｎとし、第二ソースコードの記述言語をＣとする。ただし、第一ソースコードおよび第二ソースコードのプログラミング言語は何でもよい。例えば、プログラミング言語として、ＢＡＳＩＣや、アセンブリ言語や、ＣＯＢＯＬや、ＰＬ／Ｉや、Ｌｉｓｐや、Ｃ＋＋や、Ｃ＃などを用いることができる。
【０００９】
プログラミング言語変換支援装置１Ａは、第一ソースコード記憶部１０と、第一コンパイラ部１１と、第一実行部１２ａと、第二ソースコード記憶部１３と、第二コンパイラ部１４と、第二実行部１５ａと、言語変換支援部１６と、変換ルール記憶部１７と、実行値出力部１８と、実行結果照合部１９とを備える。プログラミング言語変換支援装置１Ａを構成する各部を、例えば、電子回路を用いて実現することができる。また、コンピューターを用いて各部を実現するようにしてもよい。
【００１０】
第一ソースコード記憶部１０は、第一ソースコードをテキストデータとして記憶する。第一ソースコードのＦｏｒｔｒａｎは、古くから存在するプログラミング言語であるため、システムによっては、長期間の運用がなされていることが多い。このため、第一ソースコードは、長期間の運用により、ソースコード自体に多くの改変がなされていることも少なくない。そして、運用中の第一ソースコードが変更される場合、第一ソースコード記憶部１０は、変更された最新の第一ソースコードを記憶する。
【００１１】
第一コンパイラ部１１は、第一ソースコードを第一実行ファイルに変換する。はじめに、第一コンパイラ部１１は、第一ソースコード記憶部１０に記憶されている第一ソースコードを読み込み、コンパイルする。そして、第一コンパイラ部１１は、第一ソースコード内にコンパイルエラーがない場合、コンパイル結果を第一実行ファイルとして生成し、第一実行ファイルを第一実行部１２ａへ渡す。第一ソースコード内にコンパイルエラーが含まれていた場合、第一コンパイラ部１１は、エラー処理を行い、第一実行ファイルを生成せず、コンパイル処理を中止する。
【００１２】
第一実行部１２aは、第一コンパイラ部１１から渡された第一実行ファイルを実行する。このとき、第一実行部１２aは、処理の実行時に入力する実行値を実行値出力部１８に渡す。そして、第一実行部１２aは、第一実行ファイルの処理が終了すると、実行終了時の各処理変数の値を実行結果照合部１９に渡す。
【００１３】
第二ソースコード記憶部１３は、第二ソースコードをテキストデータとして記憶する。また、第二ソースコードは、システム運用の開始時は、ユーザーが記述する必要がある。
【００１４】
第二コンパイラ部１４は、第二ソースコードを第二実行ファイルに変換する。第二コンパイラ部１４は、第二ソースコード記憶部１３に記憶されている第二ソースコードを読み込み、コンパイルする。そして、第二コンパイラ部１４は、第二ソースコード内にコンパイルエラーがない場合、コンパイル結果を第二実行ファイルとして生成し、第二実行ファイルを第二実行部１５ａへ渡す。第二ソースコード内にコンパイルエラーが含まれていた場合、第二コンパイラ部１４は、エラー処理を行い、第二実行ファイルを生成せず、コンパイル処理を中止する。
【００１５】
第二実行部１５aは、第二コンパイラ部１４から渡された第二実行ファイルを実行する。このとき、第二実行部１５aは、処理の実行時に入力する実行値を、実行値出力部１８から受け取る。そして、第二実行部１５aは、第二実行ファイルの処理が終了すると、実行終了時の各処理変数の値を実行結果照合部１９に渡す。
【００１６】
言語変換支援部１６は、第一ソースコードを第二ソースコードに変換するための支援を行う機能を有する。この変換支援の機能として様々な形態があり得る。変換支援機能の一例として、言語変換支援部１６は、第一ソースコードに含まれるラベルと第二ソースコードに含まれるラベルとを対応付け、ユーザーが第二ソースコードを記述する際に、第二ソースコードに含まれるラベルの候補を提示する。なお、ラベルとは、モジュール名（サブルーチン名、関数名等）や、変数名等である。具体的には次の通りである。
【００１７】
言語変換支援部１６は、変換ルール記憶部１７から読み出した変換規則に基づいて、第一ソースコードにおけるモジュール名を第二ソースコードにおけるモジュール名に変換するための支援を行う。そして、言語変換支援部１６は、第一ソースコードから第二ソースコードへ言語変換の支援を行う。はじめに、言語変換支援部１６は、第一ソースコードと第二ソースコードとを解析し、各ソースコード内で対応するモジュールのペアを変換規則として動的に生成する。そして、言語変換支援部１６は、生成した変換規則と各モジュール名を、後述する変換ルール記憶部１７に格納する。これによって、言語変換支援部１６は、言語変換の際、生成した変換規則を用いて第二ソースコードへの入力補完や自動変換などを行う。本実施形態では、例として、言語変換支援部１６は、変換規則を用いた入力補完を行う。また、例として、変換規則に使用されるモジュール名は、Ｆｏｒｔｒａｎにおけるサブルーチン名と、Ｃにおける関数名とする。入力補完は、変換規則に基づいて、第一ソースコードのサブルーチン名に対応した第二ソースコードの関数名を第二ソースコードに自動で付与するものである。言語変換支援部１６は、変換ルール記憶部１７を参照し、変換規則が存在する場合、参照した変換規則を使用し、入力補完を行う。変換規則が存在しない場合、言語変換支援部１６は、第二ソースコードに対し入力補完を行わず、第一ソースコードのサブルーチン名を変換ルール記憶部１７に格納する。次に、言語変換支援部１６は、変換ルール記憶部１７に格納したサブルーチン名に対応する第二ソースコードの更新を待つ。次に、第二ソースコード記憶部１３内の第二ソースコードが更新されるたび、言語変換支援部１６は、第二ソースコードのＣに記述された関数の中から第一ソースコードのサブルーチンに対応する関数名を解析する。そして、更新後の最新の第二ソースコードに該当する関数名が存在する場合、言語変換支援部１６は、サブルーチン名と関数名を関連付けし、変換規則名を変換ルール記憶部１７に格納する。
【００１８】
例えば、ユーザーは、言語変換支援部１６の機能を用いて、第一ソースコードに対応する第二ソースコードを、編集、作成する。その際、ユーザーは、第一ソースコードに記述される処理内容の順序と第二ソースコードに記述される処理内容の順序とが同一になるように対応付ける。したがって、仮に第一ソースコード内にバグが内在していても、そのバグが内在したままの状態で第二ソースコードが作成されることもある。
【００１９】
変換ルール記憶部１７は、第一ソースコードにおけるモジュール名と第二ソースコードにおけるモジュール名との対応関係を変換規則として記憶する。変換規則とは、変換ルール記憶部１７に格納される、第一ソースコードにおけるモジュール名と第二ソースコードにおけるモジュール名とのペアの集合である。また、変換ルール記憶部１７は、最初から変換規則データファイルのような変換規則を持たず、言語変換支援部１６からの通知により変換規則のデータテーブルを更新する。例として、変換ルール記憶部１７は、言語変換支援部１６から受信したモジュール名や変換規則名を、第一ソースコードをＦｏｒｔｒａｎ、第二ソースコードをＣとして、変換規則を記憶する。はじめに、第一ソースコードのＦｏｒｔｒａｎでは、変換ルール記憶部１７は、言語変換支援部１６から受信したサブルーチン名を第一ソースコードのモジュール名としてデータテーブルに登録する。次に、変換ルール記憶部１７は、言語変換支援部１６から受信した関数名を、第二ソースコードのモジュール名として第一ソースコードのモジュール名と関連付けてデータテーブルに登録する。最後に、変換ルール記憶部１７は、言語変換支援部１６から受信した変換規則名を、対応するモジュールのペアと関連付けて登録する。
【００２０】
実行値出力部１８は、第一実行部１２ａから、処理の実行時に入力する実行値を受け取り、受け取った実行値を第二実行部１５ａに渡す。なお、プログラミング言語変換支援装置１Ａは、リアルタイム処理を行わない。このため、実行値出力部１８は、任意のタイミングで第一実行部１２ａから渡された実行値を第二実行部１５ａへ渡してよい。また、本実施形態では、後述する実行結果照合部１９は、第一実行部１２ａと第二実行部１５ａとの実行値が同じであれば結果を判定できる。このため、実行値出力部１８は、第二実行部１５ａから実行値を受け取り、第一実行部１２ａへ渡すようにしてもよいし、実行値出力部１８から実行値を第一実行部１２ａと第二実行部１５ａとに渡すようにしてもよい。
【００２１】
実行結果照合部１９は、第一実行部１２ａによる実行結果と第二実行部１５ａによる実行結果とをそれぞれ受け取り、両者を照合する。具体的には、実行結果照合部１９は、第一実行部１２ａから渡される変数値と、第二実行部１５ａから渡される変数値とを照合する。なお、実行結果照合部１９は、第一実行部１２ａおよび第二実行部１５ａから受け取る変数値を照合する際、変数ごとに定められた有効桁数の範囲内において一致しているか否かを判定する。そのため、実行結果照合部１９は、第一実行部１２ａおよび第二実行部１５ａから、各変数の有効桁数の情報を併せて受け取る。
【００２２】
図２は、第１の実施形態における変換規則のデータテーブルの具体例を示すデータ構成図である。変換規則のデータテーブルは、変換規則名と、第一ソースコードモジュール名と、第二ソースコードモジュール名とを含む。変換規則名は、言語変換支援部１６から受信した第一ソースコードモジュール名と第二ソースコードモジュール名を関連付けた変換規則の名称である。なお、変換ルール記憶部のデータテーブルでは、第一ソースコードモジュール名のみが登録されている状態では、変換規則名のデータ項目は空の状態である。第一ソースコードモジュール名は、言語変換支援部１６から受信した第一ソースコード内で使用されているサブルーチンなどのモジュール名称である。第二ソースコードモジュール名は、第二ソースコード内で使用されている関数などのモジュールの名称である。
【００２３】
図３は、第１の実施形態における実行結果の具体例を示すデータ構成図である。実行結果のデータテーブルは、変数名と、第一ソースコード出力値と、第二ソースコード出力値を含む。例として、変数名は、第一ソースコードと第二ソースコードとで共通した変数名を表す。また、言語変換支援部１６は、第一ソースコードを第二ソースコードに変換する際、同じ処理を行うモジュールに同じ変数名を割り当てるため、共通の変数名として扱うことができる。なお、変数名は、第一ソースコードと第二ソースコードとで共通した名前を使用しなくてもよい。その場合、第一ソースコードと第二ソースコードとで、対応する変数名を同じデータ項目に登録する。第一ソースコード出力値は、第一実行部１２ａから実行結果照合部１９へ渡された各変数の数値を表す。第二ソースコード出力値は、第二実行部１５ａから実行結果照合部１９へ渡された各変数の数値を表す。また、各出力値は、実行動作の終了時に各変数が保持している値で、各処理によって定義される変数値である。
【００２４】
以上、第１の実施形態は、第一ソースコードから第二ソースコードを逐次的に変換し、各ソースコードの実行結果を照合することで、変換後のソースコードの整合性を確かめる効果を持つ。これにより、第１の実施形態は、第一ソースコードから第二ソースコードへの言語変換を逐次的に行うことが可能になる。また、第１の実施形態は、第一ソースコードと第二ソースコードから、対応するモジュールを解析し、変換規則を動的に生成する。このため、言語変換支援部１６は、第一ソースコードから第二ソースコードへの変換を効率的に行えるよう支援する。
【００２５】
（第２の実施形態）
次に、第２の実施形態について説明する。なお、前実施形態において既に説明した事項については以下において説明を省略する場合がある。ここでは、本実施形態に特有の事項を中心に説明する。
【００２６】
図４は、第２の実施形態におけるプログラミング言語変換支援装置を示すブロック図である。プログラミング言語変換支援装置１Ｂは、古典的プログラミング言語である第一ソースコードを高級プログラミング言語である第二ソースコードへの変換が正しく行われているか判定し、記述支援を行う装置である。そして、プログラミング言語変換支援装置１Ｂは、言語の変換規則を各ソースコードのモジュールに基づいて判定し、第二ソースコードの記述を支援する。また、プログラミング言語変換支援装置１Ｂは、プログラミング言語の変換によって生じる整合性の有無を、出力結果の照合から判定する装置である。また、第２の実施形態は、第１の実施形態と違い、最後まで処理を実行するだけでなく、割込制御によって任意のタイミングで実行結果の変数値を照合し、モジュールの処理順序の整合性を判定する。
【００２７】
プログラミング言語変換支援装置１Ｂは、第一ソースコード記憶部１０と、第一コンパイラ部１１と、第一実行部１２ｂと、第二ソースコード記憶部１３と、第二コンパイラ部１４と、第二実行部１５ｂと、言語変換支援部１６と、変換ルール記憶部１７と、実行値出力部１８と、実行結果照合部１９と、割込制御部２０と、第一トレース記憶部２１と、第二トレース記憶部２２と、トレース結果照合部２３とを備える。プログラミング言語変換支援装置１Ｂを構成する各部を、例えば、電子回路を用いて実現することができる。また、コンピューターを用いて各部を実現するようにしてもよい。
【００２８】
第一実行部１２ｂは、第一コンパイラ部１１から出力された第一実行ファイルを実行する。このとき、第一実行部１２ｂは、処理の実行時に入力する実行値を実行値出力部１８に渡す。また、第一実行部１２ｂは、第一実行ファイルの実行をトレースした結果を第一トレース記憶部２１に書き込む。このとき、第一実行部１２ｂは、割込制御部２０から割込命令を受信すると、出力結果として、割込時点における各処理変数の値と、各変数名と、割込点情報とを実行結果照合部１９に通知する。割込点情報とは、割込命令を受信した時刻ごとに、各変数名と変数値を関連付けて表した情報である。また、第一実行部１２ｂは、第一ソースコードの実行処理のフローを示すため、割込命令を受信するまで、各サブルーチンで処理が実行される毎に、使用されたサブルーチン名と、処理時刻とを後述する第一トレース記憶部２１へ通知する。また、割込命令を受信した場合、第一実行部１２ｂは、使用されたモジュール名を「割込処理」、処理時刻を「割込命令を受信した時間」として、第一トレース記憶部２１へ通知し、実行処理を一時停止する。なお、本実施形態では、例として割込処理を受信すると、第一実行部１２ｂは実行処理を一時停止するが、処理内容を第一トレース記憶部２１へ通知したのち、実行処理を再開してもよい。
【００２９】
第二実行部１５ｂは、第二コンパイラ部１４から出力された第二実行ファイルを実行する。このとき、第二実行部１５ｂは、第一実行部１２ｂで実行時に入力した実行値を実行値出力部１８から受け取る。また、第二実行部１５ｂは、第二実行ファイルの実行をトレースした結果を第二トレース記憶部２２に書き込む。このとき、第二実行部１５ｂは、割込制御部２０から割込命令を受信すると、出力結果として、割込時点における各処理変数の値と、各変数名と、割込点情報とを実行結果照合部１９に通知する。また、第二実行部１５ｂは、第二ソースコードの実行処理のフローを示すため、割込命令を受信するまで、各関数で処理が実行される毎に、使用された関数名と、処理時刻とを後述する第二トレース記憶部２２へ通知する。また、割込命令を受信した場合、第二実行部１５ｂは、使用されたモジュール名を「割込処理」、処理時刻を「割込命令を受信した時間」として、第二トレース記憶部２２へ通知し、実行処理を一時停止する。なお、本実施形態では、例として割込処理を受信すると、第二実行部１５ｂは実行処理を一時停止するが、処理内容を第二トレース記憶部２２へ通知したのち、実行処理を再開してもよい。
【００３０】
実行結果照合部１９は、割込制御部２０による割込の時点における、第一実行部１２ｂから出力される変数値と第二実行部１５ｂから出力される変数値とを照合する。また、実行結果照合部１９は、照合した結果が誤っていた場合でも、照合した変数の数値と判定結果を、後述するトレース結果照合部２３に通知する。割込処理が行われた場合、実行結果照合部１９は、割込処理の時点における、第一実行部１２ｂから渡される変数値と、第二実行部１５ｂから渡される変数値とを照合する。割込処理が行われなかった場合、実行結果照合部１９は、第１の実施形態と同様に、第一実行部１２ｂから渡される変数値と、第二実行部１５ｂから渡される変数値とを照合する。なお、実行結果照合部１９は、第一実行部１２ｂおよび第二実行部１５ｂから受け取る変数値を照合する際、変数ごとに定められた有効桁数の範囲内において一致しているか否かを判定する。そのため、実行結果照合部１９は、第一実行部１２ｂおよび第二実行部１５ｂから、各変数の値を受け取る際、割込処理の有無に関わらず、有効桁数の情報を併せて受け取る。
【００３１】
割込制御部２０は、第一実行部１２ｂおよび第二実行部１５ｂのそれぞれに対して割込命令（割込信号）を任意のタイミングで通知する。このとき、割込制御部２０は、ユーザーが指定した任意のタイミングで、割込指示を受け付ける。また、プログラミング言語変換支援装置１Ｂは、リアルタイム処理を行わない。このため、割込制御部２０は、第一実行部１２ｂと第二実行部１５ｂの処理が開始されるタイミングと、指定された任意の割込処理のタイミングを制御する。なお、例として、割込制御部２０は、ユーザーが指定した任意のタイミングで割込指示を受け付けるが、処理のプログラム内で任意の時刻を設定し、その時刻に割込命令を通知するように実装してもよい。
【００３２】
第一トレース記憶部２１は、第一実行部１２ｂにおける実行をトレースした結果を記憶する。そして、第一トレース記憶部２１は、第一実行部１２ｂから受信したデータをデータテーブルに登録する。第一実行部１２ｂから受信するデータは、処理時刻のデータと、実行された処理の中で使用されたモジュール名である。また、第一トレース記憶部２１は、割込処理が行われた場合、第一実行部１２ｂから受信する割込処理命令を、使用されたモジュールとして格納する。割込処理が行われなかった場合、第一トレース記憶部２１は、第一実行部１２ｂの処理が終了するまで、第一実行部１２ｂから受信するデータを格納する。
【００３３】
第二トレース記憶部２２は、第二実行部１５ｂにおける実行をトレースした結果を記憶する。そして、第二トレース記憶部２２は、第二実行部１５ｂから受信したデータをデータテーブルに登録する。第二実行部１５ｂから受信するデータは、処理時刻のデータと、実行された処理の中で使用されたモジュール名である。また、第二トレース記憶部２２は、割込処理が行われた場合、第二実行部１５ｂから受信する割込処理命令を、使用されたモジュールとして格納する。割込処理が行われなかった場合、第二トレース記憶部２２は、第二実行部１５ｂの処理が終了するまで、第二実行部１５ｂから受信するデータを格納する。
【００３４】
トレース結果照合部２３は、割込制御部２０による割込の時点における、第一トレース記憶部２１と第二トレース記憶部２２とを照合して整合性を判定する。トレース結果照合部２３は、第一トレース記憶部２１と第二トレース記憶部２２を参照し、第一実行部１２ｂで処理されたモジュールと、第二実行部１５ｂで処理されたモジュールを順番に比較する。そして、トレース結果照合部２３は、変換ルール記憶部１７と、モジュールの比較結果とを照合し、呼ばれるモジュールの順序が一致しているか否かを判定する。変換ルール記憶部１７の変換規則と、各トレース記憶部内のデータとが照合できない場合、トレース結果照合部２３は、エラー処理を行う。このとき、トレース結果照合部２３は、エラー処理として、照合できなかった第一処理内容と第二処理内容とを、各モジュールの処理時刻とともに表示する。また、トレース結果照合部２３は、実行結果照合部１９から受信した変数の判定結果を用いて、未処理の変数と処理済みの変数を区別する。そして、トレース結果照合部２３は、処理済みの変数の値を照合し、割込処理までの実行結果が正しいか否かを判定する。
【００３５】
図５は、第２の実施形態における割り込み結果の具体例を示すデータ構成図である。割込処理による実行結果のデータテーブルは、割込点と、変数名と、第一ソースコード出力値と、第二ソースコード出力値を含む。割込点は、各実行部から通知される、割込制御部２０が割込命令を通知した時間と、割込命令の回数とが関連付けられた割込名を表す。変数名は、第一ソースコードと第二ソースコードで共通した変数名を表す。第一ソースコード出力値は、第一実行部１２ｂから出力された、割込点での各変数の数値を表す。第二ソースコード出力値は、第二実行部１５ｂから出力された、割込点での各変数の数値を表す。
【００３６】
図６は、第２の実施形態におけるトレース結果の具体例を示すデータ構成図である。トレース結果を示すデータテーブルは、第一ソースコード処理時刻と、第一処理内容と、第二ソースコード処理時刻と、第二処理内容とを備える。第一ソースコード処理時刻は、第一実行部１２ｂで各モジュールの処理が終了した時刻を表す。第一処理内容は、第一実行部１２ｂで処理が終了した際に使用されていたモジュール名を表す。第二ソースコード処理時刻は、第二実行部１５ｂで各モジュールの処理が終了した時刻を表す。第一処理内容は、第二実行部１５ｂで処理が終了した際に使用されていたモジュール名を表す。
【００３７】
以上、第２の実施形態は、第一ソースコードと第二ソースコードを実行するとき、割込制御を行い、各ソースコードの割込処理時点における実行結果の整合性を照合することができる効果を持つ。これにより、第２の実施形態は、第一ソースコードから第二ソースコードへの言語変換をさらに細かく行うことが可能になる。また、第２の実施形態は、第一トレース情報と第二トレース情報から、対応する処理時刻と処理内容を解析し、割込処理までに用いられたモジュールの対応を判定することができる効果を持つ。
【００３８】
以上説明した少なくともひとつの実施形態によれば、プログラミング言語変換支援装置は、各言語のソースコードを実行させ、実行結果の整合性を照合しながら、逐次的に言語変換を行うことができる。また、プログラミング言語変換支援装置は、プログラミング言語の変換規則を最初から保持せず、各言語のソースコードからモジュールを抽出し、関連付けることで変換規則を動的に生成する。そして、プログラミング言語変換支援は、生成された変換規則を使用し、第二ソースコードに対し記述支援を行うことができる。
【００３９】
なお、上述した実施形態におけるプログラミング言語変換支援装置の機能の少なくとも一部をコンピューターで実現するようにしても良い。その場合、この機能を実現するためのプログラムをコンピューター読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピューターシステムに読み込ませ、実行することによって実現しても良い。なお、ここでいう「コンピューターシステム」とは、ＯＳや周辺機器等のハードウェアを含むものとする。また、「コンピューター読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ＲＯＭ、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ、ＵＳＢメモリー等の可搬媒体、コンピューターシステムに内蔵されるハードディスク等の記憶装置のことをいう。さらに「コンピューター読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムを送信する場合の通信線のように、短時間の間、動的にプログラムを保持するもの、その場合のサーバーやクライアントとなるコンピューターシステム内部の揮発性メモリーのように、一定時間プログラムを保持しているものも含んでも良い。また上記プログラムは、前述した機能の一部を実現するためのものであっても良く、さらに前述した機能をコンピューターシステムにすでに記録されているプログラムとの組み合わせで実現できるものであっても良い。
【００４０】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれると同様に、特許請求の範囲に記載された発明とその均等の範囲に含まれるものである。
【符号の説明】
【００４１】
１Ａ，１Ｂ…プログラミング言語変換支援装置、１０…第一ソースコード記憶部、１１…第一コンパイラ部、１２ａ，１２ｂ…第一実行部、１３…第二ソースコード記憶部、１４…第二コンパイラ部、１５ａ，１５ｂ…第二実行部、１６…言語変換支援部、１７…変換ルール記憶部、１８…実行値出力部、１９…実行結果照合部、２０…割込制御部、２１…第一トレース記憶部、２２…第二トレース記憶部、２３…トレース結果照合部
【図１】
2019109687.tif 000003
【図２】
2019109687.tif 000004
【図３】
2019109687.tif 000005
【図４】
2019109687.tif 000006
【図５】
2019109687.tif 000007
【図６】
2019109687.tif 000008