(57)【特許請求の範囲】
【請求項１】
第一のプログラミング言語により記述された第一のソースプログラムを、第二のプログラミング言語により記述された第二のソースプログラムに変換する、プログラミング言語変換装置であって、
第一のソースプログラムの入力を受け付ける第一ソースプログラム入力受付手段と、
第一のソースプログラムを構成するプログラムに関するプログラムパターンと、第二のソースプログラムを構成するモジュールと、プログラムパターンとモジュールとの対応関係に関する対応関係情報とを予め記憶した対応関係情報記憶手段と、
第一ソースプログラム入力受付手段により受け付けられた第一のソースプログラムの構造を解析し、第一のソースプログラムをプログラム制御記述部とビジネスロジック記述部とに分離した第一中間データに変換する第一変換手段と、
対応関係情報記憶手段に記憶された対応関係情報に基づいて、第一中間データのビジネスロジック記述部のプログラムパターンに対応するモジュールを選択するモジュール選択手段と、
モジュール選択手段により選択された選択モジュールを用いて、第一中間データの該ビジネスロジック記述部のプログラムを該選択モジュールに置き換えるオブジェクト化を行い、オブジェクト化されたビジネスロジック記述部とプログラム制御記述部とを再結合させて、第一中間データを第二中間データに変換する第二変換手段と、
第一のプログラミング言語により記述されたプログラム命令を、第二のプログラミング言語により記述されたプログラム命令に置き換えるためのプログラム命令の対応関係に関するプログラム命令置換情報を予め記憶したプログラム命令置換情報記憶手段と、
第二変換手段により生成された第二中間データについて、プログラム命令置換情報記憶手段に記憶されたプログラム命令置換情報に基づいて、第一のプログラミング言語により記述された前記プログラム制御記述部のプログラム命令を、第二のプログラミング言語により記述されたプログラム命令に置き換えて、第二中間データを第二のソースプログラムに変換する第三変換手段
とを備えることを特徴とするプログラミング言語変換装置。
【請求項２】
第三変換手段により変換された第二のソースプログラムに対して、第二のプログラミング言語における構文チェックを行うとともに、第二のソースプログラムをコンパイルして、コンパイルエラーが発生するか否かを検出するコンパイルエラー検出手段とを備え、
コンパイルエラー検出手段により検出されたコンパイルエラーの原因となる第二中間データの記述を修正した後に、修正した第二中間データを第三変換手段が第二のソースプログラムに変換する
ことを特徴とする請求項１に記載のプログラミング言語変換装置。
【請求項３】
第二のプログラミング言語がオブジェクト指向プログラミング言語である請求項１又は２に記載のプログラミング言語変換装置。
【請求項４】
第一のプログラミング言語が手続き型プログラミング言語である請求項１〜３のいずれかに記載のプログラミング言語変換装置。
【請求項５】
モジュールの機能を説明する情報であるモジュール説明情報と、プログラム制御記述部のプログラム命令を説明する情報であるプログラム命令説明情報とを予め記憶した仕様データ変換情報記憶手段と、
第二中間データを構成するモジュールを、仕様データ変換情報記憶手段に記憶されたモジュール説明情報に置き換え、第二中間データを構成するプログラム制御記述部のプログラム命令を、仕様データ変換情報記憶手段に記憶されたプログラム命令説明情報に置き換えることにより、第二中間データを第二のソースプログラムの仕様に関する仕様データに変換する第四変換手段
とを備えることを特徴とする請求項１〜４のいずれかに記載のプログラミング言語変換装置。
【請求項６】
第一変換手段により生成される第一中間データが、ＭＶＣモデルに基づいて、
ビジネスロジック記述部からなるＭｏｄｅｌオブジェクト部と、
プログラム制御記述部からなるＣｏｎｔｒｏｌオブジェクト部
とに分離されたものであることを特徴とする請求項１〜５のいずれかに記載のプログラミング言語変換装置。
【請求項７】
第一のソースプログラムがデータベースを参照する場合に、第一のソースプログラムが参照するデータベースを構成する物理ファイル及び論理ファイルの入力を受け付けるデータベースファイル受付手段と、
物理ファイル及び論理ファイルに含まれるキーファイルに対応するモジュールと、キーファイルからモジュールを作成する対応関係に関する情報であるモジュール作成情報とを予め記憶したモジュール作成情報記憶手段とを備え、
モジュール作成情報記憶手段に記憶されたモジュール作成情報に基づいて、データベースファイル受付手段により入力された物理ファイル及び論理ファイルについて、物理ファイル及び論理ファイルに含まれるキーファイル毎にモジュールを作成する
ことを特徴とする請求項１〜６のいずれかに記載のプログラミング言語変換装置。
【請求項８】
第一のプログラミング言語により記述された第一のソースプログラムを、第二のプログラミング言語により記述された第二のソースプログラムに変換する、プログラミング言語変換をコンピュータ装置において実行する方法であって、
第一のソースプログラムの入力を受け付けるステップと、
受け付けられた第一のソースプログラムの構造を解析し、第一のソースプログラムをプログラム制御記述部とビジネスロジック記述部とに分離した第一中間データに変換するステップと、
第一のソースプログラムを構成するプログラムに関するプログラムパターンと、第二のソースプログラムを構成するモジュールと、プログラムパターンとモジュールとの対応関係に関する対応関係情報とを予め記憶手段に記憶しておき、記憶されていた対応関係情報に基づいて、第一中間データのビジネスロジック記述部のプログラムパターンに対応するモジュールを選択するステップと、
選択された選択モジュールを用いて、第一中間データの該ビジネスロジック記述部のプログラムを該選択モジュールに置き換えるオブジェクト化を行い、オブジェクト化されたビジネスロジック記述部とプログラム制御記述部とを再結合させて、第一中間データを第二中間データに変換するステップと、
第一のプログラミング言語により記述されたプログラム命令を、第二のプログラミング言語により記述されたプログラム命令に置き換えるためのプログラム命令の対応関係に関するプログラム命令置換情報を予め記憶手段に記憶しておき、記憶されていたプログラム命令置換情報に基づいて、第一のプログラミング言語により記述された前記プログラム制御記述部のプログラム命令を、第二のプログラミング言語により記述されたプログラム命令に置き換えて、第二中間データを第二のソースプログラムに変換するステップ
とを有するプログラミング言語変換方法。
【請求項９】
第一のプログラミング言語により記述された第一のソースプログラムを、第二のプログラミング言語により記述された第二のソースプログラムに変換する、プログラミング言語変換をコンピュータ装置に実行させるプログラムであって、
コンピュータ装置を、
第一のソースプログラムの入力を受け付ける第一ソースプログラム入力受付手段と、
第一のソースプログラムを構成するプログラムに関するプログラムパターンと、第二のソースプログラムを構成するモジュールと、プログラムパターンとモジュールとの対応関係に関する対応関係情報とを予め記憶した対応関係情報記憶手段と、
第一ソースプログラム入力受付手段により受け付けられた第一のソースプログラムの構造を解析し、第一のソースプログラムをプログラム制御記述部とビジネスロジック記述部とに分離した第一中間データに変換する第一変換手段と、
対応関係情報記憶手段に記憶された対応関係情報に基づいて、第一中間データのビジネスロジック記述部のプログラムパターンに対応するモジュールを選択するモジュール選択手段と、
モジュール選択手段により選択された選択モジュールを用いて、第一中間データの該ビジネスロジック記述部のプログラムを該選択モジュールに置き換えるオブジェクト化を行い、オブジェクト化されたビジネスロジック記述部とプログラム制御記述部とを再結合させて、第一中間データを第二中間データに変換する第二変換手段と、
第一のプログラミング言語により記述されたプログラム命令を、第二のプログラミング言語により記述されたプログラム命令に置き換える対応関係に関するプログラム命令置換情報を予め記憶したプログラム命令置換情報記憶手段と、
第二変換手段により生成された第二中間データについて、プログラム命令置換情報記憶手段に記憶されたプログラム命令置換情報に基づいて、第一のプログラミング言語により記述された前記プログラム制御記述部のプログラム命令を、第二のプログラミング言語により記述されたプログラム命令に置き換えて、第二中間データを第二のソースプログラムに変換する第三変換手段
として機能させる、プログラミング言語変換プログラム。
【請求項１０】
第一のプログラミング言語により記述された第一のソースプログラムを、第二のプログラミング言語により記述された第二のソースプログラムに変換する、プログラミング言語変換をコンピュータ装置に実行させるプログラムを記録した記録媒体であって、
コンピュータ装置を、
第一のソースプログラムの入力を受け付ける第一ソースプログラム入力受付手段と、
第一のソースプログラムを構成するプログラムに関するプログラムパターンと、第二のソースプログラムを構成するモジュールと、プログラムパターンとモジュールとの対応関係に関する対応関係情報とを予め記憶した対応関係情報記憶手段と、
第一ソースプログラム入力受付手段により受け付けられた第一のソースプログラムの構造を解析し、第一のソースプログラムをプログラム制御記述部とビジネスロジック記述部とに分離した第一中間データに変換する第一変換手段と、
対応関係情報記憶手段に記憶された対応関係情報に基づいて、第一中間データのビジネスロジック記述部のプログラムパターンに対応するモジュールを選択するモジュール選択手段と、
モジュール選択手段により選択された選択モジュールを用いて、第一中間データの該ビジネスロジック記述部のプログラムを該選択モジュールに置き換えるオブジェクト化を行い、オブジェクト化されたビジネスロジック記述部とプログラム制御記述部とを再結合させて、第一中間データを第二中間データに変換する第二変換手段と、
第一のプログラミング言語により記述されたプログラム命令を、第二のプログラミング言語により記述されたプログラム命令に置き換える対応関係に関するプログラム命令置換情報を予め記憶したプログラム命令置換情報記憶手段と、
第二変換手段により生成された第二中間データについて、プログラム命令置換情報記憶手段に記憶されたプログラム命令置換情報に基づいて、第一のプログラミング言語により記述された前記プログラム制御記述部のプログラム命令を、第二のプログラミング言語により記述されたプログラム命令に置き換えて、第二中間データを第二のソースプログラムに変換する第三変換手段
として機能させるプログラムを記録した記録媒体。
【請求項１１】
第一のプログラミング言語により記述された第一のソースコードデータを、第二のプログラミング言語により記述され、且つ、動作が可能な第二のソースプログラムに変換する、プログラミング言語変換装置であって、
第一のソースコードデータが、第一のプログラミング言語により記述され、且つ、動作が可能な第一のソースプログラムを構成するプログラム制御記述部とビジネスロジック記述部を分離したデータ構造を有するものであり、
第一のソースコードデータの入力を受け付ける第一ソースコードデータ入力受付手段と、
第一のソースコードデータを構成するプログラムに関するプログラムパターンと、第二のソースプログラムを構成するモジュールと、プログラムパターンとモジュールとの対応関係に関する対応関係情報とを予め記憶した対応関係情報記憶手段と、
対応関係情報記憶手段に記憶された対応関係情報に基づいて、第一ソースコードデータ入力受付手段により受け付けられた第一ソースコードデータのビジネスロジック記述部のプログラムパターンに対応するモジュールを選択するモジュール選択手段と、
モジュール選択手段により選択された選択モジュールを用いて、第一ソースコードデータ入力受付手段により受け付けられた第一ソースコードデータの該ビジネスロジック記述部のプログラムを該選択モジュールに置き換えるオブジェクト化を行い、オブジェクト化されたビジネスロジック記述部とプログラム制御記述部とを再結合させて、第一ソースコードデータを第二ソースコードデータに変換する第二変換手段と、
第一のプログラミング言語により記述されたプログラム命令を、第二のプログラミング言語により記述されたプログラム命令に置き換えるためのプログラム命令の対応関係に関するプログラム命令置換情報を予め記憶したプログラム命令置換情報記憶手段と、
第二変換手段により生成された第二ソースコードデータについて、プログラム命令置換情報記憶手段に記憶されたプログラム命令置換情報に基づいて、第一のプログラミング言語により記述された前記プログラム制御記述部のプログラム命令を、第二のプログラミング言語により記述されたプログラム命令に置き換えて、第二ソースコードデータを第二のソースプログラムに変換する第三変換手段
とを備えることを特徴とするプログラミング言語変換装置。
【請求項１２】
第一のプログラミング言語により記述されたソースコードデータを、第二のプログラミング言語により記述され、且つ、動作が可能な第二のソースプログラムに変換する、プログラミング言語変換装置であって、
ソースコードデータが、第一のプログラミング言語により記述され、且つ、プログラム制御記述部とビジネスロジック記述部から構成されるものであり、さらに、
ビジネスロジック記述部のプログラムの一部が、モジュールに置き換えられることでオブジェクト化されたものであり、
ソースコードデータの入力を受け付けるソースコードデータ入力受付手段と、
第一のプログラミング言語により記述されたプログラム命令を、第二のプログラミング言語により記述されたプログラム命令に置き換えるためのプログラム命令の対応関係に関するプログラム命令置換情報を予め記憶したプログラム命令置換情報記憶手段と、
ソースコードデータ入力受付手段により受け付けられたソースコードデータについて、プログラム命令置換情報記憶手段に記憶されたプログラム命令置換情報に基づいて、第一のプログラミング言語により記述された前記プログラム制御記述部のプログラム命令を、第二のプログラミング言語により記述されたプログラム命令に置き換えて、ソースコードデータを第二のソースプログラムに変換する第三変換手段
とを備えることを特徴とするプログラミング言語変換装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、手続き型プログラミング言語で記述されたソースプログラムを、オブジェクト指向プログラミング言語で記述されたソースプログラムに変換するためのプログラミング言語変換装置、変換方法、変換プログラム、及び、変換プログラムを記録した記録媒体装置に関する。
【背景技術】
【０００２】
コンピュータハードウェアの性能向上は日進月歩であり、その進歩の速さには目覚ましいものがある。ハードウェアの計算・処理能力の向上に伴い、ハードウェア資源を有効活用する目的から、ソフトウェアには、より多くのデータを用い、より複雑で高度な情報処理を行うことが求められている。
【０００３】
こうしたソフトウェアへの要求に応えていくことは、必然的に、プログラムの拡張による大規模化やソースプログラムの複雑化を進めることとなるが、プログラムが大規模になり、ソースプログラムが複雑になればなる程、ソフトウェア開発者の負担はより大きなものとなり、またソフトウェアのメンテナンスは困難となる。
【０００４】
このような問題を解決するためには、従来よりも、プログラムの拡張性を高めて大規模なプログラムの開発を容易にしたり、ソースプログラムの可読性を向上させてソフトウェアのメンテナンスを容易にしたりすることが必要とされる。こうした要望に応えるために、ソフトウェアに関する技術も急速に進歩してきている。
【０００５】
ソフトウェアに関する技術進歩の一つとして、プログラミング技法の進歩が挙げられる。その具体例として、例えば、オブジェクト指向プログラミングの導入が挙げられる。従来のプログラミング技法に基づくプログラミング言語である、例えば、「手続き型プログラミング言語」を用いた場合に比べて、オブジェクト指向プログラミング言語を用いた場合には、大規模なプログラムの開発が容易になり、ソースプログラムの可読性が向上し、ソフトウェアの保守性や再利用性が向上することが知られている。
【０００６】
このように、近年ではオブジェクト指向プログラミング言語を用いたソフトウェア開発が主流となっている一方で、オブジェクト指向型でないプログラミング言語で記述されたソフトウェアも多く残されている。こうした古いソフトウェアを新しいハードウェア環境でも利用できるようにするには、オブジェクト指向型でないプログラミング言語で記述されたソースプログラムを、オブジェクト指向プログラミング言語で記述されたソースプログラムに変換することが望ましい。
【０００７】
このような、手続き型プログラミング言語で記述されたソースプログラムから、オブジェクト指向プログラミング言語で記述されたソースプログラムへの言語変換を支援する手段を提供するものとして、例えば、変換前ソースプログラムの内容と、これに対応する変換後のプログラム内容との変換対応情報、及び、変換後のプログラムの内容に対応する変換前プログラミング言語の文脈パターン情報を予め記憶しておき、変換前ソースプログラムの内容と文脈パターン情報とをパターン認識して、パターン認識での一致度が最も高い変換後のプログラム内容を用いてソースプログラムの言語変換を行う、ソースプログラム他言語変換支援装置（特許文献１参照）などが挙げられる。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２０１１−１７０５５６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
オブジェクト指向型でないプログラミング言語で記述されたソースプログラムを、オブジェクト指向プログラミング言語で記述されたソースプログラムに変換するに当たっては、プログラム構造全体がオブジェクト指向型で構築されることが好ましい。さもなくば、オブジェクト指向プログラミング言語で記述することによる利点が得られないので、言語変換する意味自体が薄れてしまう。
【００１０】
上記の特許文献１に記載の発明は、パターン認識を用いて、手続き型プログラミング言語でのプログラムパターンや命令を、オブジェクト指向プログラミング言語でのプログラムパターンや命令に置き換えるものである。つまり、ただ単に言語を置き換えるだけであり、プログラム全体の構造は変換元の手続き型のままであるので、ソースプログラムのプログラム構造全体をオブジェクト指向型に変換するには、更に技術者が手を加えなければならなかった。そのため、言語変換の省力化は十分なものではなく、拡張性・可読性・保守性・再利用性の向上等といった、オブジェクト指向プログラミングを用いることによる利点を得るには、技術者の多大な労力を必要とするという課題があった。
【００１１】
また、上記の特許文献１に記載の発明においては、置き換えるべき変換後のプログラム内容が予め記憶されていなかった場合、パターン認識を用いても置き換えるべき変換後のプログラム内容が選択できなかった場合などに、変換後のソースプログラムにはその旨をコメント行として記述した内容が記述されるのみであるため、そのままでは、変換後のソースプログラムはコンパイル時にコンパイルエラーが発生するものであり、ソフトウェアとして実行することは不可能であった。また、パターン認識で誤った結果が得られたために不適切な変換が行われた場合などでも、同様に変換後のソースプログラムは実行不可能なものであった。そのため、多くの場合において、結局は、プログラマーなどの技術者が出力されたコメント行を参照して、変換後のソースプログラムを修正しなければ、変換後のソースプログラムをコンパイルしてそのまま実行することは不可能であるという課題があった。
【００１２】
本発明は、上記の課題を解決するためになされたものであり、プログラム構造全体がオブジェクト指向型に変換される、ソースプログラムのプログラミング言語変換装置、変換方法、変換プログラム、及び、変換プログラムが記録された記録媒体を提供することを目的とする。また、本発明は、プログラミング言語を変換したソースプログラムのコンパイル時にコンパイルエラーが発生しない、ソースプログラムのプログラミング言語変換装置、変換方法、変換プログラム、及び、変換プログラムが記録された記録媒体を提供することを目的とする。
【課題を解決するための手段】
【００１３】
本発明は、第一のプログラミング言語により記述された第一のソースプログラムを、第二のプログラミング言語により記述された第二のソースプログラムに変換する、プログラミング言語変換装置であって、第一のソースプログラムの入力を受け付ける第一ソースプログラム入力受付手段と、第一のソースプログラムを構成するプログラムに関するプログラムパターンと、第二のソースプログラムを構成するモジュールと、プログラムパターンとモジュールとの対応関係に関する対応関係情報とを予め記憶した対応関係情報記憶手段と、第一ソースプログラム入力受付手段により受け付けられた第一のソースプログラムの構造を解析し、第一のソースプログラムをプログラム制御記述部とビジネスロジック記述部とに分離した第一中間データに変換する第一変換手段と、対応関係情報記憶手段に記憶された対応関係情報に基づいて、第一中間データのビジネスロジック記述部のプログラムパターンに対応するモジュールを選択するモジュール選択手段と、モジュール選択手段により選択された選択モジュールを用いて、第一中間データの該ビジネスロジック記述部のプログラムを該選択モジュールに置き換えるオブジェクト化を行い、オブジェクト化されたビジネスロジック記述部とプログラム制御記述部とを再結合させて、第一中間データを第二中間データに変換する第二変換手段と、第一のプログラミング言語により記述されたプログラム命令を、第二のプログラミング言語により記述されたプログラム命令に置き換えるためのプログラム命令の対応関係に関するプログラム命令置換情報を予め記憶したプログラム命令置換情報記憶手段と、第二変換手段により生成された第二中間データについて、プログラム命令置換情報記憶手段に記憶されたプログラム命令置換情報に基づいて、第一のプログラミング言語により記述された前記プログラム制御記述部のプログラム命令を、第二のプログラミング言語により記述されたプログラム命令に置き換えて、第二中間データを第二のソースプログラムに変換する第三変換手段とを備えることを特徴とするプログラミング言語変換装置に関する。
【００１４】
本発明においては、まず、第一のプログラミング言語で記述された第一のソースプログラムを、プログラム制御記述部とビジネスロジック記述部とに分離する。そして、分離されたビジネスロジック記述部を、第二のプログラミング言語で記述されたモジュールに置き換える。その後、モジュールに置き換えられたビジネスロジック記述部と、分離しておいたプログラム制御記述部とを再結合させて、制御記述部のプログラム命令を第二のプログラミング言語で記述されたプログラム命令で置き換えて、第二のソースプログラムを生成する。プログラム制御記述部とビジネスロジック記述部とを分離して、まずビジネスロジック記述部をモジュールに置き換えることにより、変換元の第一のソースプログラムのプログラム構造全体をオブジェクト指向型に変えることができる。そのため、本発明によりオブジェクト指向プログラミング言語に変換されたプログラムは、拡張性・可読性・保守性・再利用性の向上等というプログラム構造全体をオブジェクト指向型にしたことによる恩恵を、より少ない労力で得ることができる。つまり、言語変換を省力化し、技術者の負担を軽減することができる。
【００１５】
第三変換手段により変換された第二のソースプログラムに対して、第二のプログラミング言語における構文チェックを行うとともに、第二のソースプログラムをコンパイルして、コンパイルエラーが発生するか否かを検出するコンパイルエラー検出手段とを備え、コンパイルエラー検出手段により検出されたコンパイルエラーの原因となる第二中間データの記述を修正した後に、修正した第二中間データを第三変換手段が第二のソースプログラムに変換することが好ましい。
【００１６】
第二中間データが第二のソースプログラムに変換された後に、この第二のソースプログラムに対して、第二のプログラミング言語における構文チェックを行うとともに、この第二のソースプログラムをコンパイルして、コンパイルエラーが発生するか否かのチェックを行う。コンパイルエラーの発生が検出された場合には、コンパイルエラーの原因となる第二中間データの記述部分を修正して、修正した第二中間データを第二のソースプログラムに変換する。そのため、コンパイルエラーが発生せず、そのままコンパイルして実行可能な第二のソースプログラムを得ることができる。これにより、言語変換を省力化することができ、技術者の負担を軽減することもできる。
【００１７】
第二のプログラミング言語はオブジェクト指向プログラミング言語であることが好ましく、第一のプログラミング言語は手続き型プログラミング言語であることが好ましい。
【００１８】
本発明は、非オブジェクト指向プログラミング言語、例えば、手続き型プログラミング言語などで記述されたソースプログラムを、オブジェクト指向プログラミング言語に変換する際に好適に用いられる。手続き型プログラミング言語で記述されたソースプログラムを、プログラムの全体構造からオブジェクト指向型に変え、オブジェクト指向プログラミング言語で記述されたソースプログラムに変換するので、変換されたソースプログラムは、オブジェクト指向プログラミングを用いることによる、拡張性・可読性・保守性・再利用性の向上等という恩恵を得ることができる。
【００１９】
モジュールの機能を説明する情報であるモジュール説明情報と、プログラム制御記述部のプログラム命令を説明する情報であるプログラム命令説明情報とを予め記憶した仕様データ変換情報記憶手段と、第二中間データを構成するモジュールを、仕様データ変換情報記憶手段に記憶されたモジュール説明情報に置き換え、第二中間データを構成するプログラム制御記述部のプログラム命令を、仕様データ変換情報記憶手段に記憶されたプログラム命令説明情報に置き換えることにより、第二中間データを第二のソースプログラムの仕様に関する仕様データに変換する第四変換手段とを備えることが好ましい。
【００２０】
本発明によれば、ソースプログラムの言語変換を行うとともに、言語変換に伴って生成される第二中間データをもとに、変換された第二のソースプログラムの仕様書等のデータを生成することもできる。第二のソースプログラムに関する仕様書等の資料を容易に作成することができる。
【００２１】
第一変換手段により生成される第一中間データは、ＭＶＣモデルに基づいて、ビジネスロジック記述部からなるＭｏｄｅｌオブジェクト部と、プログラム制御記述部からなるＣｏｎｔｒｏｌオブジェクト部とに分離されたものであることが好ましい。
【００２２】
第一のソースプログラムをビジネスロジック記述部とプログラム制御記述部とに分離する際に、ＭＶＣモデルに基づいて、Ｍｏｄｅｌオブジェクト部と、Ｃｏｎｔｒｏｌオブジェクト部とに分離することにより、言語変換された第二のソースプログラムをＭＶＣモデルに基づいたプログラム構造とすることができる。
【００２３】
第一のソースプログラムがデータベースを参照する場合に、第一のソースプログラムが参照するデータベースを構成する物理ファイル及び論理ファイルの入力を受け付けるデータベースファイル受付手段と、物理ファイル及び論理ファイルに含まれるキーファイルに対応するモジュールと、キーファイルからモジュールを作成する対応関係に関する情報であるモジュール作成情報とを予め記憶したモジュール作成情報記憶手段とを備え、モジュール作成情報記憶手段に記憶されたモジュール作成情報に基づいて、データベースファイル受付手段により入力された物理ファイル及び論理ファイルについて、物理ファイル及び論理ファイルに含まれるキーファイル毎にモジュールを作成することが好ましい。
【００２４】
第一のソースプログラムがデータベースを参照している場合に、そのデータベースを構成する物理ファイルや論理ファイルを読み込んで、変換後の第二のソースプログラムのビジネスロジック記述部を置換するモジュールを作成することで、第二のソースプログラムが既存のデータベース資産をそのまま活用できるようにすることができる。
【００２５】
また、本発明は、第一のプログラミング言語により記述された第一のソースプログラムを、第二のプログラミング言語により記述された第二のソースプログラムに変換する、プログラミング言語変換をコンピュータ装置において実行する方法であって、第一のソースプログラムの入力を受け付けるステップと、受け付けられた第一のソースプログラムの構造を解析し、第一のソースプログラムをプログラム制御記述部とビジネスロジック記述部とに分離した第一中間データに変換するステップと、第一のソースプログラムを構成するプログラムに関するプログラムパターンと、第二のソースプログラムを構成するモジュールと、プログラムパターンとモジュールとの対応関係に関する対応関係情報とを予め記憶手段に記憶しておき、記憶されていた対応関係情報に基づいて、第一中間データのビジネスロジック記述部のプログラムパターンに対応するモジュールを選択するステップと、選択された選択モジュールを用いて、第一中間データの該ビジネスロジック記述部のプログラムを該選択モジュールに置き換えるオブジェクト化を行い、オブジェクト化されたビジネスロジック記述部とプログラム制御記述部とを再結合させて、第一中間データを第二中間データに変換するステップと、第一のプログラミング言語により記述されたプログラム命令を、第二のプログラミング言語により記述されたプログラム命令に置き換えるためのプログラム命令の対応関係に関するプログラム命令置換情報を予め記憶手段に記憶しておき、記憶されていたプログラム命令置換情報に基づいて、第一のプログラミング言語により記述された前記プログラム制御記述部のプログラム命令を、第二のプログラミング言語により記述されたプログラム命令に置き換えて、第二中間データを第二のソースプログラムに変換するステップとを有するプログラミング言語変換方法に関する。
【００２６】
また、本発明は、第一のプログラミング言語により記述された第一のソースプログラムを、第二のプログラミング言語により記述された第二のソースプログラムに変換する、プログラミング言語変換をコンピュータ装置に実行させるプログラムであって、コンピュータ装置を、第一のソースプログラムの入力を受け付ける第一ソースプログラム入力受付手段と、第一のソースプログラムを構成するプログラムに関するプログラムパターンと、第二のソースプログラムを構成するモジュールと、プログラムパターンとモジュールとの対応関係に関する対応関係情報とを予め記憶した対応関係情報記憶手段と、第一ソースプログラム入力受付手段により受け付けられた第一のソースプログラムの構造を解析し、第一のソースプログラムをプログラム制御記述部とビジネスロジック記述部とに分離した第一中間データに変換する第一変換手段と、対応関係情報記憶手段に記憶された対応関係情報に基づいて、第一中間データのビジネスロジック記述部のプログラムパターンに対応するモジュールを選択するモジュール選択手段と、モジュール選択手段により選択された選択モジュールを用いて、第一中間データの該ビジネスロジック記述部のプログラムを該選択モジュールに置き換えるオブジェクト化を行い、オブジェクト化されたビジネスロジック記述部とプログラム制御記述部とを再結合させて、第一中間データを第二中間データに変換する第二変換手段と、第一のプログラミング言語により記述されたプログラム命令を、第二のプログラミング言語により記述されたプログラム命令に置き換える対応関係に関するプログラム命令置換情報を予め記憶したプログラム命令置換情報記憶手段と、第二変換手段により生成された第二中間データについて、プログラム命令置換情報記憶手段に記憶されたプログラム命令置換情報に基づいて、第一のプログラミング言語により記述された前記プログラム制御記述部のプログラム命令を、第二のプログラミング言語により記述されたプログラム命令に置き換えて、第二中間データを第二のソースプログラムに変換する第三変換手段として機能させる、プログラミング言語変換プログラムに関する。
【００２７】
また、本発明は、第一のプログラミング言語により記述された第一のソースプログラムを、第二のプログラミング言語により記述された第二のソースプログラムに変換する、プログラミング言語変換をコンピュータ装置に実行させるプログラムを記録した記録媒体であって、コンピュータ装置を、第一のソースプログラムの入力を受け付ける第一ソースプログラム入力受付手段と、第一のソースプログラムを構成するプログラムに関するプログラムパターンと、第二のソースプログラムを構成するモジュールと、プログラムパターンとモジュールとの対応関係に関する対応関係情報とを予め記憶した対応関係情報記憶手段と、第一ソースプログラム入力受付手段により受け付けられた第一のソースプログラムの構造を解析し、第一のソースプログラムをプログラム制御記述部とビジネスロジック記述部とに分離した第一中間データに変換する第一変換手段と、対応関係情報記憶手段に記憶された対応関係情報に基づいて、第一中間データのビジネスロジック記述部のプログラムパターンに対応するモジュールを選択するモジュール選択手段と、モジュール選択手段により選択された選択モジュールを用いて、第一中間データの該ビジネスロジック記述部のプログラムを該選択モジュールに置き換えるオブジェクト化を行い、オブジェクト化されたビジネスロジック記述部とプログラム制御記述部とを再結合させて、第一中間データを第二中間データに変換する第二変換手段と、第一のプログラミング言語により記述されたプログラム命令を、第二のプログラミング言語により記述されたプログラム命令に置き換える対応関係に関するプログラム命令置換情報を予め記憶したプログラム命令置換情報記憶手段と、第二変換手段により生成された第二中間データについて、プログラム命令置換情報記憶手段に記憶されたプログラム命令置換情報に基づいて、第一のプログラミング言語により記述された前記プログラム制御記述部のプログラム命令を、第二のプログラミング言語により記述されたプログラム命令に置き換えて、第二中間データを第二のソースプログラムに変換する第三変換手段として機能させるプログラムを記録した記録媒体に関する。
【００２８】
本発明は、第一のプログラミング言語により記述された第一のソースコードデータを、第二のプログラミング言語により記述され、且つ、動作が可能な第二のソースプログラムに変換する、プログラミング言語変換装置であって、第一のソースコードデータが、第一のプログラミング言語により記述され、且つ、動作が可能な第一のソースプログラムを構成するプログラム制御記述部とビジネスロジック記述部を分離したデータ構造を有するものであり、第一のソースコードデータの入力を受け付ける第一ソースコードデータ入力受付手段と、第一のソースコードデータを構成するプログラムに関するプログラムパターンと、第二のソースプログラムを構成するモジュールと、プログラムパターンとモジュールとの対応関係に関する対応関係情報とを予め記憶した対応関係情報記憶手段と、対応関係情報記憶手段に記憶された対応関係情報に基づいて、第一ソースコードデータ入力受付手段により受け付けられた第一ソースコードデータのビジネスロジック記述部のプログラムパターンに対応するモジュールを選択するモジュール選択手段と、モジュール選択手段により選択された選択モジュールを用いて、第一ソースコードデータ入力受付手段により受け付けられた第一ソースコードデータの該ビジネスロジック記述部のプログラムを該選択モジュールに置き換えるオブジェクト化を行い、オブジェクト化されたビジネスロジック記述部とプログラム制御記述部とを再結合させて、第一ソースコードデータを第二ソースコードデータに変換する第二変換手段と、第一のプログラミング言語により記述されたプログラム命令を、第二のプログラミング言語により記述されたプログラム命令に置き換えるためのプログラム命令の対応関係に関するプログラム命令置換情報を予め記憶したプログラム命令置換情報記憶手段と、第二変換手段により生成された第二ソースコードデータについて、プログラム命令置換情報記憶手段に記憶されたプログラム命令置換情報に基づいて、第一のプログラミング言語により記述された前記プログラム制御記述部のプログラム命令を、第二のプログラミング言語により記述されたプログラム命令に置き換えて、第二ソースコードデータを第二のソースプログラムに変換する第三変換手段とを備えることを特徴とするプログラミング言語変換装置に関する。
【００２９】
第一のプログラミング言語で記述された第一のソースプログラムを、技術者が予めプログラム制御記述部とビジネスロジック記述部とに手動で分離しておき、この分離されたデータである第一のソースコードデータを、本発明のプログラミング言語変換装置に入力して、第二のプログラミング言語で記述された第二のソースプログラムに変換することもできる。これにより、プログラム制御記述部とビジネスロジック記述部とへの分離が困難な、複雑なソースプログラムであっても、第二のソースプログラムへの変換が容易に可能となる。
【００３０】
本発明は、第一のプログラミング言語により記述されたソースコードデータを、第二のプログラミング言語により記述され、且つ、動作が可能な第二のソースプログラムに変換する、プログラミング言語変換装置であって、ソースコードデータが、第一のプログラミング言語により記述され、且つ、プログラム制御記述部とビジネスロジック記述部から構成されるものであり、さらに、ビジネスロジック記述部のプログラムの一部が、モジュールに置き換えられることでオブジェクト化されたものであり、ソースコードデータの入力を受け付けるソースコードデータ入力受付手段と、第一のプログラミング言語により記述されたプログラム命令を、第二のプログラミング言語により記述されたプログラム命令に置き換えるためのプログラム命令の対応関係に関するプログラム命令置換情報を予め記憶したプログラム命令置換情報記憶手段と、ソースコードデータ入力受付手段により受け付けられたソースコードデータについて、プログラム命令置換情報記憶手段に記憶されたプログラム命令置換情報に基づいて、第一のプログラミング言語により記述された前記プログラム制御記述部のプログラム命令を、第二のプログラミング言語により記述されたプログラム命令に置き換えて、ソースコードデータを第二のソースプログラムに変換する第三変換手段とを備えることを特徴とするプログラミング言語変換装置に関する。
【００３１】
また、本発明のプログラミング言語変換装置においては、第二のソースプログラムを構成するモジュールを予め登録しておき、これらとプログラム制御記述部とを組み合わせて、ソースコードデータを入力し、作成することもできる。特に、作成しようとする第二のソースプログラムが複雑である場合や長大である場合、また、もととなるソースプログラムからの変更が多い場合などにおいては、第一のソースプログラム等を用意して、これをもとに変換・修正するよりも、第一のプログラミング言語に精通した技術者がソースコードデータを入力するほうが容易である場合がある。入力したソースコードデータからは、第二のソースプログラムを容易に得ることができるため、本発明のプログラミング言語変換装置を用いることで、第二のプログラミング言語に精通していない技術者であっても、第二のソースプログラムを容易に作成することができる。
【図面の簡単な説明】
【００３２】
【図１】本発明の実施の形態にかかるプログラミング言語変換装置の構成を示すブロック図である。
【図２】本発明の実施の形態にかかる変換元ソースプログラムを第一中間データに変換する際のデータ構成を示す図である。
【図３】本発明の実施の形態にかかる第二中間データのデータ構成を示す図である。
【図４】本発明の実施の形態にかかる第二中間データを第二のソースプログラムに変換する際のデータ構成を示す図である。
【図５】本発明の実施の形態にかかるプログラミング言語変換処理のフローチャートである。
【図６】本発明の実施の形態にかかるＲＰＧからＪａｖａ（登録商標）へのプログラミング言語変換の変換例を示す図である。
【図７】本発明の実施の形態にかかるＲＰＧからＪａｖａ（登録商標）へのプログラミング言語変換の変換例を示す図である。
【発明を実施するための形態】
【００３３】
（第１の実施形態）
以下、添付図面を参照して、本発明の実施の形態について説明する。図１は、本発明の実施の形態にかかるプログラミング言語変換装置の構成を示すブロック図である。図示するように、プログラミング言語変換装置１は、制御部１１、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）１２、ハードディスク・ドライブ（ＨＤＤ）１３、インターフェイス部１４、及び、データベース１５からなり、それぞれ内部バスにより接続されている。
【００３４】
制御部１１は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）やＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）から構成される。制御部１１は、ＨＤＤ１３に格納されたプログラムを実行し、プログラミング言語変換装置１の制御を行なう。ＲＡＭ１２は、制御部１１のワークエリアである。ＨＤＤ１３は、プログラムやデータを保存するための記憶領域である。プログラミング言語変換に必要なプログラムやデータは、ＨＤＤ１３やデータベース１５から読み出され、ＲＡＭ１２にロードされる。
【００３５】
制御部１１は、プログラミング言語変換の進行に必要なプログラム及びデータをＲＡＭ１２から読み出して処理を行なう。制御部１１は、ＲＡＭ１２にロードされたプログラム及びデータを処理することで、処理結果である中間データや、最終出力であるソースプログラムをＨＤＤ１３に記録する。
【００３６】
インターフェイス部１４には、表示装置２１及び入力部２３（例えば、マウスやキーボード等）が接続されている。制御部１１は、データ処理過程において、本願発明のプログラミング言語変換装置１の利用者（以下、利用者と略す）が確認すべき情報や、処理の終了を知らせる情報などを、インターフェイス部１４に接続された表示装置２１の表示画面２２に表示する。利用者は、この表示画面２２の表示を参照して、入力部２３からプログラミング言語変換処理に関する指示を入力することができる。利用者による入力部２３からの入力情報はＲＡＭ１２に格納され、制御部１１は入力情報をもとに各種のプログラミング言語変換処理を実行する。
【００３７】
データベース１５には、プログラミング言語変換に必要なデータ１６が予め記憶されている。データベース１５に記憶されているデータ１６には、プログラムパターン１６ａ、モジュール１６ｂ、対応関係情報１６ｃ、プログラム命令置換情報１６ｄ、モジュール説明情報１６ｅ、プログラム命令説明情報１６ｆ、及び、モジュール作成情報１６ｇが含まれる。プログラムパターン１６ａは、変換元のプログラミング言語で記述されたプログラムの構文に関する情報である。モジュール１６ｂは、変換先のプログラミング言語で記述された所定の機能を担う機能単位のプログラムである。対応関係情報１６ｃは、各プログラムパターン１６ａをどのモジュール１６ｂを用いて置き換えるかの対応関係に関する情報である。プログラム命令置換情報１６ｄは、変換元のプログラム命令を変換先のプログラム命令に置き換えるための対応情報である。モジュール説明情報１６ｅは、モジュール１６ｂの機能を説明する情報である。プログラム命令説明情報１６ｆは、変換元のプログラム制御記述部のプログラム命令の内容を説明する情報である。モジュール作成情報１６ｇは、第一のソースプログラムがデータベースを参照する場合に、参照するデータベースを構成する物理ファイルや論理ファイルに含まれるキーファイルに対応するモジュール１６ｂを作成するための対応情報に関する情報である。これらの予め記憶されているデータ１６は、必要に応じて、ＨＤＤ１３に一時記憶されたり、さらにＲＡＭ１２にロードされたりして、制御部１１によるプログラミング言語変換処理に用いられる。
【００３８】
次に、本発明の概要について、説明をする。本発明は、非オブジェクト指向型プログラミング言語によって記述されたソースプログラムを、オブジェクト指向プログラミング言語によって記述されたソースプログラムに変換する、プログラミング言語変換装置に関するものである。非オブジェクト指向型プログラミング言語としては、例えば、ＢＡＳＩＣ、Ｃ言語、ＣＯＢＯＬ、ＦＯＲＴＲＡＮ、Ｍａｔｈｅｍａｔｉｃａ（登録商標）、Ｐａｓｃａｌ、ＰＨＰ、ＲＰＧ、Ｖｉｓｕａｌ  Ｂａｓｉｃ（登録商標）などの手続き型プログラミング言語、Ｈａｓｋｅｌｌ、ＬＩＳＰ、Ｓｃｈｅｍｅ、ＭＬ、Ｓｃａｌａなどの関数型プログラミング言語、Ｐｒｏｌｏｇ、Ｐｏｐｌｅｒ、ＰＡＲＬＯＧ、ＧＨＣなどの論理型プログラミング言語等が挙げられる。また、オブジェクト指向プログラミング言語としては、例えば、Ｓｉｍｕｒａ、Ｓｍａｌｌｔａｌｋ（登録商標）、Ｃ＋＋（登録商標）、Ｏｂｊｅｃｔｉｖｅ−Ｃ（登録商標）、Ｅｉｆｆｅｌ、Ｓｅｌｆ、ＣＬＯＳ、Ｐｙｔｈｏｎ、Ｒｕｂｙ、Ｐｅｒｌ、Ｊａｖａ（登録商標）、ＪａｖａＳｃｒｉｐｔ（登録商標）等が挙げられる。
【００３９】
本発明においては、ＲＰＧ等の手続き型プログラミング言語で記述されたソースプログラムを、オブジェクト指向プログラミング言語で記述されたソースプログラムに変換することが好ましい。また、現在はオブジェクト指向言語に分類されるプログラミング言語やマルチパラダイムプログラミング言語等で記述されたソースプログラムであっても、手続き型プログラミング言語の記述方法に則って記述されたソースプログラム、例えば、２００２年版以前のＣＯＢＯＬで記述されたソースプログラム等であれば、本発明のプログラミング言語変換装置は、ソースプログラム全体の構造をオブジェクト指向型に変換することができるため、好適に用いることができる。また、例えば、ＣＯＢＯＬ等の場合において、プログラムの仕様やバージョンの異なるＣＯＢＯＬ間でソースプログラムを変換するといった、同じ言語間でのソースプログラム変換にも、本発明を好適に用いることができる。また、オブジェクト指向型プログラミング言語の考え方を用いて、ソースプログラムの構造を整理できるという観点から見れば、本発明のプログラミング言語変換は、手続き型プログラミング言語からオブジェクト指向プログラミング言語に限られるものではなく、例えば、同じ手続き型プログラミング言語に属する異なる言語間の言語変換や、同じオブジェクト指向プログラミング言語に属する異なる言語間の言語変換、またオブジェクト指向プログラミング言語から手続き型プログラミング言語への変換などにも好適に用いることができる。
【００４０】
本発明のプログラミング言語変換においては、まず変換元のソースプログラムを、プログラム制御記述部とビジネスロジック記述部とに分離する。図２は、本発明における、変換元のソースプログラムをプログラム記述部とビジネスロジック記述部とに分離する方法についての図である。ここでは、変換元のソースプログラムとして、手続き型プログラミング言語で記述されたソースプログラムを例に挙げ、説明するが、本発明はこれに限定されるものではなく、変換元のソースプログラムとしては、ソースプログラムをプログラム記述部とビジネスロジック記述部とに分離することのできるものであれば、手続き型プログラミング言語以外の他の言語で記述されたソースプログラムであっても良い。
【００４１】
手続き型プログラミング言語で記述された変換元のソースプログラムには、図２（ａ）のように、プログラム命令から構成される処理が一連のプロセスとして記述されている。この一連のプロセスにおいては、画面表示、画面遷移、入力受付、入力待ちなどのプログラム制御記述部と、内部演算処理を構成するビジネスロジック記述部とが交互に記述されている。プログラム制御記述部とビジネスロジック記述部とは、プログラムのユーザーによる入力イベント、例えば、Ｅｎｔｅｒキーの押下やマウスによる「実行」ボタンの押下などのイベントによって、区分することができる。
【００４２】
つまり、入力イベントによるユーザーの演算開始指示後の内部演算処理が行われるプログラム部分が、ビジネスロジック記述部に相当する。一方、内部演算処理が終了した後から次の内部演算処理開始の指示を待つ入力待ち状態までのプログラム部分が、プログラム制御記述部に相当する。このように、変換元のソースプログラムを、入力イベントをキーにして、プログラム制御記述部とビジネスロジック記述部とに分離することができる。変換元のソースプログラムを、プログラム制御記述部とビジネスロジック記述部とに分離したデータが、第一中間データとして生成され、ＲＡＭ１２やＨＤＤ１３に一時記憶される。
【００４３】
図２（ｂ）は、このようにして生成された第一中間データの構造を例示した図である。第一中間データは、変換元のソースプログラムのプログラム制御記述部とビジネスロジック記述部とを分離して保持しているデータであれば良く、例えば、ＣＳＶ形式、ＴＳＶ形式などの表計算ソフトで用いられるデータ形式等で、プログラム制御記述部とビジネスロジック記述部とを異なるコラムに分離して記載したものであれば良く、またプログラム制御記述部とビジネスロジック記述部とが別々のファイルとして分離されていても良い。特に図示はしないが、この分離された第一中間データのプログラム制御記述部とビジネスロジック記述部とには、それぞれ分離される前の変換元プログラムソースの記述上の位置に関する情報が記述されており、後述するモジュールとプログラム制御記述部との再結合は、この情報をもとにして実行される。
【００４４】
この第一中間データが生成された時点で、後述するオブジェクト化を行う前に、オブジェクト化のための指定データを第一中間データに追記するようにしても良い。このオブジェクト化のための指定データとは、例えば、前もって、モジュールに入出力されるパラメータ設定などを、利用者が入力して修正するものである。この指定データの追記により、後述するオブジェクト化をよりスムーズに進めることができる。
【００４５】
なお、特に図示しないが、この第一中間データの生成にあたっては、ソースプログラムの参照するデータベースの新旧対応も完了する。ソースプログラムがデータベースを参照する場合に、変換元のソースプログラムが参照するデータベースファイルと、変換先のソースプログラムが参照するデータベースファイルとが異なる場合、例えば、変換元のソースプログラムが参照するデータベースファイルが、いくつかのデータベースファイルに分割され、分割されたそれらのデータベースファイルを変換先のソースプログラムが参照するような場合がある。このような場合、特に図示しないが、データベース１５には新旧データベースファイルの対応テーブルが予め記憶されており、この対応テーブルを参照して該当部分のソースプログラム内の記述を変更することにより、データベースの新旧対応が完了した形で、第一中間データは生成される。
【００４６】
次に、生成された第一中間データについて、分離されたビジネスロジック記述部のみを、変換先のオブジェクト指向プログラミング言語で記述されたモジュールに置き換えるオブジェクト化を行う。図２（ｂ）で示された第一中間データは、まず、分離されているビジネスロジック記述部を変換先のプログラミング言語で記述されたモジュール１６ｂから選択された選択モジュールで置き換えるオブジェクト化が行われる。この選択モジュールへの置き換えであるオブジェクト化は、後述するように、予めデータベース１５に記憶されている情報を基に、パターン認識を用いて、変換元のプログラミング言語で記述されたプログラムパターン１６ａを、変換先のプログラミング言語で記述されたモジュール１６ｂから選択された選択モジュールで置き換える方法で行われる。パターン認識を用いたプログラムパターンのモジュールへの置き換えは、例えば、変換前のプログラムを一行ずつ読み込んでＲＡＭ１２に記憶し、読み込まれた一行のプログラム記述をプログラムパターン１６ａと照合して一致度を点数化し、最も一致度の高いプログラムパターンを特定して、これに対応するモジュール１６ｂを対応関係情報１６ｃから検索して選択し、選択された選択モジュールを用いて、プログラムパターン１６ａを置き換える方法などを用いることができる。
【００４７】
オブジェクト化に必要なデータは、予め用意され、データベースに記憶されている。このオブジェクト化に必要なデータには、変換元のプログラミング言語におけるプログラムの構文に関するプログラムパターン１６ａ、変換元のプログラムパターンに対応して変換先で同じ処理を行うモジュールであってオブジェクト指向プログラミング言語で記述されているモジュール１６ｂ、及び、記憶されたプログラムパターンとモジュールとの対応関係に関する情報である対応関係情報１６ｃが含まれる。
【００４８】
ビジネスロジック記述部のプログラムパターンがモジュール１６ｂから選択された選択モジュールによって置き換えられて変換されたデータについて、分離されていたプログラム制御記述部とオブジェクト化されたビジネスロジック記述部とを再結合させて、図３に示されるような第二中間データが生成される。この第二中間データにおいては、プログラム制御記述部はまだ言語変換されていない。
【００４９】
図４は、この第二中間データを第二のソースプログラムに変換する過程を示す図である。変換元のプログラミング言語で記述されたプログラム命令によって構成されているこの第二中間データのプログラム制御記述部について、変換先のプログラミング言語で記述されたプログラム命令を用いて置き換えを行うことで、プログラム全体が変換先のプログラミング言語で記述されたソースプログラムである、第二のソースプログラムへの変換が行われる。この置き換えは、第一のプログラミング言語のプログラム命令を、第二のプログラミング言語のプログラム命令に置き換える対応関係に関するプログラム命令置換情報１６ｄを、予めデータベース１５に記憶しておき、この情報を参照して、上述したプログラムパターンのモジュールへの置き換えのような、パターン認識を用いた置き換え方法等の方法によって実行される。ここで生成された第二のソースプログラムは、ＨＤＤ１３に記憶される。また、変換完了メッセージが表示装置２１の表示画面２２に表示される。
【００５０】
次に、本発明のプログラミング言語変換方法について、図を参照しつつ説明する。図５は、本発明のプログラミング言語変換方法に関するフローチャート図である。
【００５１】
まず、第一のプログラミング言語で記述されたソースプログラムである、第一のソースプログラムが入力部２３から入力される（ステップＳ１１）。入力された第一のソースプログラムは、ＨＤＤ１３に記憶され、必要に応じてソースプログラムの一部又は全部がＲＡＭ１２にロードされ、制御部１１によって演算処理が行われる。
【００５２】
次に、制御部１１は、入力された第一のソースプログラムについて、プログラム構造を解析する。この解析により、入力イベントや画面遷移などをキーとして、プログラム制御記述部とビジネスロジック記述部との境界を検出し、上述した方法により、第一のソースプログラムを、プログラム制御記述部とビジネスロジック記述部とに分離したデータである第一中間データに変換する（ステップＳ１２）。第一中間データは、ＨＤＤ１３に一時記憶される。
【００５３】
次に、制御部１１は、データベース１５に記憶されたプログラムパターン１６ａ、モジュール１６ｂ、及び、対応関係情報１６ｃを参照して、第一中間データのビジネスロジック記述部のプログラムパターンに対応するモジュール１６ｂを選択する（ステップＳ１３）。
【００５４】
次に、制御部１１は、選択された選択モジュールを用いて、第一中間データのビジネスロジック記述部のプログラムパターンを、対応する選択モジュールに置き換える（オブジェクト化）。この選択モジュールへの置き換えにより、プログラムの全体構造がオブジェクト化される。そして、制御部１１は、オブジェクト化されたビジネスロジック記述部と、オブジェクト化されていないプログラム制御記述部とを再結合させて、第一中間データを第二中間データに変換する（ステップＳ１４）。再結合の方法は、第一中間データへの変換時に、プログラム制御記述部とビジネスロジック記述部とのそれぞれに記述された、分離される前の変換元プログラムソースの記述上の位置に関する情報を参照し、元の位置関係を維持するようにして、再結合が実行される。この再結合により、図２（ｂ）のような構造であった第一中間データは、図３のような構造の第二中間データに変換される。第二中間データは、ＨＤＤ１３に記憶される。
【００５５】
次に、制御部１１は、第二中間データのプログラム制御記述部を、第二のプログラミング言語のプログラム命令で置き換える（ステップＳ１５）。このステップで、第二中間データは全体が第二のプログラミング言語で記述された状態となる。この置き換えは、上述したステップＳ１４と同様に、第一のプログラミング言語のプログラム命令を、第二のプログラミング言語のプログラム命令に置き換える対応関係に関するプログラム命令置換情報１６ｄを、予めデータベース１５に記憶しておき、この情報を参照して実行される。
【００５６】
次に、ステップＳ１５で生成された、第二のプログラミング言語で記述された第二中間データについて、制御部１１のＲＯＭに予め記憶された構文チェックツールを用いて、第二中間データの構文チェックを実行し（ステップＳ１６）、コンパイルエラーの有無を判定する（ステップＳ１７）。この構文チェックは、変数を比較、移動する際に、変数同士の型が同じであるかどうか、変数が存在するものであるかどうか、他のモジュール１６ｂを実行する際に、実行するモジュール１６ｂが受け取るパラメータと、実行を指定した部品が指示するパラメータとに差がないかどうか、モジュール１６ｂ内で参照されている変数が宣言されているかどうか等といった項目をチェックすることで行われる。構文チェックにより、コンパイルエラーが検出された場合には、第二中間データの形式で記述されたチェックリストが出力される（ステップＳ１８）。第二中間データの形式とは、例えば、変換元のプログラミング言語と変換先のプログラミング言語との中間言語などであって、出力されたチェックリストが、変換元のプログラミング言語を知る技術者によりチェックできるものであることが好ましい。このチェックリストを参照して、制御部１１のＲＯＭに予め記憶されたコンパイルエラー修正ツールを用いて、検出されたコンパイルエラーに該当する第二中間データの記述部分が修正される（ステップＳ１９）。これらの構文チェックツールやコンパイルエラー修正ツールとしては、一般によく知られているものを用いることもでき、例えば、第二のプログラミング言語がＪａｖａである場合には、Ｅｃｌｉｐｓｅ（登録商標）などの統合開発環境ツールを用いることもできる。
【００５７】
第二中間データについて、ステップＳ１７の構文チェックによりコンパイルエラーが検出されない場合には、制御部１１は、第二中間データを第二のソースプログラムに変換する（ステップＳ２０）。得られた第二のソースプログラムはＨＤＤ１３に記憶され、表示装置２１の表示画面２２には、プログラミング言語変換処理が完了した旨のメッセージが表示される。
【００５８】
次に、本発明のプログラミング言語変換装置によって生成される、第二のソースプログラムの仕様に関する仕様データの生成に関して説明する。データベース１５には、モジュールの機能に関するモジュール説明情報１６ｅと、変換元のプログラミング言語で記述されているプログラム制御記述部のプログラム命令に関するプログラム命令説明情報１６ｆとが、予め記憶されている。本発明のプログラミング言語変換装置による変換の過程で生成された第二中間データは、変換先のプログラミング言語で記述されたモジュール１６ｂから選択された選択モジュールと、変換元のプログラミング言語で記述されたプログラム制御記述部とが含まれ、図３のような構造を有している。制御部１１は、この第二中間データの選択モジュールを、モジュール説明情報１６ｅに置き換える。また、制御部１１は、この第二中間データのプログラム制御記述部のプログラム命令を、プログラム命令説明情報１６ｆに置き換える。これらの置き換えによって、第二中間データは、プログラム全体の構造を保ったまま、プログラムを構成するモジュールの機能に関する情報とプログラム制御を行うプログラム命令に関する情報とからなる、第二のソースプログラムの仕様に関する仕様データに変換される。この仕様データから、技術者は、第二のソースプログラムのプログラム構造や機能などといった仕様に関する資料である仕様書や、各業務機能のオブジェクト構造図などを容易に作成することができる。また、予め仕様書に関するフォーマットを決めておき、そのフォーマットに関する情報をデータベース１５に記憶させておき、そのフォーマットに仕様データを整形することで、仕様書や各業務機能のオブジェクト構造図そのものを自動生成することもできる。
【００５９】
なお、本実施形態においては、本発明のプログラミング言語変換装置に入力されるデータの例として、第一のソースプログラムを挙げて説明したが、本発明はこれに限定されることはなく、例えば、技術者が予め第一のソースプログラムを、プログラム制御記述部とビジネスロジック記述部とに手動で分離したデータである、第一のソースコードデータ（上記の「第一中間データ」に相当する）を入力するようにして、この第一のソースコードデータを第二のソースプログラムに変換する目的にも、好適に用いることができる。また、第一のプログラミング言語で記述されたプログラム制御記述部と、第二のソースプログラムを構成するモジュールによりオブジェクト化されたビジネスロジック部とからなるデータである、ソースコードデータ（上記の「第二中間データ」に相当する）を、本発明のプログラミング言語変換装置を用いて初めから入力するようにして、このソースコードデータを第二のソースプログラムに変換する目的で用いることもできる。本発明はこれらのような構成を取ることで、複雑なソースプログラムや長大なソースプログラム、元のソースプログラムからの変更の多いソースプログラム等の作成を容易にすることが可能となる。特に、第一のプログラミング言語には精通していても、第二のプログラミング言語を扱えない技術者であっても、本発明のプログラミング言語変換装置を用いることで、第二のプログラミング言語で記述された第二のソースプログラムを容易に作成することが可能となる。
【００６０】
次に、本発明におけるプログラミング言語変換の例について、図を参照しつつ説明する。図６は、第一のプログラミング言語がＲＰＧであり、第二のプログラミング言語がＪａｖａである場合に、ＲＰＧで記述された「ＭＯＶＥ」命令のプログラミング言語変換について説明する図である。
【００６１】
変換前のソースプログラムにおける記述、すなわち、第一中間データ、又は、第一のソースコードデータにおける記述は、図６（ａ）のように、ＲＰＧによって「ＭＯＶＥ  ‘Ａ９９’  ＲＥＴＵＲＮＣＯＤＥ」となっている。この記述は、プログラム命令６１（「ＭＯＶＥ」）、定数である左辺６２（「‘Ａ９９’」）、変数である右辺６３（「ＲＥＴＵＲＮＣＯＤＥ」）から構成されている。
【００６２】
制御部１１は、第一中間データを第二中間データに変換する、又は、第一のソースコードデータを第二ソースコードデータに変換する処理を行う。第一中間データ及び第一のソースコードデータは、第一のプログラミング言語で記述されているが、この制御部１１の変換処理によって、図６（ｂ）に示すように、ＲＰＧとＪａｖａの中間言語のような表現によって「ＦＩＥＬＤ  ＳＥＴ  ‘Ａ９９’  ＭＯＶＥ→  ｔｈｉｓ．ＲＥＴＵＲＮＣＯＤＥ」という記述からなるデータに変換される。このデータは、処理コマンド６４（「ＦＩＥＬＤ  ＳＥＴ」）、左辺６２、右辺６６（「ｔｈｉｓ．ＲＥＴＵＲＮＣＯＤＥ」）、演算子６５（「ＭＯＶＥ→」）から構成される。右辺６６には、変数「ＲＥＴＵＲＮＣＯＤＥ」が、この変換処理によってオブジェクト化され置き換えられた部品（選択モジュール）である「この部品」に属していることが記憶されている。処理コマンド６４の「ＦＩＥＬＤ  ＳＥＴ」は、左辺６２から右辺６６への変数の移動を意味している。また、演算子６５（「ＭＯＶＥ→」）は、左辺６２から右辺６６への単純移動を意味している。
【００６３】
この記述に基づき、制御部１１は、予めデータベース１５に記憶しているプログラム命令変換情報１６ｄを参照し、この情報に基づいて、プログラム命令の変換を行う。この例においては、図６（ｂ）に示された記述を、図６（ｃ）に示されるようなＪａｖａでの記述に変換する。Ｊａｖａにおいては、左辺６２と右辺６６が逆になるというルールが予めプログラム命令変換情報１６ｄに記憶されている。次に、左辺６２と右辺６６の変数型が調べられ、型に最適なソースが構築される。この例においては、左辺６２と右辺６６とは共にアクセサを使用していない変数であるので、Ｊａｖａソースは、図６（ｃ）に示すように「ｒｅｔｕｒｎｃｏｄｅＲｅｓｕｌｔＢｅａｎ  ＝  “Ａ９９”」となる。なお、変数は、Ｊａｖａのルールに従うように成形される、すなわち、この例においては、アンダースコア区切りをキャメルケース表記とし、変数情報により変数名称に特定の文字を付加するというルールが予め記憶されている。このルールにより、図６（ｂ）の右辺６６（「ｔｈｉｓ．ＲＥＴＵＲＮＣＯＤＥ」）は、図６（ｃ）の左辺６７（「ｒｅｔｕｒｎｃｏｄｅＲｅｓｕｌｔＢｅａｎ」）に成形され、図６（ｂ）の左辺６２（‘Ａ９９’）は、図６（ｃ）の右辺６８（「“Ａ９９”」）に成形される。
【００６４】
次に、本発明におけるプログラミング言語変換の別の例について、図を参照しつつ説明する。図７は、第一のプログラミング言語がＲＰＧであり、第二のプログラミング言語がＪａｖａである場合に、ＲＰＧで記述された「ＡＤＤ」命令のプログラミング言語変換について説明する図である。
【００６５】
変換前のソースプログラムにおける記述、すなわち、第一中間データ、又は、第一のソースコードデータにおける記述は、図７（ａ）のように、ＲＰＧによって「ＡＤＤ  １  ＦＬＤ０１」となっている。この記述は、プログラム命令７１（「ＡＤＤ」）、左辺７２（「１」）、右辺７３（「ＦＬＤ０１」）から構成されている。
【００６６】
制御部１１は、第一中間データを第二中間データに変換する、又は、第一のソースコードデータを第二ソースコードデータに変換する処理を行う。この制御部１１の変換処理によって、図７（ｂ）に示すように、ＲＰＧとＪａｖａの中間言語のような表現によって「ＦＩＥＬＤ  ＳＥＴ  ｔｈｉｓ．ＦＩＬＥ０１．ＦＬＤ０１  ＡＤＤ（加算）  １」という記述からなるデータに変換される。このデータは、処理コマンド７４（「ＦＩＥＬＤ  ＳＥＴ」）、左辺７６（「ｔｈｉｓ．ＦＩＬＥ０１．ＦＬＤ０１」）、右辺７７、演算子７５（「ＡＤＤ（加算）」）から構成される。左辺７６には、変数「ＦＬＤ０１」が、この変換処理によってオブジェクト化され置き換えられた部品（選択モジュール）である「この部品」に属しているエンティティ「ＦＩＬＥ０１」に属していることが記憶されている。処理コマンド７４の「ＦＩＥＬＤ  ＳＥＴ」は、左辺７６から右辺７７への変数の移動を意味している。また、演算子７５（「ＡＤＤ（加算）」）は、移動方法を意味しており、ここでは移動先を変更し、左辺７６へ左辺７６の値に右辺７７の値を加算した値を移動することを意味している。
【００６７】
この記述に基づき、制御部１１は、予めデータベース１５に記憶しているプログラム命令変換情報１６ｄを参照し、この情報に基づいて、プログラム命令の変換を行う。この例においては、図７（ｂ）に示された記述を、図７（ｃ）に示されるようなＪａｖａでの記述に変換する。この例においては、値を取り出す変数と値を移動する変数が同一で、Ｅｎｔｉｔｙ変数であるので、アクセサが設定される。従って、変数にアクセサが設定され、移動方法に演算子７５で指定した四則演算を行うことで、図７（ｃ）に示すようなＪａｖａでの記述に変換する。この変換においては、左辺７６と右辺７７の変数型が調べられ、右辺７７の定数の型に合わせた変数の型変換が行われる。この例においては、右辺７７の定数「１」に合わせた型は、ＢｉｇＤｅｃｉｍａｌ型であるので、「ＢｉｇＤｅｃｉｍａｌ．ｖａｌｕｅＯｆ」を用いた型変換７８が行われ、Ｊａｖａソースは、図７（ｃ）に示すように「ｆｉｌｅ０１．ｓｅｔＦｌｄ０１（ｆｉｌｅ０１．ｇｅｔＦｌｄ０１（）．ａｄｄ（  ＢｉｇＤｅｃｉｍａｌ．ｖａｌｕｅＯｆ（１）））；」となる。
【００６８】
（第２の実施形態）
本発明の第２の実施形態として、Ｓｙｓｔｅｍ  ｉ上で実行される、ＲＰＧで記述されたデータベース管理システムを、Ｊａｖａで記述されたオブジェクト指向型のシステムに変換する例について、説明する。
【００６９】
Ｓｙｓｔｅｍ  ｉ上で実行されるデータベース管理システムは、ＲＰＧで記述されたプログラムソース、ディスプレイファイル（ＤＳＰＦ）やプリンターファイル（ＰＲＴＦ）といったファイル、ＣＬプログラム、及び、データベースなどから構成されている。本発明のプログラミング言語変換装置は、これらシステムを構成する要素を解析して、ＭＶＣモデル（Ｍｏｄｅｌオブジェクト部・Ｖｉｅｗオブジェクト部・Ｃｏｎｔｒｏｌオブジェクト部）とＤａｔａ  Ａｃｃｅｓｓ  Ｏｂｊｅｃｔ（以下、ＤＡＯと称する）からなる４つのオブジェクト部に分割する。
【００７０】
ＭＶＣモデルに基づいた、各オブジェクト部への分割について説明する。ＲＰＧで記述されたプログラムソースの内部処理、すなわちビジネスロジック記述部は、ＭＶＣモデルのＭｏｄｅｌオブジェクト部として分割される。ＤＳＰＦやＰＲＴＦといった、表示や出力に関するファイルは、ＭＶＣモデルのＶｉｅｗオブジェクト部として分割される。プログラムソースの画面制御に関するプログラム制御記述部と、ＣＬプログラム等の画面制御ロジックとは、ＭＶＣモデルのＣｏｎｔｒｏｌオブジェクト部として分割される。また、プログラムソースが参照するデータベースに関するファイルは、ＤＡＯ（基底部品）として再定義される。
【００７１】
まず、ＤＡＯの生成について説明する。本発明のプログラミング言語変換装置には、Ｓｙｓｔｅｍ  ｉで作成された、データベースを構成するファイルである物理ファイルや論理ファイルが入力される。物理ファイルとは、実際にデータレコードを格納しているデータベースファイルである。一方、論理ファイルとは、１又は複数の物理ファイルに格納されているデータレコードを、ＲＰＧで記述されたプログラムに渡す方法を記述したファイルであり、例えば、ＶＳＡＭでのインデックス又は代替インデックスに相当するものである。入力されたデータベースに関するファイルは、制御部１１により解析され、ＤＡＯ（基底部品）として再定義される。
【００７２】
この再定義とは、以下のようなものである。データベース１５には、物理ファイルや論理ファイルに含まれるキーファイルに対応するモジュール１６ｂと、キーファイルからモジュールを作成する対応関係に関する情報であるモジュール作成情報１６ｇとが、予め記憶されている。制御部１１は、入力された物理ファイルや論理ファイルに含まれるキーファイルを特定し、記憶されているこのモジュール作成情報１６ｇを参照して、キーファイルそれぞれに対応するモジュール１６ｂを用いて、ＤＡＯ（基底部品）であるモジュールをキーファイル毎に作成する。ここで作成されたモジュールは、Ｓ２ＪＤＢＣのエンティティやサービスクラスを内包したＤａｔａ  Ａｃｃｅｓｓ  Ｏｂｊｅｃｔクラスで構成される。再定義された基底部品は、本発明によりＪａｖａに変換されたシステムから使用することが可能であり、後述するＭｏｄｅｌオブジェクト部を構成するモジュールとして利用することができる。
【００７３】
次に、Ｖｉｅｗオブジェクト部の生成について説明する。本発明のプログラミング言語変換装置には、表示装置への表示レイアウトに関するファイルであるＤＳＰＦやＰＲＴＦが入力される。制御部１１は、入力されたこれらのファイルを解析し、レイアウトデータが構築される。このレイアウトデータは、例えば、ＨＴＭＬなどのデータであり、レコード様式の単位で作成されるため、レコード様式を組み合わせることで、ｗｅｂページの表示レイアウトを作成し、画面ファイルを作成することができる。
【００７４】
次に、Ｃｏｎｔｒｏｌオブジェクト部の生成について説明する。本発明のプログラミング言語変換装置には、プログラムソースと、ＣＬプログラム等が入力され、これらを制御部１１が解析し、プログラムソースの画面制御に関するプログラム制御記述部と、画面制御ロジックとからなるＣｏｎｔｒｏｌオブジェクト部が生成される。Ｃｏｎｔｒｏｌオブジェクト部は、Ｖｉｅｗオブジェクト部により作成された画面ファイルについて、イベントが登録され、そのイベントに対する制御ロジックが登録されている。本発明のプログラミング言語変換装置は、この制御ロジックを、上述したようなプログラム命令の置き換えによって、Ｊａｖａのソースに変換する。Ｊａｖａへの変換により、このＣｏｎｔｒｏｌオブジェクト部は、ＪＳＰ（ＪａｖａＳｅｒｖｅｒ  Ｐａｇｅｓ）ファイル、ＡｃｔｉｏｎＦｏｒｍ、ＡｃｔｉｏｎＣｌａｓｓ、ＤＴＯ（Ｄａｔａ  Ｔｒａｎｓｆｅｒ  Ｏｂｊｅｃｔ）からなるものとなる。
【００７５】
次に、Ｍｏｄｅｌオブジェクト部の生成について説明する。本発明のプログラミング言語変換装置には、ＲＰＧで記述されたプログラムソースが入力される。制御部１１は、上述したような方法でこれを解析し、ビジネスロジック記述部を分離し、予め用意されているＪａｖａで記述されたモジュールに置き換え、Ｍｏｄｅｌオブジェクト部を生成する。このＭｏｄｅｌオブジェクト部からは、上述した再定義によって作成されたモジュールも利用することができる。
【００７６】
本発明のプログラミング言語変換装置は、非オブジェクト指向プログラミング言語で記述されたソースプログラムについて、プログラムの全体構造をオブジェクト指向型に変換し、オブジェクト指向プログラミング言語で記述されたソースプログラムに変換することができる。そのため、単にプログラム命令を逐語変換するようなプログラミング言語変換とは異なり、拡張性・可読性・保守性・再利用性の向上等といった、オブジェクト指向プログラミングを用いることによる利点を十分に享受することができる。
【００７７】
また、本発明のプログラミング言語変換装置によれば、非オブジェクト指向プログラミング言語で記述された、既存のシステムやデータベースといった資産を、オブジェクト指向プログラミング言語に書き換えて、新しいハードウェア環境であっても活用することができる。また、オブジェクト指向プログラミング言語への言語変換を大幅に省力化することができるため、例えば、手続き型プログラミング言語を専門に取り扱ってきた技術者であっても、容易にオブジェクト指向型のシステムを構築することができる。
【００７８】
また、本発明のプログラミング言語変換装置によれば、システム全体がオブジェクト指向型に変換されるため、仕様書や各業務機能のオブジェクト構造図などのプログラム仕様に関するデータを容易に生成することもできる。
【符号の説明】
【００７９】
１      プログラミング言語変換装置
１１    制御部
１２    ＲＡＭ
１３    ＨＤＤ
１４    インターフェイス部
１５    データベース
２１    表示装置
２２    表示画面
２３    入力部
【要約】
【課題】
プログラム構造全体がオブジェクト指向型に変換される、ソースプログラムのプログラミング言語変換装置、変換方法、変換プログラム、及び、変換プログラムが記録された記録媒体を提供する。
【解決手段】
第一のプログラミング言語で記述された第一のソースプログラムを、プログラム制御記述部とビジネスロジック記述部とに分離する。分離されたビジネスロジック記述部を、第二のプログラミング言語で記述されたモジュールに置き換える。モジュールに置き換えられたビジネスロジック記述部と、分離しておいたプログラム制御記述部とを再結合させて、制御記述部のプログラム命令を第二のプログラミング言語で記述されたプログラム命令で置き換えて、第二のソースプログラムを生成する。
【選択図】    図１【図１】
0005405684.tif 000002
【図２】
0005405684.tif 000003
【図３】
0005405684.tif 000004
【図４】
0005405684.tif 000005
【図５】
0005405684.tif 000006
【図６】
0005405684.tif 000007
【図７】
0005405684.tif 000008