Nothing Special   »   [go: up one dir, main page]

JP4724387B2 - Program conversion program, program conversion apparatus, and program conversion method - Google Patents

Program conversion program, program conversion apparatus, and program conversion method Download PDF

Info

Publication number
JP4724387B2
JP4724387B2 JP2004187026A JP2004187026A JP4724387B2 JP 4724387 B2 JP4724387 B2 JP 4724387B2 JP 2004187026 A JP2004187026 A JP 2004187026A JP 2004187026 A JP2004187026 A JP 2004187026A JP 4724387 B2 JP4724387 B2 JP 4724387B2
Authority
JP
Japan
Prior art keywords
conversion
program
programming language
source program
syntax tree
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.)
Expired - Lifetime
Application number
JP2004187026A
Other languages
Japanese (ja)
Other versions
JP2006011756A (en
Inventor
栄信 伊藤
昭彦 松尾
健一 小林
利明 吉野
和男 菅田
丈史 大島
宣 平井
雅人 藤田
龍二 中村
孝太郎 野山
昭彦 浜野
久三男 金子
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.)
Fujitsu Ltd
Original Assignee
Fujitsu 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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2004187026A priority Critical patent/JP4724387B2/en
Publication of JP2006011756A publication Critical patent/JP2006011756A/en
Application granted granted Critical
Publication of JP4724387B2 publication Critical patent/JP4724387B2/en
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Landscapes

  • Devices For Executing Special Programs (AREA)
  • Stored Programmes (AREA)

Description

この発明は、第1のプログラミング言語で記述された起点ソースプログラムを第2のプログラミング言語で記述された目的ソースプログラムに変換するプログラム変換プログラム、プログラム変換装置およびプログラム変換方法に関し、特に保守性の高い目的ソースプログラムを得ることができるプログラム変換プログラム、プログラム変換装置およびプログラム変換方法に関するものである。   The present invention relates to a program conversion program, a program conversion apparatus, and a program conversion method for converting a starting source program described in a first programming language into a target source program described in a second programming language, and particularly has high maintainability. The present invention relates to a program conversion program, a program conversion apparatus, and a program conversion method capable of obtaining a target source program.

近年、運用コストの高さや開発効率の低さ等の問題から、ホストコンピュータ上で稼動するシステムをUNIX(登録商標)サーバ上やPCサーバ上で稼動するいわゆるオープンシステムに置き換えることが広くおこなわれている。置き換えにあたっては、システムを新規に開発し直すことも可能であるが、移行に要する期間とコストを節約するために従来のシステムを流用する場合も多い。   In recent years, due to problems such as high operational costs and low development efficiency, it has been widely used to replace a system that operates on a host computer with a so-called open system that operates on a UNIX (registered trademark) server or a PC server. Yes. In replacement, a new system can be re-developed, but a conventional system is often used to save the time and cost required for migration.

ただし、システムを流用する場合であっても、ホストコンピュータ上で使用していたプログラミングを新たな環境でコンパイルするだけでは開発効率の低さという問題を解決することができない。このため、移行に際しては、COBOLやPL/Iといったホストコンピュータ向けの言語で記述されていたプログラムをC++やJava(登録商標)といったより生産性の高い言語に変換することが必要となる。   However, even when the system is used, the problem of low development efficiency cannot be solved by simply compiling the programming used on the host computer in a new environment. Therefore, at the time of migration, it is necessary to convert a program written in a language for a host computer such as COBOL or PL / I into a more productive language such as C ++ or Java (registered trademark).

従来から、あるプログラミング言語で書かれたプログラムを他のプログラミング言語で書かれたプログラムに変換する技術が知られている。たとえば、特許文献1では、変換ルールを用いてプログラムの変換をおこなう技術が開示されている。また、特許文献2では、変換ルールをより汎用化し、より多くのプログラミング言語の変換を実現するための技術が開示されている。   Conventionally, a technique for converting a program written in one programming language into a program written in another programming language is known. For example, Patent Document 1 discloses a technique for converting a program using a conversion rule. Patent Document 2 discloses a technique for making conversion rules more versatile and realizing conversion of more programming languages.

特開平02−010434号公報Japanese Patent Laid-Open No. 02-010434 特公平07−078742号公報Japanese Patent Publication No. 07-078742

しかしながら、これらの従来技術は、プログラム言語の処理内容が等値になるように単純に字句変換するものであるため、変換後のプログラムが保守性の低いものになってしまうという問題がある。   However, since these conventional techniques simply perform lexical conversion so that the processing contents of the program language are equal, there is a problem that the converted program has low maintainability.

プログラミング言語にはそれぞれ特徴があり、その特徴に合ったスタイルでプログラミングされるのが通常である。ところが、単純に字句変換されたプログラムは、変換前のプログラミング言語のスタイルをそのまま受け継いでしまい、変換後のプログラミング言語としては不自然な記述になってしまう。このようなプログラムは、変換前の言語を知らない開発者にとっては極めて可読性の低いプログラムとなり、保守性の観点からみて望ましくない。   Each programming language has its own characteristics, and it is usually programmed in a style that matches those characteristics. However, a program that is simply lexically converted inherits the style of the programming language before conversion as it is, and the description becomes unnatural as a programming language after conversion. Such a program is extremely low in readability for a developer who does not know the language before conversion, and is not desirable from the viewpoint of maintainability.

特に、手続き型言語であるCOBOLからオブジェクト指向言語であるJava(登録商標)に変換する場合のように、言語思想の大きく異なる言語間で変換をおこなう際には、不自然なソースプログラムが生成される可能性が非常に高くなる。プログラムは、移行後も機能追加や改修が必要になることが通常であり、保守性の低さはプログラムの維持管理の上で大きな問題となる。   In particular, an unnatural source program is generated when converting between languages with very different linguistic ideas, such as when converting from procedural language COBOL to object-oriented language Java (registered trademark). Very likely. Programs usually require additional functions or modifications after migration, and poor maintainability is a major problem in program maintenance.

この発明は、上述した従来技術による問題点を解消するためになされたものであり、変換結果として保守性の高いプログラムを効率よく得ることができるプログラム変換プログラム、プログラム変換装置およびプログラム変換方法を提供することを目的とする。   The present invention has been made to solve the above-described problems caused by the prior art, and provides a program conversion program, a program conversion apparatus, and a program conversion method capable of efficiently obtaining a highly maintainable program as a conversion result. The purpose is to do.

上述した課題を解決し、目的を達成するため、この発明に係るプログラム変換プログラムは、第1のプログラミング言語で記述された起点ソースプログラムを第2のプログラミング言語で記述された目的ソースプログラムに変換するプログラム変換プログラムであって、前記起点ソースプログラムを構文解析して前記第1のプログラミング言語の文法に基づく前記起点ソースプログラムの構文木を生成する変換前モデル生成手順と、第1の記憶部に記憶された、前記第1のプログラミング言語の文法に基づく構文木を前記第2のプログラミング言語の文法に基づく構文木へ変換する変換ルールに基づき、前記起点ソースプログラムの構文木を前記第2のプログラミング言語の文法に基づく構文木に変換するに際して、第2の記憶部に記憶された、階層化されたデータ型を前記変換ルールに基づく変換の対象外とする条件に基づき、前記条件に該当する箇所を含む前記起点ソースプログラムの構文木に対応する、前記第2のプログラミング言語の文法に基づく構文木に、前記変換ルールに基づく変換の対象外としたことを示す手掛かり情報を挿入する変換後モデル生成手順と、前記第2のプログラミング言語の文法に基づく構文木を前記第2のプログラミング言語で記述された前記目的ソースプログラムに変換するに際して、前記手掛かり情報を前記目的ソースプログラムの、前記手掛り情報が挿入された前記第2のプログラミング言語の文法に基づく構文木に対応する箇所に埋め込むソースプログラム生成手順とをコンピュータに実行させることを特徴とする。 In order to solve the above-described problems and achieve the object, a program conversion program according to the present invention converts an origin source program described in a first programming language into a target source program described in a second programming language. A pre-conversion model generation procedure that parses the starting source program and generates a syntax tree of the starting source program based on the grammar of the first programming language , and stores it in a first storage unit been, the first based on a syntax tree based on the grammar of the programming language conversion rule for converting the syntax tree based on the grammar of the second programming language, the syntax tree of the origin source program second programming language in converting the syntax tree based on the grammar, stored in the second storage unit Based hierarchical data type condition to exclude the conversion based on the conversion rule corresponding to the syntax tree of the origin source program including a portion corresponding to the condition, grammar of the second programming language A post-conversion model generation procedure for inserting clue information indicating that it is excluded from conversion based on the conversion rule, and a syntax tree based on the grammar of the second programming language. in converting into the desired source program written in a language, embedding the key information, the object source program, the location where the cue information corresponding to syntax tree based on the grammar of the inserted second programming language A source program generating procedure is executed by a computer.

また、この発明にかかるプログラム変換装置は、第1のプログラミング言語で記述された起点ソースプログラムを第2のプログラミング言語で記述された目的ソースプログラムに変換するプログラム変換装置であって、前記起点ソースプログラムを構文解析して前記第1のプログラミング言語の文法に基づく前記ソースプログラムの構文木を生成する変換前モデル生成手段と、前記第1のプログラミング言語の文法に基づく構文木を前記第2のプログラミング言語の文法に基づく構文木へ変換する変換ルールを記憶する第1の記憶部と、階層化されたデータ型を前記変換ルールに基づく変換の対象外とする条件を記憶する第2の記憶部と、前記第1の記憶部に記憶された前記変換ルールに基づき、前記ソースプログラムの構文木を前記第2のプログラミング言語の文法に基づく構文木へ変換するに際して、前記第2の記憶部に記憶された前記条件に該当する箇所を含む前記起点ソースプログラムの構文木に対応する、前記第2のプログラミング言語の文法に基づく構文木に、前記変換ルールに基づく変換の対象外としたことを示す手掛かり情報を挿入する変換後モデル生成手段と、前記第2のプログラミング言語の文法に基づくデータモデルを前記第2のプログラミング言語で記述された前記目的ソースプログラムに変換するに際して、前記手掛かり情報を前記目的ソースプログラムの、前記手掛り情報が挿入された前記第2のプログラミング言語の文法に基づく構文木に対応する箇所に埋め込むソースプログラム生成手段とを備えたことを特徴とする。 The program conversion apparatus according to the present invention is a program conversion apparatus for converting a starting source program described in a first programming language into a target source program described in a second programming language, wherein the starting source program And a pre-conversion model generation means for generating a syntax tree of the source program based on the grammar of the first programming language, and a syntax tree based on the grammar of the first programming language. A first storage unit that stores a conversion rule for converting to a syntax tree based on the grammar of the second, a second storage unit that stores a condition for excluding a hierarchical data type from conversion based on the conversion rule, based on the conversion rule stored in the first storage unit, the syntax tree of the second of said source program Upon conversion to a syntax tree based on the grammar of the programming language, corresponding to the syntax tree of the origin source program including a portion corresponding to the conditions stored in the second storage section, the syntax of the second programming language the syntax tree based on the excluded from conversion based on the conversion rule and the converted model generating means for inserting a key information indicating that the said second of said second programming data model based on the grammar of the programming language in converting into the desired source program written in a language, embedding the key information, the object source program, the location where the cue information corresponding to syntax tree based on the grammar of the inserted second programming language And a source program generation means.

