(57)【要約】【課題】ソース・プログラムを他の形式のターゲット・プログラムに自動的に変換することができるプログラム変換装置およびその変換を実行するためのプログラムを提供する。【解決手段】変換前のソース・プログラム１０１が変換処理部１０３に入力される。ソース・プログラムのコードを予約語、変数等に分類し、それぞれにタグ（マーカ等の印）を付して、中間結果１０５を作成する。変換処理部１０３は、知識ベース１０４を参照して、中間結果１０５をターゲット・プログラム１０２に変換する。変換作業中に、知識ベース１０６に存在しない中間結果１０５が現れた場合、新たな変換ルール１０６を入力し、知識ベース１０６に追加する。【選択図】図１
2009199486.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータによる処理に適した一連の命令を記述したプログラムを同一の処理を実行する他の形式のプログラムに変換するプログラム変換装置において、
変換前のソース・プログラムを格納する第１の記憶領域と、
プログラムを変換するための変換ルールを格納する知識ベース領域と、
前記ソース・プログラムを前記変換ルールに従ってターゲット・プログラムに変換する変換処理部と、
前記ソース・プログラムを前記ターゲット・プログラムに変換する際に、前記変換ルールに記述されていない新たな命令が検出された場合、該命令に対応する変換ルールの入力を受付け、前記知識ベース領域に追加する入力部と、
前記ターゲット・プログラムを格納する第２の記憶領域と、
から構成されることを特徴とするプログラム変換装置。
【請求項２】
前記変換処理部は、変換する前に予め定める分類を前記ソース・プログラムの各命令を構成する要素に付与する分類付与部を有することを特徴とする請求項１記載のプログラム変換装置。
【請求項３】
前記分類付与部は、前記要素を少なくとも予約語および変数に分類する手段を有することを特徴とする請求項２記載のプログラム変換装置。
【請求項４】
前記他の形式のプログラムは、同じプログラム言語における他のバージョンのプログラムを含むことを特徴とする請求項１記載のプログラム変換装置。
【請求項５】
コンピュータによる処理に適した一連の命令を記述したプログラムを同一の処理を実行する他の形式のプログラムに変換するプログラムにおいて、コンピュータに、
変換前のソース・プログラムを格納する段階と、
前記ソース・プログラムを予め定められた領域に格納された変換ルールに従ってターゲット・プログラムに変換する段階と、
前記ソース・プログラムを前記ターゲット・プログラムに変換する際に、前記変換ルールに記述されていない新たな命令が検出された場合、該命令に対応する変換ルールの入力を受付け、前記知識ベース領域に追加する段階と、
前記ターゲット・プログラムを格納する段階と、
を実行させることを特徴とするプログラム。
【請求項６】
前記ターゲット・プログラムに変換する段階は、変換する前に予め定める分類を前記ソース・プログラムの各命令を構成する要素に付与する段階を含むことを特徴とする請求項５記載のプログラム。
【請求項７】
前記付与する段階は、前記要素を少なくとも予約語および変数に分類する段階を含むことを特徴とする請求項６記載のプログラム。
【請求項８】
前記他の形式のプログラムは、同じプログラム言語における他のバージョンのプログラムを含むことを特徴とする請求項５記載のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ある形式で記述されたプログラムを他の形式で記述されたプログラムに変換するプログラム変換装置およびその変換を実行するためのプログラムに関する。
【背景技術】
【０００２】
あるプラットフォーム上で実行されているプログラムを他の形式のプログラムに変換する必要性が生じることがある。例えば、今まで使用していたＣＯＢＯＬで記載されたプログラムを他のプラットフォーム上で実行させるためにＶｉｓｕａｌ  Ｂａｓｉｃ（ＶＢ）プログラムへの書き換えが必要となることがある。また、新しいプラットフォームに変更された場合、現行のプログラムをその新しいプラットフォームに適合するプログラムに書き換えることが必要となる。
【０００３】
プログラムの変換に関して、特表２００７−５１５０１３号公報にソフトウェアコードの変換を行う発明が開示されている。本発明によれば、ソフトウェアコードの変換は、いくつかのステージに分けられた変換処理により実行される。まず入力ステージではソースアプリケーションが受け入れられ、ターゲットアプリケーションのアーキテクチャを定義する。次に入力されたソースアプリケーションは、分析ステージにおいて、変換のためにデータ・ベース分析、ビジネス分析、およびターゲット分析が行われる。セットアップステージでは、プログラム変換を行うために利用するカスタムの知識ベース（ＫＢ）が生成される。次に、処理ステージでは、ソースアプリケーションのソースコードが知識エンジンを通過させられ、変換が繰り返し行われる。最後に、処理は文書化ステージに渡され、変換処理の結果を報告する概略レポートが生成される。
【特許文献１】特表２００７−５１５０１３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
上記特許文献において開示された発明では、知識ベースを使用して、入力されたソースアプリケーションをターゲットアプリケーションへ変換を行うが、知識ベースの構成、および変換する際の手法について具体的に明示されていない。
【課題を解決するための手段】
【０００５】
本発明は、上記のような課題を解決するために構成されたもので、コンピュータによる処理に適した一連の命令を記述したプログラムを同一の処理を実行する他の形式のプログラムに変換するプログラム変換装置において、変換前のソース・プログラムを格納する第１の記憶領域、プログラムを変換するための変換ルールを格納する知識ベース領域、ソース・プログラムを変換ルールに従ってターゲット・プログラムに変換する変換処理部、ソース・プログラムをターゲット・プログラムに変換する際に、変換ルールに記述されていない新たな命令が検出された場合、該命令に対応する変換ルールの入力を受付け、知識ベース領域に追加する入力部、およびターゲット・プログラムを格納する第２の記憶領域から構成されるプログラム変換装置である。
【０００６】
また、本発明は、コンピュータによる処理に適した一連の命令を記述したプログラムを同一の処理を実行する他の形式のプログラムに変換するプログラムにおいて、コンピュータに、変換前のソース・プログラムを格納する段階、ソース・プログラムを予め定められた領域に格納された変換ルールに従ってターゲット・プログラムに変換する段階、ソース・プログラムをターゲット・プログラムに変換する際に、変換ルールに記述されていない新たな命令が検出された場合、該命令に対応する変換ルールの入力を受付け、知識ベース領域に追加する段階、およびターゲット・プログラムを格納する段階、を実行させるプログラムである。
【発明の効果】
【０００７】
本発明は、変換前の命令と変換後の命令との間に予め定めた変換ルールを定めた知識ベースを作成しておき、その変換ルールに従ってオリジナル・プログラムをターゲット・プログラムに自動的に変換する装置、およびプログラムを提供する。また、変換を実行する際に、変換ルールに定められていない命令が出現した場合、知識ベースに新たな変換ルールを追加することにより、その後の変換効率を向上させることができる。
【発明を実施するための最良の形態】
【０００８】
以下説明する実施例は、本発明を実施するための最良の形態を開示するものであり、開示された具体的構成に限定されるものではない。本発明は、命令言語の形式に限定されるものではなく、あらゆる言語に適用可能であり、特に、その実現は、知識ベースの記述内容に依存する。また、本発明は、異なる言語間における変換だけではなく、同じ言語の異なるバージョン間の変換にも適用が可能である。さらに、本発明は、異なるプラットフォーム間において実行可能なプログラム間の変換にも適用が可能である。
【０００９】
図１は、プログラムを変換するための変換機能の一実施例を示すブロック図である。図１では、プログラムの変換処理を実行する処理内容を機能的に各ブロックで構成しているが、本発明の係るプログラム変換装置およびプログラムがこれらのブロック構成に限定されることはなく、単にプログラムの変換処理を説明する便宜上構成しているに過ぎない。
【００１０】
図１に戻り、本発明に係るプログラムの変換処理１００の概念を説明する。変換の対象であるソース・プログラム・コード１０１（以下、「変換前プログラム」という。）は、変換処理を実行するコンピュータ・システムの予め定める記憶領域に格納される。この変換前プログラム１０１は、以下説明する所定の処理が施されて、ターゲット・プログラム・コード１０２（以下、「変換後プログラム」という。）に変換される。以下説明する実施例では、ＣＯＢＯＬ言語で記述された変換前プログラムをＶＢプログラムの記述に変換する手順を説明する。なお、これらの言語に限定されないことは上述したとおりである。
【００１１】
変換処理部１０３は、変換前プログラム１０１の各命令を解析する。この解析は、知識ベース１０４に格納されている変換ルールに適用するために、変換前プログラム１０１の各行のプログラム・コードを、例えば、予約語、変数等に分類し、それぞれにタグ（マーカ等の印）を付す作業である。タグを付すことにより、各行におけけるプログラム・コードがいかなる性格を有するものであることが判明し、変換作業における知識ベース１０４の適用が可能となる。
【００１２】
変換前プログラム１０１の全ての行（ライン）に対して上記解析が実行され、タグ付けが完了すると、変換前プログラム１０１は、タグの付された中間結果が生成され、所定の格納領域１０５に保存される。しかしながら、上述した解析作業中に知識ベース１０４に予め用意していないプログラム・コードが出現した場合、タグを付すことができないので、新たなプログラム・コードが出現した旨の通知が行われる。この通知は、表示装置上に表示されてもよく、オペレータはその表示に基づき、新たなプログラム・コードに対するタグや変換ルール１０６を入力する。新たな変換ルール１０６は、知識ベース１４に追加される。
【００１３】
中間結果１５が作成されると、次に目的とするプログラムへの変換処理が実行される。この変換処理は、まずタグの付された中間結果と同じ記述が知識ベース１０４に存在するかどうかをサーチすることから始まる。知識ベースには、変換前の記述であるオリジン（origin）の記述とそのオリジンの記述に対応する変換後の記述であるターゲット（target）の記述が変換ルールとして関連付けられて格納されている。サーチの結果、中間結果と同一の記述がオリジンの記述にあると、その変換ルールに従ってターゲットの記述が呼び出される。このような変換処理が全ての中間結果に対して実行されると変換後プログラム１０２が生成され、出力される。
【００１４】
上記変換処理１０３における具体的な処理内容をあるプログラムに従ってさらに詳しく説明する。図２は、変換処理１０３内の処理機能を示すブロック図である。図２の変換処理の内容を説明するに際して、変換例として図３に示すソース・プログラム３００を用いる。変換処理において、図５および図６に示す知識ベース５００，６００を使用して、図４に示す中間結果４００が作成され、図７に示すターゲット・プログラム８００に変換される。
【００１５】
まず、ブロック１０１に変換前プログラムが入力され、その入力されたプログラムに対して変換処理が実行される。変換の対象となるプログラムの一部を図３に示す。図３のプログラム３００は、ＣＯＢＯＬ言語で記述されており、ＨＹＯＢＩＫＩ３０１と称されるルーチンとＮＩＮＺＵＨＹＯＪＩ３０２と称されるルーチンを示す。このプログラムは、数学の得点が９０点以上の人数をカウントし、そのカウントした人数を表示するプログラムで、その処理内容を簡単に説明する。まずＨＹＯＢＩＫＩ３０１のルーチンにおいて、ライン３０３で変数Ｋが４０（学生数が４０人）に達するまでＰＥＲＦＯＲＭ文が実行されることを宣言する。そして、ライン３０４で変数Ｋにおける数学の点数ＳＵＧＡＫＵ（Ｋ）が９０点以上かどうかを判断し、９０点以上である場合は、ライン３０５のＴＨＥＮ文を経由して、ライン３０６で変数ＮＩＮＺＵを１だけ増加させて、ライン３０７でＩＦ文を終了する。ライン３０４において数学の点数ＳＵＧＡＫＵ（Ｋ）が９０点未満の場合は変数ＮＩＮＺＵに対しなにもせず、ライン３０７へ進み、ＩＦ文を終了する。ＩＦ文の終了後、ライン３０８へ進んで、変数Ｋを１だけ増加させ、ライン３０３へ処理は戻る。そして、Ｋが４０になるまで、同様の処理を行う。Ｋが４０になると、ライン３０９でＰＥＲＦＯＲＭ文が終了する。ＨＹＯＢＩＫＩルーチンが終了すると、次にライン３０９からＮＩＮＺＵＨＹＯＪＩルーチン３０２へ進み、ライン３１０で変数ＮＩＮＺＵの表示が行われ、ライン３１１でプログラムの処理は終了する。
【００１６】
次に、プログラムを変換する処理の説明に戻る。変換前プログラムが入力されると、図２のブロック２０１において各ラインのプログラム文の解析が実行される。プログラム文の解析は、プログラム文の各ソース・コードを分類することである。すなわち、ソース・コードを予約語、変数等に分類する。すなわち、プログラム文が命令文である場合は分類タグ「tagcategory」を「c」として、また文字列である場合は分類タグ「tagcategory」を「n」として分類し、その後ろにそれぞれ定義内容を記述する。プログラム文が命令文である場合、プログラム文の予約語および変数は、予約語タグ「operator」および変数タグ「indexname」に続いて予約語および変数をそれぞれ定義する。プログラム文が文字列である場合、文字列タグ「fieldname」に続いてその文字列を定義する。同じ分類が同一ラインに複数記述されている場合、「operator1」、「operator2」のようにタグの後ろに１、２、３のサフィックスを付して区別する。なお、各命令文の最後には「/」が付される。
【００１７】
具体的な解析は以下のとおりとなる。図３のライン３０１に記述された「ＨＹＯＢＩＫＩ」は、ルーチン名を定義する文字列であるので、「tagcategory=n」と分類し、その文字列の内容を文字列タグ「fieldname」以下に定義する。すなわち、図４のライン４０１に示されるように、「tagcategory=n」に続いて「fieldname=HYOBIKI」と記述される。また、ライン３０３に記述された「PERFORM UNTIL K > 40」のプログラム文では、まず命令文であることを示す「tagcategory=c」を記述する。続いて、「PERFORM」、「UNTIL」、および「>」は、それぞれ予約語であり、同じライン内に記述されているので、「operator1=PERFORM」、「operator2=UNTIL」、および「operator3=>」としてそれぞれ記述される。さらに「K」および「40」は、それぞれ変数および文字列であるので、「indexname=K」および「fieldname=40」としてそれぞれ記述される。以上の解析の結果、図３のライン３０３は、図４のライン４０２のように記述される。なお、各ラインの終了を示すために、「/」が各ラインの最後に付される。予約語「PERFORM」は、実行すべき処理内容がその後に記述されることを示すために「calc」４０３が付加される。
【００１８】
次に、ライン３０４に記述されたプログラム文「IF SUGAKU(K)>=90」については、「IF」および「>=」は予約語、「SUGAKU」および「90」は文字列、「K」は変数であるので、ライン３０４は、図４のライン４０４に示されるように、「tagcategory=c, operator1=IF, fieldname1=SUGAKU, indexname=K, operator2=">=", fieldname2=90/」と解析される。図３のライン３０５に記述されるプログラム文「ＴＨＥＮ」は、予約語であるので、解析結果は、ライン４０５に示される。ＴＨＥＮ文に続く処理がその後に記述されることを示すために「<calc>」４０６が付加される。
【００１９】
また、ライン３０４のＩＦ文が真である場合に実行されるライン３０６では、「ADD」および「TO」を予約語と、「1」および「NINZU」を文字列とそれぞれ解析する。その結果、図４のライン４０７のように「tagcategory=c, operator1=ADD, fieldname1=1, operator2=TO, fieldname2=NINZU/」と記述される。さらに、ライン３０７のＥＮＤ−ＩＦ文はＩＦ文の終了を示す予約語であり、解析結果は、ライン４０８のように「tagcategory=c, operator1=END-IF/」と記述される。なお、ライン３０４のＩＦ文とライン３０７のＥＮＤ−ＩＦ文は一対をなし、ＩＦ文の処理内容がＥＮＤ−ＩＦ文で終了することを示すために、ＥＮＤ−ＩＦ文の解析結果の前に「/calc」４０９が付加される。
【００２０】
上述した規則に従って、ライン３０８，３０３，３０２，３１０，３１１に記述されたプログラム文に対しても解析を続行し、それぞれ図４のライン４１０からライン４１５の記述を得ることができる。解析されたこれらの中間結果は、全て格納領域１０５に保存され、後続のターゲット・プログラムへの変換作業に利用される。
【００２１】
次に、格納領域１０５に保存された中間結果をターゲット・プログラムへ変換する作業は、図５および図６に示される知識ベース５００，６００を参照して、次のように実行する。なお、知識ベース５００，６００は、中間結果とＶＢプログラムとの関連を示すために、origin欄とtarget欄が一対のデータ・ブロックを構成している。例えば、データ・ブロック５０１は、origin欄に記述された「tagcategory=n, fieldname=SHOKIKA」の中間結果がtarget欄に記載された「‘SHOKIKA/」のＶＢプログラムに変換できることを示す。このように、知識ベース１０４には、図５および図６に示されるようにＣＯＢＯＬプログラムとＶＢプログラムとの関連を示す一対の記述（origin欄とtarget欄）が可能な限り多く格納されている。また、変換作業の途中結果として、図７にターゲット・プログラムに一部が変換された途中結果７００を示す。
【００２２】
まず、変換処理部１０３は、図４のライン４０１に示された中間結果の記述「tagcategory=n，fieldname=HYOBIKI/」を中間結果１０５から呼び出し、それと同じ記述が知識ベース５００，６００内に存在するかどうかサーチする。サーチの結果、同一の記述がデータ・ブロック５０２のorigin欄に発見されると、その対応するtarget欄の記述「’HYOBIKI」が変換結果として用いられ、図７の途中結果７００のライン７０１として挿入されている。ここで、origin欄のHYOBIKIとtarget欄のHYOBIKIが同じである事実を使うことで、もし中間結果から取り出した記述が「tagcategory=n，fieldname=HYOWOHIKU/」であれば、変換結果は、「’HYOWOHIKU」となる。
【００２３】
次に、図４のライン４０２が読み込まれ、続くライン４０３に「calc/」があるとそれも同時に読み込まれ、さらにライン４０２の予約語「ＰＥＲＦＯＲＭ」と対となる予約語「ＥＮＤ−ＰＥＲＦＯＲＭ」に対応するライン４１２がライン４１１と共に読み込まれる。その結果、次の記述が知識ベース１０４存在するかどうか検索される。
「<tagcategory=c, operator1=PERFORM, operator2=UNTIL, indexname=K, operator3=">", fieldname=40/>
<calc>
</calc>
<tagcategory=c,
operator1=END-PERFORM/>」
【００２４】
検索の結果、図６におけるデータ・ブロック６０１のorigin欄に同一の記述が発見されると、その対応するtarget欄における次の記述が変換結果として用いられる。
「Do Until K > 40
<calc>
</calc>
End Loop」
ここで、origin欄のK、あるいは40が、target欄のK、あるいは40と同じである事実を使うことで、もし中間結果から取り出した記述が、
「<tagcategory=c, operator1=PERFORM, operator2=UNTIL, indexname=J, operator3=">", fieldname=100/>
<calc>
</calc>
<tagcategory=c, operator1=END-PERFORM/>」
であれば、変換結果は、
「Do Until J > 100
<calc>
</calc>
End Loop」
となる。
【００２５】
この変換結果には、一対の<calc>と</calc>が存在するが、これは変換すべき中間結果が<calc>と</calc>との間に存在することを示す。すなわち、その一対の<calc>と</calc>に挿入すべき変換プログラムを求めるために、図４のライン４０４，４０５，４０６，４０９，４０８に示す次の記述が読み出され、知識ベース１０４存在するかどうか検索される。
「<tagcategory=c, operator1=IF, fieldname1=SUGAKU, indexname=K, operator2=">=", fieldname2=90/>
<tagcategory=c, operator1=THEN/>
<calc>
</calc>
<tagcategory=c, operator1=END-IF/>」
【００２６】
検索の結果、図５におけるデータ・ブロック５０３のorigin欄に同一の記述が発見されると、その対応するtarget欄における次の記述が変換結果として用いられる。
「If myKURASU.Get_SUGAKU(K) >= 90 Then
<calc>
</calc>
End If」
【００２７】
その結果、変換プログラムは次のように構成される。
「Do Until K > 40
If myKURASU.Get_SUGAKU(K) >= 90 Then
<calc>
</calc>
End If
End Loop」
【００２８】
しかし、依然として一対の<calc>と</calc>が存在するので、その箇所に対応するソース・プログラムの中間結果４０７が読み出され、知識ベース１０４が検索される。その結果、データ・ブロック５０４のorigin欄に同一の記述が発見されると、その対応するtarget欄の次の記述が変換結果として用いられ、一対の<calc>と</calc>と置き換えられる。
「NINZU = NINZU + 1」
【００２９】
その結果、変換プログラムは次のように構成される。
「Do Until K > 40
If myKURASU.Get_SUGAKU(K) >= 90 Then
NINZU = NINZU + 1
End If
End Loop」
【００３０】
次に、図４のライン４１０の中間結果に対する変換プログラムの検索が行われる。この記述に対する検索に対して、図５のデータ・ブロック５０５のorigin欄に同一の記述が発見されると、その対応するtarget欄における「K = K + 1」が「End If」の後ろに加えられる。これらの処理の結果、図７のライン７０２からライン７０３までの変換が完了する。
【００３１】
図７を参照して、上述した変換作業をまとめると以下のとおりである。図７は、知識ベースを用いて中間結果７００からターゲット・プログラムへ変換する作業の途中結果７０４を示す図である。まず、ライン４０２と、ライン４０２の予約語「ＰＥＲＦＯＲＭ」と一対をなす予約語「ＥＮＤ−ＰＥＲＦＯＲＭ」を含むライン４１２とが読み出され、図７の経路７０５を辿り、知識ベース６００のデータ・ブロック６０１のtarget欄の記述をライン７０２，７０３に挿入する。また、ライン４０４，４０５，４０８に対しては、知識ベース５００におけるデータ・ブロック６０１のtarget欄の記述がライン７０６，７０７に挿入される。さらに、ライン４０７，４１０に対応する記述がそれぞれライン７０８，７０９に挿入される。
【００３２】
以上の「ＨＹＯＢＩＫＩ」ルーチンのプログラム変換が終了すると、さらに「ＮＩＮＺＵＨＹＯＪＩ」ルーチンに対する変換が続行される。図４のライン４１２の中間結果が知識ベース１０４に対し検索される。検索により、ライン４１３と同一の記述が図５のデータ・ブロック５０６のorigin欄で発見されると、その対応するtarget欄における記述が図８のライン８０４に加えられる。
【００３３】
また、図４のライン４１４の中間結果の記述が知識ベース１０４に対し検索され、その中間結果と同一の記述が図６のデータ・ブロック６０２で発見されると、その対応するtarget欄における記述が図８のライン８０５に加えられる。さらに、ライン４１５の中間結果の記述が検索され、図５のデータ・ブロック５０７で発見されると、その対応するtarget欄における記述が図８のライン８０６に加えられる。
【００３４】
以上のように図４に示された中間結果の知識ベースに対する検索が全て実行されると、図８に示すように変換されたＶＢで記述されたプログラムが生成される。このＶＢで記述されたプログラムは、図３のＣＯＢＯＬで記述されたプログラムと全く同一の処理を実行する。
【００３５】
このように中間結果に対する記述が全て知識ベースに存在する場合、変換処理の実行を指示するのみで図８に示されるような変換プログラムが自動的に生成されるが、必ずしも全ての中間結果を知識ベースに用意されているとは限らない。知識ベースに存在しない中間結果の記述が検索されると、変換すべき中間結果が存在しないとしてオペレータに通知され、そのオペレータは、図５および図６に示される形式の変換ルールを入力する。入力された変換ルールは、以後の変換作業に反映することになり、変換効率を向上させることになる。
【産業上の利用可能性】
【００３６】
本発明に係るプログラム変換装置およびその変換を実行するためのプログラムは、他のプラットフォームにおいても実行することのできるプログラムを自動的に生成することができ、変換作業に要する時間を劇的に削減することができる。また、変換作業中に、知識ベースに存在しない中間結果に遭遇しても、その変換ルールを新たに入力することができるので変換作業の効率を高めることができる。
【００３７】
なお、本発明は、特定のプログラム形式に制限されることはなく、各言語に対応する変換ルールを用意すれば、いかなる言語にも対応することができる。
【図面の簡単な説明】
【００３８】
【図１】プログラムを変換するための変換機能の一実施例を示すブロック図である。
【図２】変換処理内の処理機能を示すブロック図である
【図３】プログラムの変換を行うＣＯＢＯＬプログラムの一例を示すプログラム・リストである。
【図４】プログラム変換の途中結果を示すリストである。
【図５】プログラムの変換処理に用いる変換ルールを定めたリストの一例である。
【図６】プログラムの変換処理に用いる変換ルールを定めたリストの一例である。
【図７】プログラムの変換を説明するための図である。
【図８】図３のＣＯＢＯＬプログラムをＶＢプログラムへ変換したターゲット・プログラムのリストである。
【符号の説明】
【００３９】
１００  変換処理
１０１  ソース・プログラム・コード
１０２  ターゲット・プログラム・コード
１０３  変換処理部
１０４  知識ベース
１０５  中間結果格納領域
２０１  プログラム・コードの解析
２０２  サーチ／マッチング
２０３  変換プログラム作成
３００  ソース・プログラム・リスト
４００  中間結果リスト
５００，６００  変換スール
８００  ターゲット・プログラム・リスト
【図１】
2009199486.tif 000003
【図２】
2009199486.tif 000004
【図３】
2009199486.tif 000005
【図４】
2009199486.tif 000006
【図５】
2009199486.tif 000007
【図６】
2009199486.tif 000008
【図７】
2009199486.tif 000009
【図８】
2009199486.tif 000010