JP2007140845A - プログラム管理方法及びプログラムの移行支援装置 - Google Patents

プログラム管理方法及びプログラムの移行支援装置 Download PDF

Info

Publication number
JP2007140845A
JP2007140845A JP2005333067A JP2005333067A JP2007140845A JP 2007140845 A JP2007140845 A JP 2007140845A JP 2005333067 A JP2005333067 A JP 2005333067A JP 2005333067 A JP2005333067 A JP 2005333067A JP 2007140845 A JP2007140845 A JP 2007140845A
Authority
JP
Japan
Prior art keywords
platform
intermediate language
source
migration
program
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2005333067A
Other languages
English (en)
Inventor
Keiko Tamura
恵子 田村
Hiroto Nakajima
啓人 中嶋
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP2005333067A priority Critical patent/JP2007140845A/ja
Publication of JP2007140845A publication Critical patent/JP2007140845A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

  • Stored Programmes (AREA)

Abstract

【課題】変換誤りが少なく、かつ、複数のプラットフォーム間の移行作業が可能になる単一の移行支援装置を提供する。
【解決手段】移行支援装置105は、移行元プラットフォームのコンパイラ101が生成した中間語104と移行先プラットフォーム種別112とを入力として、中間語変換部107で移行先プラットフォームの中間語に変換し、変換した中間語から移行先プラットフォームのソースプログラム110を生成する。中間語104は、コンパイラの解析過程の1つである構文・意味解析部102が生成するバイナリ形式のデータであり、その形式は、各プラットフォームで動作するコンパイラ間で共通化されている。移行支援装置105が、各プラットフォーム間共通の中間語104を操作して移行先プラットフォームのソースプログラム110を生成することにより、変換誤りの少ない単一の移行支援装置を提供できる。
【選択図】図1

Description