また、この発明にかかるプログラム変換方法は、第1のプログラミング言語で記述された起点ソースプログラムを第2のプログラミング言語で記述された目的ソースプログラムに変換するプログラム変換方法であって、前記起点ソースプログラムを構文解析して前記第1のプログラミング言語の文法に基づく前記起点ソースプログラムの構文木を生成する変換前モデル生成工程と、第1の記憶部に記憶された、前記第1のプログラミング言語の文法に基づく構文木を前記第2のプログラミング言語の文法に基づく構文木へ変換する変換ルールに基づき、前記起点ソースプログラムの構文木を前記第2のプログラミング言語の文法に基づく構文木に変換するに際して、第2の記憶部に記憶された、階層化されたデータ型を前記変換ルールに基づく変換の対象外とする条件に基づき、前記条件に該当する箇所を含む前記起点ソースプログラムの構文木に対応する、前記第2のプログラミング言語の文法に基づく構文木に、前記変換ルールに基づく変換の対象外としたことを示す手掛かり情報を挿入する変換後モデル生成工程と、前記第2のプログラミング言語の文法に基づく構文木を前記第2のプログラミング言語で記述された前記目的ソースプログラムに変換するに際して、前記手掛かり情報を前記目的ソースプログラムの適切な箇所に埋め込むソースプログラム生成工程とを含んだことを特徴とする。 The program conversion method according to the present invention is a program conversion method for converting a starting source program described in a first programming language into a target source program described in a second programming language, the starting source program a pre-conversion model generation step of parsing to generate a parse tree of the origin source program based on the grammar of the first programming language, stored in the first storage section, the syntax of the first programming language in based the syntax tree conversion rule for converting the syntax tree based on the grammar of the second programming language, converts the syntax tree of the origin source program syntax tree based on the grammar of the second programming language based on, The hierarchical data type stored in the second storage unit is based on the conversion rule. Under the terms of interest out of the conversion corresponds to the syntax tree of the origin source program including a portion corresponding to the condition, the syntax tree based on the grammar of the second programming language, the conversion based on the conversion rule A post-conversion model generation step for inserting clue information indicating that it is excluded, and a syntax tree based on the grammar of the second programming language is converted into the target source program described in the second programming language And a source program generation step of embedding the clue information in an appropriate location of the target source program.

この発明によれば、単純な字句変換によってプログラム変換をおこなったならば複雑で可読性の低いコードが生成される可能性が高い部分について、該当箇所に要確認タグを出力することとし、この要確認タグを手がかりとして単純な字句変換とは異なる方法でプログラム変換をおこなうように構成したので、保守性の高い変換結果をえることができる。   According to the present invention, if a program conversion is performed by simple lexical conversion, a confirmation required tag is output to a corresponding portion for a portion that is likely to generate a complicated and low-readable code. Since the program conversion is performed by using a tag as a clue in a different method from simple lexical conversion, a highly maintainable conversion result can be obtained.

また、この発明に係るプログラム変換プログラムは、上記の発明において、前記ソースプログラム生成手順は、前記手掛かり情報をプログラムのコメントとして前記目的ソースプログラムに埋め込むことを特徴とする。   In the program conversion program according to the present invention as set forth in the invention described above, the source program generation procedure embeds the clue information in the target source program as a program comment.

この発明によれば、適切なコードを記述する必要がある場所にプログラムのコメントとして手掛かり情報を出力し、手掛かり情報が存在した状態のままで通常通りプログラムの編集やコンパイルをおこなうことができるように構成したので、効率よくプログラムの変換をおこなうことができる。   According to the present invention, clue information is output as a program comment at a place where an appropriate code needs to be written, and the program can be edited and compiled as usual while the clue information exists. Because it is configured, program conversion can be performed efficiently.

また、この発明に係るプログラム変換プログラムは、上記の発明において、前記ソースプログラム生成手順は、前記手掛かり情報として前記起点ソースプログラムの名称と該起点ソースプログラムのうち前記所定のルールに該当した部分の位置情報とを埋め込むことを特徴とする。   The program conversion program according to the present invention is the program conversion program according to the above invention, wherein the source program generation procedure includes the name of the starting source program as the clue information and the position of the starting source program corresponding to the predetermined rule. It is characterized by embedding information.

この発明によれば、手掛かり情報を頼りにして変換元ソースを容易に参照することができるように構成したので、効率よくプログラムの変換をおこなうことができる。   According to the present invention, since the conversion source source can be easily referred to using the clue information, the program can be converted efficiently.

本発明によれば、単純な字句変換によってプログラム変換をおこなったならば複雑で可読性の低いコードが生成される可能性が高い部分について、該当箇所に要確認タグを出力することとし、この要確認タグを手がかりとして単純な字句変換とは異なる方法でプログラム変換をおこなうように構成したので、保守性の高い変換結果をえることができるという効果を奏する。   According to the present invention, if a program conversion is performed by simple lexical conversion, a confirmation required tag is output to a corresponding portion for a portion that is likely to generate a complicated and low-readable code. Since the program conversion is performed by a method different from simple lexical conversion using the tag as a clue, it is possible to obtain a conversion result with high maintainability.

また、本発明によれば、手掛かり情報を頼りにして変換元ソースを容易に参照することができるように構成したので、効率よくプログラムの変換をおこなうことができる。   Further, according to the present invention, since the conversion source source can be easily referred to using the clue information, the program can be converted efficiently.

以下に添付図面を参照して、この発明に係るプログラム変換プログラム、プログラム変換装置およびプログラム変換方法の好適な実施の形態を詳細に説明する。なお、ここでは、COBOLで記述されたプログラムをJava(登録商標)で記述されたプログラムに変換する場合を例にして説明するが、この発明は、特定の言語に依存するものではなく、様々なプログラム言語の変換に用いることができる。   Exemplary embodiments of a program conversion program, a program conversion apparatus, and a program conversion method according to the present invention will be explained below in detail with reference to the accompanying drawings. Here, a case where a program written in COBOL is converted into a program written in Java (registered trademark) will be described as an example. However, the present invention does not depend on a specific language, and various It can be used for program language conversion.

まず、本発明の概要について従来の方式と比較して説明する。図14は、従来のプログラミング変換方式を説明するための説明図である。同図に示すように、従来の変換方式では、まず入力部が変換前のソースプログラムを読み込んで構文解析をおこない、変換前ソースプログラムの構文木(以下、「変換前ソースデータモデル」という。)を作成する。   First, the outline of the present invention will be described in comparison with a conventional method. FIG. 14 is an explanatory diagram for explaining a conventional programming conversion method. As shown in the figure, in the conventional conversion method, the input unit first reads a source program before conversion and performs syntax analysis, and a syntax tree of the source program before conversion (hereinafter referred to as “source data model before conversion”). Create

続いて、変換エンジンが所定の変換ルールに基づいて変換前ソースデータモデルを変換して変換後ソースプログラムの構文木(以下、「変換後データソースモデル」という)を作成する。そして、出力部が変換後データソースモデルから変換後のソースプログラムを生成して変換処理が完了する。   Subsequently, the conversion engine converts the pre-conversion source data model based on a predetermined conversion rule to create a syntax tree of the post-conversion source program (hereinafter referred to as “post-conversion data source model”). Then, the output unit generates a converted source program from the converted data source model, and the conversion process is completed.

ここで、変換エンジンが利用する変換ルールは、プログラムの処理内容が同一になるように機械的に字句変換するものなので、変換後のソースプログラムは、変換前のプログラミング言語の言語仕様の影響を受けて、不自然で可読性の低いコードになる場合がある。このようなプログラムを保守性の高いものにするには、開発者が時間をかけて生成されたコードを解析し、複雑な箇所を自然なコードに置き換えることが必要になる。   Here, since the conversion rules used by the conversion engine are mechanical lexical conversions so that the processing contents of the program are the same, the source program after conversion is affected by the language specifications of the programming language before conversion. May result in unnatural and poorly readable code. In order to make such a program highly maintainable, it is necessary for a developer to analyze the generated code over time and replace a complicated part with a natural code.

図1は、本実施例に係る変換方式を説明するための説明図である。同図に示すように、本実施例に係る変換方式は、変換ルールの他に要確認ルールを用いてプログラムの変換をおこなう点が従来と異なる。要確認ルールとは、所定の条件に合致した場合は変換ルールによる機械的な字句変換はおこなわずに別の対応をおこなうというルールである。   FIG. 1 is an explanatory diagram for explaining a conversion method according to the present embodiment. As shown in the figure, the conversion method according to the present embodiment is different from the conventional method in that a program is converted using a confirmation required rule in addition to the conversion rule. The confirmation-needed rule is a rule that, when a predetermined condition is met, another correspondence is performed without performing mechanical lexical conversion by the conversion rule.

この方式では、入力部により作成された変換前ソースデータモデルは、変換ルールと要確認ルールに基づいて、変換エンジンによって、変換後ソースデータモデルに変換される。変換後ソースデータモデルでは、要確認ルールに合致した要確認箇所が要確認タグに置き換えられる。そして、この要確認タグは、出力部によりコメント等の形で変換後ソースプログラムの適切な位置に埋め込まれる。   In this method, the pre-conversion source data model created by the input unit is converted into a post-conversion source data model by the conversion engine based on the conversion rule and the confirmation required rule. In the converted source data model, the confirmation required part that matches the confirmation required rule is replaced with a confirmation required tag. The confirmation required tag is embedded in an appropriate position of the converted source program in the form of a comment or the like by the output unit.

変換後ソースプログラムに埋め込まれた要確認タグは、要確認箇所変換部において適切な記述に置き換えられて実稼動可能なソースプログラムとなる。要確認箇所変換部における記述の置き換えは業務知識を必要とする場合もあるため、通常は手作業によっておこなうが、業務知識に基づく変換をルール化して自動変換するようにすることもできる。   The required confirmation tag embedded in the converted source program is replaced with an appropriate description in the required-conversion-point conversion unit to become a source program that can be actually operated. Since the replacement of the description in the confirmation point conversion unit may require business knowledge, it is usually performed manually, but conversion based on the business knowledge can be ruled and automatically converted.

このような方式をとることにより、従来の方式では難解なコードに変換されていた箇所にどのような修正が必要であるかを示す情報が埋め込まれ、開発者は、これを手掛かりとして適切なソースコードを効率よく完成させることができ、結果として保守性の高いプログラムが従来より少ないコストで得られることとなる。   By adopting such a method, information indicating what correction is necessary is embedded in the part that has been converted into a difficult code in the conventional method, and the developer can use this as a clue to find the appropriate source. The code can be completed efficiently, and as a result, a highly maintainable program can be obtained at a lower cost than before.

次に、本実施例に係るプログラム変換方式によるプログラム変換の一例を示す。図2は、本実施例に係るプログラム変換方式によるプログラム変換の一例を示すための説明図である。   Next, an example of program conversion by the program conversion method according to the present embodiment is shown. FIG. 2 is an explanatory diagram for illustrating an example of program conversion by the program conversion method according to the present embodiment.

COBOLとJava(登録商標)には言語仕様の上で異なる点が多いが、基本的な記憶領域の管理方法においても相違がある。COBOLにおいては、ひとつの記憶領域を階層的に分割してそれぞれの階層毎に名前をつけることができる。たとえば、図2の変換前のCOBOLのソースプログラムにおいては、WK−DATE名づけられた領域は、YYと名づけられた領域と、MMと名づけられた領域と、DDと名づけられた領域に分割されている。必要であれば、YYと名づけられた領域をYY1と名づけられた領域とYY2と名づけられた領域にさらに分割することもできる。   There are many differences between COBOL and Java (registered trademark) in terms of language specifications, but there are also differences in basic storage area management methods. In COBOL, one storage area can be divided hierarchically and given a name for each hierarchy. For example, in the COBOL source program before conversion in FIG. 2, the area named WK-DATE is divided into an area named YY, an area named MM, and an area named DD. Yes. If necessary, the area named YY can be further divided into an area named YY1 and an area named YY2.

