(57)【要約】【課題】変換結果として保守性の高いプログラムを効率よく得ることができるプログラム変換プログラム、プログラム変換装置およびプログラム変換方法を提供すること。【解決手段】変換後モデル生成部３３０は、変換前ソースデータモデルから変換後ソースデータモデルを生成する際に、要確認ルールＤＢ４２１のルールに該当する箇所、すなわち単純な変換では複雑で可視性の低いコードが生成されそうな箇所は変換ルールＤＢを用いた字句変換はおこなわず、代わりに要確認タグを埋め込む。ソースプログラム生成部３４０は、要確認タグをコメントとして埋め込んだ変換後ソースファイルを生成する。この変換後ソースファイルの要確認タグの部分を要確認箇所変更部３５０にて適切な記述に置き換えることで保守性の高い変換プログラムを得ることができる。【選択図】        図３
2006011756.tif 000002
【特許請求の範囲】
【請求項１】
第１のプログラミング言語で記述された起点ソースプログラムを第２のプログラミング言語で記述された目的ソースプログラムに変換するプログラム変換プログラムであって、
前記起点ソースプログラムを構文解析して前記第１のプログラミング言語に基づくデータモデルを生成する変換前モデル生成手順と、
前記第１のプログラミング言語に基づくデータモデルを前記第２のプログラミング言語に基づくデータモデルへ変換するに際して、変換後のデータモデルが複雑化する可能性があることを判定する所定のルールに該当する箇所に、別手段により変換をおこなうための手掛かり情報を挿入する変換後モデル生成手順と、
前記第２のプログラミング言語に基づくデータモデルを前記第２のプログラミング言語で記述された前記目的ソースプログラムに変換するに際して、前記手掛かり情報を前記目的ソースプログラムの適切な箇所に埋め込むソースプログラム生成手順と
をコンピュータに実行させることを特徴とするプログラム変換プログラム。
【請求項２】
前記ソースプログラム生成手順は、前記手掛かり情報をプログラムのコメントとして前記目的ソースプログラムに埋め込むことを特徴とする請求項１に記載のプログラム変換プログラム。
【請求項３】
前記ソースプログラム生成手順は、前記手掛かり情報として前記起点ソースプログラムの名称と該起点ソースプログラムのうち前記所定のルールに該当した部分の位置情報とを埋め込むことを特徴とする請求項１または２に記載のプログラム変換プログラム。
【請求項４】
第１のプログラミング言語で記述された起点ソースプログラムを第２のプログラミング言語で記述された目的ソースプログラムに変換するプログラム変換装置であって、
前記起点ソースプログラムを構文解析して前記第１のプログラミング言語に基づくデータモデルを生成する変換前モデル生成手段と、
前記第１のプログラミング言語に基づくデータモデルを前記第２のプログラミング言語に基づくデータモデルへ変換するに際して、変換後のデータモデルが複雑化する可能性があることを判定する所定のルールに該当する箇所に、別手段により変換をおこなうための手掛かり情報を挿入する変換後モデル生成手段と、
前記第２のプログラミング言語に基づくデータモデルを前記第２のプログラミング言語で記述された前記目的ソースプログラムに変換するに際して、前記手掛かり情報を前記目的ソースプログラムの適切な箇所に埋め込むソースプログラム生成手段と
を備えたことを特徴とするプログラム変換装置。
【請求項５】
第１のプログラミング言語で記述された起点ソースプログラムを第２のプログラミング言語で記述された目的ソースプログラムに変換するプログラム変換方法であって、
前記起点ソースプログラムを構文解析して前記第１のプログラミング言語に基づくデータモデルを生成する変換前モデル生成工程と、
前記第１のプログラミング言語に基づくデータモデルを前記第２のプログラミング言語に基づくデータモデルへ変換するに際して、変換後のデータモデルが複雑化する可能性があることを判定する所定のルールに該当する箇所に、別工程により変換をおこなうための手掛かり情報を挿入する変換後モデル生成工程と、
前記第２のプログラミング言語に基づくデータモデルを前記第２のプログラミング言語で記述された前記目的ソースプログラムに変換するに際して、前記手掛かり情報を前記目的ソースプログラムの適切な箇所に埋め込むソースプログラム生成工程と
を含んだことを特徴とするプログラム変換方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、第１のプログラミング言語で記述された起点ソースプログラムを第２のプログラミング言語で記述された目的ソースプログラムに変換するプログラム変換プログラム、プログラム変換装置およびプログラム変換方法に関し、特に保守性の高い目的ソースプログラムを得ることができるプログラム変換プログラム、プログラム変換装置およびプログラム変換方法に関するものである。
【背景技術】
【０００２】
近年、運用コストの高さや開発効率の低さ等の問題から、ホストコンピュータ上で稼動するシステムをＵＮＩＸ（登録商標）サーバ上やＰＣサーバ上で稼動するいわゆるオープンシステムに置き換えることが広くおこなわれている。置き換えにあたっては、システムを新規に開発し直すことも可能であるが、移行に要する期間とコストを節約するために従来のシステムを流用する場合も多い。
【０００３】
ただし、システムを流用する場合であっても、ホストコンピュータ上で使用していたプログラミングを新たな環境でコンパイルするだけでは開発効率の低さという問題を解決することができない。このため、移行に際しては、ＣＯＢＯＬやＰＬ／Ｉといったホストコンピュータ向けの言語で記述されていたプログラムをＣ＋＋やＪａｖａ（登録商標）といったより生産性の高い言語に変換することが必要となる。
【０００４】
従来から、あるプログラミング言語で書かれたプログラムを他のプログラミング言語で書かれたプログラムに変換する技術が知られている。たとえば、特許文献１では、変換ルールを用いてプログラムの変換をおこなう技術が開示されている。また、特許文献２では、変換ルールをより汎用化し、より多くのプログラミング言語の変換を実現するための技術が開示されている。
【０００５】
【特許文献１】特開平０２−０１０４３４号公報
【特許文献２】特公平０７−０７８７４２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかしながら、これらの従来技術は、プログラム言語の処理内容が等値になるように単純に字句変換するものであるため、変換後のプログラムが保守性の低いものになってしまうという問題がある。
【０００７】
プログラミング言語にはそれぞれ特徴があり、その特徴に合ったスタイルでプログラミングされるのが通常である。ところが、単純に字句変換されたプログラムは、変換前のプログラミング言語のスタイルをそのまま受け継いでしまい、変換後のプログラミング言語としては不自然な記述になってしまう。このようなプログラムは、変換前の言語を知らない開発者にとっては極めて可読性の低いプログラムとなり、保守性の観点からみて望ましくない。
【０００８】
特に、手続き型言語であるＣＯＢＯＬからオブジェクト指向言語であるＪａｖａ（登録商標）に変換する場合のように、言語思想の大きく異なる言語間で変換をおこなう際には、不自然なソースプログラムが生成される可能性が非常に高くなる。プログラムは、移行後も機能追加や改修が必要になることが通常であり、保守性の低さはプログラムの維持管理の上で大きな問題となる。
【０００９】
この発明は、上述した従来技術による問題点を解消するためになされたものであり、変換結果として保守性の高いプログラムを効率よく得ることができるプログラム変換プログラム、プログラム変換装置およびプログラム変換方法を提供することを目的とする。
【課題を解決するための手段】
【００１０】
上述した課題を解決し、目的を達成するため、この発明に係るプログラム変換プログラムは、第１のプログラミング言語で記述された起点ソースプログラムを第２のプログラミング言語で記述された目的ソースプログラムに変換するプログラム変換プログラムであって、前記起点ソースプログラムを構文解析して前記第１のプログラミング言語に基づくデータモデルを生成する変換前モデル生成手順と、前記第１のプログラミング言語に基づくデータモデルを前記第２のプログラミング言語に基づくデータモデルへ変換するに際して、変換後のデータモデルが複雑化する可能性があることを判定する所定のルールに該当する箇所に、別手段により変換をおこなうための手掛かり情報を挿入する変換後モデル生成手順と、前記第２のプログラミング言語に基づくデータモデルを前記第２のプログラミング言語で記述された前記目的ソースプログラムに変換するに際して、前記手掛かり情報を前記目的ソースプログラムの適切な箇所に埋め込むソースプログラム生成手順とをコンピュータに実行させることを特徴とする。
【００１１】
また、この発明にかかるプログラム変換装置は、第１のプログラミング言語で記述された起点ソースプログラムを第２のプログラミング言語で記述された目的ソースプログラムに変換するプログラム変換装置であって、前記起点ソースプログラムを構文解析して前記第１のプログラミング言語に基づくデータモデルを生成する変換前モデル生成手段と、前記第１のプログラミング言語に基づくデータモデルを前記第２のプログラミング言語に基づくデータモデルへ変換するに際して、変換後のデータモデルが複雑化する可能性があることを判定する所定のルールに該当する箇所に、別手段により変換をおこなうための手掛かり情報を挿入する変換後モデル生成手段と、前記第２のプログラミング言語に基づくデータモデルを前記第２のプログラミング言語で記述された前記目的ソースプログラムに変換するに際して、前記手掛かり情報を前記目的ソースプログラムの適切な箇所に埋め込むソースプログラム生成手段とを備えたことを特徴とする。
【００１２】
また、この発明にかかるプログラム変換方法は、第１のプログラミング言語で記述された起点ソースプログラムを第２のプログラミング言語で記述された目的ソースプログラムに変換するプログラム変換方法であって、前記起点ソースプログラムを構文解析して前記第１のプログラミング言語に基づくデータモデルを生成する変換前モデル生成工程と、前記第１のプログラミング言語に基づくデータモデルを前記第２のプログラミング言語に基づくデータモデルへ変換するに際して、変換後のデータモデルが複雑化する可能性があることを判定する所定のルールに該当する箇所に、別工程により変換をおこなうための手掛かり情報を挿入する変換後モデル生成工程と、前記第２のプログラミング言語に基づくデータモデルを前記第２のプログラミング言語で記述された前記目的ソースプログラムに変換するに際して、前記手掛かり情報を前記目的ソースプログラムの適切な箇所に埋め込むソースプログラム生成工程とを含んだことを特徴とする。
【００１３】
この発明によれば、単純な字句変換によってプログラム変換をおこなったならば複雑で可読性の低いコードが生成される可能性が高い部分について、該当箇所に要確認タグを出力することとし、この要確認タグを手がかりとして単純な字句変換とは異なる方法でプログラム変換をおこなうように構成したので、保守性の高い変換結果をえることができる。
【００１４】
また、この発明に係るプログラム変換プログラムは、上記の発明において、前記ソースプログラム生成手順は、前記手掛かり情報をプログラムのコメントとして前記目的ソースプログラムに埋め込むことを特徴とする。
【００１５】
この発明によれば、適切なコードを記述する必要がある場所にプログラムのコメントとして手掛かり情報を出力し、手掛かり情報が存在した状態のままで通常通りプログラムの編集やコンパイルをおこなうことができるように構成したので、効率よくプログラムの変換をおこなうことができる。
【００１６】
また、この発明に係るプログラム変換プログラムは、上記の発明において、前記ソースプログラム生成手順は、前記手掛かり情報として前記起点ソースプログラムの名称と該起点ソースプログラムのうち前記所定のルールに該当した部分の位置情報とを埋め込むことを特徴とする。
【００１７】
この発明によれば、手掛かり情報を頼りにして変換元ソースを容易に参照することができるように構成したので、効率よくプログラムの変換をおこなうことができる。
【発明の効果】
【００１８】
本発明によれば、単純な字句変換によってプログラム変換をおこなったならば複雑で可読性の低いコードが生成される可能性が高い部分について、該当箇所に要確認タグを出力することとし、この要確認タグを手がかりとして単純な字句変換とは異なる方法でプログラム変換をおこなうように構成したので、保守性の高い変換結果をえることができるという効果を奏する。
【００１９】
また、本発明によれば、手掛かり情報を頼りにして変換元ソースを容易に参照することができるように構成したので、効率よくプログラムの変換をおこなうことができる。
【発明を実施するための最良の形態】
【００２０】
以下に添付図面を参照して、この発明に係るプログラム変換プログラム、プログラム変換装置およびプログラム変換方法の好適な実施の形態を詳細に説明する。なお、ここでは、ＣＯＢＯＬで記述されたプログラムをＪａｖａ（登録商標）で記述されたプログラムに変換する場合を例にして説明するが、この発明は、特定の言語に依存するものではなく、様々なプログラム言語の変換に用いることができる。
【実施例】
【００２１】
まず、本発明の概要について従来の方式と比較して説明する。図１４は、従来のプログラミング変換方式を説明するための説明図である。同図に示すように、従来の変換方式では、まず入力部が変換前のソースプログラムを読み込んで構文解析をおこない、変換前ソースプログラムの構文木（以下、「変換前ソースデータモデル」という。）を作成する。
【００２２】
続いて、変換エンジンが所定の変換ルールに基づいて変換前ソースデータモデルを変換して変換後ソースプログラムの構文木（以下、「変換後データソースモデル」という）を作成する。そして、出力部が変換後データソースモデルから変換後のソースプログラムを生成して変換処理が完了する。
【００２３】
ここで、変換エンジンが利用する変換ルールは、プログラムの処理内容が同一になるように機械的に字句変換するものなので、変換後のソースプログラムは、変換前のプログラミング言語の言語仕様の影響を受けて、不自然で可読性の低いコードになる場合がある。このようなプログラムを保守性の高いものにするには、開発者が時間をかけて生成されたコードを解析し、複雑な箇所を自然なコードに置き換えることが必要になる。
【００２４】
図１は、本実施例に係る変換方式を説明するための説明図である。同図に示すように、本実施例に係る変換方式は、変換ルールの他に要確認ルールを用いてプログラムの変換をおこなう点が従来と異なる。要確認ルールとは、所定の条件に合致した場合は変換ルールによる機械的な字句変換はおこなわずに別の対応をおこなうというルールである。
【００２５】
この方式では、入力部により作成された変換前ソースデータモデルは、変換ルールと要確認ルールに基づいて、変換エンジンによって、変換後ソースデータモデルに変換される。変換後ソースデータモデルでは、要確認ルールに合致した要確認箇所が要確認タグに置き換えられる。そして、この要確認タグは、出力部によりコメント等の形で変換後ソースプログラムの適切な位置に埋め込まれる。
【００２６】
変換後ソースプログラムに埋め込まれた要確認タグは、要確認箇所変換部において適切な記述に置き換えられて実稼動可能なソースプログラムとなる。要確認箇所変換部における記述の置き換えは業務知識を必要とする場合もあるため、通常は手作業によっておこなうが、業務知識に基づく変換をルール化して自動変換するようにすることもできる。
【００２７】
このような方式をとることにより、従来の方式では難解なコードに変換されていた箇所にどのような修正が必要であるかを示す情報が埋め込まれ、開発者は、これを手掛かりとして適切なソースコードを効率よく完成させることができ、結果として保守性の高いプログラムが従来より少ないコストで得られることとなる。
【００２８】
次に、本実施例に係るプログラム変換方式によるプログラム変換の一例を示す。図２は、本実施例に係るプログラム変換方式によるプログラム変換の一例を示すための説明図である。
【００２９】
ＣＯＢＯＬとＪａｖａ（登録商標）には言語仕様の上で異なる点が多いが、基本的な記憶領域の管理方法においても相違がある。ＣＯＢＯＬにおいては、ひとつの記憶領域を階層的に分割してそれぞれの階層毎に名前をつけることができる。たとえば、図２の変換前のＣＯＢＯＬのソースプログラムにおいては、ＷＫ−ＤＡＴＥ名づけられた領域は、ＹＹと名づけられた領域と、ＭＭと名づけられた領域と、ＤＤと名づけられた領域に分割されている。必要であれば、ＹＹと名づけられた領域をＹＹ１と名づけられた領域とＹＹ２と名づけられた領域にさらに分割することもできる。
【００３０】
この階層化された記憶領域（以下、「集団項目」という。）は、同じ記憶領域を共有しており、たとえばＭＭと名づけられた領域の値を更新すればＷＫ−ＤＡＴＥ名づけられた領域の一部が更新されたことになる。また、ＷＫ−ＤＡＴＥ名づけられた領域全体を更新すれば、ＹＹと名づけられた領域と、ＭＭと名づけられた領域と、ＤＤと名づけられた領域とがそれぞれ更新されたことになる。このような言語仕様を利用して、ＣＯＢＯＬで作成されたプログラムでは、必要に応じて様々な階層を使い分けて記憶領域の参照や更新がおこなわれる。
【００３１】
しかし、Ｊａｖａ（登録商標）では、このように一つの記憶領域を階層的に分割することは言語仕様上できないため、どのように変換をおこなえばよいのかが問題となる。各階層の記憶領域を別個に用意し、アクセスメソッドを工夫することによってそれらの領域が共有されているかのように見せかけることも可能であるが、ソースプログラムが非常に複雑なものになってしまう。
【００３２】
そこで、図２の例においては、このような集団項目の参照と更新の処理については要変換ルールによって単純な字句変換をおこなわないようにしている。たとえば、”ＭＯＶＥ  ＤＡＴＥ  ＴＯ  ＷＫ−ＤＡＴＥ．”というＣＯＢＯＬの命令文は、集団項目の値を別の集団項目へ転記するという処理を示しているが、この処理は出力部により生成されたＪａｖａ（登録商標）のソースプログラムにおいては空のｓｅｔというアクセスメソッドとして変換され、そこに実装すべき処理内容を示すコメントが挿入されている。
【００３３】
この空のアクセスメソッドは、業務知識を有する開発者により必要な処理が実装され、業務上必要な領域の設定処理のみが加えられるため、プログラムが複雑化することなく、保守性の高いプログラムを得られることとなる。
【００３４】
次に、本実施例に係るプログラム変換装置１００の構成について説明する。図３は、本実施例に係るプログラム変換装置の構成を示す機能ブロック図である。同図に示すように、本実施例に係るプログラム変換装置１００は、ユーザインターフェース部２００と、制御部３００と、記憶部４００とを有する。
【００３５】
ユーザインターフェース部２００は、利用者に対して情報を提供し、また、利用者からの指示を受け付ける装置であり、液晶装置等の表示装置からなる表示部２１０と、キーボードやマウス等から構成される操作部２２０とを有する。
【００３６】
制御部３００は、プログラム変換装置１００を全体制御する制御部であり、変換前クレンジング部３１０と、変換前モデル生成部３２０と、変換後モデル生成部３３０と、ソースプログラム生成部３４０と、要確認箇所変換部３５０と、ルール抽出部３７０と、作業見積り部３８０とを有する。
【００３７】
変換前クレンジング部３１０は、変換前ソースプログラムを、変換がより容易な等価な表現に置き換える処理部である。変換前のソースプログラムは、何度かの改変を経て処理の流れが複雑化している場合が多く、これをこのまま変換すると処理が理解し難いプログラムになってしまう。そこで、変換前の段階でソースプログラムの処理の流れを整理して単純な流れになるように修正する。
【００３８】
図４は、変換前クレンジングの一例を示す説明図である。同図に示すように、変換前クレンジング部３１０による変換前のソースプログラム１０においては、処理の記述順序が、処理１→処理２→処理３の順であるにもかかわらず、処理の実行順序が、処理１→処理３→処理２の順になっており、処理の記述順序と実際の処理の流れが異なっている。そこで、変換前クレンジング部３１０は、処理の記述順序を処理１→処理３→処理２に変更し、処理の記述順序と実際の処理の流れを一致させ、変換後のプログラムが理解しやすいものになるようにしている。
【００３９】
変換前モデル生成部３２０は、変換前ソースプログラムを構文解析して変換前ソースデータモデルを生成する処理部であり、図１の入力部に相当する。変換前ソースデータモデルは、変換前ソースプログラムの構造を論理的に表現したモデルであり、言語変換のための中間形式として用いられる。
【００４０】
本実施例においては、変換前および変換後のソースデータモデルを、ＸＭＬ（Ｅｘｔｅｎｓｉｂｌｅ  Ｍａｒｋｕｐ  Ｌａｎｇｕａｇｅ）を用いて表現する。ＸＭＬとは、タグと呼ばれる標識文字列を利用してデータとその構造を同時に表現することができるフォーマットである。
【００４１】
図５は、変換前ソースプログラムから変換前ソースデータモデルへの変換の一例を示す説明図である。同図に示すように、変換前モデル生成部３２０は、変換前ソースデータモデル４０としてｐｒｏｇｒａｍタグを作成し、そのｎａｍｅ属性として変換前ソースプログラム３０のプログラム名である”ＰＧ１”を設定し、ｆｉｅｌｄ属性としてこのモデルのＩＤである”１”を設定する。
【００４２】
そして、ｐｒｏｇｒａｍタグの要素としてｄａｔａ＿ｄｉｖｉｓｉｏｎタグ４１を作成し、そこに変換前ソースプログラム３０のデータ部３１の解析結果を格納する。変数Ａの定義３１ａは、ソースプログラムＡに定義された内容をＡとして定義するというものであるので、このソースプログラムＡの内容も参照してその情報も格納する。こうしてｄａｔａ＿ｄｉｖｉｓｉｏｎタグ４１の要素として追加されたｄａｔａ＿ｄｅｆｉｎｉｔｉｏｎタグ４１ａは、具体的には、変数Ａが”１”というＩＤで識別される変数であって、ｆｉｅｌｄが”１００”であるプログラムファイルの１行目に定義されたレベル１の変数であることを示している。
【００４３】
この例では、変数ＡがＣＯＰＹ句になっており、定義が別ファイルにあるためこのような表現になっている。もし、変数Ａが”０１  Ａ  ＰＩＣ  Ｘ（２）．”のように同一ファイル中で定義されていれば、ｄａｔａ＿ｄｅｆｉｎｉｔｉｏｎタグ４１ａは、変数Ａが２桁の文字列であることを示す表現になる。
【００４４】
さらに、変換前モデル生成部３２０は、ｐｒｏｇｒａｍタグの要素としてｐｒｏｃｅｄｕｒｅ＿ｄｉｖｉｓｉｏｎタグ４２を作成し、そこに変換前ソースプログラム３０のプログラム部３２の解析結果を格納する。
【００４５】
この例では、ＭＯＶＥ文３２ａを解析し、その解析結果をｐｒｏｃｅｄｕｒｅ＿ｄｉｖｉｓｉｏｎタグ４２の要素であるｓｔａｔｅｍｅｎｔタグ４２ａとして格納している。ｓｔａｔｅｍｅｎｔタグ４２ａは、具体的には、命令文の種類がＭＯＶＥ文であり、変更前ソースプログラム３０における記述位置は２０行目であり、ＭＯＶＥ文の転記元は”１”というＩＤで識別される変数Ａで、転記先が”２”というＩＤで識別される変数Ｂであることを示している。
【００４６】
なお、プログラムの変換に際しては、変数の利用状況などをプログラム全体に亘って広範に調べることが必要になるため、関連するプログラムを一括して変換する必要があるが、変換対象となるプログラムの数は数百から数千におよぶことが珍しくない。このため、変換対象のプログラムを１本追加することが必要になった場合であっても、このように大量のプログラムを再度構文解析してソースデータモデル化するために大量の処理時間が必要となる。
【００４７】
そこで、変換前モデル生成部３２０は、生成した変換前ソースデータモデルをソースデータモデル記憶部４１０に記憶し、新規もしくは更新されたソースプログラムが変換対象として指定された場合以外は、ここに記憶された変換済みのソースデータモデルを読み出して出力する。
【００４８】
変換後モデル生成部３３０は、変換前ソースデータモデルをルール記憶部４２０の情報に基づいて変換し、変換後ソースデータモデルを生成する処理部であり、図１の変換エンジンに相当する。変換前ソースデータモデルは、ＣＯＢＯＬの言語仕様に基づいたモデルであるのに対し、変換後ソースデータモデルは、Ｊａｖａ（登録商標）の言語仕様に基づいたモデルとなる。
【００４９】
変換後モデル生成部３３０の基本的な処理内容は、変換前ソースデータモデルのうち要確認ルールＤＢ４２１の情報に合致した部分を要確認タグに置き換え、その他の部分を変換ルールＤＢ４２３の情報に基づいてＣＯＢＯＬのモデルからＪａｖａ（登録商標）のモデルに変換するというものである。ＣＯＢＯＬのモデルからＪａｖａ（登録商標）のモデルへ変換するにあたってはいくつか問題がある。
【００５０】
ひとつめの問題は、データ型の問題である。たとえば、ＣＯＢＯＬの文字列型には桁数の概念があり、変数Ｘが４桁の文字列型の変数で、変数Ｙが２桁の文字列型の変数だとすると、この両者に同じ“ＡＢＣ”という値を代入して比較した場合、変数Ｘと変数Ｙは桁数の違いのために一致しないと判定される。
【００５１】
一方、Ｊａｖａ（登録商標）で標準的な文字列型であるＳｔｒｉｎｇクラスには桁数の概念がないので、Ｓｔｒｉｎｇクラスの変数ＸとＹに同じ“ＡＢＣ”という値を代入して比較した場合、両者は一致すると判定される。
【００５２】
このようなデータ型の問題を解決するため、動作が同じになるように変換時に比較処理等を置き換えることも可能であるが、変換後の処理が複雑化してしまう可能性があり、保守性の上で好ましくない。そこで、本実施例にかかるプログラム変換においては、このようなデータ型の問題を解決するため、変換後のデータ型のように振る舞い、かつ、変換前のデータ型の特徴を反映したラッパー型をＪａｖａ（登録商標）側で用意して、このラッパー型を用いてプログラムの変換をおこなうこととした。かかるラッパー型に変換前の言語の機能をもたせれば、変換前の型をラッパー型に置き換えるだけの単純な変換で等価な処理を実現でき、平易で保守性の高いプログラムを得ることができる。
【００５３】
もうひとつの問題は、変数へのアクセス方法の問題である。オブジェクト指向においては、クラス内の変数へ外部から直接アクセスすることは、オブジェクト指向の基本的な考え方であるデータ隠蔽の観点から好ましくないとされており、通常はメソッドを経由して変数にアクセスする方式がとられる。しかし、ＣＯＢＯＬにはこのような慣習はないため、従来の単純な変換方法では、変数に直接アクセスするようなＪａｖａ（登録商標）らしくないプログラムを生成する方式か、または、全ての変数に対してアクセスメソッドを生成する方式が取られていた。
【００５４】
そこで、本実施例にかかるプログラム変換においては、変換前ソースデータモデルから変数の参照・更新関係を導出し、変換時に必要となるアクセスメソッドだけを生成し、変数への直接のアクセスをこれらのアクセスメソッドを経由したアクセスに置き換えることとした。これにより、必要かつ十分なアクセスメソッドだけを作成するため、従来の方法に比べて保守性の高いＪａｖａ（登録商標）プログラムを得ることができる。
【００５５】
図６は、変換前ソースデータモデルから変換後ソースデータモデルへの変換の一例を示す説明図である。同図に示すように、変換後モデル生成部３３０は、変換後ソースデータモデル５０としてｃｌａｓｓタグを作成し、そのｎａｍｅ属性とｃｌａｓｓｉｄ属性に変換前ソースデータモデル４０のｐｒｏｇｒａｍタグのｎａｍｅ属性とｆｉｅｌｄ属性の値を設定する。
【００５６】
そして、ｃｌａｓｓタグの要素としてｆｉｅｌｄタグ５３を作成し、そこに変換前ソースデータモデル４０のｄａｔａ＿ｄｉｖｉｓｉｏｎタグ４１の内容をルール記憶部４２０の情報を使って変換した結果を格納する。
【００５７】
ｄａｔａ＿ｄｅｆｉｎｉｔｉｏｎタグ４１ａは、変数の型が外部のファイルで定義されていることを示しているので、他ファイルで定義されるクラスの変数として変換し、その情報をｆｉｅｌｄタグ５３の要素であるｆｉｅｌｄ＿ｄｅｆｉｎｉｔｉｏｎタグ５３ａとして格納する。ｆｉｅｌｄ＿ｄｅｆｉｎｉｔｉｏｎタグ５３ａは、具体的には、変数ａが”１”というＩＤで識別される変数であって、この変数のクラスはｃｌａｓｓｉｄが”１００”のクラスであることを示している。
【００５８】
ここで、変数名を大文字から小文字に変換しているのは、Ｊａｖａ（登録商標）では変数は通常小文字で記述されるのに合わせるためであり、一般のＪａｖａ（登録商標）プログラマに見やすいプログラムを生成するための処理である。
【００５９】
さらに、変換後モデル生成部３３０は、ｃｌａｓｓタグの要素としてｍｅｔｈｏｄタグ５４を作成し、そこに変換前ソースデータモデル４０のｐｒｏｃｅｄｕｒｅ＿ｄｉｖｉｓｉｏｎタグ４２の内容をルール記憶部４２０の情報を使って変換した結果を格納する。
【００６０】
この例では、変数の内容の転記の処理を変換してｍｅｔｈｏｄタグ５４の要素であるｓｔａｔｅｍｅｎｔタグ５４ａとして格納している。ｓｔａｔｅｍｅｎｔタグ４２ａは、代入により変数の内容の転記をおこなうことを意味しているが、既に説明したようにＪａｖａ（登録商標）ではクラス間で変数を直接アクセスすることはしない慣習があるため、アクセスメソッドの呼び出しにより変数の内容の転記をおこなう処理に置き換えている。具体的には、転記先の変数ｂのｓｅｔメソッドを呼び出し、このメソッドの引数として転記元の変数ａを渡すという処理に置き換えをおこなっている。
【００６１】
なお、このｓｅｔメソッドの実体は、クラスＢの変換後ソースデータモデル５１に挿入する。クラスＢの変換後ソースデータモデル５１は、変換前ソースプログラム３０においてＣＯＰＹ句により取り込まれていたソースプログラムを変換して生成したモデルであり、当初は変数の型定義のみを含んでいたものである。Ｊａｖａ（登録商標）等のオブジェクト指向言語においては、変数の定義と、定義された変数を操作する処理とを一つのクラスに収める必要があるため、ｓｅｔメソッドの実体の追加は、このモデルに対しておこなう。
【００６２】
ｓｅｔメソッドは、変数にアクセスするためのメソッドであるためｆｉｅｌｄタグ５５の要素であるｆｉｅｌｄ＿ａｃｃｅｓｓタグ５６として追加する。ここで、変換元のｓｔａｔｅｍｅｎｔタグ４２ａの処理は集団項目へ値を転記する処理であり、要確認ルールＤＢ４２１のルールの一つに該当する。このため、ｓｔａｔｅｍｅｎｔタグ４２ａの処理内容については変換ルールＤＢ４２３に基づいた変換はおこなわずに、空のｓｅｔメソッド５６ａを作成し、そこに要確認ルールＤＢ４２１に基づいて要確認タグ５６ｂを挿入する。
【００６３】
要確認タグ５６ｂは、具体的にはこの場所に埋め込むべき処理は変換元のプログラム”ＰＧ１．ｃｏｂ”の２０行目に記述されており、この部分を変換する開発者の手助けとして”ＴＯＤＯ−１”というコメントＩＤが示すメッセージを表示する必要があるということを意味している。
【００６４】
このようにして変換後モデル生成部３３０は、実際に必要なアクセスメソッドのみを作成する。使用されないアクセスメソッドが作成されることはないので、変換後のプログラムには不要なアクセスメソッドが存在しないことになり、高い保守性を得ることができる。
【００６５】
なお、クラスＢの変換後ソースデータモデル５１のｆｉｅｌｄ＿ｄｅｆｉｎｉｔｉｏｎタグ５５ａの変換元の変数は文字型である。既に述べたように、ＣＯＢＯＬの文字列型には桁数の概念があり、変換後のＪａｖａ（登録商標）のプログラムにおいては桁数の概念をもったＳｔｒｉｎｇクラスのラッパークラスに変換する必要がある。このため、ｆｉｅｌｄ＿ｄｅｆｉｎｉｔｉｏｎタグ５５ａにｓｉｚｅ属性として変換元の桁数を保持させている。
【００６６】
ソースプログラム生成部３４０は、変換後ソースデータモデルから要確認箇所付き変換後ソースプログラムを生成する処理部であり、図１の出力部に相当する。要確認箇所付き変換後ソースプログラムは、変換後ソースデータモデルの要確認タグをコメントとして出力したソースプログラムである。
【００６７】
図７は、変換後ソースデータモデルから変換後ソースプログラムへの変換の一例を示す説明図である。同図に示すように、ソースプログラム生成部３４０は、変換後ソースデータモデル５０のｆｉｅｌｄ＿ｄｅｆｉｎｉｔｉｏｎタグ５３ａを変数定義６０ａに変換し、ｓｔａｔｅｍｅｎｔタグ５４ａをｓｅｔ文６０ｃに変換する等して変換後ソースプログラム６０を生成する。
【００６８】
また、変換後ソースデータモデル５１を変換して変換後ソースプログラム６１を生成する。変換後ソースデータモデル５１には要確認タグ５６ｂが含まれるため、要確認コメントＤＢ４２２を参照してｃｏｍｍｅｎｔ属性に設定されたコメントＩＤに該当するコメントを取得し、このコメントと、ここに埋め込むべき処理がどの変換前ソースプログラムのどこに存在するかを示す情報とを所定の位置にコメントとして出力する。文字型の変数を定義するｆｉｅｌｄ＿ｄｅｆｉｎｉｔｉｏｎタグ５５ａについては、Ｓｔｒｉｎｇクラスの変数としてではなく、桁数の概念をもったＢｉｚＳｔｒｉｎｇクラスの変数として変換する。
【００６９】
要確認箇所変換部３５０は、要確認箇所付き変換後ソースプログラムにコメントの形で埋め込まれた要確認箇所を適切な記述に置き換えて変換後ソースプログラムを完成させる処理部である。本実施例においては、要確認箇所変換部３５０は、開発者が要確認箇所付き変換後ソースプログラムを編集するための編集画面として実装される。開発者は、図８に示したガイドを参照して編集をおこなう。
【００７０】
型変換部３６０は、変換後ソースプログラムに含まれるラッパークラスを一般的なクラスに置き換える処理部である。既に説明したように、ＣＯＢＯＬとＪａｖａ（登録商標）のデータ型の違いを吸収するために、本実施例に係るプログラム変換は、ＣＯＢＯＬのデータ型をそのデータ型を模したＪａｖａ（登録商標）のラッパークラスに置き換えることがある。
【００７１】
しかし、たとえばＣＯＢＯＬの文字列型についてみると、文字列同士の比較や暗黙の桁落としなどがおこなわれていなければラッパークラスではなく文字列をあつかう最も一般的なクラスであるＳｔｒｉｎｇクラスに変換しても問題はおこらない。ラッパークラスは、変換後のプログラムの保守性を大きく損なうものではないが、より普遍的なクラスを用いた方が可読性が高まる。
【００７２】
そこで、型変換部３６０は、ソースデータモデル記憶部４１０に記憶されたモデルを参照し、ラッパークラスでなく通常のクラスの変数としても問題ないと判断した変数については、通常のクラスの変数へ変換する。図９は、型変換部による型変換の一例を示す説明図である。同図に示すように、ＢｉｚＳｔｒｉｎｇクラスを用いた変数定義６４ａは、比較に用いられていないと判断され、一般的なＳｔｒｉｎｇクラスを用いた変数定義７１ａに変換されている。
【００７３】
ルール抽出部３７０は、要確認箇所変換部３５０でおこなわれる編集内容から頻出するパターンを抜き出し、それを変換ルールＤＢ４２３にフィードバックして以降の変換処理を自動化して効率化を図るための処理部である。ルール抽出部３７０は、たとえば、要確認箇所に埋め込まれた処理の類似度を測定し、頻出する類似パターンを抽出する。
【００７４】
図１０は、フィードバックしたルールによるプログラム変換の一例を示す説明図である。同図は、日付関連のデータを変換するルールをフィードバックした場合の例を示している。ＣＯＢＯＬにおいて、年月日は、しばしばＹＹＭＭＤＤのような名前の８桁の数字からなる変数として定義され、さらにこの変数の記憶領域が分割されてＹＹ、ＭＭ、ＤＤのような名前の変数が定義され、それぞれ年部分、月部分、日付部分として利用される。
【００７５】
このような日付関連の集団項目は様々なプログラム中に存在し、これをいちいち手作業で置き換えていたのでは作業コストが高くついてしまう。ＢｉｚＤａｔｅのような汎用的なクラスを用意し、このクラスを用いたプログラム変換を自動におこなうように要確認ルールＤＢ４２１と変換ルールＤＢ４２３を設定することでプログラム変換作業を効率化することができる。
【００７６】
作業見積り部３８０は、要確認部の変換に要する時間を見積る処理部である。ソースプログラム生成部３４０にて出力された要確認箇所付きソースプログラムに大量の要確認箇所が含まれていると、プログラムの変換に要する作業時間が、プログラムを一から開発し直した場合と同等になってしまう場合がある。
【００７７】
このような場合には、より保守性の高いプログラムを得ることができる一からの開発を選択した方が賢明といえる。そこで、作業見積り部３８０は、ソースデータモデル記憶部４１０と要確認ルールＤＢ４２１の情報をもちいてどのような要確認箇所がどのくらいの数発生するかを見積り、プログラム変換の対応方法の判断材料を提供する。
【００７８】
記憶部４００は、ソースデータモデル記憶部４１０とルール記憶部４２０とを有する。ソースデータモデル記憶部４１０は、変換前モデル生成部３２０により生成された変換前データソースモデルと変換後モデル生成部３３０により生成された変換後データソースモデルとを記憶する。
【００７９】
ルール記憶部４２０は、要確認ルールＤＢ４２１と、要確認コメントＤＢ４２２と、変換ルールＤＢ４２３と、型ライブラリＤＢと４２４とを有する。要確認ルールＤＢ４２１は、変換ルールＤＢ４２３に基づいた字句変換を行わない場合についてのルールを記憶する。
【００８０】
図１１は、要確認ルールＤＢ４２１のデータ構造の一例を示すデータ構造図である。同図に示すように、要確認ルールＤＢは、ステートメントと、条件と、対応箇所と、コメントＩＤという項目をもつ。ステートメントは、当該のルールが対象とする命令文を格納する。条件は、当該のルールを適用する条件を格納する。対応箇所は、当該のルールを適用する場合の要確認タグの挿入先を格納する。コメントＩＤは、当該のルールを適用する場合に要確認タグに埋め込むコメントＩＤを格納する。
【００８１】
要確認コメントＤＢ４２２は、要確認ルールＤＢ４２１のコメントＩＤに対応するコメントを記憶する。図１２は、要確認コメントＤＢ４２２のデータ構造の一例を示すデータ構造図である。同図に示すように、要確認コメントＤＢ４２２は、コメントＩＤとコメントという項目をもつ。コメントＩＤは、要確認ルールＤＢ４２１のコメントＩＤと対応する値を格納する。コメントは、要確認ルールが適用された場合に要確認箇所付きソースプログラムに埋め込まれるコメント文を格納する。なお、コメント文の#filenameおよび#lineは、ソースプログラム生成部３４０により、それぞれ変換前のプログラム名と変換箇所の行番号に置き換えられる。
【００８２】
変換ルールＤＢ４２３は、変換前ソースデータモデルを文法的に字句変換するためのルールを記憶する。型ライブラリＤＢ４２４は、プログラム変換時に使用するラッパークラスの情報を変換元のデータ型と対で記憶する。
【００８３】
次に、図３に示したプログラム変換装置１００の処理手順について説明する。図１３は、図３に示したプログラム変換装置１００の処理手順を示すフローチャートである。
【００８４】
同図に示すように、変換前のソースプログラムを読み込んだならば（ステップＳ１０１）、そのプログラムが新規ないし更新されたものであるかどうかを確認する。プログラムが新規ないし更新されたものである場合は（ステップＳ１０２肯定）、クレンジング処理を行って変換が容易な形に修正する（ステップＳ１０３）。プログラムが新規でも更新されたものでもない場合には（ステップＳ１０２否定）、ステップＳ１０３はおこなわない。
【００８５】
そして、まだ読み込んでいないファイルが存在している場合には（ステップＳ１０４否定）、ステップＳ１０１に戻って次のソースプログラムの読み込みをおこなう。全ての変換前のソースプログラムを読み込んでいた場合は（ステップＳ１０４肯定）、変換前ソースデータモデルを生成し（ステップＳ１０５）、変換前ソースデータモデル全体を対象にして解析をおこなって変換後ソースデータモデルを作成する（ステップＳ１０６）。この変換後ソースデータモデルでは、字句変換では難解なコードとして変換されそうな部分に要確認タグが挿入される。
【００８６】
そして、変換後ソースデータモデルをもとにして要確認箇所付きソースプログラムを生成する（ステップＳ１０７）。この要確認箇所付きソースプログラムでは、要確認タグの内容がコメントの形で挿入される。
【００８７】
そして、要確認箇所付きソースプログラムの要確認タグの部分に適切なコードを埋め込み（ステップＳ１０８）、必然性のないラッパークラスを通常のクラスに変換してプログラムの変換は完了する（ステップＳ１０９）。
【００８８】
上述してきたように、本実施例では、変換後モデル生成部３３０が変換前ソースデータモデルから変換後ソースデータモデルを生成する際に、要確認ルールＤＢ４２１のルールに該当する箇所は変換ルールＤＢを用いた字句変換はおこなわず、適切なコードを埋めるための補助情報を埋め込むように構成したので、単純な字句変換をおこなったならば複雑で可読性の低いコードが生成されそうな処理を業務知識を背景とした良質なコードで効率よく変換することができ、もって保守性の高い変換後ソースプログラムを効率よく得ることができる。
【００８９】
（付記１）第１のプログラミング言語で記述された起点ソースプログラムを第２のプログラミング言語で記述された目的ソースプログラムに変換するプログラム変換プログラムであって、
前記起点ソースプログラムを構文解析して前記第１のプログラミング言語に基づくデータモデルを生成する変換前モデル生成手順と、
前記第１のプログラミング言語に基づくデータモデルを前記第２のプログラミング言語に基づくデータモデルへ変換するに際して、変換後のデータモデルが複雑化する可能性があることを判定する所定のルールに該当する箇所に、別手段により変換をおこなうための手掛かり情報を挿入する変換後モデル生成手順と、
前記第２のプログラミング言語に基づくデータモデルを前記第２のプログラミング言語で記述された前記目的ソースプログラムに変換するに際して、前記手掛かり情報を前記目的ソースプログラムの適切な箇所に埋め込むソースプログラム生成手順と
をコンピュータに実行させることを特徴とするプログラム変換プログラム。
【００９０】
（付記２）前記ソースプログラム生成手順は、前記手掛かり情報をプログラムのコメントとして前記目的ソースプログラムに埋め込むことを特徴とする付記１に記載のプログラム変換プログラム。
【００９１】
（付記３）前記ソースプログラム生成手順は、前記手掛かり情報として前記起点ソースプログラムの名称と該起点ソースプログラムのうち前記所定のルールに該当した部分の位置情報とを埋め込むことを特徴とする付記１または２に記載のプログラム変換プログラム。
【００９２】
（付記４）前記変換後モデル生成手順は、前記起点ソースプログラムで使用されているデータ型に相当するデータ型が前記第２のプログラミング言語に存在しない場合に、前記第２のプログラミング言語により該データ型と同等の仕様をもつように事前に作成された特定化したデータ型を用いて変換をおこなうことを特徴とする付記１、２または３に記載のプログラム変換プログラム。
【００９３】
（付記５）前記特定化したデータ型を通常用いられる汎用のデータ型に置き換えても問題ないと判断したならば、前記目的ソースプログラムに含まれる前者のデータ型を後者のデータ型に置き換える型変換手順をさらにコンピュータに実行させることを特徴とする付記４に記載のプログラム変換プログラム。
【００９４】
（付記６）前記変換前モデル生成手順の前段階において、前記起点ソースプログラムをより変換が容易な記述に等価変換する変換前クレンジング手順をさらにコンピュータに実行させることを特徴とする付記１〜５のいずれか一つに記載のプログラム変換プログラム。
【００９５】
（付記７）前記変換後モデル生成手順は、前記第２のプログラミング言語がオブジェクト指向言語である場合に、変数への実際のアクセスがあることを根拠として該変数へアクセスするためのメソッドを作成することを特徴とする付記１〜６のいずれか一つに記載のプログラム変換プログラム。
【００９６】
（付記８）前記変換前モデル生成手順により生成された前記第１のプログラミング言語に基づくデータモデルを記憶する記憶手順をさらにコンピュータに実行させ、
前記変換前モデル生成手順は、過去に変換したものと同一の起点ソースプログラムを変換対象として受け付けた場合においては、変換処理をおこなわずに、前期記憶手順により記憶された当該の変換前ソースデータモデルを取得してこれを出力することを特徴とする付記１〜７のいずれか一つに記載のプログラム変換プログラム。
【００９７】
（付記９）前記変換前モデル生成手順により生成された前記第１のプログラミング言語に基づくデータモデルに基づいて前記目的ソースプログラム埋め込まれる前記手掛かり情報の数を手掛かり情報の種類別に集計する作業見積り手順をさらにコンピュータに実行させることを特徴とする付記１〜８のいずれか一つに記載のプログラム変換プログラム。
【００９８】
（付記１０）前記目的ソースプログラムの前記手掛かり情報部分に追記された処理の記述から変換ルールの抽出をおこなうルール抽出手順をさらにコンピュータに実行させることを特徴とする付記１〜９のいずれか一つに記載のプログラム変換プログラム。
【００９９】
（付記１１）第１のプログラミング言語で記述された起点ソースプログラムを第２のプログラミング言語で記述された目的ソースプログラムに変換するプログラム変換装置であって、
前記起点ソースプログラムを構文解析して前記第１のプログラミング言語に基づくデータモデルを生成する変換前モデル生成手段と、
前記第１のプログラミング言語に基づくデータモデルを前記第２のプログラミング言語に基づくデータモデルへ変換するに際して、変換後のデータモデルが複雑化する可能性があることを判定する所定のルールに該当する箇所に、別手段により変換をおこなうための手掛かり情報を挿入する変換後モデル生成手段と、
前記第２のプログラミング言語に基づくデータモデルを前記第２のプログラミング言語で記述された前記目的ソースプログラムに変換するに際して、前記手掛かり情報を前記目的ソースプログラムの適切な箇所に埋め込むソースプログラム生成手段と
を備えたことを特徴とするプログラム変換装置。
【０１００】
（付記１２）第１のプログラミング言語で記述された起点ソースプログラムを第２のプログラミング言語で記述された目的ソースプログラムに変換するプログラム変換方法であって、
前記起点ソースプログラムを構文解析して前記第１のプログラミング言語に基づくデータモデルを生成する変換前モデル生成工程と、
前記第１のプログラミング言語に基づくデータモデルを前記第２のプログラミング言語に基づくデータモデルへ変換するに際して、変換後のデータモデルが複雑化する可能性があることを判定する所定のルールに該当する箇所に、別工程により変換をおこなうための手掛かり情報を挿入する変換後モデル生成工程と、
前記第２のプログラミング言語に基づくデータモデルを前記第２のプログラミング言語で記述された前記目的ソースプログラムに変換するに際して、前記手掛かり情報を前記目的ソースプログラムの適切な箇所に埋め込むソースプログラム生成工程と
を含んだことを特徴とするプログラム変換方法。
【産業上の利用可能性】
【０１０１】
以上のように、本発明にかかるプログラム変換プログラム、プログラム変換装置およびプログラム変換方法は、プログラム言語の変換に有用であり、特に、変換結果として保守性の高いソースプログラムが必要なプログラム変換に適している。
【図面の簡単な説明】
【０１０２】
【図１】本実施例に係る変換方式を説明するための説明図である。
【図２】本実施例に係るプログラム変換方式によるプログラム変換の一例を示すための説明図である。
【図３】本実施例に係るプログラム変換装置の構成を示す機能ブロック図である。
【図４】変換前クレンジングの一例を示す説明図である。
【図５】変換前ソースプログラムから変換前ソースデータモデルへの変換の一例を示す説明図である。
【図６】変換前ソースデータモデルから変換後ソースデータモデルへの変換の一例を示す説明図である。
【図７】変換後ソースデータモデルから変換後ソースプログラムへの変換の一例を示す説明図である。
【図８】要確認タグ変換ルールガイドの一例である。
【図９】型変換部による型変換の一例を示す説明図である。
【図１０】フィードバックしたルールによるプログラム変換の一例を示す説明図である。
【図１１】要確認ルールＤＢのデータ構造の一例を示すデータ構造図である。
【図１２】要確認コメントＤＢのデータ構造の一例を示すデータ構造図である。
【図１３】図３に示したプログラム変換装置の処理手順を示すフローチャートである。
【図１４】従来のプログラミング変換方式を説明するための説明図である。
【符号の説明】
【０１０３】
１０    ソースプログラム
２０    クレンジング後ソースプログラム
３０    変換前ソースプログラム
３１    データ部
３１ａ  変数Ａの定義
３１ｂ  変数Ｂの定義
３２    プログラム部
３２ａ  ＭＯＶＥ文
４０    変換前ソースデータモデル
４１    ｄａｔａ＿ｄｉｖｉｓｉｏｎタグ
４１ａ  ｄａｔａ＿ｄｅｆｉｎｉｔｉｏｎタグ
４１ｂ  ｄａｔａ＿ｄｅｆｉｎｉｔｉｏｎタグ
４２    ｐｒｏｃｅｄｕｒｅ＿ｄｉｖｉｓｉｏｎタグ
４２ａ  ｓｔａｔｅｍｅｎｔタグ
５０    変換後ソースデータモデル
５１    変換後ソースデータモデル
５２    変換後ソースデータモデル
５３    ｆｉｅｌｄタグ
５３ａ  ｆｉｅｌｄ＿ｄｅｆｉｎｉｔｉｏｎタグ
５３ｂ  ｆｉｅｌｄ＿ｄｅｆｉｎｉｔｉｏｎタグ
５４    ｍｅｔｈｏｄタグ
５４ａ  ｓｔａｔｅｍｅｎｔタグ
５５    ｆｉｅｌｄタグ
５５ａ  ｆｉｅｌｄ＿ｄｅｆｉｎｉｔｉｏｎタグ
５５ｂ  ｆｉｅｌｄ＿ｄｅｆｉｎｉｔｉｏｎタグ
５６    ｆｉｅｌｄ＿ａｃｃｅｓｓタグ
５６ａ  空のｓｅｔメソッド
５６ｂ  要確認タグ
６０    変換後ソースプログラム
６０ａ  変数定義
６０ｂ  変数定義
６０ｃ  ｓｅｔ文
６１    変換後ソースプログラム
６１ａ  変数定義
６１ｂ  変数定義
６１ｃ  アクセスメソッド
６２    変換後ソースプログラム
７０    変換後ソースプログラム
７０ａ  変数定義
７０ｂ  変数定義
７０ｃ  ｓｅｔ文
７１    変換後ソースプログラム
７１ａ  変数定義
７１ｂ  変数定義
７１ｃ  アクセスメソッド
７２    変換後ソースプログラム
８０    変換前ソースプログラム
８０ａ  年月日の定義
８０ｂ  年月日の操作
８１    フィードバックなしの場合のＰＧ１クラス
８１ａ  年月日の定義
８１ｂ  年月日の操作
８２    個別に作成される年月日クラス
８３    フィードバックありの場合のＰＧ１クラス
８３ａ  年月日の定義
８３ｂ  年月日の操作
８４    共有される年月日クラス
１００    プログラム変換装置
２００    ユーザインターフェース部
２１０    表示部
２２０    操作部
３００    制御部
３１０    変換前クレンジング部
３２０    変換前モデル生成部（入力部）
３３０    変換後モデル生成部（変換エンジン）
３４０    ソースプログラム生成部（出力部）
３５０    要確認箇所変換部
３６０    型変換部
３７０    ルール抽出部
３８０    作業見積り部
４００    記憶部
４１０    ソースデータモデル記憶部
４２０    ルール記憶部
４２１    要確認ルールＤＢ
４２２    要確認コメントＤＢ
４２３    変換ルールＤＢ
４２４    型ライブラリＤＢ
【図１】
2006011756.tif 000003
【図２】
2006011756.tif 000004
【図３】
2006011756.tif 000005
【図４】
2006011756.tif 000006
【図５】
2006011756.tif 000007
【図６】
2006011756.tif 000008
【図７】
2006011756.tif 000009
【図８】
2006011756.tif 000010
【図９】
2006011756.tif 000011
【図１０】
2006011756.tif 000012
【図１１】
2006011756.tif 000013
【図１２】
2006011756.tif 000014
【図１３】
2006011756.tif 000015
【図１４】
2006011756.tif 000016