本発明は、プログラム管理方法及びプログラムの移行支援装置に係り、特に、異なるプラットフォーム間でアプリケーションプログラムの移行を行うために使用して好適なプログラム管理方法及びプログラムの移行支援装置に関する。
近年、システムのダウンサイジング、オープン化が行われるようになってきており、このため、異なるプラットフォーム間でのアプリケーションプログラムの移行作業の必要性が増大している。プログラムの移行作業は、作業コストを削減するために、既存のソースプログラムを流用して行われるのが一般的である。しかし、ソースプログラムを記述するプログラム言語は、プラットフォーム固有の言語仕様や、プラットフォーム間で互換性のない言語仕様を含んでいる。このため、異なるプラットフォームで動作させるためには、ソースプログラムの変更が必要であり、ソースプログラムの変更のために移行支援装置と呼ばれる装置が使用される。移行支援装置は、あるプラットフォームで動作するプログラムを異なるプラットフォームで動作するように、ソースプログラムの変換作業を自動的に行う装置である。
この種の移行支援装置に関する従来技術として、移行元プラットフォームのソースプログラムを入力して単語単位に分解し、移行先プラットフォームのプログラム言語仕様に合わせて構文を解析し、単語単位にソースプログラムを変換するという技術が知られている。
なお、前述のような移行支援装置に関する従来技術として、例えば、非特許文献1等に記載された技術が知られている。
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
一般に、プログラム言語のキーワードは、異なる文脈で同一のキーワードの指定が可能な場合があり、この場合、前述した従来技術は、単語単位で変換を行うために、変更不要なキーワードまで誤って変換する可能性があるという問題点を生じる。また、プログラム言語のキーワードは、同じ文脈に出現するキーワードでも、移行元プラットフォームでは省略可能で、移行先プラットフォームで省略不可能である場合あり、この場合、前述した従来技術は、単語単位で変換を行うため、自動的にキーワードを補完することができないという問題点を生じる。
さらに、前述した従来技術は、移行元プラットフォームのソースプログラムそのものを入力しているため、プラットフォーム間でのプログラムの移行を行う移行支援装置が、通常のコンパイラが有する「字句解析、構文解析、意味解析」相当の機能を備えていないと、誤りのない変換やキーワードの補完を実現することができないという問題点をも有している。また、前述した従来技術は、ソースプログラムそのものを入力しているため、ソースプログラムから単語単位に分解する処理を行うために、移行元プラットフォーム固有の言語仕様を解析する機能を備えなければならず、移行支援装置を移行元プラトフォームごとに提供する必要があり、移行支援装置の開発・保守に大きな工数が掛かってしまうという問題点を有している。
本発明の目的は、前述した従来技術の問題点を解決し、変換誤りが少なく、かつ、複数のプラットフォーム間でのプログラムの移行作業を容易に行うことを可能としたプログラム管理方法及びプログラムの移行支援装置を提供することにある。
本発明によれば前記目的は、異なるプラットフォーム間でソースプログラムの移行を行うプログラム管理方法において、中間語変換手段を有し、該中間語変換手段が、移行元プラットフォームで動作するコンパイラが生成する中間語と移行先プラットフォームの種別とを入力として、中間語毎の移行元プラットフォーム、移行先プラットフォーム、変換の処理を指示するポインタの各情報を保持する変換テーブルを参照して移行先プラットフォームの中間語を生成することにより達成される。
発明によれば、移行元プラットフォーム用のソースプログラムを移行先プラットフォーム用のソースプログラムへ変換する際の誤りを低減することができ、異なるプラットフォームへのソースプログラムの移行作業を効率的に実施することが可能となる。また、本発明によれば、複数のプラットフォーム間で移行支援装置の共通化を図ることができ、移行支援装置の開発・保守の工数を低減し、異なるプラットフォームへのソースプログラムの移行作業のコスト削減が可能となる。
以下、本発明によるプログラム管理方法及びプログラムの移行支援装置の実施形態を図面により詳細に説明する。
図1は本発明の一実施形態によるプログラムの移行支援装置を備えた移行支援システムの構成例を示すブロック図である。図1において、101は移行元コンパイラ、102は構文・意味解析部、103は中間語出力部、104は中間語、105は移行支援装置、106は中間語入力部、107は中間語変換部、108はソース生成部、109は結果リスト、110は移行先ソースプログラム、111は移行先コンパイラ、112は移行先プラットフォーム種別である。
本発明の実施形態によるプログラムの移行支援装置を含む移行支援システムは、移行元プラットフォームで動作する中間語出力部103を備えた移行元コンパイラ101と、移行元コンパイラ101が生成した中間語104及び移行先プラットフォーム種別112を入力とする中間語入力部106、入力された中間語を移行先プラットフォームの中間語に変換し、変換結果を結果リスト109として出力する中間語変換部107、中間語変換部107で変換された中間語から移行先プラットフォームのソースプログラム110を生成するソース生成部108を備えた移行支援装置105と、移行支援装置105が出力した移行先ソースプログラム110を入力とする移行先コンパイラ111とから構成される。
移行元コンパイラ101は、ソース入力部と、構文・意味解析部102と、本発明により設けられた中間語出力部103と、オブジェクト生成部とを備えて構成され、テキスト形式のソースプログラムを入力として、様々な解析過程を経て、最終的にバイナリ形式の目的(オブジェクト)プログラムを生成するものである。前述のような構成の移行元コンパイラ101は、中間語出力部103が存在することを除いて、従来からよく知られているものである。中間語104は、コンパイラの解析過程の1つである構文・意味解析部102が生成するバイナリ形式のデータであり、その形式は、各プラットフォームで動作するコンパイラ間で共通化されている。
なお、後述するが、中間語は「記号表」と「中間コード」で構成される。「記号表」とは、ソースプログラムで使用されている名前に関する情報であり、一般的に、名前、型、記憶域、その他プログラム言語固有情報から構成される。また、「中間コード」は、ソースプログラムを「字句解析、構文解析、意味解析」によって解析した結果であり、最終的に目的コードに変換されるものである。一般的に、中間コードには、次のような種類のものがよく使用される。
すなわち、中間コードの種類としては、1.抽象構文木、2.後置コード、3.3番地コード、4.三つ組が知られているが、本発明の実施形態では、1.抽象構文木を用いることとしている。
移行支援装置105は、よく知られているように、CPU、メモリ、ハードディスク装置、入出力装置を備えて構成されるPCに代表される計算機装置上に構成されていればよい。そして、移行支援装置105を構成する各機能部は、ソフトウェアにより構成されて、ハードディスク装置内に格納され、それらがメモリ内に呼び出され、OSの下でCPUにより実行されることにより実現することができる。
図2は中間語104の構成を説明する図である。中間語は、図2(a)に示すように、移行元プラットフォームのコンパイラによって与えられた移行元プラットフォーム種別201、中間コード202、記号表(辞書)203の3つから構成される。
中間コード202は、図2(d)に示しているような定義部206と文207とにより構成されるソースプログラムの例における文207を木構造に変換したデータである。このデータは、移行元コンパイラ101の構文・意味解析部102がソースプログラムの文207を区切り文字毎に単語に分解して木構造のデータに変換して得られたデータであり、文207を構成する1つの単語に対するデータを、図2(b)に示すような1つのノード204として、複数のノードにより構成される。
ノード204は、図2(b)に示すように、ノード番号208、文が指定されたソースプログラム上のシーケンスカラム209、ノード固有の付属情報210及び子ノードへのポインタ211から構成される。子ノードへのポインタ211は、1つの文に対するノードが複数のノードの組み合わせで表現される場合に、ノード間を繋ぐためのポインタエリアである。
記号表203は、図2(d)に示しているソースプログラムの例における定義部206に対する中間語である。定義部206には、文207で使用する変数等の名前が定義されている。ここでの説明では、以降、記号表203を辞書と言うこととする。辞書の1つエントリ205は、図2(c)に示すように、名前212、変数が定義されたソースプログラム上のシーケンスカラム213、辞書種別214、定義場所種別215及び辞書固有の付属情報216から構成される。辞書種別214とは、辞書の種類を示し、例えば、定義部に定義された変数に対する辞書は変数辞書と言う。
次に、図2(d)に示すソースプログラムの例における文207“MOVE A TO B”に対応する木構造のデータについて説明する。なお、図2の最下段に示すように、MOVE文のノード番号:1000、名前を表わすノードのノード番号:2000、WORKING-STORAGE SECTION に定義された名前に対する辞書種別:100(変数辞書)、WORKING-STORAGE SECTION の定義場所番号:10であるとする。
文207は、図2(e)に示すように、“MOVE”、“A”、“TO”、“B”に単語単位に分解される。そして、図2(f)に示すように、中間コードのノード204としてのMOVEノードのノード番号208に“1000”が、シーケンスカラム209にソースプログラムの例における文207シーケンス番号“100”が格納される。また、子ノードへのポインタ211には、“A”と“B”とに対応する名前を表わすノードへのポインタが格納される。名前を表わすノードへのポインタにより指示される名前“A”と“B”とのノードのそれぞれには、図2(g)に示すように、ノード番号208に“2000”が、シーケンスカラム209にソースプログラムの例における文207シーケンス番号“100”が格納される。また、図2(g)の左側に示す名前“A”のノードに対応する辞書219のエントリには、図2(h)の左側に示すように、名前212にAが、シーケンスカラム213にソースプログラムの例における定義部206の名前Aの定義部のシーケンス番号“20”が、辞書種別214に100(変数辞書)が、定義場所215にWORKING-STORAGE SECTION の定義場所番号10が格納される。さらに、図2(g)の右側に示す名前“B”のノードに対応する辞書のエントリには、図2(h)の右側に示すように、名前212にBが、シーケンスカラム213にソースプログラムの例における定義部206の名前Aの定義部のシーケンス番号“30”が、辞書種別214に100(変数辞書)が、定義場所215にWORKING-STORAGE SECTION の定義場所番号10が格納される。
図3は図1に示す移行支援装置105の中間語変換部107が参照する変換テーブル301の構成を示す図である。
変換テーブル301は、移行先プラットフォーム種別302、移行元プラットフォーム種別303、変換対象データがノードか辞書かを示すノード/辞書フラグ304、ノードまたは辞書の種類(番号)305、及び、変換処理へのポインタ306から構成される。変換処理307は、移行元プラットフォームの中間語を移行先プラットフォームの中間語に変換する処理のプログラムである。変換処理307は、プラットフォーム間で変換が必要なノードや辞書毎に作成され、そのプログラムが格納されるアドレスが変換テーブル301の変換処理へのポインタ306に登録される。
図1に示す移行支援装置105は、図2により説明した移行元プラットフォームの種別201を保持した各プラットフォーム間で共通な形式の中間語と移行先プラットフォーム種別112とを入力とし、移行支援装置105の中間語変換部107が参照する変換テーブル301に、移行元プラットフォームの種別302と移行先プラットフォームの種別303とを備えることにより、複数のプラットフォーム相互間での移行に対応した移行支援装置として動作することが可能となる。
図4は図1に示す本発明の実施形態によるプログラムの移行支援装置を備えた移行支援システムの処理動作を説明するフローチャートであり、次に、これについて説明する。
(1)移行元プラットフォームのコンパイラ101は、移行元プラットフォームのソースプログラムを入力として、ソースプログラムを単語単位に分解し、構文解析と意味解析とを行って中間語104を作成して出力する。中間語は、図2により説明したように、移行元プラットフォーム情報201、中間コード202、辞書としての記号表203から構成される(ステップ401〜403)。
(2)移行支援装置105は、移行元プラットフォームのコンパイラ101が出力した中間語104と移行先プラットフォーム種別とを入力として処理を開始し、まず、入力された中間語があるか否か確認する(ステップ404、405)。
(3)ステップ405での確認後、入力された中間語1041つを取り出してその中間語104の中間コードのノード及び辞書毎に、移行元プラットフォーム情報、移行先プラットフォーム情報から、図3に示して説明した変換テーブル301に該当する移行先種別302、移行元種別303を検索し、さらに、ノードか辞書かを示す変換対象種別のフラグ304、フラグ304が示すノードまたは辞書の種別(番号)305が一致するデータを検索する(ステップ406)。
(4)変換テーブル301内に一致するデータが存在したか否かを判定し、存在しなかった場合、ステップ405からの処理に戻って、次の中間語についての処理を行う(ステップ407)。
(5)ステップ407の判定で、変換テーブル301内に一致するデータが存在した場合、図3に示す変換テーブル301の変換処理へのポインタ306に設定された変換処理を呼び出し、対象になった中間語のノードまたは辞書の内容を移行先プラットフォームでの中間語に変換する。その際、この中間語の変換処理で、対象になったノードまたは辞書が、変換可能か否かをチェックする(ステップ408、409)。
(6)ステップ409のチェックで、変換可能であった場合、移行先のノードまたは辞書の設定内容を変換し、変換したノードまたは辞書のシーケンスカラムと変換内容を結果として出力すると共に、変換ができなかった場合、変換できなかったノードまたは辞書のシーケンスカラムと変換できなかった原因を結果リスト109として出力する(ステップ410、411)。
(7)その後、ステップ405からの処理に戻って、次の中間語について前述したと同様な処理を繰り返し、全ての中間語について処理が終わり、ステップ405で中間語がないと判定された場合、変換後の中間語から移行先プラットフォームのソースプログラムを生成する(ステップ412)。
(8)移行先プラットフォームのコンパイラ111は、移行支援装置105が生成したプログラムソースを入力として、入力されたソースプログラムから移行先プラットフォームが使用する目的(オブジェクト)プログラムを生成する(ステップ413)。
前述したステップ408における変換処理及び変換可否のチェックで、変換できない原因として、変換対象のノードまたは辞書が、移行先プラットフォームにおける未サポートの機能に対するものであることが挙げられる。この場合、ステップ411の処理での変換結果の出力時のシーケンスカラムを参照して、ステップ412の処理で生成されたソースプログラムの該当する箇所を手動でコメント化することとする。なお、ノードまたは辞書にコメント化を表すフラグを設けることにより、ソースプログラム生成時に自動的にコメント化することも可能である。
次に、図1に示したシステムによる移行元プラットフォームのソースプログラムから移行先プラットフォームのソースプログラムへの変換の具体例をプラットフォームによりキーワードが異なるソースプログラムの変換の場合の例について説明する。
図5は変換対象になるソースプログラムの例と変換テーブルの構成とを説明する図である。ここに示すソースプログラムは、COBOL 言語のクラス定義の例である。
図5(a)〜図5(c)には、プラットフォームA〜Cのクラス定義を構成するファクトリ定義と対応する辞書とを示しており、クラス定義を構成するファクトリ定義は、プラットフォームA501の場合、シーケンス番号10の行に示すように、“CLASS-OBJECT”であり、プラットフォームB503の場合、“FACTORY” であり、プラットフォームC505の場合、“STATIC”である。このように、プラットフォーム毎にファクトリ定義が異なるが、これのクラス定義は、全て同一の内容を持つものである。図5ではプラットフォームが3種類存在しているものとしているが、プラットフォームの種類は、さらに多種類存在してもよい。
前述のようなファクトリ定義に対する辞書の種類は“見出し定義辞書”であり、その形式はプラットフォーム間で共通であるが、プラットフォームA、B、Cに対応する辞書502、504、506の名前に、それぞれ、“CLASS-OBJECT”、“FACTORY” 、“STATIC”と設定される。
このような3種のプラットフォームを扱う場合、図3により説明した変換テーブル301には、図5(d)に示すように、移行元種別302、移行先種別303に、前述したプラットフォーム種別A〜Cが格納される。図示例では、プラットフォームB→A、A→B、B→Cの変換についてのレコードを示しているが、もちろん、プラットフォームC→B、C→A、A→Cの変換の場合のレコードも存在する。そして、ノード/辞書フラグ304、種別305には、いずれの場合にも、「辞書」、「見出し定義辞書」が格納される。また、変換処理へのポインタ306には、見出し定義辞書に対する各プラットフォーム間の変換処理のポインタが設定される。
変換処理は、例えば、プラットフォームBからプラットフォームAへの移行の場合、「見出しの種類がCLASS-OBJECTの場合、名前をCLASS-OBJECTに変換」する処理であり、プラットフォームAからプラットフォームBへの移行の場合、「見出しの種類がCLASS-OBJECTの場合、名前をFACTORY に変換」する処理であり、プラットフォームBからプラットフォームCへの移行の場合、「見出しの種類がCLASS-OBJECTの場合、名前をSTATICに変換」する処理である。
図6は図5により説明した例におけるプラットフォームAのソースプログラムからプラットフォームBのソースプログラムへの変換の処理動作を説明するフローチャートであり、次に、これについて説明する。
(1)プラットフォームAのコンパイラは、図5(a)に示したプラットフォームA501のクラス定義を構成するファクトリ定義としてのソースプログラムを入力して解析を行い、辞書502作成した後、それらを中間語604として出力する(ステップ601〜603)。
(2)移行支援装置は、中間語604と移行先プラットフォーム種別としてのプラットフォームBとを入力として受け取り、その中の見出し定義辞書に対して、変換テーブルから、移行元プラットフォームが“プラットフォームA”、移行先プラットフォームが“プラットフォームB”、ノード/辞書フラグが“辞書”、種別が“見出し定義辞書”のデータを検索する(ステップ605、606)。
(3)ステップ606での検索処理で対応するデータが存在したか否かを判定し、存在しなければここでの処理を終了し、存在した場合、変換処理を呼び出す(ステップ607、608)。
(4)次に、見出し定義辞書の付属情報がCLASS-OBJECTとなっているので、辞書502の名前“CLASS-OBJECT”を“FACTORY” に変換する変換処理を実行し、辞書を図5(b)に示すように辞書504に変更し、変換結果を結果リスト611として出力する(ステップ609、610)。
(5)その後、変換後の辞書504からプラットフォームBのソースプログラム613を生成して、ここでの処理を終了する(ステップ612)。
ソースプログラムによる単語単位の置換を行う従来技術の場合、図5(a)のプラットフォームAのソースプログラムの変数定義514に出現する“CLASS-OBJECT”を誤って“FACTORY” に置換してしまう可能性があったが、前述した本発明の実施形態では、辞書の種別毎に変換処理が設けられるため、変数定義514の辞書については、変換処理を行わないので、変換誤りを低減することができる。
前述で説明した例は、プラットフォームによりキーワードが異なるソースプログラムの変換を行う場合の例であったが、次に、プラットフォームによりキーワードの補完が必要な場合の例について説明する。
図7はプラットフォームによりキーワードの補完が必要な場合の例としてのCOBOL 言語のINVOKE文の構文、INVOKE文を使用したソース例及びINVOKE文の中間語について説明する図である。
INVOKE文は、メソッド定義を呼び出す構文である。図7(a)に示すINVOKE文の構文701において、USING指定のBY指定704は、省略することが可能であり、省略された場合、コンパイラが呼び出すメソッド定義のUSING指定を参照して、内部的にBY指定を仮定した中間語を生成する。
図7(b)に示すソース例702では、左側欄に示す200行目のINVOKE文のBY指定が省略されている。そして、このINVOKE文は、矢印で示しているように、右側欄のMETHOD-ID.METH1.を呼び出すものである。そのため、コンパイラは、呼び出すメソッド定義のUSING 指定に合わせてBY REFERENCE指定を仮定する。
いま、INVOKE文のノード番号:1000、USING 句のノード番号:1001、BY指定のノード番号:1002、名前を表わすノードのノード番号:2000、WORKING-STORAGE SECTION に定義された名前に対する辞書種別:100(変数辞書)、WORKING-STORAGE SECTION の定義場所番号:10、定数の辞書種別:200とすると、ソース例702のINVOKE文の中間語703は、図2で説明した場合と同様に、図7(c)に示すように生成される。そして、この中間語703には、BY指定のノード705に“BY REFERENCE”のフラグ706が設定される。
しかし、このBY指定は、プラットフォームによっては省略することができない。そのため、省略可能なプラットフォームから省略不可能なプラットフォームへソースプログラムを移行する場合、BY指定を補完しなければならないことになる。
図8は省略可能なプラットフォームから省略不可能なプラットフォームへ移行するための変換テーブルの構成を説明する図である。
図8(a)にプラットフォーム間の規則の違い801について説明しており、プラットフォームAは、BY指定省略可能であり、プラットフォームBは、BY指定省略不可能であるとする。そして、BY指定省略可能なプラットフォームAでは、呼び先のPROCEDURE DIVISIONに書かれたBY指定をコンパイラが仮定する。
このような場合、図8(b)に示すように、変換テーブル301の移行元種別302には“プラットフォームA”、移行先種別303)には“プラットフォームB”、ノード/辞書フラグ304には“ノード”、種別305には“BY指定ノード”、変換処理へのポインタ306には“BY指定ノードの仮定フラグを OFF”にする処理808へのポインタが設定される。ここで、「仮定フラグを OFFにする」とは、BY指定が省略されていないことを意味する。
図9は図7により説明した例におけるプラットフォームAのソースプログラムからプラットフォームBのソースプログラムへの変換の処理動作を説明するフローチャートであり、次に、これについて説明する。
(1)プラットフォームAのコンパイラは、図7(b)に示したINVOKE文を含むソースプログラム702を入力して、INVOKE構文の意味解析を行い、ノード903を作成後、その解析結果を中間語905として出力する(ステップ901、902、904)。
(2)移行支援装置は、プラットフォームAのコンパイラから出力された中間語905と移行先種別としてのプラットフォームBの情報とを入力として、中間語905の中のINVOKE文ノードに対して、変換テーブルから、移行元プラットフォームが“プラットフォームA”、移行先プラットフォームが“プラットフォームB”、ノード/辞書フラグが“ノード”、種別が“INVOKE文ノード”のデータを検索する(ステップ906、907)。
(3)ステップ907での検索処理で対応するデータが存在したか否かを判定し、存在しなければここでの処理を終了し、存在した場合、変換処理を呼び出し、INVOKEノード910の子ノードであるBY指定ノード911を検索して、その仮定フラグをOFF にする(ステップ908、909)。
(4)次に、変換結果を結果リスト914として出力し、また、変換後のBY指定ノード911からプラットフォームBのソースプログラム915を生成する。ソース生成時、BY指定ノードの仮定フラグがOFF であるため、ソースプログラム上に“BY REFEERENCE” が生成される(ステップ912、913)。
図10は図9により説明した処理により実際に変換されたソースプログラムの例について説明する図である。
図10(a)に変換元のプラットフォームAのソースプログラムを示しているが、このソースプログラムは、図7(b)に示したものと同一である。このプラットフォームAのソースプログラムのUSING指定1001には、BY指定が省略されている。このプラットフォームAのソースプログラムを図9による処理によってプラットフォームBのソースプログラムに変換したものを図10(b)に示している。図10(b)から判るように、変換されたプラットフォームBのソースプログラムにはBY指定1002が“BY REFEERENCE” として付加されている。
図10に示したような変換を、ソースプログラムを単語単位に置換する従来技術により行う場合、移行支援装置に呼び元1003と呼び先1004とのソースプログラムを解析するコンパイラと同等の処理が必要となるため、移行支援装置の開発・保守に工数がかかることになるが、前述で説明した本発明の実施形態では、中間語のフラグを変更する処理を移行支援装置に登録するだけであり、移行支援装置の開発・保守の工数を低減することができる。
前述した本発明の実施形態での各処理は、プログラムにより構成し、計算機が備えるCPUに実行させることができ、また、それらのプログラムは、FD、CDROM、DVD等の記録媒体に格納して提供することができ、また、ネットワークを介してディジタル情報により提供することができる。
本発明の一実施形態によるプログラムの移行支援装置を備えた移行支援システムの構成例を示すブロック図である。 中間語構成を説明する図である。 図1に示す移行支援装置中間語変換部が参照する変換テーブルの構成を示す図である。 図1に示す本発明の実施形態によるプログラムの移行支援装置を備えた移行支援システムの処理動作を説明するフローチャートである。 変換対象になるソースプログラムの例と変換テーブルの構成とを説明する図である。 図5により説明した例におけるプラットフォームAのソースプログラムからプラットフォームBのソースプログラムへの変換の処理動作を説明するフローチャートである。 プラットフォームによりキーワードの補完が必要な場合の例としてのCOBOL 言語のINVOKE文の構文、INVOKE文を使用したソース例及びINVOKE文の中間語について説明する図である。 省略可能なプラットフォームから省略不可能なプラットフォームへ移行するための変換テーブルの構成を説明する図である。 図7により説明した例におけるプラットフォームAのソースプログラムからプラットフォームBのソースプログラムへの変換の処理動作を説明するフローチャートである。 図9により説明した処理により実際に変換されたソースプログラムの例について説明する図である。
符号の説明
101 移行元コンパイラ
102 構文・意味解析部
103 中間語出力部
104 中間語
105 移行支援装置
106 中間語入力部
107 中間語変換部
108 ソース生成部
109 結果リスト
110 移行先ソースプログラム
111 移行先コンパイラ
112 移行先プラットフォーム種別