この階層化された記憶領域(以下、「集団項目」という。)は、同じ記憶領域を共有しており、たとえばMMと名づけられた領域の値を更新すればWK−DATE名づけられた領域の一部が更新されたことになる。また、WK−DATE名づけられた領域全体を更新すれば、YYと名づけられた領域と、MMと名づけられた領域と、DDと名づけられた領域とがそれぞれ更新されたことになる。このような言語仕様を利用して、COBOLで作成されたプログラムでは、必要に応じて様々な階層を使い分けて記憶領域の参照や更新がおこなわれる。   This hierarchical storage area (hereinafter referred to as “group item”) shares the same storage area. For example, if the value of the area named MM is updated, one of the areas named WK-DATE is updated. The department has been updated. Also, if the entire area named WK-DATE is updated, the area named YY, the area named MM, and the area named DD are updated respectively. A program created by COBOL using such a language specification refers to and updates storage areas using various hierarchies as needed.

しかし、Java(登録商標)では、このように一つの記憶領域を階層的に分割することは言語仕様上できないため、どのように変換をおこなえばよいのかが問題となる。各階層の記憶領域を別個に用意し、アクセスメソッドを工夫することによってそれらの領域が共有されているかのように見せかけることも可能であるが、ソースプログラムが非常に複雑なものになってしまう。   However, in Java (registered trademark), it is impossible to divide a single storage area hierarchically in terms of language specifications, and therefore, how to perform conversion becomes a problem. It is possible to prepare storage areas for each layer separately and devise access methods to make them appear to be shared, but the source program becomes very complex.

そこで、図2の例においては、このような集団項目の参照と更新の処理については要変換ルールによって単純な字句変換をおこなわないようにしている。たとえば、”MOVE DATE TO WK−DATE.”というCOBOLの命令文は、集団項目の値を別の集団項目へ転記するという処理を示しているが、この処理は出力部により生成されたJava(登録商標)のソースプログラムにおいては空のsetというアクセスメソッドとして変換され、そこに実装すべき処理内容を示すコメントが挿入されている。   Therefore, in the example of FIG. 2, simple lexical conversion is not performed in the group item reference and update processing according to the conversion rule required. For example, the COBOL command statement “MOVE DATE TO WK-DATE.” Indicates a process of transferring the value of a group item to another group item. This process is a Java (registration) generated by the output unit. (Trademark) source program is converted as an empty set access method, and a comment indicating the processing content to be implemented is inserted therein.

この空のアクセスメソッドは、業務知識を有する開発者により必要な処理が実装され、業務上必要な領域の設定処理のみが加えられるため、プログラムが複雑化することなく、保守性の高いプログラムを得られることとなる。   This empty access method is implemented with necessary processing by a developer who has business knowledge, and only setting processing for areas required for business is added, so a program with high maintainability can be obtained without complicating the program. Will be.

次に、本実施例に係るプログラム変換装置100の構成について説明する。図3は、本実施例に係るプログラム変換装置の構成を示す機能ブロック図である。同図に示すように、本実施例に係るプログラム変換装置100は、ユーザインターフェース部200と、制御部300と、記憶部400とを有する。   Next, the configuration of the program conversion apparatus 100 according to the present embodiment will be described. FIG. 3 is a functional block diagram illustrating the configuration of the program conversion apparatus according to the present embodiment. As shown in the figure, the program conversion apparatus 100 according to the present embodiment includes a user interface unit 200, a control unit 300, and a storage unit 400.

ユーザインターフェース部200は、利用者に対して情報を提供し、また、利用者からの指示を受け付ける装置であり、液晶装置等の表示装置からなる表示部210と、キーボードやマウス等から構成される操作部220とを有する。   The user interface unit 200 is a device that provides information to the user and receives instructions from the user, and includes a display unit 210 including a display device such as a liquid crystal device, a keyboard, a mouse, and the like. And an operation unit 220.

制御部300は、プログラム変換装置100を全体制御する制御部であり、変換前クレンジング部310と、変換前モデル生成部320と、変換後モデル生成部330と、ソースプログラム生成部340と、要確認箇所変換部350と、ルール抽出部370と、作業見積り部380とを有する。   The control unit 300 is a control unit that totally controls the program conversion apparatus 100, and includes a pre-conversion cleansing unit 310, a pre-conversion model generation unit 320, a post-conversion model generation unit 330, a source program generation unit 340, and confirmation required. The location conversion unit 350, the rule extraction unit 370, and the work estimation unit 380 are included.

変換前クレンジング部310は、変換前ソースプログラムを、変換がより容易な等価な表現に置き換える処理部である。変換前のソースプログラムは、何度かの改変を経て処理の流れが複雑化している場合が多く、これをこのまま変換すると処理が理解し難いプログラムになってしまう。そこで、変換前の段階でソースプログラムの処理の流れを整理して単純な流れになるように修正する。   The pre-conversion cleansing unit 310 is a processing unit that replaces the pre-conversion source program with an equivalent expression that is easier to convert. The source program before conversion often has a complicated process flow through several modifications, and if this is converted as it is, the process becomes difficult to understand. Therefore, the process flow of the source program is arranged and corrected so that it becomes a simple flow before conversion.

図4は、変換前クレンジングの一例を示す説明図である。同図に示すように、変換前クレンジング部310による変換前のソースプログラム10においては、処理の記述順序が、処理1→処理2→処理3の順であるにもかかわらず、処理の実行順序が、処理1→処理3→処理2の順になっており、処理の記述順序と実際の処理の流れが異なっている。そこで、変換前クレンジング部310は、処理の記述順序を処理1→処理3→処理2に変更し、処理の記述順序と実際の処理の流れを一致させ、変換後のプログラムが理解しやすいものになるようにしている。   FIG. 4 is an explanatory diagram illustrating an example of pre-conversion cleansing. As shown in the figure, in the source program 10 before the conversion by the pre-conversion cleansing unit 310, the processing execution order is the order of processing 1 → processing 2 → processing 3. Process 1 → Process 3 → Process 2 in this order, and the process description order and the actual process flow are different. Accordingly, the pre-conversion cleansing unit 310 changes the process description order from process 1 → process 3 → process 2 so that the process description order matches the actual process flow, and the converted program is easy to understand. It is trying to become.

変換前モデル生成部320は、変換前ソースプログラムを構文解析して変換前ソースデータモデルを生成する処理部であり、図1の入力部に相当する。変換前ソースデータモデルは、変換前ソースプログラムの構造を論理的に表現したモデルであり、言語変換のための中間形式として用いられる。   The pre-conversion model generation unit 320 is a processing unit that parses a pre-conversion source program and generates a pre-conversion source data model, and corresponds to the input unit of FIG. The pre-conversion source data model is a model that logically represents the structure of the pre-conversion source program, and is used as an intermediate format for language conversion.

本実施例においては、変換前および変換後のソースデータモデルを、XML(Extensible Markup Language)を用いて表現する。XMLとは、タグと呼ばれる標識文字列を利用してデータとその構造を同時に表現することができるフォーマットである。   In the present embodiment, the source data model before and after conversion is expressed using XML (Extensible Markup Language). XML is a format that can express data and its structure at the same time using a marker character string called a tag.

図5は、変換前ソースプログラムから変換前ソースデータモデルへの変換の一例を示す説明図である。同図に示すように、変換前モデル生成部320は、変換前ソースデータモデル40としてprogramタグを作成し、そのname属性として変換前ソースプログラム30のプログラム名である”PG1”を設定し、field属性としてこのモデルのIDである”1”を設定する。   FIG. 5 is an explanatory diagram showing an example of conversion from a pre-conversion source program to a pre-conversion source data model. As shown in the figure, the pre-conversion model generation unit 320 creates a program tag as the pre-conversion source data model 40, sets “PG1” as the program name of the pre-conversion source program 30 as its name attribute, and field. “1” which is the ID of this model is set as an attribute.

そして、programタグの要素としてdata_divisionタグ41を作成し、そこに変換前ソースプログラム30のデータ部31の解析結果を格納する。変数Aの定義31aは、ソースプログラムAに定義された内容をAとして定義するというものであるので、このソースプログラムAの内容も参照してその情報も格納する。こうしてdata_divisionタグ41の要素として追加されたdata_definitionタグ41aは、具体的には、変数Aが”1”というIDで識別される変数であって、fieldが”100”であるプログラムファイルの1行目に定義されたレベル1の変数であることを示している。   Then, a data_division tag 41 is created as an element of the program tag, and the analysis result of the data part 31 of the source program 30 before conversion is stored therein. Since the variable A definition 31a defines the content defined in the source program A as A, the content of the source program A is also referred to and stored. Specifically, the data_definition tag 41a added as an element of the data_division tag 41 is a variable identified by an ID having a variable A of “1”, and the first line of a program file having a field of “100”. Indicates a variable of level 1 defined in FIG.

この例では、変数AがCOPY句になっており、定義が別ファイルにあるためこのような表現になっている。もし、変数Aが”01 A PIC X(2).”のように同一ファイル中で定義されていれば、data_definitionタグ41aは、変数Aが2桁の文字列であることを示す表現になる。   In this example, the variable A is a COPY clause, and the definition is in a separate file, so this is the expression. If the variable A is defined in the same file as “01 A PIC X (2).”, The data_definition tag 41a becomes an expression indicating that the variable A is a two-digit character string.

さらに、変換前モデル生成部320は、programタグの要素としてprocedure_divisionタグ42を作成し、そこに変換前ソースプログラム30のプログラム部32の解析結果を格納する。   Further, the pre-conversion model generation unit 320 creates a procedure_division tag 42 as an element of the program tag, and stores the analysis result of the program unit 32 of the pre-conversion source program 30 therein.

この例では、MOVE文32aを解析し、その解析結果をprocedure_divisionタグ42の要素であるstatementタグ42aとして格納している。statementタグ42aは、具体的には、命令文の種類がMOVE文であり、変更前ソースプログラム30における記述位置は20行目であり、MOVE文の転記元は”1”というIDで識別される変数Aで、転記先が”2”というIDで識別される変数Bであることを示している。   In this example, the MOVE sentence 32 a is analyzed, and the analysis result is stored as a statement tag 42 a that is an element of the procedure_division tag 42. Specifically, in the statement tag 42a, the type of the instruction statement is a MOVE statement, the description position in the source program 30 before change is the 20th line, and the transfer source of the MOVE statement is identified by the ID “1”. The variable A indicates that the transfer destination is the variable B identified by the ID “2”.

なお、プログラムの変換に際しては、変数の利用状況などをプログラム全体に亘って広範に調べることが必要になるため、関連するプログラムを一括して変換する必要があるが、変換対象となるプログラムの数は数百から数千におよぶことが珍しくない。このため、変換対象のプログラムを1本追加することが必要になった場合であっても、このように大量のプログラムを再度構文解析してソースデータモデル化するために大量の処理時間が必要となる。   When converting a program, it is necessary to examine the usage status of variables over the entire program. Therefore, it is necessary to convert related programs at once, but the number of programs to be converted It is not uncommon to range from hundreds to thousands. For this reason, even when it is necessary to add one program to be converted, a large amount of processing time is required to parse a large amount of programs again and make a source data model. Become.

そこで、変換前モデル生成部320は、生成した変換前ソースデータモデルをソースデータモデル記憶部410に記憶し、新規もしくは更新されたソースプログラムが変換対象として指定された場合以外は、ここに記憶された変換済みのソースデータモデルを読み出して出力する。   Therefore, the pre-conversion model generation unit 320 stores the generated pre-conversion source data model in the source data model storage unit 410, and stores it here unless a new or updated source program is designated as a conversion target. Read and output the converted source data model.

