(57)【要約】【課題】ある言語のプログラムソースを他言語のプログラムソースに変換するときに、非互換である記述を変換する。【解決手段】プログラムソース整形手段２は、コンパイルリスト１を入力し、整形後プログラムソース４を出力するとともに、コンパイルリスト１中のコピー参照記述の元ソース名と開始行および終了行とをコピー参照記述記録領域３に記録する。プログラムソース変換手段５は、整形後プログラムソース４を入力し、ターゲットプログラムソース６に変換する。プログラムソース切り出し手段７は、ターゲットプログラムソース６を入力し、コピー参照記述記録領域３を参照して、コピー参照記述部分を参照プログラムソース９として切り取って出力し、コピー参照記述以外の部分を最終プログラムソース８として出力する。【選択図】図１
2005038316.tif 000002
【特許請求の範囲】
【請求項１】
コンパイルリストを入力し整形後プログラムソースを出力するとともに、前記コンパイルリスト中のコピー参照記述の元ソース名と開始行および終了行とをコピー参照記述記録領域に記録するプログラムソース整形手段と、
前記整形後プログラムソースを入力しターゲットプログラムソースに変換するプログラムソース変換手段と、
前記ターゲットプログラムソースを入力し前記コピー参照記述記録領域を参照して最終プログラムソースを出力するプログラムソース切り出し手段と
を有することを特徴とするプログラムソース変換方式。
【請求項２】
コンパイルリストを入力し整形後プログラムソースを出力するとともに、前記コンパイルリスト中のコピー参照記述の元ソース名と開始行および終了行とをコピー参照記述記録領域に記録するプログラムソース整形手段と、
前記整形後プログラムソースを入力しターゲットプログラムソースに変換するプログラムソース変換手段と、
前記ターゲットプログラムソースを入力し前記コピー参照記述記録領域を参照してコピー参照記述部分を参照プログラムソースとして切り取って出力し、コピー参照記述以外の部分を最終プログラムソースとして出力するプログラムソース切り出し手段と
を有することを特徴とするプログラムソース変換方式。
【請求項３】
ある言語のプログラムソースを他言語のプログラムソースに変換するときに、非互換である記述を変換するために、そのプログラムのコンパイルリストを元に変換を行うことを特徴とするプログラムソース変換方法。
【請求項４】
プログラムソース整形手段により、コンパイルリストを入力し整形後プログラムソースを出力するとともに、前記コンパイルリスト中のコピー参照記述の元ソース名と開始行および終了行とをコピー参照記述記録領域に記録する工程と、
プログラムソース変換手段により、前記整形後プログラムソースを入力してターゲットプログラムソースに変換する工程と、
プログラムソース切り出し手段により、前記ターゲットプログラムソースを入力し前記コピー参照記述記録領域を参照して最終プログラムソースを出力する工程と
を含むことを特徴とするプログラムソース変換方法。
【請求項５】
プログラムソース整形手段により、コンパイルリストを入力し整形後プログラムソースを出力するとともに、前記コンパイルリスト中のコピー参照記述の元ソース名と開始行および終了行とをコピー参照記述記録領域に記録する工程と、
プログラムソース変換手段により、前記整形後プログラムソースを入力してターゲットプログラムソースに変換する工程と、
プログラムソース切り出し手段により、前記ターゲットプログラムソースを入力し前記コピー参照記述記録領域を参照してコピー参照記述部分を参照プログラムソースとして切り取って出力し、コピー参照記述以外の部分を最終プログラムソースとして出力する工程と
を含むことを特徴とするプログラムソース変換方法。
【請求項６】
コンピュータを、コンパイルリストを入力し整形後プログラムソースを出力するとともに、前記コンパイルリスト中のコピー参照記述の元ソース名と開始行および終了行とをコピー参照記述記録領域に記録するプログラムソース整形手段と、前記整形後プログラムソースを入力しターゲットプログラムソースに変換するプログラムソース変換手段と、前記ターゲットプログラムソースを入力し前記コピー参照記述記録領域を参照して最終プログラムソースを出力するプログラムソース切り出し手段として動作させるためのプログラム。
【請求項７】
コンピュータを、コンパイルリストを入力し整形後プログラムソースを出力するとともに、前記コンパイルリスト中のコピー参照記述の元ソース名と開始行および終了行とをコピー参照記述記録領域に記録するプログラムソース整形手段と、前記整形後プログラムソースを入力しターゲットプログラムソースに変換するプログラムソース変換手段と、前記ターゲットプログラムソースを入力し前記コピー参照記述記録領域を参照してコピー参照記述部分を参照プログラムソースとして切り取って出力し、コピー参照記述以外の部分を最終プログラムソースとして出力するプログラムソース切り出し手段として動作させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はプログラムソース変換方式および方法ならびにプログラムに関し、特にある言語のプログラムソースを他言語のプログラムソースに変換するためのプログラムソース変換方式および方法ならびにプログラムに関する。
【背景技術】
【０００２】
通常のソースプログラムは、マクロ参照を行っていたり、他ソースをコピー参照したりしている。このため、ある言語のプログラムソースを他言語のプログラムソースに変換するときには、非互換である記述を変換する必要がある。
【０００３】
従来技術では、ある言語のプログラムソースを他言語のプログラムソースに変換するときに、ソースレコードを単語単位に分解し、分解された単語がソース変換するためのキーワードであるならば変換情報データベースを検索し、検索結果に基づいてソース変換の必要があればソース変換を行う方法をとっていた（例えば、特許文献１参照）。
【０００４】
また、他の従来技術では、埋め込みＳＱＬ文を含むソースプログラムを翻訳する場合に、プログラムソースを入力し、埋め込みＳＱＬ文を含むソースイメージを認識した後、ＳＱＬ文ソースイメージ格納領域に設定し、埋め込みＳＱＬ文の始まりと終わりを示す中間テキストを認識し、対応するＳＱＬ文ソースイメージ格納領域からＳＱＬ文ソースイメージを取り出し、ＳＱＬ文の解析処理を行った後、オブジェクト生成に必要な情報をＳＱＬ文情報格納領域に生成していた（例えば、特許文献２参照）。
【特許文献１】特開平０３‐０６２２２６号公報（第３−４頁、図１）
【特許文献２】特開平０５‐２１６６８６号公報（第２−３頁、図１）
【発明の開示】
【発明が解決しようとする課題】
【０００５】
このため、従来の技術では、プログラムソースを変換しようとしても、マクロ参照記述部分およびコピー参照記述部分は変換不可という欠点があった。
【０００６】
また、そのため、マクロ定義やコピーの元ソースを別途修正しなければならないという欠点があった。
【０００７】
本発明の目的は、ある言語のプログラムソースを他言語のプログラムソースに変換するために、非互換である記述の変換の際に、プログラムソース本体を元にするのではなく、そのプログラムのコンパイルリストを元に変換を行うプログラムソース変換方式を提供することにある。ここで、コンパイルリストとは、コンパイラが翻訳対象としたプログラムソースの全ての行が展開されている翻訳リストを意味する。
【課題を解決するための手段】
【０００８】
本発明のプログラムソース変換方式は、コンパイルリストを入力し整形後プログラムソースを出力するとともに、前記コンパイルリスト中のコピー参照記述の元ソース名と開始行および終了行とをコピー参照記述記録領域に記録するプログラムソース整形手段と、前記整形後プログラムソースを入力しターゲットプログラムソースに変換するプログラムソース変換手段と、前記ターゲットプログラムソースを入力し前記コピー参照記述記録領域を参照して最終プログラムソースを出力するプログラムソース切り出し手段とを有することを特徴とする。
【０００９】
また、本発明のプログラムソース変換方式は、コンパイルリストを入力し整形後プログラムソースを出力するとともに、前記コンパイルリスト中のコピー参照記述の元ソース名と開始行および終了行とをコピー参照記述記録領域に記録するプログラムソース整形手段と、前記整形後プログラムソースを入力しターゲットプログラムソースに変換するプログラムソース変換手段と、前記ターゲットプログラムソースを入力し前記コピー参照記述記録領域を参照してコピー参照記述部分を参照プログラムソースとして切り取って出力し、コピー参照記述以外の部分を最終プログラムソースとして出力するプログラムソース切り出し手段とを有することを特徴とする。
【００１０】
一方、本発明のプログラムソース変換方法は、ある言語のプログラムソースを他言語のプログラムソースに変換するときに、非互換である記述を変換するために、そのプログラムのコンパイルリストを元に変換を行うことを特徴とする。
【００１１】
また、本発明のプログラムソース変換方法は、プログラムソース整形手段により、コンパイルリストを入力し整形後プログラムソースを出力するとともに、前記コンパイルリスト中のコピー参照記述の元ソース名と開始行および終了行とをコピー参照記述記録領域に記録する工程と、プログラムソース変換手段により、前記整形後プログラムソースを入力してターゲットプログラムソースに変換する工程と、プログラムソース切り出し手段により、前記ターゲットプログラムソースを入力し前記コピー参照記述記録領域を参照して最終プログラムソースを出力する工程とを含むことを特徴とする。
【００１２】
さらに、本発明のプログラムソース変換方法は、プログラムソース整形手段により、コンパイルリストを入力し整形後プログラムソースを出力するとともに、前記コンパイルリスト中のコピー参照記述の元ソース名と開始行および終了行とをコピー参照記述記録領域に記録する工程と、プログラムソース変換手段により、前記整形後プログラムソースを入力してターゲットプログラムソースに変換する工程と、プログラムソース切り出し手段により、前記ターゲットプログラムソースを入力し前記コピー参照記述記録領域を参照してコピー参照記述部分を参照プログラムソースとして切り取って出力し、コピー参照記述以外の部分を最終プログラムソースとして出力する工程とを含むことを特徴とする。
【００１３】
他方、本発明のプログラムは、コンピュータを、コンパイルリストを入力し整形後プログラムソースを出力するとともに、前記コンパイルリスト中のコピー参照記述の元ソース名と開始行および終了行とをコピー参照記述記録領域に記録するプログラムソース整形手段と、前記整形後プログラムソースを入力しターゲットプログラムソースに変換するプログラムソース変換手段と、前記ターゲットプログラムソースを入力し前記コピー参照記述記録領域を参照して最終プログラムソースを出力するプログラムソース切り出し手段として動作させることを特徴とする。
【００１４】
また、本発明のプログラムは、コンピュータを、コンパイルリストを入力し整形後プログラムソースを出力するとともに、前記コンパイルリスト中のコピー参照記述の元ソース名と開始行および終了行とをコピー参照記述記録領域に記録するプログラムソース整形手段と、前記整形後プログラムソースを入力しターゲットプログラムソースに変換するプログラムソース変換手段と、前記ターゲットプログラムソースを入力し前記コピー参照記述記録領域を参照してコピー参照記述部分を参照プログラムソースとして切り取って出力し、コピー参照記述以外の部分を最終プログラムソースとして出力するプログラムソース切り出し手段として動作させることを特徴とする。
【発明の効果】
【００１５】
本発明のプログラムソース変換方式によれば、マクロ記述やコピー参照記述部分が展開された完全なプログラムソースを含むコンパイルリストを入力とするため、プログラムソースのロジック変換を完全に行うことができるという効果がある。
【００１６】
また、コピー参照記述部分の変換結果の切り出しも同時に行われるため、これらの変換を別途行う必要がないという効果がある。
【発明を実施するための最良の形態】
【００１７】
以下、本発明の実施例について図面を参照して詳細に説明する。
【実施例１】
【００１８】
図１は、本発明の実施例１に係るプログラムソース変換方式の構成を示すブロック図である。本実施例に係るプログラムソース変換方式は、コンパイルリスト１と、プログラムソース整形手段２と、コピー参照記述記録領域３と、整形後プログラムソース４と、プログラムソース変換手段５と、ターゲットプログラムソース６と、プログラムソース切り出し手段７と、最終プログラムソース８と、参照プログラムソース９とから構成されている。
【００１９】
コンパイルリスト１は、コンパイラ（図示せず）が翻訳対象としたプログラムソースの全ての行が展開されている翻訳リストである。
【００２０】
プログラムソース整形手段２は、コンパイルリスト１を入力し、整形後プログラムソース４を出力する。さらに、プログラムソース整形手段２は、コンパイルリスト１中のコピー参照記述の元ソース名と開始行および終了行とをコピー参照記述記録領域３に記録する。
【００２１】
プログラムソース変換手段５は、整形後プログラムソース４を入力し、ターゲットプログラムソース６に変換する。
【００２２】
プログラムソース切り出し手段７は、ターゲットプログラムソース６を入力し、コピー参照記述記録領域３を参照して、コピー参照記述部分を参照プログラムソース９として切り取って出力し、コピー参照記述以外の部分を最終プログラムソース８として出力する。ここで、最終プログラムソース８と参照プログラムソース９とを分けて出力するのは、通常、参照プログラムソース９は、複数プログラムから参照されるので、最終プログラムソース８と分けて出力することにより、参照プログラムソース９に変更があった場合に、そのソースのみ変更すればよく、保守性が向上するからである。
【００２３】
図２は、コンパイルリスト１が、あるＣＯＢＯＬ（ＣＯｍｍｏｎ  Ｂｕｓｉｎｅｓｓ  Ｏｒｉｅｎｔｅｄ  Ｌａｎｇｕａｇｅ）コンパイラが出力したものであることを前提として、プログラムソース整形手段２の動作を詳細に説明したものである。図２を参照すると、プログラムソース整形手段２の動作は、１行読み込みステップ２１と、コピー参照行判定ステップ２２と、行イメージおよび行番号格納ステップ２３と、ソースイメージ出力ステップ２４とからなる。なお、このコンパイルリスト１においては、ＬＩＮＥというカラムの前のカラムに「Ｃ」という記号がついていた場合に、コピー参照行であることを示すものとする。また、ＯＲＩＧＩＮＡＬというカラムには、元ソース名が表示されているものとする。
【００２４】
図３は、図２で説明したコンパイルリスト１が、プログラムソース変換手段５によって、ターゲットプログラムソース６に変換されたことを前提として、プログラム切り出し手段７の動作を詳細に説明したものである。図３を参照すると、プログラム切り出し手段７の動作は、１行読み込みステップ３１と、コピー参照行判定ステップ３２と、行イメージ出力ステップ３３と、最終プログラムソース出力ステップ３４とからなる。
【００２５】
次に、このように構成された実施例１に係るプログラムソース変換方式の動作について説明する。
【００２６】
プログラムソース整形手段２は、入力のコンパイルリスト１から１行読み込み（ステップ２１）、読み込まれた行には、通常、その行がコピー参照行か否かを示す印があるので、その印がないかどうかを判定する（ステップ２２）。この例のコンパイルリスト１の場合は、ＬＩＮＥというカラムの前にある「Ｃ」が印となる。
【００２７】
入力行にコピー参照行であるという印がある場合には、プログラムソース整形手段２は、元ソース名イメージをその行から取り出すと同時にその行番号をコピー参照記述記録領域３の開始行番号および終了行番号に格納する（ステップ２３）。ただし、開始行番号には、先頭行の行番号のみを設定する。
【００２８】
ステップ２２の判定において、入力した行がコピー参照行でない場合は、プログラムソース整形手段２は、ソースイメージのみを取り出して、整形後プログラムソース４へ出力する（ステップ２４）。
【００２９】
そして、プログラムソース整形手段２は、さらに入力行からソースイメージのみを取り出して、整形後プログラムソース４へ出力する（ステップ２４）。この例のコンパイルリスト１の場合には、元ソース名としてＲＥＣ１が記録され、開始行番号として１１１行目が、最終行番号として１１３行目がコピー参照記述記録領域３に記録される。
【００３０】
次に、プログラムソース変換手段５は、整形後プログラムソース４を入力しターゲットプログラムソース６に変換する。
【００３１】
なお、図２中の整形後プログラムソース４と、図３中のターゲットプログラムソース６とでは表面上は違いがないように見えるが、実際には、プログラムソース変換手段５は、例えば、(１) オンラインプログラムについて、ミドルウェアとのインターフェースが変更されることによるプログラム記述上の変更、(２) バッチプログラムについて、ＪＣＬ（ジョブ制御言語）とのインターフェースが替わることによるプログラム記述上の変更、(３)
データベースをリレーショナル型に変更することによるプログラム記述上の変更（ＲＥＡＤ，ＷＲＩＴＥ文→ＳＱＬ文に変更など）、(４) その他の変換を行うので、２つのソースイメージは異なる。
【００３２】
続いて、プログラムソース切り出し手段７は、ターゲットプログラムソース６から１行読み込む（ステップ３１）。
【００３３】
次に、プログラムソース切り出し手段７は、読み込んだ行の行番号が、コピー参照記述記録領域３に記録されている行番号の範囲に含まれているかどうかを調べる（ステップ３２）。
【００３４】
もし含まれている場合には、プログラムソース切り出し手段７は、その行はコピー参照行であるので、その行イメージを参照プログラムソース９に出力する（ステップ３３）。なお、このとき出力するファイル名は、コピー参照記述記録領域３の元ソース名とする。この例では、１１１行から１１３行までが参照プログラムソース９に出力される。そして、その実態ファイル名は、元ソース名であるＲＥＣ１となる。
【００３５】
一方、ステップ３２において、入力した行がコピー参照記述記録領域３に記録されている行番号の範囲に含まれていない場合は、プログラムソース切り出し手段７は、最終プログラムソース８へ出力する（ステップ３４）。この例では、１１１行から１１３行を除く行イメージが最終プログラムソース８へ出力される。
【００３６】
なお、マクロ参照記述の部分は、例えば次のように最終プログラムソース８中に展開されるだけであり、ＣＯＰＹ原文のように、その部分の記述の切り出しは不要である。よって、実施例１では、特に詳しくは説明しない。
【００３７】
001000
@M1ABORT(DATA1,PROC1);
↓
001000*@M1ABORT(DATA1,PROC1);
001010     IF DATA1 NOT = 0
001020         
GO TO PROC1.
【００３８】
ここで、展開部分(001010行,001020行)は、マクロのパラメータ（DATA1,PROC1)によりイメージが変わる。
【００３９】
実施例１によれば、マクロ記述やコピー参照記述部分が展開された完全なプログラムソースを含むコンパイルリスト１を入力とするため、プログラムソースのロジック変換を完全に行うことができる。
【００４０】
また、コピー参照記述部分の変換結果の切り出しも同時に行われるため、これらの変換を別途行う必要がない。
【実施例２】
【００４１】
図４は、本発明の実施例２に係るプログラムソース変換方式の構成を示すブロック図である。本実施例に係るプログラムソース変換方式は、図１に示した実施例１に係るプログラムソース変換方式を搭載するコンピュータ１００に対してプログラムソース変換プログラム２００を付加するようにした点だけが異なる。したがって、その他の特に言及しない部分には同一符号を付して、それらの詳しい説明を省略する。
【００４２】
プログラムソース変換プログラム２００は、コンピュータ１００に読み込まれ、コンピュータ１００の動作を、プログラムソース整形手段２，プログラムソース変換手段５，プログラムソース切り出し手段７として制御する。プログラムソース変換プログラム２００の制御によるコンピュータ１００の動作は、実施例１に係るプログラムソース変換方式の動作と全く同様になるので、その詳しい説明を割愛する。
【図面の簡単な説明】
【００４３】
【図１】本発明の実施例１に係るプログラムソース変換方式の構成を示すブロック図である。
【図２】図１中のプログラムソース整形手段の動作を示すフローチャートである。
【図３】図１中のプログラムソース切り出し手段の動作を示すフローチャートである。
【図４】本発明の実施例２に係るプログラムソース変換方式の構成を示すブロック図である。
【符号の説明】
【００４４】
１  コンパイルリスト
２  プログラムソース整形手段
３  コピー参照記述記録領域
４  整形後プログラムソース
５  プログラムソース変換手段
６  ターゲットプログラムソース
７  プログラムソース切り出し手段
８  最終プログラムソース
９  参照プログラムソース
２１  １行読み込みステップ
２２  コピー参照行判定ステップ
２３  行イメージおよび行番号格納ステップ
２４  ソースイメージ出力ステップ
３１  １行読み込みステップ
３２  コピー参照行判定ステップ
３３  行イメージ出力ステップ
３４  ソースイメージ出力ステップ
１００  コンピュータ
２００  プログラムソース変換プログラム
【図１】
2005038316.tif 000003
【図２】
2005038316.tif 000004
【図３】
2005038316.tif 000005
【図４】
2005038316.tif 000006