Claims (7)

  1. 異なるプラットフォーム間でソースプログラムの移行を行うプログラム管理方法において、中間語変換手段を有し、該中間語変換手段は、移行元プラットフォームで動作するコンパイラが生成する中間語と移行先プラットフォームの種別とを入力として、中間語毎の移行元プラットフォーム、移行先プラットフォーム、変換の処理を指示するポインタの各情報を保持する変換テーブルを参照して移行先プラットフォームの中間語を生成することを特徴とするプログラム管理方法。
  2. 前記中間語は、ソースプログラムで使用されている名前に関する情報である記号表と、ソースプログラムを、字句解析、構文解析、意味解析によって解析した結果の中間コードとにより構成されることを特徴とする請求項1記載のプログラム管理方法。
  3. 異なるプラットフォーム間でソースプログラムの移行を行うプログラム管理方法において、中間語変換手段を有し、該中間語変換手段は、中間語毎の移行元プラットフォーム、移行先プラットフォーム、変換の処理を指示するポインタの各情報を保持する変換テーブルを参照し、移行元プラットフォーム種別と、入力された移行先プラットフォーム種別と、移行元プラットフォームで動作するコンパイラが生成する中間語のノード番号とにより、前記変換テーブルを検索し、変換の処理を呼び出して移行先プラットフォームの中間語を生成することを特徴とするプログラム管理方法。
  4. 異なるプラットフォーム間でソースプログラムの移行を行うプログラム管理方法において、中間語変換手段及びソース生成手段を有し、該中間語変換手段は、移行元プラットフォームで動作するコンパイラが生成する中間語と移行先プラットフォームの種別とを入力として、中間語毎の移行元プラットフォーム、移行先プラットフォーム、変換の処理を指示するポインタの各情報を保持する変換テーブルを参照して移行先プラットフォームの中間語を生成し、前記ソース生成手段は、前記移行先プラットフォームの中間語から前記移行先プラットフォームのソースプログラムを生成することを特徴とするプログラム管理方法。
  5. 異なるプラットフォーム間でソースプログラムの移行を行うプログラム管理方法において、中間語変換手段及びソース生成手段を有し、該中間語変換手段は、中間語毎の移行元プラットフォーム、移行先プラットフォーム、変換の処理を指示するポインタの各情報を保持する変換テーブルを参照し、移行元プラットフォーム種別と、入力された移行先プラットフォーム種別と、移行元プラットフォームで動作するコンパイラが生成する中間語のノード番号とにより、前記変換テーブルを検索し、変換の処理を呼び出して移行先プラットフォームの中間語を生成し、前記ソース生成手段は、前記移行先プラットフォームの中間語から前記移行先プラットフォームのソースプログラムを生成することを特徴とするプログラム管理方法。
  6. 異なるプラットフォーム間でソースプログラムの移行を行うプログラムの移行支援装置において、中間語変換手段及びソース生成手段を有し、該中間語変換手段は、移行元プラットフォームで動作するコンパイラが生成する中間語と移行先プラットフォームの種別とを入力として、中間語毎の移行元プラットフォーム、移行先プラットフォーム、変換の処理を指示するポインタの各情報を保持する変換テーブルを参照して移行先プラットフォームの中間語を生成し、前記ソース生成手段は、前記移行先プラットフォームの中間語から前記移行先プラットフォームのソースプログラムを生成することを特徴とするプログラムの移行支援装置。
  7. 異なるプラットフォーム間でソースプログラムの移行を行うソースプログラム移行プログラムにおいて、移行元プラットフォームで動作するコンパイラが生成する中間語と移行先プラットフォームの種別とを入力するステップと、中間語毎の移行元プラットフォーム、移行先プラットフォーム、変換の処理を指示するポインタの各情報を保持する変換テーブルを参照して移行先プラットフォームの中間語を生成するステップと、前記移行先プラットフォームの中間語から前記移行先プラットフォームのソースプログラムを生成するステップとを実行させることを特徴とするソースプログラム移行プログラム。