変換後モデル生成部330は、変換前ソースデータモデルをルール記憶部420の情報に基づいて変換し、変換後ソースデータモデルを生成する処理部であり、図1の変換エンジンに相当する。変換前ソースデータモデルは、COBOLの言語仕様に基づいたモデルであるのに対し、変換後ソースデータモデルは、Java(登録商標)の言語仕様に基づいたモデルとなる。   The post-conversion model generation unit 330 is a processing unit that converts the pre-conversion source data model based on information in the rule storage unit 420 and generates a post-conversion source data model, and corresponds to the conversion engine of FIG. The source data model before conversion is a model based on the language specification of COBOL, whereas the source data model after conversion is a model based on the language specification of Java (registered trademark).

変換後モデル生成部330の基本的な処理内容は、変換前ソースデータモデルのうち要確認ルールDB421の情報に合致した部分を要確認タグに置き換え、その他の部分を変換ルールDB423の情報に基づいてCOBOLのモデルからJava(登録商標)のモデルに変換するというものである。COBOLのモデルからJava(登録商標)のモデルへ変換するにあたってはいくつか問題がある。   The basic processing content of the post-conversion model generation unit 330 is based on the information in the conversion rule DB 423, replacing the part of the pre-conversion source data model that matches the information in the confirmation rule DB 421 with a confirmation tag. Conversion from a COBOL model to a Java (registered trademark) model. There are several problems in converting from a COBOL model to a Java (registered trademark) model.

ひとつめの問題は、データ型の問題である。たとえば、COBOLの文字列型には桁数の概念があり、変数Xが4桁の文字列型の変数で、変数Yが2桁の文字列型の変数だとすると、この両者に同じ“ABC”という値を代入して比較した場合、変数Xと変数Yは桁数の違いのために一致しないと判定される。   The first problem is a data type problem. For example, the COBOL character string type has the concept of the number of digits. If the variable X is a four-digit character string type variable and the variable Y is a two-digit character string type variable, the same “ABC” is used for both. When a comparison is made by substituting values, it is determined that the variables X and Y do not match due to the difference in the number of digits.

一方、Java(登録商標)で標準的な文字列型であるStringクラスには桁数の概念がないので、Stringクラスの変数XとYに同じ“ABC”という値を代入して比較した場合、両者は一致すると判定される。   On the other hand, since there is no concept of the number of digits in the String class that is a standard character string type in Java (registered trademark), when the same value “ABC” is substituted into the variables X and Y of the String class, Both are determined to match.

このようなデータ型の問題を解決するため、動作が同じになるように変換時に比較処理等を置き換えることも可能であるが、変換後の処理が複雑化してしまう可能性があり、保守性の上で好ましくない。そこで、本実施例にかかるプログラム変換においては、このようなデータ型の問題を解決するため、変換後のデータ型のように振る舞い、かつ、変換前のデータ型の特徴を反映したラッパー型をJava(登録商標)側で用意して、このラッパー型を用いてプログラムの変換をおこなうこととした。かかるラッパー型に変換前の言語の機能をもたせれば、変換前の型をラッパー型に置き換えるだけの単純な変換で等価な処理を実現でき、平易で保守性の高いプログラムを得ることができる。   In order to solve such a data type problem, it is possible to replace the comparison processing at the time of conversion so that the operation is the same, but the processing after conversion may be complicated, and maintainability Unfavorable above. Therefore, in the program conversion according to the present embodiment, in order to solve such a data type problem, a wrapper type that behaves like the data type after conversion and reflects the characteristics of the data type before conversion is set to Java. Prepared on the (registered trademark) side and converted the program using this wrapper type. If such a wrapper type has the function of the language before conversion, equivalent processing can be realized by simple conversion by simply replacing the type before conversion with the wrapper type, and a simple and highly maintainable program can be obtained.

もうひとつの問題は、変数へのアクセス方法の問題である。オブジェクト指向においては、クラス内の変数へ外部から直接アクセスすることは、オブジェクト指向の基本的な考え方であるデータ隠蔽の観点から好ましくないとされており、通常はメソッドを経由して変数にアクセスする方式がとられる。しかし、COBOLにはこのような慣習はないため、従来の単純な変換方法では、変数に直接アクセスするようなJava(登録商標)らしくないプログラムを生成する方式か、または、全ての変数に対してアクセスメソッドを生成する方式が取られていた。   Another problem is how to access variables. In object orientation, direct access to variables in a class from the outside is considered undesirable from the viewpoint of data hiding, which is the basic concept of object orientation, and usually a method of accessing variables via methods. Is taken. However, since there is no such convention in COBOL, the conventional simple conversion method generates a program that does not look like Java (registered trademark) that directly accesses variables, or accesses all variables. The method of generating the method was taken.

そこで、本実施例にかかるプログラム変換においては、変換前ソースデータモデルから変数の参照・更新関係を導出し、変換時に必要となるアクセスメソッドだけを生成し、変数への直接のアクセスをこれらのアクセスメソッドを経由したアクセスに置き換えることとした。これにより、必要かつ十分なアクセスメソッドだけを作成するため、従来の方法に比べて保守性の高いJava(登録商標)プログラムを得ることができる。   Therefore, in the program conversion according to the present embodiment, the reference / update relationship of variables is derived from the source data model before conversion, only the access methods required at the time of conversion are generated, and direct access to the variables is accessed. Replaced with access via method. Thereby, since only necessary and sufficient access methods are created, it is possible to obtain a Java (registered trademark) program having higher maintainability than the conventional method.

図6は、変換前ソースデータモデルから変換後ソースデータモデルへの変換の一例を示す説明図である。同図に示すように、変換後モデル生成部330は、変換後ソースデータモデル50としてclassタグを作成し、そのname属性とclassid属性に変換前ソースデータモデル40のprogramタグのname属性とfield属性の値を設定する。   FIG. 6 is an explanatory diagram illustrating an example of conversion from a source data model before conversion to a source data model after conversion. As shown in the figure, the post-conversion model generation unit 330 creates a class tag as the post-conversion source data model 50, and the name attribute and field attribute of the program tag of the pre-conversion source data model 40 in its name attribute and classid attribute. Set the value of.

そして、classタグの要素としてfieldタグ53を作成し、そこに変換前ソースデータモデル40のdata_divisionタグ41の内容をルール記憶部420の情報を使って変換した結果を格納する。   Then, a field tag 53 is created as an element of the class tag, and the result of converting the contents of the data_division tag 41 of the source data model 40 before conversion using information in the rule storage unit 420 is stored therein.

data_definitionタグ41aは、変数の型が外部のファイルで定義されていることを示しているので、他ファイルで定義されるクラスの変数として変換し、その情報をfieldタグ53の要素であるfield_definitionタグ53aとして格納する。field_definitionタグ53aは、具体的には、変数aが”1”というIDで識別される変数であって、この変数のクラスはclassidが”100”のクラスであることを示している。   The data_definition tag 41a indicates that the type of the variable is defined in an external file. Therefore, the data_definition tag 41a is converted as a variable of a class defined in another file, and the information is converted into a field_definition tag 53a that is an element of the field tag 53. Store as. The field_definition tag 53a is specifically a variable identified by the variable a having an ID of “1”, and the class of this variable indicates that the classid is “100”.

ここで、変数名を大文字から小文字に変換しているのは、Java(登録商標)では変数は通常小文字で記述されるのに合わせるためであり、一般のJava(登録商標)プログラマに見やすいプログラムを生成するための処理である。   Here, the reason for converting the variable name from uppercase to lowercase is to match that the variable is normally written in lowercase in Java (registered trademark), and a program that is easy to read for general Java (registered trademark) programmers. It is a process for generating.

さらに、変換後モデル生成部330は、classタグの要素としてmethodタグ54を作成し、そこに変換前ソースデータモデル40のprocedure_divisionタグ42の内容をルール記憶部420の情報を使って変換した結果を格納する。   Further, the post-conversion model generation unit 330 creates a method tag 54 as an element of the class tag, and converts the contents of the procedure_division tag 42 of the pre-conversion source data model 40 using the information in the rule storage unit 420. Store.

この例では、変数の内容の転記の処理を変換してmethodタグ54の要素であるstatementタグ54aとして格納している。statementタグ42aは、代入により変数の内容の転記をおこなうことを意味しているが、既に説明したようにJava(登録商標)ではクラス間で変数を直接アクセスすることはしない慣習があるため、アクセスメソッドの呼び出しにより変数の内容の転記をおこなう処理に置き換えている。具体的には、転記先の変数bのsetメソッドを呼び出し、このメソッドの引数として転記元の変数aを渡すという処理に置き換えをおこなっている。   In this example, the variable content transfer process is converted and stored as a statement tag 54 a that is an element of the method tag 54. The statement tag 42a means that the contents of the variable are transferred by assignment. However, as described above, in Java (registered trademark), there is a convention that a variable is not directly accessed between classes. It is replaced with the process of posting the variable contents by calling. Specifically, the processing is replaced with a process of calling the set method of the transfer destination variable b and passing the transfer source variable a as an argument of the method.

なお、このsetメソッドの実体は、クラスBの変換後ソースデータモデル51に挿入する。クラスBの変換後ソースデータモデル51は、変換前ソースプログラム30においてCOPY句により取り込まれていたソースプログラムを変換して生成したモデルであり、当初は変数の型定義のみを含んでいたものである。Java(登録商標)等のオブジェクト指向言語においては、変数の定義と、定義された変数を操作する処理とを一つのクラスに収める必要があるため、setメソッドの実体の追加は、このモデルに対しておこなう。   The entity of the set method is inserted into the converted source data model 51 of class B. The post-conversion source data model 51 of class B is a model generated by converting the source program incorporated in the COPY phrase in the pre-conversion source program 30, and initially includes only variable type definitions. . In an object-oriented language such as Java (registered trademark), the definition of a variable and the process for operating the defined variable need to be contained in one class. Let's do it.

setメソッドは、変数にアクセスするためのメソッドであるためfieldタグ55の要素であるfield_accessタグ56として追加する。ここで、変換元のstatementタグ42aの処理は集団項目へ値を転記する処理であり、要確認ルールDB421のルールの一つに該当する。このため、statementタグ42aの処理内容については変換ルールDB423に基づいた変換はおこなわずに、空のsetメソッド56aを作成し、そこに要確認ルールDB421に基づいて要確認タグ56bを挿入する。   Since the set method is a method for accessing a variable, it is added as a field_access tag 56 that is an element of the field tag 55. Here, the process of the conversion source statement tag 42a is a process of transcribing a value to the group item, and corresponds to one of the rules of the confirmation required rule DB 421. For this reason, the processing content of the statement tag 42a is not converted based on the conversion rule DB 423, but an empty set method 56a is created, and a required check tag 56b is inserted into the empty set method 56a based on the required check rule DB 421.

要確認タグ56bは、具体的にはこの場所に埋め込むべき処理は変換元のプログラム”PG1.cob”の20行目に記述されており、この部分を変換する開発者の手助けとして”TODO−1”というコメントIDが示すメッセージを表示する必要があるということを意味している。   For the confirmation tag 56b, specifically, the process to be embedded in this place is described in the 20th line of the conversion source program “PG1.cob”, and “TODO-1” is used to assist the developer who converts this part. This means that it is necessary to display the message indicated by the comment ID “”.

このようにして変換後モデル生成部330は、実際に必要なアクセスメソッドのみを作成する。使用されないアクセスメソッドが作成されることはないので、変換後のプログラムには不要なアクセスメソッドが存在しないことになり、高い保守性を得ることができる。   In this way, the post-conversion model generation unit 330 creates only access methods that are actually necessary. Since an access method that is not used is not created, an unnecessary access method does not exist in the converted program, and high maintainability can be obtained.

