(57)【要約】【課題】変換誤りが少なく、かつ、複数のプラットフォーム間の移行作業が可能になる単一の移行支援装置を提供する。【解決手段】移行支援装置105は、移行元プラットフォームのコンパイラ101が生成した中間語104と移行先プラットフォーム種別112とを入力として、中間語変換部107で移行先プラットフォームの中間語に変換し、変換した中間語から移行先プラットフォームのソースプログラム110を生成する。中間語104は、コンパイラの解析過程の１つである構文・意味解析部102が生成するバイナリ形式のデータであり、その形式は、各プラットフォームで動作するコンパイラ間で共通化されている。移行支援装置105が、各プラットフォーム間共通の中間語104を操作して移行先プラットフォームのソースプログラム110を生成することにより、変換誤りの少ない単一の移行支援装置を提供できる。【選択図】図１
2007140845.tif 000002
【特許請求の範囲】
【請求項１】
異なるプラットフォーム間でソースプログラムの移行を行うプログラム管理方法において、中間語変換手段を有し、該中間語変換手段は、移行元プラットフォームで動作するコンパイラが生成する中間語と移行先プラットフォームの種別とを入力として、中間語毎の移行元プラットフォーム、移行先プラットフォーム、変換の処理を指示するポインタの各情報を保持する変換テーブルを参照して移行先プラットフォームの中間語を生成することを特徴とするプログラム管理方法。
【請求項２】
前記中間語は、ソースプログラムで使用されている名前に関する情報である記号表と、ソースプログラムを、字句解析、構文解析、意味解析によって解析した結果の中間コードとにより構成されることを特徴とする請求項１記載のプログラム管理方法。
【請求項３】
異なるプラットフォーム間でソースプログラムの移行を行うプログラム管理方法において、中間語変換手段を有し、該中間語変換手段は、中間語毎の移行元プラットフォーム、移行先プラットフォーム、変換の処理を指示するポインタの各情報を保持する変換テーブルを参照し、移行元プラットフォーム種別と、入力された移行先プラットフォーム種別と、移行元プラットフォームで動作するコンパイラが生成する中間語のノード番号とにより、前記変換テーブルを検索し、変換の処理を呼び出して移行先プラットフォームの中間語を生成することを特徴とするプログラム管理方法。
【請求項４】
異なるプラットフォーム間でソースプログラムの移行を行うプログラム管理方法において、中間語変換手段及びソース生成手段を有し、該中間語変換手段は、移行元プラットフォームで動作するコンパイラが生成する中間語と移行先プラットフォームの種別とを入力として、中間語毎の移行元プラットフォーム、移行先プラットフォーム、変換の処理を指示するポインタの各情報を保持する変換テーブルを参照して移行先プラットフォームの中間語を生成し、前記ソース生成手段は、前記移行先プラットフォームの中間語から前記移行先プラットフォームのソースプログラムを生成することを特徴とするプログラム管理方法。
【請求項５】
異なるプラットフォーム間でソースプログラムの移行を行うプログラム管理方法において、中間語変換手段及びソース生成手段を有し、該中間語変換手段は、中間語毎の移行元プラットフォーム、移行先プラットフォーム、変換の処理を指示するポインタの各情報を保持する変換テーブルを参照し、移行元プラットフォーム種別と、入力された移行先プラットフォーム種別と、移行元プラットフォームで動作するコンパイラが生成する中間語のノード番号とにより、前記変換テーブルを検索し、変換の処理を呼び出して移行先プラットフォームの中間語を生成し、前記ソース生成手段は、前記移行先プラットフォームの中間語から前記移行先プラットフォームのソースプログラムを生成することを特徴とするプログラム管理方法。
【請求項６】
異なるプラットフォーム間でソースプログラムの移行を行うプログラムの移行支援装置において、中間語変換手段及びソース生成手段を有し、該中間語変換手段は、移行元プラットフォームで動作するコンパイラが生成する中間語と移行先プラットフォームの種別とを入力として、中間語毎の移行元プラットフォーム、移行先プラットフォーム、変換の処理を指示するポインタの各情報を保持する変換テーブルを参照して移行先プラットフォームの中間語を生成し、前記ソース生成手段は、前記移行先プラットフォームの中間語から前記移行先プラットフォームのソースプログラムを生成することを特徴とするプログラムの移行支援装置。
【請求項７】
異なるプラットフォーム間でソースプログラムの移行を行うソースプログラム移行プログラムにおいて、移行元プラットフォームで動作するコンパイラが生成する中間語と移行先プラットフォームの種別とを入力するステップと、中間語毎の移行元プラットフォーム、移行先プラットフォーム、変換の処理を指示するポインタの各情報を保持する変換テーブルを参照して移行先プラットフォームの中間語を生成するステップと、前記移行先プラットフォームの中間語から前記移行先プラットフォームのソースプログラムを生成するステップとを実行させることを特徴とするソースプログラム移行プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラム管理方法及びプログラムの移行支援装置に係り、特に、異なるプラットフォーム間でアプリケーションプログラムの移行を行うために使用して好適なプログラム管理方法及びプログラムの移行支援装置に関する。
【背景技術】
【０００２】
近年、システムのダウンサイジング、オープン化が行われるようになってきており、このため、異なるプラットフォーム間でのアプリケーションプログラムの移行作業の必要性が増大している。プログラムの移行作業は、作業コストを削減するために、既存のソースプログラムを流用して行われるのが一般的である。しかし、ソースプログラムを記述するプログラム言語は、プラットフォーム固有の言語仕様や、プラットフォーム間で互換性のない言語仕様を含んでいる。このため、異なるプラットフォームで動作させるためには、ソースプログラムの変更が必要であり、ソースプログラムの変更のために移行支援装置と呼ばれる装置が使用される。移行支援装置は、あるプラットフォームで動作するプログラムを異なるプラットフォームで動作するように、ソースプログラムの変換作業を自動的に行う装置である。
【０００３】
この種の移行支援装置に関する従来技術として、移行元プラットフォームのソースプログラムを入力して単語単位に分解し、移行先プラットフォームのプログラム言語仕様に合わせて構文を解析し、単語単位にソースプログラムを変換するという技術が知られている。
【０００４】
なお、前述のような移行支援装置に関する従来技術として、例えば、非特許文献１等に記載された技術が知られている。
【非特許文献１】Principles,Techniques,and,Tools  ALFRED V.AHO, RAVI SETHI, JEFFREY D.ULLMAN  QA76.76.C65A37  1985   005.4'53  85-15647  ISBN 0-201-10088-6
【発明の開示】
【発明が解決しようとする課題】
【０００５】
一般に、プログラム言語のキーワードは、異なる文脈で同一のキーワードの指定が可能な場合があり、この場合、前述した従来技術は、単語単位で変換を行うために、変更不要なキーワードまで誤って変換する可能性があるという問題点を生じる。また、プログラム言語のキーワードは、同じ文脈に出現するキーワードでも、移行元プラットフォームでは省略可能で、移行先プラットフォームで省略不可能である場合あり、この場合、前述した従来技術は、単語単位で変換を行うため、自動的にキーワードを補完することができないという問題点を生じる。
【０００６】
さらに、前述した従来技術は、移行元プラットフォームのソースプログラムそのものを入力しているため、プラットフォーム間でのプログラムの移行を行う移行支援装置が、通常のコンパイラが有する「字句解析、構文解析、意味解析」相当の機能を備えていないと、誤りのない変換やキーワードの補完を実現することができないという問題点をも有している。また、前述した従来技術は、ソースプログラムそのものを入力しているため、ソースプログラムから単語単位に分解する処理を行うために、移行元プラットフォーム固有の言語仕様を解析する機能を備えなければならず、移行支援装置を移行元プラトフォームごとに提供する必要があり、移行支援装置の開発・保守に大きな工数が掛かってしまうという問題点を有している。
【０００７】
本発明の目的は、前述した従来技術の問題点を解決し、変換誤りが少なく、かつ、複数のプラットフォーム間でのプログラムの移行作業を容易に行うことを可能としたプログラム管理方法及びプログラムの移行支援装置を提供することにある。
【課題を解決するための手段】
【０００８】
本発明によれば前記目的は、異なるプラットフォーム間でソースプログラムの移行を行うプログラム管理方法において、中間語変換手段を有し、該中間語変換手段が、移行元プラットフォームで動作するコンパイラが生成する中間語と移行先プラットフォームの種別とを入力として、中間語毎の移行元プラットフォーム、移行先プラットフォーム、変換の処理を指示するポインタの各情報を保持する変換テーブルを参照して移行先プラットフォームの中間語を生成することにより達成される。
【発明の効果】
【０００９】
発明によれば、移行元プラットフォーム用のソースプログラムを移行先プラットフォーム用のソースプログラムへ変換する際の誤りを低減することができ、異なるプラットフォームへのソースプログラムの移行作業を効率的に実施することが可能となる。また、本発明によれば、複数のプラットフォーム間で移行支援装置の共通化を図ることができ、移行支援装置の開発・保守の工数を低減し、異なるプラットフォームへのソースプログラムの移行作業のコスト削減が可能となる。
【発明を実施するための最良の形態】
【００１０】
以下、本発明によるプログラム管理方法及びプログラムの移行支援装置の実施形態を図面により詳細に説明する。
【００１１】
図１は本発明の一実施形態によるプログラムの移行支援装置を備えた移行支援システムの構成例を示すブロック図である。図１において、１０１は移行元コンパイラ、１０２は構文・意味解析部、１０３は中間語出力部、１０４は中間語、１０５は移行支援装置、１０６は中間語入力部、１０７は中間語変換部、１０８はソース生成部、１０９は結果リスト、１１０は移行先ソースプログラム、１１１は移行先コンパイラ、１１２は移行先プラットフォーム種別である。
【００１２】
本発明の実施形態によるプログラムの移行支援装置を含む移行支援システムは、移行元プラットフォームで動作する中間語出力部１０３を備えた移行元コンパイラ１０１と、移行元コンパイラ１０１が生成した中間語１０４及び移行先プラットフォーム種別１１２を入力とする中間語入力部１０６、入力された中間語を移行先プラットフォームの中間語に変換し、変換結果を結果リスト１０９として出力する中間語変換部１０７、中間語変換部１０７で変換された中間語から移行先プラットフォームのソースプログラム１１０を生成するソース生成部１０８を備えた移行支援装置１０５と、移行支援装置１０５が出力した移行先ソースプログラム１１０を入力とする移行先コンパイラ１１１とから構成される。
【００１３】
移行元コンパイラ１０１は、ソース入力部と、構文・意味解析部１０２と、本発明により設けられた中間語出力部１０３と、オブジェクト生成部とを備えて構成され、テキスト形式のソースプログラムを入力として、様々な解析過程を経て、最終的にバイナリ形式の目的（オブジェクト）プログラムを生成するものである。前述のような構成の移行元コンパイラ１０１は、中間語出力部１０３が存在することを除いて、従来からよく知られているものである。中間語１０４は、コンパイラの解析過程の１つである構文・意味解析部１０２が生成するバイナリ形式のデータであり、その形式は、各プラットフォームで動作するコンパイラ間で共通化されている。
【００１４】
なお、後述するが、中間語は「記号表」と「中間コード」で構成される。「記号表」とは、ソースプログラムで使用されている名前に関する情報であり、一般的に、名前、型、記憶域、その他プログラム言語固有情報から構成される。また、「中間コード」は、ソースプログラムを「字句解析、構文解析、意味解析」によって解析した結果であり、最終的に目的コードに変換されるものである。一般的に、中間コードには、次のような種類のものがよく使用される。
【００１５】
すなわち、中間コードの種類としては、１．抽象構文木、２．後置コード、３．３番地コード、４．三つ組が知られているが、本発明の実施形態では、１．抽象構文木を用いることとしている。
【００１６】
移行支援装置１０５は、よく知られているように、ＣＰＵ、メモリ、ハードディスク装置、入出力装置を備えて構成されるＰＣに代表される計算機装置上に構成されていればよい。そして、移行支援装置１０５を構成する各機能部は、ソフトウェアにより構成されて、ハードディスク装置内に格納され、それらがメモリ内に呼び出され、ＯＳの下でＣＰＵにより実行されることにより実現することができる。
【００１７】
図２は中間語１０４の構成を説明する図である。中間語は、図２（ａ）に示すように、移行元プラットフォームのコンパイラによって与えられた移行元プラットフォーム種別２０１、中間コード２０２、記号表（辞書）２０３の３つから構成される。
【００１８】
中間コード２０２は、図２（ｄ）に示しているような定義部２０６と文２０７とにより構成されるソースプログラムの例における文２０７を木構造に変換したデータである。このデータは、移行元コンパイラ１０１の構文・意味解析部１０２がソースプログラムの文２０７を区切り文字毎に単語に分解して木構造のデータに変換して得られたデータであり、文２０７を構成する１つの単語に対するデータを、図２（ｂ）に示すような１つのノード２０４として、複数のノードにより構成される。
【００１９】
ノード２０４は、図２（ｂ）に示すように、ノード番号２０８、文が指定されたソースプログラム上のシーケンスカラム２０９、ノード固有の付属情報２１０及び子ノードへのポインタ２１１から構成される。子ノードへのポインタ２１１は、１つの文に対するノードが複数のノードの組み合わせで表現される場合に、ノード間を繋ぐためのポインタエリアである。
【００２０】
記号表２０３は、図２（ｄ）に示しているソースプログラムの例における定義部２０６に対する中間語である。定義部２０６には、文２０７で使用する変数等の名前が定義されている。ここでの説明では、以降、記号表２０３を辞書と言うこととする。辞書の１つエントリ２０５は、図２（ｃ）に示すように、名前２１２、変数が定義されたソースプログラム上のシーケンスカラム２１３、辞書種別２１４、定義場所種別２１５及び辞書固有の付属情報２１６から構成される。辞書種別２１４とは、辞書の種類を示し、例えば、定義部に定義された変数に対する辞書は変数辞書と言う。
【００２１】
次に、図２（ｄ）に示すソースプログラムの例における文２０７“ＭＯＶＥ  Ａ  ＴＯ  Ｂ”に対応する木構造のデータについて説明する。なお、図２の最下段に示すように、ＭＯＶＥ文のノード番号：１０００、名前を表わすノードのノード番号：２０００、WORKING-STORAGE SECTION に定義された名前に対する辞書種別：１００（変数辞書）、WORKING-STORAGE SECTION の定義場所番号：１０であるとする。
【００２２】
文２０７は、図２（ｅ）に示すように、“ＭＯＶＥ”、“Ａ”、“ＴＯ”、“Ｂ”に単語単位に分解される。そして、図２（ｆ）に示すように、中間コードのノード２０４としてのＭＯＶＥノードのノード番号２０８に“１０００”が、シーケンスカラム２０９にソースプログラムの例における文２０７シーケンス番号“１００”が格納される。また、子ノードへのポインタ２１１には、“Ａ”と“Ｂ”とに対応する名前を表わすノードへのポインタが格納される。名前を表わすノードへのポインタにより指示される名前“Ａ”と“Ｂ”とのノードのそれぞれには、図２（ｇ）に示すように、ノード番号２０８に“２０００”が、シーケンスカラム２０９にソースプログラムの例における文２０７シーケンス番号“１００”が格納される。また、図２（ｇ）の左側に示す名前“Ａ”のノードに対応する辞書２１９のエントリには、図２（ｈ）の左側に示すように、名前２１２にＡが、シーケンスカラム２１３にソースプログラムの例における定義部２０６の名前Ａの定義部のシーケンス番号“２０”が、辞書種別２１４に１００（変数辞書）が、定義場所２１５にWORKING-STORAGE SECTION の定義場所番号１０が格納される。さらに、図２（ｇ）の右側に示す名前“Ｂ”のノードに対応する辞書のエントリには、図２（ｈ）の右側に示すように、名前２１２にＢが、シーケンスカラム２１３にソースプログラムの例における定義部２０６の名前Ａの定義部のシーケンス番号“３０”が、辞書種別２１４に１００（変数辞書）が、定義場所２１５にWORKING-STORAGE SECTION の定義場所番号１０が格納される。
【００２３】
図３は図１に示す移行支援装置１０５の中間語変換部１０７が参照する変換テーブル３０１の構成を示す図である。
【００２４】
変換テーブル３０１は、移行先プラットフォーム種別３０２、移行元プラットフォーム種別３０３、変換対象データがノードか辞書かを示すノード／辞書フラグ３０４、ノードまたは辞書の種類（番号）３０５、及び、変換処理へのポインタ３０６から構成される。変換処理３０７は、移行元プラットフォームの中間語を移行先プラットフォームの中間語に変換する処理のプログラムである。変換処理３０７は、プラットフォーム間で変換が必要なノードや辞書毎に作成され、そのプログラムが格納されるアドレスが変換テーブル３０１の変換処理へのポインタ３０６に登録される。
【００２５】
図１に示す移行支援装置１０５は、図２により説明した移行元プラットフォームの種別２０１を保持した各プラットフォーム間で共通な形式の中間語と移行先プラットフォーム種別１１２とを入力とし、移行支援装置１０５の中間語変換部１０７が参照する変換テーブル３０１に、移行元プラットフォームの種別３０２と移行先プラットフォームの種別３０３とを備えることにより、複数のプラットフォーム相互間での移行に対応した移行支援装置として動作することが可能となる。
【００２６】
図４は図１に示す本発明の実施形態によるプログラムの移行支援装置を備えた移行支援システムの処理動作を説明するフローチャートであり、次に、これについて説明する。
【００２７】
（１）移行元プラットフォームのコンパイラ１０１は、移行元プラットフォームのソースプログラムを入力として、ソースプログラムを単語単位に分解し、構文解析と意味解析とを行って中間語１０４を作成して出力する。中間語は、図２により説明したように、移行元プラットフォーム情報２０１、中間コード２０２、辞書としての記号表２０３から構成される（ステップ４０１〜４０３）。
【００２８】
（２）移行支援装置１０５は、移行元プラットフォームのコンパイラ１０１が出力した中間語１０４と移行先プラットフォーム種別とを入力として処理を開始し、まず、入力された中間語があるか否か確認する（ステップ４０４、４０５）。
【００２９】
（３）ステップ４０５での確認後、入力された中間語１０４１つを取り出してその中間語１０４の中間コードのノード及び辞書毎に、移行元プラットフォーム情報、移行先プラットフォーム情報から、図３に示して説明した変換テーブル３０１に該当する移行先種別３０２、移行元種別３０３を検索し、さらに、ノードか辞書かを示す変換対象種別のフラグ３０４、フラグ３０４が示すノードまたは辞書の種別（番号）３０５が一致するデータを検索する（ステップ４０６）。
【００３０】
（４）変換テーブル３０１内に一致するデータが存在したか否かを判定し、存在しなかった場合、ステップ４０５からの処理に戻って、次の中間語についての処理を行う（ステップ４０７）。
【００３１】
（５）ステップ４０７の判定で、変換テーブル３０１内に一致するデータが存在した場合、図３に示す変換テーブル３０１の変換処理へのポインタ３０６に設定された変換処理を呼び出し、対象になった中間語のノードまたは辞書の内容を移行先プラットフォームでの中間語に変換する。その際、この中間語の変換処理で、対象になったノードまたは辞書が、変換可能か否かをチェックする（ステップ４０８、４０９）。
【００３２】
（６）ステップ４０９のチェックで、変換可能であった場合、移行先のノードまたは辞書の設定内容を変換し、変換したノードまたは辞書のシーケンスカラムと変換内容を結果として出力すると共に、変換ができなかった場合、変換できなかったノードまたは辞書のシーケンスカラムと変換できなかった原因を結果リスト１０９として出力する（ステップ４１０、４１１）。
【００３３】
（７）その後、ステップ４０５からの処理に戻って、次の中間語について前述したと同様な処理を繰り返し、全ての中間語について処理が終わり、ステップ４０５で中間語がないと判定された場合、変換後の中間語から移行先プラットフォームのソースプログラムを生成する（ステップ４１２）。
【００３４】
（８）移行先プラットフォームのコンパイラ１１１は、移行支援装置１０５が生成したプログラムソースを入力として、入力されたソースプログラムから移行先プラットフォームが使用する目的（オブジェクト）プログラムを生成する（ステップ４１３）。
【００３５】
前述したステップ４０８における変換処理及び変換可否のチェックで、変換できない原因として、変換対象のノードまたは辞書が、移行先プラットフォームにおける未サポートの機能に対するものであることが挙げられる。この場合、ステップ４１１の処理での変換結果の出力時のシーケンスカラムを参照して、ステップ４１２の処理で生成されたソースプログラムの該当する箇所を手動でコメント化することとする。なお、ノードまたは辞書にコメント化を表すフラグを設けることにより、ソースプログラム生成時に自動的にコメント化することも可能である。
【００３６】
次に、図１に示したシステムによる移行元プラットフォームのソースプログラムから移行先プラットフォームのソースプログラムへの変換の具体例をプラットフォームによりキーワードが異なるソースプログラムの変換の場合の例について説明する。
【００３７】
図５は変換対象になるソースプログラムの例と変換テーブルの構成とを説明する図である。ここに示すソースプログラムは、COBOL 言語のクラス定義の例である。
【００３８】
図５（ａ）〜図５（ｃ）には、プラットフォームＡ〜Ｃのクラス定義を構成するファクトリ定義と対応する辞書とを示しており、クラス定義を構成するファクトリ定義は、プラットフォームＡ５０１の場合、シーケンス番号１０の行に示すように、“CLASS-OBJECT”であり、プラットフォームＢ５０３の場合、“FACTORY” であり、プラットフォームＣ５０５の場合、“STATIC”である。このように、プラットフォーム毎にファクトリ定義が異なるが、これのクラス定義は、全て同一の内容を持つものである。図５ではプラットフォームが３種類存在しているものとしているが、プラットフォームの種類は、さらに多種類存在してもよい。
【００３９】
前述のようなファクトリ定義に対する辞書の種類は“見出し定義辞書”であり、その形式はプラットフォーム間で共通であるが、プラットフォームＡ、Ｂ、Ｃに対応する辞書５０２、５０４、５０６の名前に、それぞれ、“CLASS-OBJECT”、“FACTORY” 、“STATIC”と設定される。
【００４０】
このような３種のプラットフォームを扱う場合、図３により説明した変換テーブル３０１には、図５（ｄ）に示すように、移行元種別３０２、移行先種別３０３に、前述したプラットフォーム種別Ａ〜Ｃが格納される。図示例では、プラットフォームＢ→Ａ、Ａ→Ｂ、Ｂ→Ｃの変換についてのレコードを示しているが、もちろん、プラットフォームＣ→Ｂ、Ｃ→Ａ、Ａ→Ｃの変換の場合のレコードも存在する。そして、ノード／辞書フラグ３０４、種別３０５には、いずれの場合にも、「辞書」、「見出し定義辞書」が格納される。また、変換処理へのポインタ３０６には、見出し定義辞書に対する各プラットフォーム間の変換処理のポインタが設定される。
【００４１】
変換処理は、例えば、プラットフォームＢからプラットフォームＡへの移行の場合、「見出しの種類がCLASS-OBJECTの場合、名前をCLASS-OBJECTに変換」する処理であり、プラットフォームＡからプラットフォームＢへの移行の場合、「見出しの種類がCLASS-OBJECTの場合、名前をFACTORY に変換」する処理であり、プラットフォームＢからプラットフォームＣへの移行の場合、「見出しの種類がCLASS-OBJECTの場合、名前をSTATICに変換」する処理である。
【００４２】
図６は図５により説明した例におけるプラットフォームＡのソースプログラムからプラットフォームＢのソースプログラムへの変換の処理動作を説明するフローチャートであり、次に、これについて説明する。
【００４３】
（１）プラットフォームＡのコンパイラは、図５（ａ）に示したプラットフォームＡ５０１のクラス定義を構成するファクトリ定義としてのソースプログラムを入力して解析を行い、辞書５０２作成した後、それらを中間語６０４として出力する（ステップ６０１〜６０３）。
【００４４】
（２）移行支援装置は、中間語６０４と移行先プラットフォーム種別としてのプラットフォームＢとを入力として受け取り、その中の見出し定義辞書に対して、変換テーブルから、移行元プラットフォームが“プラットフォームＡ”、移行先プラットフォームが“プラットフォームＢ”、ノード／辞書フラグが“辞書”、種別が“見出し定義辞書”のデータを検索する（ステップ６０５、６０６）。
【００４５】
（３）ステップ６０６での検索処理で対応するデータが存在したか否かを判定し、存在しなければここでの処理を終了し、存在した場合、変換処理を呼び出す（ステップ６０７、６０８）。
【００４６】
（４）次に、見出し定義辞書の付属情報がCLASS-OBJECTとなっているので、辞書５０２の名前“CLASS-OBJECT”を“FACTORY” に変換する変換処理を実行し、辞書を図５（ｂ）に示すように辞書５０４に変更し、変換結果を結果リスト６１１として出力する（ステップ６０９、６１０）。
【００４７】
（５）その後、変換後の辞書５０４からプラットフォームＢのソースプログラム６１３を生成して、ここでの処理を終了する（ステップ６１２）。
【００４８】
ソースプログラムによる単語単位の置換を行う従来技術の場合、図５（ａ）のプラットフォームＡのソースプログラムの変数定義５１４に出現する“CLASS-OBJECT”を誤って“FACTORY” に置換してしまう可能性があったが、前述した本発明の実施形態では、辞書の種別毎に変換処理が設けられるため、変数定義５１４の辞書については、変換処理を行わないので、変換誤りを低減することができる。
【００４９】
前述で説明した例は、プラットフォームによりキーワードが異なるソースプログラムの変換を行う場合の例であったが、次に、プラットフォームによりキーワードの補完が必要な場合の例について説明する。
【００５０】
図７はプラットフォームによりキーワードの補完が必要な場合の例としてのCOBOL 言語のINVOKE文の構文、INVOKE文を使用したソース例及びINVOKE文の中間語について説明する図である。
【００５１】
INVOKE文は、メソッド定義を呼び出す構文である。図７（ａ）に示すINVOKE文の構文７０１において、USING指定のBY指定７０４は、省略することが可能であり、省略された場合、コンパイラが呼び出すメソッド定義のUSING指定を参照して、内部的にBY指定を仮定した中間語を生成する。
【００５２】
図７（ｂ）に示すソース例７０２では、左側欄に示す２００行目のINVOKE文のBY指定が省略されている。そして、このINVOKE文は、矢印で示しているように、右側欄のMETHOD-ID.METH1.を呼び出すものである。そのため、コンパイラは、呼び出すメソッド定義のUSING 指定に合わせてBY REFERENCE指定を仮定する。
【００５３】
いま、INVOKE文のノード番号：１０００、USING 句のノード番号：１００１、BY指定のノード番号：１００２、名前を表わすノードのノード番号：２０００、WORKING-STORAGE SECTION に定義された名前に対する辞書種別：１００（変数辞書）、WORKING-STORAGE SECTION の定義場所番号：１０、定数の辞書種別：２００とすると、ソース例７０２のINVOKE文の中間語７０３は、図２で説明した場合と同様に、図７（ｃ）に示すように生成される。そして、この中間語７０３には、BY指定のノード７０５に“BY REFERENCE”のフラグ７０６が設定される。
【００５４】
しかし、このBY指定は、プラットフォームによっては省略することができない。そのため、省略可能なプラットフォームから省略不可能なプラットフォームへソースプログラムを移行する場合、BY指定を補完しなければならないことになる。
【００５５】
図８は省略可能なプラットフォームから省略不可能なプラットフォームへ移行するための変換テーブルの構成を説明する図である。
【００５６】
図８（ａ）にプラットフォーム間の規則の違い８０１について説明しており、プラットフォームＡは、BY指定省略可能であり、プラットフォームＢは、BY指定省略不可能であるとする。そして、BY指定省略可能なプラットフォームＡでは、呼び先のＰＲＯＣＥＤＵＲＥ  ＤＩＶＩＳＩＯＮに書かれたBY指定をコンパイラが仮定する。
【００５７】
このような場合、図８（ｂ）に示すように、変換テーブル３０１の移行元種別３０２には“プラットフォームＡ”、移行先種別３０３)には“プラットフォームＢ”、ノード／辞書フラグ３０４には“ノード”、種別３０５には“BY指定ノード”、変換処理へのポインタ３０６には“BY指定ノードの仮定フラグを OFF”にする処理８０８へのポインタが設定される。ここで、「仮定フラグを OFFにする」とは、BY指定が省略されていないことを意味する。
【００５８】
図９は図７により説明した例におけるプラットフォームＡのソースプログラムからプラットフォームＢのソースプログラムへの変換の処理動作を説明するフローチャートであり、次に、これについて説明する。
【００５９】
（１）プラットフォームＡのコンパイラは、図７（ｂ）に示したINVOKE文を含むソースプログラム７０２を入力して、INVOKE構文の意味解析を行い、ノード９０３を作成後、その解析結果を中間語９０５として出力する（ステップ９０１、９０２、９０４）。
【００６０】
（２）移行支援装置は、プラットフォームＡのコンパイラから出力された中間語９０５と移行先種別としてのプラットフォームＢの情報とを入力として、中間語９０５の中のINVOKE文ノードに対して、変換テーブルから、移行元プラットフォームが“プラットフォームＡ”、移行先プラットフォームが“プラットフォームＢ”、ノード／辞書フラグが“ノード”、種別が“INVOKE文ノード”のデータを検索する（ステップ９０６、９０７）。
【００６１】
（３）ステップ９０７での検索処理で対応するデータが存在したか否かを判定し、存在しなければここでの処理を終了し、存在した場合、変換処理を呼び出し、INVOKEノード９１０の子ノードであるBY指定ノード９１１を検索して、その仮定フラグをOFF にする（ステップ９０８、９０９）。
【００６２】
（４）次に、変換結果を結果リスト９１４として出力し、また、変換後のBY指定ノード９１１からプラットフォームＢのソースプログラム９１５を生成する。ソース生成時、BY指定ノードの仮定フラグがOFF であるため、ソースプログラム上に“BY REFEERENCE” が生成される（ステップ９１２、９１３）。
【００６３】
図１０は図９により説明した処理により実際に変換されたソースプログラムの例について説明する図である。
【００６４】
図１０（ａ）に変換元のプラットフォームＡのソースプログラムを示しているが、このソースプログラムは、図７（ｂ）に示したものと同一である。このプラットフォームＡのソースプログラムのUSING指定１００１には、BY指定が省略されている。このプラットフォームＡのソースプログラムを図９による処理によってプラットフォームＢのソースプログラムに変換したものを図１０（ｂ）に示している。図１０（ｂ）から判るように、変換されたプラットフォームＢのソースプログラムにはBY指定１００２が“BY REFEERENCE” として付加されている。
【００６５】
図１０に示したような変換を、ソースプログラムを単語単位に置換する従来技術により行う場合、移行支援装置に呼び元１００３と呼び先１００４とのソースプログラムを解析するコンパイラと同等の処理が必要となるため、移行支援装置の開発・保守に工数がかかることになるが、前述で説明した本発明の実施形態では、中間語のフラグを変更する処理を移行支援装置に登録するだけであり、移行支援装置の開発・保守の工数を低減することができる。
【００６６】
前述した本発明の実施形態での各処理は、プログラムにより構成し、計算機が備えるＣＰＵに実行させることができ、また、それらのプログラムは、ＦＤ、ＣＤＲＯＭ、ＤＶＤ等の記録媒体に格納して提供することができ、また、ネットワークを介してディジタル情報により提供することができる。
【図面の簡単な説明】
【００６７】
【図１】本発明の一実施形態によるプログラムの移行支援装置を備えた移行支援システムの構成例を示すブロック図である。
【図２】中間語構成を説明する図である。
【図３】図１に示す移行支援装置中間語変換部が参照する変換テーブルの構成を示す図である。
【図４】図１に示す本発明の実施形態によるプログラムの移行支援装置を備えた移行支援システムの処理動作を説明するフローチャートである。
【図５】変換対象になるソースプログラムの例と変換テーブルの構成とを説明する図である。
【図６】図５により説明した例におけるプラットフォームＡのソースプログラムからプラットフォームＢのソースプログラムへの変換の処理動作を説明するフローチャートである。
【図７】プラットフォームによりキーワードの補完が必要な場合の例としてのCOBOL 言語のINVOKE文の構文、INVOKE文を使用したソース例及びINVOKE文の中間語について説明する図である。
【図８】省略可能なプラットフォームから省略不可能なプラットフォームへ移行するための変換テーブルの構成を説明する図である。
【図９】図７により説明した例におけるプラットフォームＡのソースプログラムからプラットフォームＢのソースプログラムへの変換の処理動作を説明するフローチャートである。
【図１０】図９により説明した処理により実際に変換されたソースプログラムの例について説明する図である。
【符号の説明】
【００６８】
１０１  移行元コンパイラ
１０２  構文・意味解析部
１０３  中間語出力部
１０４  中間語
１０５  移行支援装置
１０６  中間語入力部
１０７  中間語変換部
１０８  ソース生成部
１０９  結果リスト
１１０  移行先ソースプログラム
１１１  移行先コンパイラ
１１２  移行先プラットフォーム種別
【図１】
2007140845.tif 000003
【図２】
2007140845.tif 000004
【図３】
2007140845.tif 000005
【図４】
2007140845.tif 000006
【図５】
2007140845.tif 000007
【図６】
2007140845.tif 000008
【図７】
2007140845.tif 000009
【図８】
2007140845.tif 000010
【図９】
2007140845.tif 000011
【図１０】
2007140845.tif 000012