JP2005333067A 2005-11-17 2005-11-17 プログラム管理方法及びプログラムの移行支援装置 Pending JP2007140845A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2005333067A JP2007140845A (ja) 2005-11-17 2005-11-17 プログラム管理方法及びプログラムの移行支援装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2005333067A JP2007140845A (ja) 2005-11-17 2005-11-17 プログラム管理方法及びプログラムの移行支援装置

Publications (1)

Publication Number Publication Date
JP2007140845A true JP2007140845A (ja) 2007-06-07

Family

ID=38203629

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005333067A Pending JP2007140845A (ja) 2005-11-17 2005-11-17 プログラム管理方法及びプログラムの移行支援装置

Country Status (1)

Country Link
JP (1) JP2007140845A (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010140408A (ja) * 2008-12-15 2010-06-24 Nomura Research Institute Ltd ソースコード変換装置
JP2014523026A (ja) * 2011-06-29 2014-09-08 マイクロソフト コーポレーション 仮想機械移行ツール
JP7138747B1 (ja) * 2021-06-15 2022-09-16 三菱電機株式会社 移行支援装置、移行支援方法及び移行支援プログラム
WO2022195726A1 (ja) * 2021-03-16 2022-09-22 富士通株式会社 情報処理プログラム、情報処理方法および情報処理装置

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010140408A (ja) * 2008-12-15 2010-06-24 Nomura Research Institute Ltd ソースコード変換装置
JP2014523026A (ja) * 2011-06-29 2014-09-08 マイクロソフト コーポレーション 仮想機械移行ツール
US9569259B2 (en) 2011-06-29 2017-02-14 Microsoft Technology Licensing, Llc Virtual machine migration tool
US9858114B2 (en) 2011-06-29 2018-01-02 Microsoft Technology Licensing, Llc Virtual machine migration tool
KR20180085058A (ko) * 2011-06-29 2018-07-25 마이크로소프트 테크놀로지 라이센싱, 엘엘씨 가상 머신 이주 도구
KR101881625B1 (ko) 2011-06-29 2018-08-24 마이크로소프트 테크놀로지 라이센싱, 엘엘씨 가상 머신 이주 도구
KR101946773B1 (ko) 2011-06-29 2019-05-21 마이크로소프트 테크놀로지 라이센싱, 엘엘씨 가상 머신 이주 도구
WO2022195726A1 (ja) * 2021-03-16 2022-09-22 富士通株式会社 情報処理プログラム、情報処理方法および情報処理装置
JP7138747B1 (ja) * 2021-06-15 2022-09-16 三菱電機株式会社 移行支援装置、移行支援方法及び移行支援プログラム

Similar Documents

Publication Publication Date Title
EP3514694B1 (en) Query translation
CN110704479A (zh) 任务处理方法、装置、电子设备及存储介质
US9122540B2 (en) Transformation of computer programs and eliminating errors
CN110502227B (zh) 代码补全的方法及装置、存储介质、电子设备
US10055399B2 (en) Method and system for linear generalized LL recognition and context-aware parsing
KR20040094645A (ko) 자연 언어 이해 시스템에서 슬롯에 대한 규칙 기반 문법,및 프리터미널에 대한 통계 모델
US10769373B2 (en) Contextual validation of synonyms in otology driven natural language processing
KR101589621B1 (ko) 텍스트 분석 및 응답 시스템을 위한 어휘의미패턴의 사전 구축 방법
US20100095283A1 (en) Migration Apparatus Which Convert Application Program of Mainframe System into Application Program of Open System and Method for Thereof
JP2007140845A (ja) プログラム管理方法及びプログラムの移行支援装置
CN114625371A (zh) 跨操作系统多源融合算法编译方法、编译器及存储介质
CN111221888A (zh) 大数据分析系统及方法
US20030196195A1 (en) Parsing technique to respect textual language syntax and dialects dynamically
US9715375B1 (en) Parallel compilation of software application
JP2008226010A (ja) コンパイル方法及びコンパイル装置
JPH04286029A (ja) ソースプログラム・コンバータ
CN113608748A (zh) C语言转换Java语言的数据处理方法、装置及设备
JP2006079484A (ja) システム移行に伴うソースプログラム変換プログラム
US20020198702A1 (en) Method and apparatus for factoring finite state transducers with unknown symbols
JP2019179383A (ja) Api処理方法、端末、api処理プログラム
US7617089B2 (en) Method and apparatus for compiling two-level morphology rules
US10474750B1 (en) Multiple information classes parsing and execution
US9792197B2 (en) Apparatus and program
Ismail et al. LL (1) as a property is not enough for obtaining proper parsing
CN117270962B (zh) 一种处理着色语言的方法、装置、存储介质及电子设备