なお、クラスBの変換後ソースデータモデル51のfield_definitionタグ55aの変換元の変数は文字型である。既に述べたように、COBOLの文字列型には桁数の概念があり、変換後のJava(登録商標)のプログラムにおいては桁数の概念をもったStringクラスのラッパークラスに変換する必要がある。このため、field_definitionタグ55aにsize属性として変換元の桁数を保持させている。   The source variable of the field_definition tag 55a of the post-conversion source data model 51 of class B is a character type. As already described, the COBOL character string type has the concept of the number of digits, and in the Java (registered trademark) program after conversion, it is necessary to convert it into a wrapper class of the String class having the concept of the number of digits. . For this reason, the number of digits of the conversion source is held in the field_definition tag 55a as a size attribute.

ソースプログラム生成部340は、変換後ソースデータモデルから要確認箇所付き変換後ソースプログラムを生成する処理部であり、図1の出力部に相当する。要確認箇所付き変換後ソースプログラムは、変換後ソースデータモデルの要確認タグをコメントとして出力したソースプログラムである。   The source program generation unit 340 is a processing unit that generates a post-conversion source program with a confirmation part from the post-conversion source data model, and corresponds to the output unit of FIG. The post-conversion source program with the confirmation required part is a source program that outputs the confirmation necessary tag of the converted source data model as a comment.

図7は、変換後ソースデータモデルから変換後ソースプログラムへの変換の一例を示す説明図である。同図に示すように、ソースプログラム生成部340は、変換後ソースデータモデル50のfield_definitionタグ53aを変数定義60aに変換し、statementタグ54aをset文60cに変換する等して変換後ソースプログラム60を生成する。   FIG. 7 is an explanatory diagram showing an example of conversion from the converted source data model to the converted source program. As shown in the figure, the source program generation unit 340 converts the field_definition tag 53a of the converted source data model 50 into a variable definition 60a, converts the statement tag 54a into a set statement 60c, and so on. Is generated.

また、変換後ソースデータモデル51を変換して変換後ソースプログラム61を生成する。変換後ソースデータモデル51には要確認タグ56bが含まれるため、要確認コメントDB422を参照してcomment属性に設定されたコメントIDに該当するコメントを取得し、このコメントと、ここに埋め込むべき処理がどの変換前ソースプログラムのどこに存在するかを示す情報とを所定の位置にコメントとして出力する。文字型の変数を定義するfield_definitionタグ55aについては、Stringクラスの変数としてではなく、桁数の概念をもったBizStringクラスの変数として変換する。   The converted source data model 51 is converted to generate a converted source program 61. Since the post-conversion source data model 51 includes a confirmation tag 56b, the comment corresponding to the comment ID set in the comment attribute is acquired with reference to the confirmation comment DB 422, and this comment and the process to be embedded here Information indicating where in the pre-conversion source program exists as a comment at a predetermined position. The field_definition tag 55a that defines a character type variable is converted not as a String class variable but as a BizString class variable having the concept of the number of digits.

要確認箇所変換部350は、要確認箇所付き変換後ソースプログラムにコメントの形で埋め込まれた要確認箇所を適切な記述に置き換えて変換後ソースプログラムを完成させる処理部である。本実施例においては、要確認箇所変換部350は、開発者が要確認箇所付き変換後ソースプログラムを編集するための編集画面として実装される。開発者は、図8に示したガイドを参照して編集をおこなう。   The required part conversion unit 350 is a processing unit that replaces the required confirmation part embedded in the form of a comment in the converted source program with the required part with an appropriate description and completes the converted source program. In the present embodiment, the confirmation required part conversion unit 350 is implemented as an editing screen for the developer to edit the converted source program with the confirmation necessary part. The developer performs editing with reference to the guide shown in FIG.

型変換部360は、変換後ソースプログラムに含まれるラッパークラスを一般的なクラスに置き換える処理部である。既に説明したように、COBOLとJava(登録商標)のデータ型の違いを吸収するために、本実施例に係るプログラム変換は、COBOLのデータ型をそのデータ型を模したJava(登録商標)のラッパークラスに置き換えることがある。   The type conversion unit 360 is a processing unit that replaces the wrapper class included in the converted source program with a general class. As described above, in order to absorb the difference between the data types of COBOL and Java (registered trademark), the program conversion according to the present embodiment uses the Java (registered trademark) model that imitates the data type of COBOL. May be replaced with a wrapper class.

しかし、たとえばCOBOLの文字列型についてみると、文字列同士の比較や暗黙の桁落としなどがおこなわれていなければラッパークラスではなく文字列をあつかう最も一般的なクラスであるStringクラスに変換しても問題はおこらない。ラッパークラスは、変換後のプログラムの保守性を大きく損なうものではないが、より普遍的なクラスを用いた方が可読性が高まる。   However, for example, in the case of the COBOL character string type, if there is no comparison between strings or implicit digit reduction, it is converted to the String class, which is the most common class that handles character strings instead of the wrapper class. No problem. The wrapper class does not greatly impair the maintainability of the converted program, but the readability is enhanced by using a more universal class.

そこで、型変換部360は、ソースデータモデル記憶部410に記憶されたモデルを参照し、ラッパークラスでなく通常のクラスの変数としても問題ないと判断した変数については、通常のクラスの変数へ変換する。図9は、型変換部による型変換の一例を示す説明図である。同図に示すように、BizStringクラスを用いた変数定義64aは、比較に用いられていないと判断され、一般的なStringクラスを用いた変数定義71aに変換されている。   Therefore, the type conversion unit 360 refers to the model stored in the source data model storage unit 410, and converts a variable that is determined to be a normal class variable instead of a wrapper class to a normal class variable. To do. FIG. 9 is an explanatory diagram illustrating an example of type conversion by the type conversion unit. As shown in the figure, the variable definition 64a using the BizString class is determined not to be used for comparison, and is converted into a variable definition 71a using a general String class.

ルール抽出部370は、要確認箇所変換部350でおこなわれる編集内容から頻出するパターンを抜き出し、それを変換ルールDB423にフィードバックして以降の変換処理を自動化して効率化を図るための処理部である。ルール抽出部370は、たとえば、要確認箇所に埋め込まれた処理の類似度を測定し、頻出する類似パターンを抽出する。   The rule extraction unit 370 is a processing unit for extracting a pattern that frequently appears from the editing contents performed by the confirmation point conversion unit 350 and feeding it back to the conversion rule DB 423 to automate the subsequent conversion process and improve efficiency. is there. The rule extraction unit 370 measures, for example, the degree of similarity of the process embedded in the confirmation required portion, and extracts a similar pattern that appears frequently.

図10は、フィードバックしたルールによるプログラム変換の一例を示す説明図である。同図は、日付関連のデータを変換するルールをフィードバックした場合の例を示している。COBOLにおいて、年月日は、しばしばYYMMDDのような名前の8桁の数字からなる変数として定義され、さらにこの変数の記憶領域が分割されてYY、MM、DDのような名前の変数が定義され、それぞれ年部分、月部分、日付部分として利用される。   FIG. 10 is an explanatory diagram showing an example of program conversion based on the fed back rules. This figure shows an example in which a rule for converting date-related data is fed back. In COBOL, the date is often defined as a variable consisting of an 8-digit number with a name such as YYMMDD, and the storage area of this variable is further divided to define variables with names such as YY, MM, and DD. , Used as year, month and date respectively.

このような日付関連の集団項目は様々なプログラム中に存在し、これをいちいち手作業で置き換えていたのでは作業コストが高くついてしまう。BizDateのような汎用的なクラスを用意し、このクラスを用いたプログラム変換を自動におこなうように要確認ルールDB421と変換ルールDB423を設定することでプログラム変換作業を効率化することができる。   Such date-related group items exist in various programs, and if they are manually replaced one by one, the work cost will be high. By preparing a general-purpose class such as BizDate and setting the confirmation rule DB 421 and the conversion rule DB 423 so as to automatically perform program conversion using this class, the program conversion work can be made more efficient.

作業見積り部380は、要確認部の変換に要する時間を見積る処理部である。ソースプログラム生成部340にて出力された要確認箇所付きソースプログラムに大量の要確認箇所が含まれていると、プログラムの変換に要する作業時間が、プログラムを一から開発し直した場合と同等になってしまう場合がある。   The work estimation unit 380 is a processing unit that estimates the time required for conversion by the confirmation required unit. If the source program with required confirmation points output by the source program generation unit 340 contains a large number of necessary confirmation points, the work time required for program conversion is the same as when the program is re-developed from scratch. It may become.

このような場合には、より保守性の高いプログラムを得ることができる一からの開発を選択した方が賢明といえる。そこで、作業見積り部380は、ソースデータモデル記憶部410と要確認ルールDB421の情報をもちいてどのような要確認箇所がどのくらいの数発生するかを見積り、プログラム変換の対応方法の判断材料を提供する。   In such a case, it is wise to choose development from scratch that can provide a more maintainable program. Therefore, the work estimation unit 380 uses the information in the source data model storage unit 410 and the confirmation rule DB 421 to estimate how many confirmation points are generated and how much to determine how to deal with program conversion. To do.

記憶部400は、ソースデータモデル記憶部410とルール記憶部420とを有する。ソースデータモデル記憶部410は、変換前モデル生成部320により生成された変換前データソースモデルと変換後モデル生成部330により生成された変換後データソースモデルとを記憶する。   The storage unit 400 includes a source data model storage unit 410 and a rule storage unit 420. The source data model storage unit 410 stores the pre-conversion data source model generated by the pre-conversion model generation unit 320 and the post-conversion data source model generated by the post-conversion model generation unit 330.

ルール記憶部420は、要確認ルールDB421と、要確認コメントDB422と、変換ルールDB423と、型ライブラリDBと424とを有する。要確認ルールDB421は、変換ルールDB423に基づいた字句変換を行わない場合についてのルールを記憶する。   The rule storage unit 420 includes a confirmation rule DB 421, a confirmation comment DB 422, a conversion rule DB 423, and a type library DB 424. The confirmation required rule DB 421 stores a rule for a case where lexical conversion based on the conversion rule DB 423 is not performed.

図11は、要確認ルールDB421のデータ構造の一例を示すデータ構造図である。同図に示すように、要確認ルールDBは、ステートメントと、条件と、対応箇所と、コメントIDという項目をもつ。ステートメントは、当該のルールが対象とする命令文を格納する。条件は、当該のルールを適用する条件を格納する。対応箇所は、当該のルールを適用する場合の要確認タグの挿入先を格納する。コメントIDは、当該のルールを適用する場合に要確認タグに埋め込むコメントIDを格納する。   FIG. 11 is a data structure diagram illustrating an example of the data structure of the confirmation rule DB 421 that is required. As shown in the figure, the confirmation required rule DB has items of a statement, a condition, a corresponding location, and a comment ID. The statement stores an imperative sentence targeted by the rule. The condition stores a condition for applying the rule. The corresponding location stores the insertion destination of the confirmation-required tag when the rule is applied. The comment ID stores a comment ID that is embedded in a confirmation required tag when the rule is applied.

要確認コメントDB422は、要確認ルールDB421のコメントIDに対応するコメントを記憶する。図12は、要確認コメントDB422のデータ構造の一例を示すデータ構造図である。同図に示すように、要確認コメントDB422は、コメントIDとコメントという項目をもつ。コメントIDは、要確認ルールDB421のコメントIDと対応する値を格納する。コメントは、要確認ルールが適用された場合に要確認箇所付きソースプログラムに埋め込まれるコメント文を格納する。なお、コメント文の#filenameおよび#lineは、ソースプログラム生成部340により、それぞれ変換前のプログラム名と変換箇所の行番号に置き換えられる。   The required comment DB 422 stores a comment corresponding to the comment ID of the required rule DB 421. FIG. 12 is a data structure diagram showing an example of the data structure of the confirmation comment DB 422 required. As shown in the figure, the required comment DB 422 has items of comment ID and comment. The comment ID stores a value corresponding to the comment ID of the confirmation required rule DB 421. The comment stores a comment sentence that is embedded in the source program with a confirmation part when the confirmation rule is applied. Note that the #filename and #line in the comment text are replaced by the source program generation unit 340 with the program name before conversion and the line number of the conversion part, respectively.

変換ルールDB423は、変換前ソースデータモデルを文法的に字句変換するためのルールを記憶する。型ライブラリDB424は、プログラム変換時に使用するラッパークラスの情報を変換元のデータ型と対で記憶する。   The conversion rule DB 423 stores rules for lexically converting the pre-conversion source data model. The type library DB 424 stores wrapper class information used at the time of program conversion in pairs with the data type of the conversion source.

次に、図3に示したプログラム変換装置100の処理手順について説明する。図13は、図3に示したプログラム変換装置100の処理手順を示すフローチャートである。   Next, the processing procedure of the program conversion apparatus 100 shown in FIG. 3 will be described. FIG. 13 is a flowchart showing a processing procedure of the program conversion apparatus 100 shown in FIG.

同図に示すように、変換前のソースプログラムを読み込んだならば(ステップS101)、そのプログラムが新規ないし更新されたものであるかどうかを確認する。プログラムが新規ないし更新されたものである場合は(ステップS102肯定)、クレンジング処理を行って変換が容易な形に修正する(ステップS103)。プログラムが新規でも更新されたものでもない場合には(ステップS102否定)、ステップS103はおこなわない。   As shown in the figure, when the source program before conversion is read (step S101), it is confirmed whether or not the program is new or updated. If the program is new or updated (Yes at Step S102), a cleansing process is performed to correct the program so that the conversion is easy (Step S103). If the program is neither new nor updated (No at Step S102), Step S103 is not performed.

そして、まだ読み込んでいないファイルが存在している場合には(ステップS104否定)、ステップS101に戻って次のソースプログラムの読み込みをおこなう。全ての変換前のソースプログラムを読み込んでいた場合は(ステップS104肯定)、変換前ソースデータモデルを生成し(ステップS105)、変換前ソースデータモデル全体を対象にして解析をおこなって変換後ソースデータモデルを作成する(ステップS106)。この変換後ソースデータモデルでは、字句変換では難解なコードとして変換されそうな部分に要確認タグが挿入される。   If there is a file that has not been read yet (No at Step S104), the process returns to Step S101 to read the next source program. If all the source programs before conversion have been read (Yes at Step S104), a source data model before conversion is generated (Step S105), the entire source data model before conversion is analyzed, and the converted source data is converted. A model is created (step S106). In this post-conversion source data model, a confirmation tag is inserted in a portion that is likely to be converted as a difficult code by lexical conversion.

そして、変換後ソースデータモデルをもとにして要確認箇所付きソースプログラムを生成する(ステップS107)。この要確認箇所付きソースプログラムでは、要確認タグの内容がコメントの形で挿入される。   Then, a source program with a confirmation required part is generated based on the converted source data model (step S107). In this source program with a confirmation part, the contents of the confirmation tag are inserted in the form of a comment.

そして、要確認箇所付きソースプログラムの要確認タグの部分に適切なコードを埋め込み(ステップS108)、必然性のないラッパークラスを通常のクラスに変換してプログラムの変換は完了する(ステップS109)。   Then, an appropriate code is embedded in the part of the confirmation tag of the source program with confirmation part required (step S108), the non-necessary wrapper class is converted into a normal class, and the conversion of the program is completed (step S109).

上述してきたように、本実施例では、変換後モデル生成部330が変換前ソースデータモデルから変換後ソースデータモデルを生成する際に、要確認ルールDB421のルールに該当する箇所は変換ルールDBを用いた字句変換はおこなわず、適切なコードを埋めるための補助情報を埋め込むように構成したので、単純な字句変換をおこなったならば複雑で可読性の低いコードが生成されそうな処理を業務知識を背景とした良質なコードで効率よく変換することができ、もって保守性の高い変換後ソースプログラムを効率よく得ることができる。   As described above, in the present embodiment, when the post-conversion model generation unit 330 generates the post-conversion source data model from the pre-conversion source data model, the part corresponding to the rule of the confirmation required rule DB 421 is the conversion rule DB. The lexical conversion used is not performed, and auxiliary information for embedding appropriate code is embedded, so if simple lexical conversion is performed, processing that is likely to generate complicated and low-readable code is acquired. It is possible to efficiently convert with high-quality code as a background, and thus it is possible to efficiently obtain a post-conversion source program with high maintainability.

(付記1)第1のプログラミング言語で記述された起点ソースプログラムを第2のプログラミング言語で記述された目的ソースプログラムに変換するプログラム変換プログラムであって、
前記起点ソースプログラムを構文解析して前記第1のプログラミング言語に基づくデータモデルを生成する変換前モデル生成手順と、
前記第1のプログラミング言語に基づくデータモデルを前記第2のプログラミング言語に基づくデータモデルへ変換するに際して、変換後のデータモデルが複雑化する可能性があることを判定する所定のルールに該当する箇所に、別手段により変換をおこなうための手掛かり情報を挿入する変換後モデル生成手順と、
前記第2のプログラミング言語に基づくデータモデルを前記第2のプログラミング言語で記述された前記目的ソースプログラムに変換するに際して、前記手掛かり情報を前記目的ソースプログラムの適切な箇所に埋め込むソースプログラム生成手順と
をコンピュータに実行させることを特徴とするプログラム変換プログラム。
(Supplementary Note 1) A program conversion program for converting a source program written in a first programming language into a target source program written in a second programming language,
A pre-conversion model generation procedure for parsing the origin source program to generate a data model based on the first programming language;
Location corresponding to a predetermined rule for determining that the converted data model may be complicated when the data model based on the first programming language is converted to the data model based on the second programming language In addition, a post-conversion model generation procedure for inserting clue information for performing conversion by another means,
When converting a data model based on the second programming language into the target source program described in the second programming language, a source program generation procedure for embedding the clue information in an appropriate portion of the target source program; A program conversion program which is executed by a computer.

(付記2)前記ソースプログラム生成手順は、前記手掛かり情報をプログラムのコメントとして前記目的ソースプログラムに埋め込むことを特徴とする付記1に記載のプログラム変換プログラム。 (Supplementary note 2) The program conversion program according to supplementary note 1, wherein the source program generation procedure embeds the clue information in the target source program as a comment of the program.

(付記3)前記ソースプログラム生成手順は、前記手掛かり情報として前記起点ソースプログラムの名称と該起点ソースプログラムのうち前記所定のルールに該当した部分の位置情報とを埋め込むことを特徴とする付記1または2に記載のプログラム変換プログラム。 (Additional remark 3) The source program generation procedure embeds the name of the starting source program and the position information of the portion corresponding to the predetermined rule in the starting source program as the clue information. 2. The program conversion program according to 2.

(付記4)前記変換後モデル生成手順は、前記起点ソースプログラムで使用されているデータ型に相当するデータ型が前記第2のプログラミング言語に存在しない場合に、前記第2のプログラミング言語により該データ型と同等の仕様をもつように事前に作成された特定化したデータ型を用いて変換をおこなうことを特徴とする付記1、2または3に記載のプログラム変換プログラム。 (Supplementary Note 4) The converted model generation procedure is performed by the second programming language when the data type corresponding to the data type used in the starting source program does not exist in the second programming language. 4. The program conversion program according to appendix 1, 2, or 3, wherein the conversion is performed using a specified data type created in advance so as to have a specification equivalent to the type.

(付記5)前記特定化したデータ型を通常用いられる汎用のデータ型に置き換えても問題ないと判断したならば、前記目的ソースプログラムに含まれる前者のデータ型を後者のデータ型に置き換える型変換手順をさらにコンピュータに実行させることを特徴とする付記4に記載のプログラム変換プログラム。 (Supplementary Note 5) If it is determined that there is no problem in replacing the specified data type with a general-purpose data type that is normally used, type conversion that replaces the former data type included in the target source program with the latter data type The program conversion program according to appendix 4, wherein the program is further executed by a computer.

(付記6)前記変換前モデル生成手順の前段階において、前記起点ソースプログラムをより変換が容易な記述に等価変換する変換前クレンジング手順をさらにコンピュータに実行させることを特徴とする付記1〜5のいずれか一つに記載のプログラム変換プログラム。 (Supplementary note 6) In the preceding stage of the pre-conversion model generation procedure, the computer further executes a pre-conversion cleansing procedure for equivalently transforming the starting source program into a description that is easier to convert. The program conversion program as described in any one.

(付記7)前記変換後モデル生成手順は、前記第2のプログラミング言語がオブジェクト指向言語である場合に、変数への実際のアクセスがあることを根拠として該変数へアクセスするためのメソッドを作成することを特徴とする付記1〜6のいずれか一つに記載のプログラム変換プログラム。 (Supplementary note 7) The post-conversion model generation procedure creates a method for accessing a variable on the basis that there is an actual access to the variable when the second programming language is an object-oriented language. The program conversion program according to any one of supplementary notes 1 to 6, characterized in that:

(付記8)前記変換前モデル生成手順により生成された前記第1のプログラミング言語に基づくデータモデルを記憶する記憶手順をさらにコンピュータに実行させ、
前記変換前モデル生成手順は、過去に変換したものと同一の起点ソースプログラムを変換対象として受け付けた場合においては、変換処理をおこなわずに、前期記憶手順により記憶された当該の変換前ソースデータモデルを取得してこれを出力することを特徴とする付記1〜7のいずれか一つに記載のプログラム変換プログラム。
(Supplementary Note 8) A computer further executes a storage procedure for storing a data model based on the first programming language generated by the pre-conversion model generation procedure,
In the pre-conversion model generation procedure, when the same starting source program as the one converted in the past is accepted as a conversion target, the conversion source data model stored in the previous storage procedure is stored without performing the conversion process. The program conversion program according to any one of appendices 1 to 7, wherein the program conversion program is characterized in that

(付記9)前記変換前モデル生成手順により生成された前記第1のプログラミング言語に基づくデータモデルに基づいて前記目的ソースプログラム埋め込まれる前記手掛かり情報の数を手掛かり情報の種類別に集計する作業見積り手順をさらにコンピュータに実行させることを特徴とする付記1〜8のいずれか一つに記載のプログラム変換プログラム。 (Additional remark 9) The work estimation procedure which totals the number of the said clue information embedded in the said target source program according to the kind of clue information based on the data model based on the said 1st programming language produced | generated by the said pre-conversion model production | generation procedure. The program conversion program according to any one of appendices 1 to 8, further causing the computer to execute the program.

(付記10)前記目的ソースプログラムの前記手掛かり情報部分に追記された処理の記述から変換ルールの抽出をおこなうルール抽出手順をさらにコンピュータに実行させることを特徴とする付記1〜9のいずれか一つに記載のプログラム変換プログラム。 (Supplementary note 10) Any one of Supplementary notes 1 to 9, further causing a computer to execute a rule extraction procedure for extracting a conversion rule from a description of a process added to the clue information portion of the target source program Program conversion program described in 1.

(付記11)第1のプログラミング言語で記述された起点ソースプログラムを第2のプログラミング言語で記述された目的ソースプログラムに変換するプログラム変換装置であって、
前記起点ソースプログラムを構文解析して前記第1のプログラミング言語に基づくデータモデルを生成する変換前モデル生成手段と、
前記第1のプログラミング言語に基づくデータモデルを前記第2のプログラミング言語に基づくデータモデルへ変換するに際して、変換後のデータモデルが複雑化する可能性があることを判定する所定のルールに該当する箇所に、別手段により変換をおこなうための手掛かり情報を挿入する変換後モデル生成手段と、
前記第2のプログラミング言語に基づくデータモデルを前記第2のプログラミング言語で記述された前記目的ソースプログラムに変換するに際して、前記手掛かり情報を前記目的ソースプログラムの適切な箇所に埋め込むソースプログラム生成手段と
を備えたことを特徴とするプログラム変換装置。
(Supplementary note 11) A program conversion device for converting a source program written in a first programming language into a target source program written in a second programming language,
Pre-conversion model generation means for parsing the starting source program to generate a data model based on the first programming language;
Location corresponding to a predetermined rule for determining that the converted data model may be complicated when the data model based on the first programming language is converted to the data model based on the second programming language In addition, after-conversion model generation means for inserting clue information for performing conversion by another means,
Source program generation means for embedding the clue information in an appropriate portion of the target source program when converting a data model based on the second programming language into the target source program described in the second programming language; A program conversion apparatus comprising:

(付記12)第1のプログラミング言語で記述された起点ソースプログラムを第2のプログラミング言語で記述された目的ソースプログラムに変換するプログラム変換方法であって、
前記起点ソースプログラムを構文解析して前記第1のプログラミング言語に基づくデータモデルを生成する変換前モデル生成工程と、
前記第1のプログラミング言語に基づくデータモデルを前記第2のプログラミング言語に基づくデータモデルへ変換するに際して、変換後のデータモデルが複雑化する可能性があることを判定する所定のルールに該当する箇所に、別工程により変換をおこなうための手掛かり情報を挿入する変換後モデル生成工程と、
前記第2のプログラミング言語に基づくデータモデルを前記第2のプログラミング言語で記述された前記目的ソースプログラムに変換するに際して、前記手掛かり情報を前記目的ソースプログラムの適切な箇所に埋め込むソースプログラム生成工程と
を含んだことを特徴とするプログラム変換方法。
(Supplementary note 12) A program conversion method for converting an origin source program described in a first programming language into a target source program described in a second programming language,
A pre-conversion model generation step of parsing the origin source program to generate a data model based on the first programming language;
Location corresponding to a predetermined rule for determining that the converted data model may be complicated when the data model based on the first programming language is converted to the data model based on the second programming language In addition, a post-conversion model generation process for inserting clue information for performing the conversion in a separate process,
A source program generation step of embedding the clue information in an appropriate portion of the target source program when converting a data model based on the second programming language into the target source program described in the second programming language; The program conversion method characterized by including.

以上のように、本発明にかかるプログラム変換プログラム、プログラム変換装置およびプログラム変換方法は、プログラム言語の変換に有用であり、特に、変換結果として保守性の高いソースプログラムが必要なプログラム変換に適している。   As described above, the program conversion program, the program conversion apparatus, and the program conversion method according to the present invention are useful for program language conversion, and are particularly suitable for program conversion that requires a highly maintainable source program as a conversion result. Yes.

本実施例に係る変換方式を説明するための説明図である。It is explanatory drawing for demonstrating the conversion system which concerns on a present Example. 本実施例に係るプログラム変換方式によるプログラム変換の一例を示すための説明図である。It is explanatory drawing for showing an example of the program conversion by the program conversion system based on a present Example. 本実施例に係るプログラム変換装置の構成を示す機能ブロック図である。It is a functional block diagram which shows the structure of the program conversion apparatus which concerns on a present Example. 変換前クレンジングの一例を示す説明図である。It is explanatory drawing which shows an example of the cleansing before conversion. 変換前ソースプログラムから変換前ソースデータモデルへの変換の一例を示す説明図である。It is explanatory drawing which shows an example of the conversion from the source program before conversion to the source data model before conversion. 変換前ソースデータモデルから変換後ソースデータモデルへの変換の一例を示す説明図である。It is explanatory drawing which shows an example of the conversion from the source data model before conversion to the source data model after conversion. 変換後ソースデータモデルから変換後ソースプログラムへの変換の一例を示す説明図である。It is explanatory drawing which shows an example of the conversion from the source data model after conversion to the source program after conversion. 要確認タグ変換ルールガイドの一例である。It is an example of a confirmation tag conversion rule guide required. 型変換部による型変換の一例を示す説明図である。It is explanatory drawing which shows an example of the type conversion by a type conversion part. フィードバックしたルールによるプログラム変換の一例を示す説明図である。It is explanatory drawing which shows an example of the program conversion by the rule which fed back. 要確認ルールDBのデータ構造の一例を示すデータ構造図である。It is a data structure figure which shows an example of the data structure of confirmation required DB. 要確認コメントDBのデータ構造の一例を示すデータ構造図である。It is a data structure figure which shows an example of the data structure of confirmation required DB. 図3に示したプログラム変換装置の処理手順を示すフローチャートである。It is a flowchart which shows the process sequence of the program conversion apparatus shown in FIG. 従来のプログラミング変換方式を説明するための説明図である。It is explanatory drawing for demonstrating the conventional programming conversion system.

符号の説明Explanation of symbols

10 ソースプログラム
20 クレンジング後ソースプログラム
30 変換前ソースプログラム
31 データ部
31a 変数Aの定義
31b 変数Bの定義
32 プログラム部
32a MOVE文
40 変換前ソースデータモデル
41 data_divisionタグ
41a data_definitionタグ
41b data_definitionタグ
42 procedure_divisionタグ
42a statementタグ
50 変換後ソースデータモデル
51 変換後ソースデータモデル
52 変換後ソースデータモデル
53 fieldタグ
53a field_definitionタグ
53b field_definitionタグ
54 methodタグ
54a statementタグ
55 fieldタグ
55a field_definitionタグ
55b field_definitionタグ
56 field_accessタグ
56a 空のsetメソッド
56b 要確認タグ
60 変換後ソースプログラム
60a 変数定義
60b 変数定義
60c set文
61 変換後ソースプログラム
61a 変数定義
61b 変数定義
61c アクセスメソッド
62 変換後ソースプログラム
70 変換後ソースプログラム
70a 変数定義
70b 変数定義
70c set文
71 変換後ソースプログラム
71a 変数定義
71b 変数定義
71c アクセスメソッド
72 変換後ソースプログラム
80 変換前ソースプログラム
80a 年月日の定義
80b 年月日の操作
81 フィードバックなしの場合のPG1クラス
81a 年月日の定義
81b 年月日の操作
82 個別に作成される年月日クラス
83 フィードバックありの場合のPG1クラス
83a 年月日の定義
83b 年月日の操作
84 共有される年月日クラス
100 プログラム変換装置
200 ユーザインターフェース部
210 表示部
220 操作部
300 制御部
310 変換前クレンジング部
320 変換前モデル生成部(入力部)
330 変換後モデル生成部(変換エンジン)
340 ソースプログラム生成部(出力部)
350 要確認箇所変換部
360 型変換部
370 ルール抽出部
380 作業見積り部
400 記憶部
410 ソースデータモデル記憶部
420 ルール記憶部
421 要確認ルールDB
422 要確認コメントDB
423 変換ルールDB
424 型ライブラリDB
10 source program 20 source program after cleansing 30 source program before conversion 31 data part 31a definition of variable A 31b definition of variable B 32 program part 32a MOVE sentence 40 source data model before conversion 41 data_definition tag 41b data_definition tag 41b data_definition tag 41b data_definition tag 42a statement tag 50 source data model after conversion 51 source data model after conversion 52 source data model after conversion 53 field tag 53a field_definition tag 53b field_definition tag 54 method tag 54a statement tag 55 field tag 55 eld_definition tag 55b field_definition tag 56 field_access tag 56a empty set method 56b confirmation required tag 60 converted source program 60a variable definition 60b variable definition 60c set statement 61 converted source program 61a variable definition 61c post conversion method 62c variable definition 61c access method 70 Source program after conversion 70a Variable definition 70b Variable definition 70c set statement 71 Source program after conversion 71a Variable definition 71b Variable definition 71c Access method 72 Source program after conversion 80 Source program before conversion 80a Definition of date 80b Operation of date 81 PG1 class without feedback 81a Definition of year / month / day 81b Operation of year / month / day 8 2 Date class created individually 83 Class PG1 with feedback 83a Definition of year, month, day 83b Operation of year, month, day 84 Shared date class 100 Program converter 200 User interface unit 210 Display unit 220 Operation unit 300 Control unit 310 Cleansing unit before conversion 320 Model generation unit before conversion (input unit)
330 Model generator after conversion (conversion engine)
340 Source program generator (output unit)
350 Confirmation point conversion unit 360 Type conversion unit 370 Rule extraction unit 380 Work estimation unit 400 Storage unit 410 Source data model storage unit 420 Rule storage unit 421 Required rule DB
422 Comment DB required
423 Conversion rule DB
424 type library DB

Claims (6)

第1のプログラミング言語で記述された起点ソースプログラムを第2のプログラミング言語で記述された目的ソースプログラムに変換するプログラム変換プログラムであって、
前記起点ソースプログラムを構文解析して前記第1のプログラミング言語の文法に基づく前記起点ソースプログラムの構文木を生成する変換前モデル生成手順と、
第1の記憶部に記憶された、前記第1のプログラミング言語の文法に基づく構文木を前記第2のプログラミング言語の文法に基づく構文木へ変換する変換ルールに基づき、前記起点ソースプログラムの構文木を前記第2のプログラミング言語の文法に基づく構文木に変換するに際して、第2の記憶部に記憶された、階層化されたデータ型を前記変換ルールに基づく変換の対象外とする条件に基づき、前記条件に該当する箇所を含む前記起点ソースプログラムの構文木に対応する、前記第2のプログラミング言語の文法に基づく構文木に、前記変換ルールに基づく変換の対象外としたことを示す手掛かり情報を挿入する変換後モデル生成手順と、
前記第2のプログラミング言語の文法に基づく構文木を前記第2のプログラミング言語で記述された前記目的ソースプログラムに変換するに際して、前記手掛かり情報を前記目的ソースプログラムの、前記手掛り情報が挿入された前記第2のプログラミング言語の文法に基づく構文木に対応する箇所に埋め込むソースプログラム生成手順と
をコンピュータに実行させることを特徴とするプログラム変換プログラム。
A program conversion program for converting an origin source program described in a first programming language into a target source program described in a second programming language,
A pre-conversion model generation procedure for parsing the starting source program to generate a syntax tree of the starting source program based on the grammar of the first programming language;
Stored in the first storage unit, based on a syntax tree based on the grammar of the first programming language conversion rule for converting the syntax tree based on the grammar of the second programming language, the syntax tree of the origin source program Is converted into a syntax tree based on the grammar of the second programming language, based on the condition that the layered data type stored in the second storage unit is excluded from the conversion based on the conversion rule, The clue information indicating that the syntax tree based on the grammar of the second programming language corresponding to the syntax tree of the starting source program including the portion corresponding to the condition is excluded from the conversion based on the conversion rule. The post-conversion model generation procedure to be inserted,
When converting a syntax tree based on the grammar of the second programming language into the target source program described in the second programming language, the clue information of the target source program is inserted. A program conversion program for causing a computer to execute a source program generation procedure embedded in a location corresponding to a syntax tree based on the grammar of the second programming language .
前記ソースプログラム生成手順は、前記手掛かり情報をプログラムのコメントとして前記目的ソースプログラムに埋め込むことを特徴とする請求項1に記載のプログラム変換プログラム。   The program conversion program according to claim 1, wherein the source program generation procedure embeds the clue information in the target source program as a program comment. 前記ソースプログラム生成手順は、前記手掛かり情報として前記起点ソースプログラムの名称と前記起点ソースプログラム内の前記階層化されたデータ型の位置情報とを埋め込むことを特徴とする請求項1または2に記載のプログラム変換プログラム。 The source program generation procedure embeds a name of the starting source program and position information of the hierarchized data type in the starting source program as the clue information. Program conversion program. 前記変換後モデル生成手順は、前記起点ソースプログラムの構文木に含まれる、前記第1のプログラミング言語で使用されているデータ型に相当するデータ型が前記第2のプログラミング言語に存在しないデータ型については、前記第2のプログラミング言語により該データ型と同等の仕様をもつように事前に作成された特定化したデータ型に変換を行ない、  The post-conversion model generation procedure is for data types that are included in the syntax tree of the starting source program and that do not have data types corresponding to the data types used in the first programming language in the second programming language. Is converted into a specialized data type created in advance so as to have a specification equivalent to the data type by the second programming language,
前記目的ソースプログラムにおいて、前記特定化したデータ型が比較に用いられていない場合に、前記特定化したデータ型を前記第2のプログラミング言語に存在するデータ型に置き換える型変換手順をさらにコンピュータに実行させることを特徴とする請求項1、2または3に記載のプログラム変換プログラム。  In the target source program, when the specified data type is not used for comparison, the computer further executes a type conversion procedure for replacing the specified data type with a data type existing in the second programming language. The program conversion program according to claim 1, 2, or 3.
第1のプログラミング言語で記述された起点ソースプログラムを第2のプログラミング言語で記述された目的ソースプログラムに変換するプログラム変換装置であって、
前記起点ソースプログラムを構文解析して前記第1のプログラミング言語の文法に基づく前記ソースプログラムの構文木を生成する変換前モデル生成手段と、
前記第1のプログラミング言語の文法に基づく構文木を前記第2のプログラミング言語の文法に基づく構文木へ変換する変換ルールを記憶する第1の記憶部と、
階層化されたデータ型を前記変換ルールに基づく変換の対象外とする条件を記憶する第2の記憶部と、
前記第1の記憶部に記憶された前記変換ルールに基づき、前記ソースプログラムの構文木を前記第2のプログラミング言語の文法に基づく構文木へ変換するに際して、前記第2の記憶部に記憶された前記条件に該当する箇所を含む前記起点ソースプログラムの構文木に対応する、前記第2のプログラミング言語の文法に基づく構文木に、前記変換ルールに基づく変換の対象外としたことを示す手掛かり情報を挿入する変換後モデル生成手段と、
前記第2のプログラミング言語の文法に基づくデータモデルを前記第2のプログラミング言語で記述された前記目的ソースプログラムに変換するに際して、前記手掛かり情報を前記目的ソースプログラムの、前記手掛り情報が挿入された前記第2のプログラミング言語の文法に基づく構文木に対応する箇所に埋め込むソースプログラム生成手段と
を備えたことを特徴とするプログラム変換装置。
A program conversion device for converting an origin source program described in a first programming language into a target source program described in a second programming language,
Pre-conversion model generation means for parsing the starting source program to generate a syntax tree of the source program based on the grammar of the first programming language;
A first storage unit for storing a conversion rule for converting a syntax tree based on the grammar of the first programming language into a syntax tree based on the grammar of the second programming language;
A second storage unit for storing a condition that the hierarchized data type is not subject to conversion based on the conversion rule;
When the syntax tree of the source program is converted into the syntax tree based on the grammar of the second programming language based on the conversion rule stored in the first storage unit, the syntax is stored in the second storage unit. The clue information indicating that the syntax tree based on the grammar of the second programming language corresponding to the syntax tree of the starting source program including the portion corresponding to the condition is excluded from the conversion based on the conversion rule. A converted model generation means to be inserted;
When converting the data model based on the grammar of the second programming language into the target source program described in the second programming language, the clue information of the target source program is inserted with the clue information A program conversion apparatus comprising: a source program generation unit embedded in a location corresponding to a syntax tree based on the grammar of the second programming language .
第1のプログラミング言語で記述された起点ソースプログラムを第2のプログラミング言語で記述された目的ソースプログラムに変換するプログラム変換方法であって、
前記起点ソースプログラムを構文解析して前記第1のプログラミング言語の文法に基づく前記起点ソースプログラムの構文木を生成する変換前モデル生成工程と、
第1の記憶部に記憶された、前記第1のプログラミング言語の文法に基づく構文木を前記第2のプログラミング言語の文法に基づく構文木へ変換する変換ルールに基づき、前記起点ソースプログラムの構文木を前記第2のプログラミング言語の文法に基づく構文木に変換するに際して、第2の記憶部に記憶された、階層化されたデータ型を前記変換ルールに基づく変換の対象外とする条件に基づき、前記条件に該当する箇所を含む前記起点ソースプログラムの構文木に対応する、前記第2のプログラミング言語の文法に基づく構文木に、前記変換ルールに基づく変換の対象外としたことを示す手掛かり情報を挿入する変換後モデル生成工程と、
前記第2のプログラミング言語の文法に基づく構文木を前記第2のプログラミング言語で記述された前記目的ソースプログラムに変換するに際して、前記手掛かり情報を前記目的ソースプログラムの適切な箇所に埋め込むソースプログラム生成工程と
を含んだことを特徴とするプログラム変換方法。
A program conversion method for converting a source program written in a first programming language into a target source program written in a second programming language,
A pre-conversion model generation step of parsing the starting source program to generate a syntax tree of the starting source program based on the grammar of the first programming language;
Stored in the first storage unit, based on a syntax tree based on the grammar of the first programming language conversion rule for converting the syntax tree based on the grammar of the second programming language, the syntax tree of the origin source program Is converted into a syntax tree based on the grammar of the second programming language, based on the condition that the layered data type stored in the second storage unit is excluded from the conversion based on the conversion rule, The clue information indicating that the syntax tree based on the grammar of the second programming language corresponding to the syntax tree of the starting source program including the portion corresponding to the condition is excluded from the conversion based on the conversion rule. A post-conversion model generation process to be inserted;
A source program generating step of embedding the clue information in an appropriate portion of the target source program when converting a syntax tree based on the grammar of the second programming language into the target source program described in the second programming language; A program conversion method comprising: and.
JP2004187026A 2004-06-24 2004-06-24 Program conversion program, program conversion apparatus, and program conversion method Expired - Lifetime JP4724387B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2004187026A JP4724387B2 (en) 2004-06-24 2004-06-24 Program conversion program, program conversion apparatus, and program conversion method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2004187026A JP4724387B2 (en) 2004-06-24 2004-06-24 Program conversion program, program conversion apparatus, and program conversion method

Publications (2)

Publication Number Publication Date
JP2006011756A JP2006011756A (en) 2006-01-12
JP4724387B2 true JP4724387B2 (en) 2011-07-13

Family

ID=35778963

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004187026A Expired - Lifetime JP4724387B2 (en) 2004-06-24 2004-06-24 Program conversion program, program conversion apparatus, and program conversion method

Country Status (1)

Country Link
JP (1) JP4724387B2 (en)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4951416B2 (en) * 2007-06-01 2012-06-13 株式会社 日立システムアンドサービス Program verification method and program verification apparatus
JP5147626B2 (en) * 2008-09-30 2013-02-20 インターナショナル・ビジネス・マシーンズ・コーポレーション Computer system for executing program including JAVA (registered trademark) code converted from COBOL code, and method and computer program thereof
JP5293563B2 (en) * 2009-10-30 2013-09-18 新日鐵住金株式会社 Language conversion device, language conversion method and program
WO2013179486A1 (en) * 2012-06-01 2013-12-05 株式会社日立製作所 Program conversion method, program conversion system, and program
JP6239438B2 (en) * 2014-04-28 2017-11-29 東芝デジタルソリューションズ株式会社 Specification extraction device, specification extraction method and program
JP6251158B2 (en) * 2014-12-12 2017-12-20 Tis株式会社 Program conversion system
US10261767B2 (en) * 2016-09-15 2019-04-16 Talend, Inc. Data integration job conversion
JP6944838B6 (en) * 2017-08-25 2021-11-02 株式会社日立社会情報サービス Conversion device and conversion method
JP6458196B1 (en) * 2018-09-27 2019-01-23 Tis株式会社 Program conversion system, conversion program execution system, information processing system, program conversion method, conversion program execution method, and information processing method
JP6475888B1 (en) * 2018-10-05 2019-02-27 Tis株式会社 Program conversion system
JP7306026B2 (en) * 2019-04-01 2023-07-11 カシオ計算機株式会社 Program for converting program, information processing apparatus, and information processing method

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10508398A (en) * 1994-10-07 1998-08-18 タンデム コンピューターズ インコーポレイテッド Method and apparatus for converting source code from one high-level computer language to another high-level computer language
JP2000029678A (en) * 1998-05-18 2000-01-28 Ntt Communication Ware Kk Program language conversion method, device therefor and recording medium
JP2004038297A (en) * 2002-06-28 2004-02-05 Jcreation Co Ltd Program format conversion apparatus and conversion program
JP2004118374A (en) * 2002-09-25 2004-04-15 Keio Gijuku Conversion device, conversion method, conversion program and computer-readable recording medium with conversion program recorded

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH01175035A (en) * 1987-12-29 1989-07-11 Fujitsu Ltd Multi-language processing converter
JP2892351B2 (en) * 1987-12-29 1999-05-17 富士通株式会社 Source program converter
JP2675100B2 (en) * 1988-09-30 1997-11-12 株式会社日立製作所 Language converter and language conversion method
JPH04191933A (en) * 1990-11-27 1992-07-10 Hitachi Ltd Method and device for converting program language

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10508398A (en) * 1994-10-07 1998-08-18 タンデム コンピューターズ インコーポレイテッド Method and apparatus for converting source code from one high-level computer language to another high-level computer language
JP2000029678A (en) * 1998-05-18 2000-01-28 Ntt Communication Ware Kk Program language conversion method, device therefor and recording medium
JP2004038297A (en) * 2002-06-28 2004-02-05 Jcreation Co Ltd Program format conversion apparatus and conversion program
JP2004118374A (en) * 2002-09-25 2004-04-15 Keio Gijuku Conversion device, conversion method, conversion program and computer-readable recording medium with conversion program recorded

Also Published As

Publication number Publication date
JP2006011756A (en) 2006-01-12

Similar Documents

Publication Publication Date Title
US7788238B2 (en) Extensible object-modelling mechanism
EP2530583A1 (en) Computer-implemented method, system and computer program product for displaying a user interface component
CN108762743B (en) Data table operation code generation method and device
US8589877B2 (en) Modeling and linking documents for packaged software application configuration
US7444314B2 (en) Methods and apparatus for business rules authoring and operation employing a customizable vocabulary
US6951010B2 (en) Program specification generating system
US5933634A (en) Mock-up method and mock-up control system for displaying pseudo operation
US7237226B2 (en) Method and system for storing pending changes to data
JP2007034813A (en) Software manual generation system in two or more natural languages
US8387010B2 (en) Automatic software configuring system
JP4724387B2 (en) Program conversion program, program conversion apparatus, and program conversion method
Cánovas Izquierdo et al. A domain specific language for extracting models in software modernization
JPH10254689A (en) Application constitution design supporting system for client/server system
CN113971044A (en) Component document generation method, device, equipment and readable storage medium
JP2008225898A (en) Conversion device, conversion program, and conversion method
JP2010205068A (en) Software resource transition system and transition method thereof
Kalnins et al. Metamodel specialization for graphical language support
Schröpfer et al. A Generic Projectional Editor for EMF Models.
US20080270985A1 (en) Database application assembly and preparation
JP4939007B2 (en) System design support program
KR20230040516A (en) Automation system and method for extracting intermediate representation based semantics of javascript
CN113811849A (en) System and method for computer-aided computer programming
Mittelbach et al. LATEX Tagged PDF Feasibility Evaluation
JP2001273125A (en) Method and system for automatically generating source program, and program recording medium therefor
EP4261678A1 (en) Generation of a technical instruction

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20070518

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20100317

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100810

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20101012

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20110405

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20110411

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140415

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4724387

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150