(57)【要約】【課題】従来は、変換されたソースプログラムのどの部分が、どのような変換ツールを用いて変換されたかを確認することが困難であった。【解決手段】第一命令パターン情報と第二命令パターン情報の対が格納される命令パターン格納部１００と、第一ソースプログラム受付部１０２が受け付けた第一ソースプログラムと、第一命令パターン情報とを比較する比較部１０３と、比較部１０３が一致すると判断した、第一ソースプログラムの記述箇所を、一致する第一命令パターン情報と対になる第二命令パターン情報に対応するよう変換する変換部１０４と、第一ソースプログラムの変換箇所に対応する箇所に、変換を行った自装置に関するコメントを記述するコメント記述部１０５と、コメントを含む、変換部１０４が第一ソースプログラムを変換した結果の第二ソースプログラムを出力する出力部１０７とを備えた。【選択図】図１
2010129040.tif 000002
【特許請求の範囲】
【請求項１】
第一ソースプログラムの命令パターンを示す情報である第一命令パターン情報と、第二ソースプログラムの命令パターンを示す情報である第二命令パターン情報の対が１以上格納され得る命令パターン格納部と、
第一ソースプログラムを受け付ける第一ソースプログラム受付部と、
前記第一ソースプログラム受付部が受け付けた第一ソースプログラムと、前記命令パターン格納部に格納されている第一命令パターン情報とを比較する比較部と、
前記比較部が第一命令パターン情報と一致すると判断した、前記第一ソースプログラムの記述箇所を、当該第一命令パターン情報と対になる第二命令パターン情報に対応するよう変換する変換部と、
前記第一ソースプログラムの、前記変換部が変換を行った記述箇所に対応する箇所に、変換を行った自装置に関するコメントを記述するコメント記述部と、
前記コメント記述部が記述したコメントを含む、前記変換部が前記第一ソースプログラムを変換した結果である第二ソースプログラムを出力する出力部とを備えたプログラム変換装置。
【請求項２】
前記命令パターン格納部は、１以上の第一ソースプログラムの命令パターンを示す情報である第一命令パターン情報と第二ソースプログラムの命令パターンを示す情報である第二命令パターン情報との対により構成される変換用命令パターン情報が、１以上格納され得るものであり、
前記変換用命令パターン情報の１つを指定する情報である命令パターン指定情報を受け付ける命令パターン指定情報受付部を更に備え、
前記比較部は、前記命令パターン指定情報により指定された変換用命令パターン情報に含まれる第一命令パターン情報と、前記第一ソースプログラムとを比較し、
前記コメント記述部が記述する、前記変換を行った自装置に関するコメントは、自装置が行った変換が前記命令パターン指定情報により指定される変換用命令パターン情報を用いた変換であることを示すコメントである請求項１記載のプログラム変換装置。
【請求項３】
前記コメント記述部は、前記変換部が変換を行った記述箇所に対応する箇所に、変換前の記述に対応する前記第一命令パターン情報に関するコメントを更に記述する請求項１または請求項２記載のプログラム変換装置。
【請求項４】
前記コメント記述部は、前記変換部が変換を行った記述箇所に対応する箇所に、前記変換部が変換に用いた第二命令パターン情報に関するコメントを更に記述する請求項１から請求項３いずれか記載のプログラム変換装置。
【請求項５】
第一ソースプログラムの命令パターンを示す情報である第一命令パターン情報と、第二ソースプログラムの命令パターンを示す情報である第二命令パターン情報の対が１以上格納され得る命令パターン格納部と、第一ソースプログラム受付部と、比較部と、変換部と、コメント記述部と、出力部とを用いて行われるプログラム変換方法であって、
前記第一ソースプログラム受付部が、第一ソースプログラムを受け付ける第一ソースプログラム受付ステップと、
前記比較部が、前記第一ソースプログラム受付ステップで受け付けた第一ソースプログラムと、前記命令パターン格納部に格納されている第一命令パターン情報とを比較する比較ステップと、
前記変換部が、前記比較ステップで第一命令パターン情報と一致すると判断した、前記第一ソースプログラムの記述箇所を、当該第一命令パターン情報と対になる第二命令パターン情報に対応するよう変換する変換ステップと、
前記コメント記述部が、前記第一ソースプログラムの、前記変換部が変換を行った記述箇所に対応する箇所に、変換を行った自装置に関するコメントを記述するコメント記述ステップと、
前記出力部が、前記コメント記述ステップで記述したコメントを含む、前記変換ステップで前記第一ソースプログラムを変換した結果である第二ソースプログラムを出力する出力ステップとを備えたプログラム変換方法。
【請求項６】
コンピュータを、
第一ソースプログラムを受け付ける第一ソースプログラム受付部と、
前記第一ソースプログラム受付部が受け付けた第一ソースプログラムと、第一ソースプログラムの命令パターンを示す情報である第一命令パターン情報と、第二ソースプログラムの命令パターンを示す情報である第二命令パターン情報の対が１以上格納され得る命令パターン格納部に格納されている第一命令パターン情報とを比較する比較部と、
前記比較部が第一命令パターン情報と一致すると判断した、前記第一ソースプログラムの記述箇所を、当該第一命令パターン情報と対になる第二命令パターン情報に対応するよう変換する変換部と、
前記第一ソースプログラムの、前記変換部が変換を行った記述箇所に対応する箇所に、変換を行った自装置に関するコメントを記述するコメント記述部と、
前記コメント記述部が記述したコメントを含む、前記変換部が前記第一ソースプログラムを変換した結果である第二ソースプログラムを出力する出力部として機能させるためのプログラム。
【請求項７】
第一ソースプログラムを第二ソースプログラムに変換するツールである変換ツールと対応付けられた情報であって、当該変換ツールが変換に利用する第一ソースプログラムの命令パターンを示す情報である第一命令パターン情報が１以上格納され得る第一命令パターン格納部と、
第一ソースプログラムを受け付ける第一ソースプログラム受付部と、
前記第一ソースプログラム受付部が受け付けた第一ソースプログラムと、前記第一命令パターン格納部に格納されている第一命令パターン情報とを比較する比較部と、
第一命令パターン情報と一致すると前記比較部が判断した、前記第一ソースプログラムの記述箇所に対応する箇所に、前記変換ツールに関するコメントを記述するコメント記述部と、
前記コメント記述部が記述したコメントを含む前記第一ソースプログラムを出力する第一ソース出力部とを備えたプログラム分析装置。
【請求項８】
前記第一命令パターン格納部は、前記変換ツールが変換に利用可能な１以上の第一命令パターン情報の組が、一の変換ツールに対して複数対応付けられて格納され得るものであり、
前記命令パターン情報の組を指定する情報である命令パターン組指定情報を受け付ける命令パターン組指定情報受付部を更に備え、
前記比較部は、前記命令パターン組指定情報により指定された第一命令パターン情報の組に含まれる第一命令パターン情報と、前記第一ソースプログラムとを比較し、
前記コメント記述部が記述する変換ツールに関するコメントは、前記命令パターン組指定情報により指定された第一命令パターン情報の組を示す情報を含む請求項７記載のプログラム分析装置。
【請求項９】
第一ソースプログラムを第二ソースプログラムに変換するツールである変換ツールと対応付けられた情報であって、当該変換ツールが変換に利用する第一ソースプログラムの命令パターンを示す情報である第一命令パターン情報が１以上格納され得る第一命令パターン格納部と、第一ソースプログラム受付部と、比較部と、コメント記述部と、第一ソース出力部とを用いて行われるプログラム分析方法であって、
第一ソースプログラム受付部が、第一ソースプログラムを受け付ける第一ソースプログラム受付ステップと、
比較部が、前記第一ソースプログラム受付ステップで受け付けた第一ソースプログラムと、前記第一命令パターン格納部に格納されている第一命令パターン情報とを比較する比較ステップと、
コメント記述部が、第一命令パターン情報と一致すると前記比較ステップで判断した、前記第一ソースプログラムの記述箇所に対応する箇所に、前記変換ツールに関するコメントを記述するコメント記述ステップと、
第一ソース出力部が、前記コメント記述ステップで記述したコメントを含む前記第一ソースプログラムを出力する第一ソース出力ステップとを備えたプログラム分析方法。
【請求項１０】
コンピュータを、
第一ソースプログラムを受け付ける第一ソースプログラム受付部と、
前記第一ソースプログラム受付部が受け付けた第一ソースプログラムと、第一ソースプログラムを第二ソースプログラムに変換するツールである変換ツールに対応付けられた情報であって、当該変換ツールが変換に利用する第一ソースプログラムの命令パターンを示す情報である第一命令パターン情報が１以上格納され得る第一命令パターン格納部に格納されている第一命令パターン情報とを比較する比較部と、
第一命令パターン情報と一致すると前記比較部が判断した、前記第一ソースプログラムの記述箇所に対応する箇所に、前記変換ツールに関するコメントを記述するコメント記述部と、
前記コメント記述部が記述したコメントを含む前記第一ソースプログラムを出力する第一ソース出力部として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ソースプログラムの変換に用いられるプログラム変換装置等に関するものである。
【背景技術】
【０００２】
従来、ソースプログラムを自動変換する技術として、コンパイラ差分により発生する記述の違いを自動検出し、自動修正もしくはリストアップして開発作業を向上させる技術があった（例えば、特許文献１参照）。本技術は、Ｃ言語で記述された原始プログラムを構文解析し、１トークン毎のデータベースと中間ファイルを作成し、データベース上の対象になる文字列を削除・変更し、データベースや中間ファイルの情報をＣ言語ファイルに生成し、目的プログラムを生成するものである。
【特許文献１】特開２００２−４１２８６号公報（第１頁、第１図等）
【発明の開示】
【発明が解決しようとする課題】
【０００３】
しかしながら、上述したような、従来のソースプログラムを自動変換する技術においては、最終的に変換されたソースプログラムが出力されるものであるため、変換されたソースプログラムのどの部分が、どのような自動変換ツールを用いて変換されたか否かを確認することが困難であった。このため、自動変換が適切に行われたか否かや、利用した自動変換ツールの変換率が、他の自動変換ツールと比べて十分に高いものであるか否か等を容易に判断することが困難である、という課題があった。
【０００４】
また、従来のソースプログラムを自動変換する技術においては、最終的に変換されたソースプログラムが出力されるものであるため、変換ツールを用いて変換を行う前に、予め、ソースプログラムの変換状況を確認することが容易ではないという課題があった。
【課題を解決するための手段】
【０００５】
本発明のプログラム変換装置は、第一ソースプログラムの命令パターンを示す情報である第一命令パターン情報と、第二ソースプログラムの命令パターンを示す情報である第二命令パターン情報の対が１以上格納され得る命令パターン格納部と、第一ソースプログラムを受け付ける第一ソースプログラム受付部と、前記第一ソースプログラム受付部が受け付けた第一ソースプログラムと、前記命令パターン格納部に格納されている第一命令パターン情報とを比較する比較部と、前記比較部が第一命令パターン情報と一致すると判断した、前記第一ソースプログラムの記述箇所を、当該第一命令パターン情報と対になる第二命令パターン情報に対応するよう変換する変換部と、前記第一ソースプログラムの、前記変換部が変換を行った記述箇所に対応する箇所に、変換を行った自装置に関するコメントを記述するコメント記述部と、前記コメント記述部が記述したコメントを含む、前記変換部が前記第一ソースプログラムを変換した結果である第二ソースプログラムを出力する出力部とを備えたプログラム変換装置である。
【０００６】
かかる構成により、ソースプログラムを変換した際の変換箇所とその変換に用いられた装置に関する情報とを、容易に確認することができる。
【０００７】
また、本発明のプログラム変換装置は、前記プログラム変換装置において、前記命令パターン格納部は、１以上の第一ソースプログラムの命令パターンを示す情報である第一命令パターン情報と第二ソースプログラムの命令パターンを示す情報である第二命令パターン情報との対により構成される変換用命令パターン情報が、１以上格納され得るものであり、前記変換用命令パターン情報の１つを指定する情報である命令パターン指定情報を受け付ける命令パターン指定情報受付部を更に備え、前記比較部は、前記命令パターン指定情報により指定された変換用命令パターン情報に含まれる第一命令パターン情報と、前記第一ソースプログラムとを比較し、前記コメント記述部が記述する、前記変換を行った自装置に関するコメントは、自装置が行った変換が前記命令パターン指定情報により指定される変換用命令パターン情報を用いた変換であることを示すコメントであるプログラム変換装置である。
【０００８】
かかる構成により、ソースプログラムを変換した際の変換箇所とその変換に用いられた変換用命令パターン情報に関する情報とを、容易に確認することができる。このため、ソースプログラムの変換箇所が、どのような変換用命令パターン情報を用いて変換されたかをユーザが認識しやすくなり、変換用命令パターン情報毎の変換の特徴を把握しやすくすることができる。
【０００９】
また、本発明のプログラム変換装置は、前記プログラム変換装置において、前記コメント記述部は、前記変換部が変換を行った記述箇所に対応する箇所に、変換前の記述に対応する前記第一命令パターン情報に関するコメントを更に記述するプログラム変換装置である。
【００１０】
かかる構成により、変換箇所が、どのような第一命令パターン情報と一致すると判断されたかを知ることができ、命令パターン格納部に格納されている第一命令パターン情報が適切なものであるか否か等を判断することができる。
【００１１】
また、本発明のプログラム変換装置は、前記プログラム変換装置において、前記コメント記述部は、前記変換部が変換を行った記述箇所に対応する箇所に、前記変換部が変換に用いた第二命令パターン情報に関するコメントを更に記述するプログラム変換装置である。
【００１２】
かかる構成により、どのような第二命令パターン情報によってソースプログラムが変換されたかを知ることができ、命令パターン格納部に格納されている第二命令パターン情報が変換に対して適切なものであるか否か等を判断することができる。
【００１３】
本発明のプログラム分析装置は、第一ソースプログラムを第二ソースプログラムに変換するツールである変換ツールと対応付けられた情報であって、当該変換ツールが変換に利用する第一ソースプログラムの命令パターンを示す情報である第一命令パターン情報が１以上格納され得る第一命令パターン格納部と、第一ソースプログラムを受け付ける第一ソースプログラム受付部と、前記第一ソースプログラム受付部が受け付けた第一ソースプログラムと、前記第一命令パターン格納部に格納されている第一命令パターン情報とを比較する比較部と、第一命令パターン情報と一致すると前記比較部が判断した、前記第一ソースプログラムの記述箇所に対応する箇所に、前記変換ツールに関するコメントを記述するコメント記述部と、前記コメント記述部が記述したコメントを含む前記第一ソースプログラムを出力する第一ソース出力部とを備えたプログラム分析装置である。
【００１４】
かかる構成により、変換ツールを用いた場合の変換状況を、ソースプログラムの変換前に予め確認することができる。また、例えば、変換箇所を検出する際に用いられた第一命令パターン情報をコメントとして示すようにすることで、第一ソースプログラムの変換を行う場合に、どのような変換ツールを使うと、どのような第一命令パターンが検出されるかを、変換前に確認することが可能となる。この結果、例えば、利用する変換ツールに応じて、どの第一命令パターン情報に対応する部分を、自動変換するか否か等を調整して、変換効率を向上させることができる。
【００１５】
また、本発明のプログラム分析装置は、前記プログラム分析装置において、前記第一命令パターン格納部は、前記変換ツールが変換に利用可能な１以上の第一命令パターン情報の組が、一の変換ツールに対して複数対応付けられて格納され得るものであり、前記命令パターン情報の組を指定する情報である命令パターン組指定情報を受け付ける命令パターン組指定情報受付部を更に備え、前記比較部は、前記命令パターン組指定情報により指定された第一命令パターン情報の組に含まれる第一命令パターン情報と、前記第一ソースプログラムとを比較し、前記コメント記述部が記述する変換ツールに関するコメントは、前記命令パターン組指定情報により指定された第一命令パターン情報の組を示す情報を含むプログラム分析装置である。
【００１６】
かかる構成により、変換ツールが異なる第一命令パターン情報の組を選択できる場合に、どのような組を選択した場合に、第一ソースプログラムのどのような箇所が変換されるかを、変換前に確認することができる。これにより、例えば、利用する変換ツールについて、選択された第一命令パターン情報を用いて変換を行うことが適切なものであるか否かを判断すること等が可能となる。また、例えば、変換箇所を検出する際に用いられた第一命令パターン情報をコメントとして示すようにすることで、選択された第一命令パターン情報の組を、変換効率が最適化されるよう、第一ソースプログラムにあわせて調整することができる。
【発明の効果】
【００１７】
本発明によるプログラム変換装置等によれば、ソースプログラムを変換した際の変換箇所とその変換に用いられた装置に関する情報とを、容易に確認することができる。
【００１８】
また、本発明によるプログラム分析装置等によれば、変換ツールを用いた場合の変換状況を、ソースプログラムの変換前に予め確認することができる。
【発明を実施するための最良の形態】
【００１９】
以下、プログラム変換装置等の実施形態について図面を参照して説明する。なお、実施の形態において同じ符号を付した構成要素は同様の動作を行うので、再度の説明を省略する場合がある。
【００２０】
（実施の形態１）
図１は、本実施の形態におけるプログラム変換装置のブロック図である。
【００２１】
プログラム変換装置１は、命令パターン格納部１００、命令パターン指定情報受付部１０１、第一ソースプログラム受付部１０２、比較部１０３、変換部１０４、コメント記述部１０５、コメント格納部１０６、及び出力部１０７を備えている。
【００２２】
命令パターン格納部１００には、第一ソースプログラムの命令パターンを示す情報である第一命令パターン情報と、第二ソースプログラムの命令パターンを示す情報である第二命令パターン情報の対が１以上格納され得る。第一命令パターン情報と第二命令パターン情報との１以上の対を、ここでは、変換用命令パターン情報と呼ぶ。変換用命令パターン情報は、第一命令パターン情報と第二命令パターン情報との対のグループと考えてもよい。また、第一命令パターン情報と第二命令パターン情報との対のグループを管理するデータベース等と考えても良い。第一ソースプログラムとは、具体的には、変換の対象となるソースプログラムである。第二ソースプログラムとは、第一ソースプログラムが変換されることによって得られるソースプログラムである。第一ソースプログラムを旧ソースプログラムや変換前のソースプログラム、第二ソースプログラムを新ソースプログラムや変換後のソースプログラムと考えても良い。「第一ソースプログラムを、第二ソースプログラムに変換する場合」とは、具体例としては、旧ソースプログラムを新ソースプログラムに移植するための変換、いわゆるマイグレーション等を行う場合等を指す。
【００２３】
この実施の形態における命令パターンとは、第一ソースプログラムおよび第二ソースプログラムにおいて利用されている命令における文字列等の情報の出現するパターン等である。第一命令パターン情報とは、第一ソースプログラムを第二ソースプログラムに変換する場合の、変換対象となる第一ソースプログラムの命令パターンを示す情報である。第二命令パターン情報とは、第一ソースプログラムを第二ソースプログラムに変換する場合における、第一ソースプログラムの上述した第一命令パターン情報に一致する箇所がどのように変換されるかを示す命令パターンを示す情報である。即ち変換後の命令パターンの情報である。第二命令パターン情報は、第一ソースプログラムの第一命令パターン情報と一致する箇所を置換するために用いる命令パターンの情報と考えても良い。
【００２４】
第一命令パターン情報とは、例えば、第一ソースプログラムにおいて利用可能な命令における文字列等の情報の出現するパターン等を示す情報である。第二命令パターン情報とは、例えば、第二ソースプログラムにおいて利用可能な命令における文字列等の情報の出現するパターン等を示す情報である。以下、第一命令パターン情報について説明するが、第二命令パターン情報についても、対応するソースプログラムが、第二ソースプログラムである点を除けば第一命令パターン情報と同様である。第一命令パターン情報は、命令において出現する文字列のうちの一部、例えば、変数やリテラル文字や関数名等を、固定されていない文字列であることを示すための、予め指定されている字句要素（例えば単語）で置き換えた情報であっても良い。この置き換える情報を、ここでは、例えば変換語と呼ぶ。また、変数やリテラル文字や関数名やこれらを含む文字列等の固定されていない文字列をここでは非固定語と呼ぶ。逆に、これ以外の固定されている文字列を固定語と呼ぶ。変換語は、当該変換語が配置されている位置に配置される情報のデータタイプやデータサイズや属性等が判断可能な情報であることが好ましい。変換語は、ソースプログラムの少なくとも一部を構成する文字列が、変数、関数名、またはリテラル文字の少なくとも一つを含む非固定語のタイプのうちの、いずれのタイプの非固定語であるかを示す文字列と考えても良い。例えば、ソースプログラムの少なくとも一部を構成する文字列が、どのような属性を有する非固定語であるかを示す文字列と考えても良い。すなわち、変換語を、ソースプログラムの少なくとも一部に含まれる、変数、関数名、またはリテラル文字の少なくとも一つを含む文字列（例えば単語）が、どのような属性の文字列であるかを示す文字列と考えても良い。この属性は、ソースプログラムの文字列が、変数、関数名、またはリテラル文字のいずれであるかを示す属性であっても良いし、ソースプログラムの文字列の用途等や、文字列が指定するものの種別等を示す属性であっても良い。また、この属性は、ソースプログラムの文字列の文字数や、文字の種類等を示す属性であっても良い。変換語は、例えば、変数やリテラル文字や関数名等の非予約語を置き換える情報と考えてもよく、この場合、変換語は、いずれのタイプの非予約語であるか、例えば属性の非予約語であるかを示す文字列と考えても良い。第一命令パターン情報は、例えば、命令語と、ユーザ指定語と、変換語と、その他の文字列とのうちの１以上の組み合わせで構成される。命令語、ユーザ指定語、変換語等の詳細については後述する。命令パターンは、第一ソースプログラムにおける命令語等の固定語の出現するパターン、非固定語（例えば、変数やリテラル文字や関数名等）の出現するパターン、または固定語および非固定語の出現するパターンと考えても良い。また、命令パターンを、第一ソースプログラムにおける予約語（例えば命令語等）の出現するパターン、非予約語（例えば、変数やリテラル文字や関数名等）の出現するパターン、または予約語および非予約語の出現するパターンと考えても良く、この場合、第一命令パターン情報は、例えば、第一ソースプログラムにおける予約語の出現するパターン、非予約語の出現するパターン、または予約語および非予約語の出現するパターンの少なくとも一つを示す情報であってもよい。具体例を挙げると、第一命令パターン情報は、「命令語  ＜引数１＞  ＜引数２＞」という予約語と非予約語の配列パターンを示す情報である。ただし、この場合、「命令語」は、「ＯＰＥＮ」や「ＭＯＶＥ」、「ＣＡＬＬ」等の予約語であり、「＜引数１＞」、「＜引数２＞」は変数文字列である非予約語である。また、第一命令パターン情報は、固定語や非固定語がどのような順番で配列されているかを示す情報等であっても良い。また、第一命令パターン情報は、特定の予約語、例えば命令語や不特定の予約語がどのような順番で配列されているかを示す情報等であっても良い。なお、予約語とは、プログラミング言語の仕様等で定められた、変数名や関数名、クラス名等の識別子名として使用できない字句要素である。また、ここでは、命令語でない予約語を非予約語と呼ぶようにしても良い。
【００２５】
なお、ここでは、特に例として、命令パターン格納部１００に、１以上の第一ソースプログラムの命令パターンを示す情報である第一命令パターン情報と第二ソースプログラムの命令パターンを示す情報である第二命令パターン情報との対により構成される変換用命令パターン情報が、１以上格納され得る場合について説明する。即ち、第一命令パターン情報と第二命令パターン情報との一以上の対により構成される変換用命令パターン情報が、命令パターン格納部１００に一以上格納されている場合について説明する。例えば、異なる変換用命令パターン情報が、同じ第一命令パターン情報に対して、異なる第二命令パターン情報がそれぞれ対応付けられたものである場合等において、変換の際に利用する変換用命令パターン情報をユーザの指定等に応じて切り替えることで、一のプログラム変換装置で、第一ソースプログラムに対して異なる変換を行って、異なる第二ソースプログラムを変換結果として得ることが可能となる。例えば、異なる変換用命令パターン情報が、同じ第一命令パターン情報に対して、異なる第二命令パターン情報がそれぞれ対応付けられたものである場合等においては、どの変換用命令パターン情報を利用するかによって、第一命令パターン情報の変換結果が異なるものとすることができる。
【００２６】
第一ソースプログラムおよび第二ソースプログラムは、それぞれ、ＣＯＢＯＬ言語や、Ｃ言語、ｐｅｒｌ言語等、どのような言語のソースプログラムであっても良い。また、スクリプト等であっても良い。また、これらの言語をカスタマイズした言語のソースプログラムであっても良い。ここでは、例として、第一ソースプログラムおよび第二ソースプログラムは、いわゆるマイグレーション元およびマイグレーション先となるソースプログラムであるとする。
【００２７】
命令パターン格納部１００に、第一命令パターン情報と、第二命令パターン情報との対が蓄積される手段等は問わない。例えば、製品出荷時等に予め格納されていても良いし、図示しない受付部等を介して受け付けた第一命令パターン情報と第二命令パターン情報との対が蓄積されても良い。命令パターン格納部１００に格納され得る第一命令パターン情報は、第一ソースプログラムの言語等に対応した第一命令パターン情報、すなわち第一ソースプログラムの言語等において出現する可能性のある命令パターンの情報と考えても良い。命令パターン格納部１００は、不揮発性の記録媒体でも、揮発性の記録媒体でも実現可能である。
【００２８】
命令パターン指定情報受付部１０１は、命令パターン格納部１００に格納されている変換用命令パターン情報の１つを指定する情報である命令パターン指定情報を、例えばユーザ等から受け付ける。なお、変換用命令パターン情報の１つを指定する必要がない場合、具体的には、命令パターン格納部１００に１以上の第一ソースプログラムの命令パターンを示す情報である第一命令パターン情報と第二ソースプログラムの命令パターンを示す情報である第二命令パターン情報との対が、一つのグループしか格納されていない場合、あるいは、命令パターン格納部１００に変換用命令パターン情報が１つしか格納されていない場合には、命令パターン指定情報受付部１０１は省略してもよい。ここで述べる受付とは、例えば、入力手段からの受付や、他の機器等から送信される入力信号の受信や、記録媒体等からの情報の読み出し等である。命令パターン指定情報の入力手段は、テンキーやキーボードやマウスやメニュー画面によるもの等、何でも良い。命令パターン指定情報受付部１０１は、テンキーやキーボード等の入力手段のデバイスドライバーや、メニュー画面の制御ソフトウェア等で実現され得る。
【００２９】
第一ソースプログラム受付部１０２は、第一ソースプログラムを受け付ける。ここで述べる受付とは、例えば、入力手段からの受付や、他の機器等から送信される入力信号の受信や、記録媒体等からの情報の読み出し等である。入力手段は、テンキーやキーボードやマウスやメニュー画面によるもの等、何でも良い。第一ソースプログラム受付部１０２は、通信デバイスや、情報を読み出すデバイス等のデバイスドライバーや、テンキーやキーボード等の入力手段のデバイスドライバーや、メニュー画面の制御ソフトウェア等で実現され得る。
【００３０】
比較部１０３は、第一ソースプログラム受付部１０２が受け付けた第一ソースプログラムと、命令パターン格納部１００に格納されている第一命令パターン情報とを比較する。比較部１０３は、具体的には、比較することによって、第一命令パターン情報のいずれか一つと一致する第一ソースプログラムの記述箇所を検出する。完全一致であっても部分一致であっても良い。ここでの一致とは、第一命令パターン情報のいずれか一つと第一ソースプログラムの一部の箇所の記述とが、対応していることも含む概念と考えて良い。なお、この具体例においては、特に、比較部１０３は、命令パターン指定情報により指定された変換用命令パターン情報に含まれる第一命令パターン情報と、第一ソースプログラムとを比較するものとする。比較部１０３がどのように比較を行うかは問わない。比較部１０３が行う比較の一例について以下に説明する。
【００３１】
比較部１０３は、例えば、第一ソースプログラムから、第一ソースプログラムを変換する際の単位である変換単位の情報である変換単位情報を１以上取り出し、当該取り出した変換単位情報のそれぞれと、命令パターン格納部１００に格納されている第一命令パターン情報とを比較する。
【００３２】
変換単位とは、例えば、第一ソースプログラムを他のソースプログラム、例えば第二ソースプログラムに変換する際に処理が行われる情報の単位である。具体例として、第一ソースプログラムをマイグレーションする際に変換が行われる文字列等の情報の単位と考えても良い。変換単位を、第一ソースプログラム内の比較部１０３により第一命令パターン情報との比較が行われる単位である比較単位と考えても良い。
【００３３】
変換単位は、例えば、第一ソースプログラムのうちの、所定のルールに従って決定される文字列等の情報の単位である。所定のルールはどのようなルールであっても良い。例えば、第一ソースプログラム内の、ユーザ等により予め指定された１以上の所定の情報のうちのいずれかで区切られた範囲の情報を変換単位情報とする、というルールであっても良い。また、第一ソースプログラム内の所定の情報と、所定の情報とで挟まれた間の情報を変換単位情報とする、というルールであっても良い。この所定の情報は、例えば、後述する指定情報である。変換単位情報には、この所定の情報を含むようにしても含まないようにしてもよい。なお、所定ルールは、例えば、図示しない記憶媒体等に予め格納されている。
【００３４】
変換単位情報は、例えば、第一ソースプログラムのうちの、後述する指定情報格納部１０８等に格納されている、予め指定された情報である指定情報のうちの一つが出現してから次に指定情報の一つが出現する間の範囲内の情報である。あるいは、第一ソースプログラムのうちの、当該指定情報により区切られた情報であると考えても良い。指定情報のうちの一つが出現してから次に指定情報の一つが出現する間の範囲内の情報には、先に現れた指定情報を含むようにしても良いし、含まないようにしても良い。また、指定情報のうちの一つが出現してから次に指定情報の一つが出現する間の範囲内の情報には、次に現れた指定情報を含むようにしても良いし、含まないようにしても良い。
【００３５】
指定情報は、例えば、ユーザにより指定された文字列等の情報である。ここでは文字列に、ピリオドやセミコロン等の記号を含むと考えてもよい。指定情報は、予め指定された、改行コードやＴＡＢ等の制御コード等であっても良い。改行コードやＴＡＢ等の制御コードを文字列と考えても良い。また、指定情報は、例えば、第一ソースプログラムに用いられる命令語、すなわち、第一ソースプログラムの言語等に用いられる命令語の全部、あるいは一部等であっても良い。また、指定情報は、これらの情報の組み合わせであっても良い。
【００３６】
上述した所定のルールは、上述したルール以外の、例えば、行番号等で、区切られている情報を変換単位情報として決定するというルールであっても良い。すなわち第一ソースプログラムの行を変換単位情報に決定するというルールであっても良い。このルールを示す情報は、例えば、図示しないメモリ等に格納されているようにしても良い。
【００３７】
比較部１０３は、例えば、第一ソースプログラムから、予め指定されたルールにより決定される情報である変換単位情報を１以上取り出し、当該取り出した変換単位情報のそれぞれと、命令パターン格納部１００に格納されている第一命令パターン情報とを比較する。
【００３８】
例えば、比較部１０３は、検索を行って、第一ソースプログラム内から、指定情報格納部１０８に格納されている指定情報に一致する情報を検出し、第一ソースプログラム内の、指定情報格納部１０８に格納されている指定情報のうちの一つが出現してから次に指定情報の一つが出現する間の範囲内の情報である変換単位情報を１以上取り出し、当該取り出した変換単位情報のそれぞれと、命令パターン格納部１００に格納されている第一命令パターン情報とを比較する。
【００３９】
また、比較部１０３は、例えば、第一ソースプログラムに対して検索を行って、指定情報格納部１０８に格納されている指定情報である１以上の命令語を検出し、第一ソースプログラム内の、指定情報格納部１０８に格納されている命令語のうちの一つが出現してから次に命令語の一つが出現する間の範囲内の情報である変換単位情報を１以上取り出し、当該取り出した変換単位情報のそれぞれと、命令パターン格納部１００に格納されている第一命令パターン情報とを比較してもよい。ここで述べる命令語とは、変換単位情報の最初の字句となり得る字句であり、ソースプログラムとして意味のある字句である。ここで述べる命令語とは、例えば、演算子や命令部やトークンの一部等の全てまたは一部である。また、ＣＯＢＯＬ等の言語特有の命令語と考えても良い。なお、この場合、指定情報格納部１０８は、命令語の格納部と考えて良い。
【００４０】
比較部１０３は、具体的には、第一ソースプログラムの各変換単位情報と、命令パターン格納部１００に格納されている１以上の第一命令パターン情報とを比較して、これらが一致しているか否かを判断する。ここで比較部１０３が判断する一致とは、完全一致であっても良いし、部分一致であっても良い。また、第一命令パターン情報と変換単位情報との一部同士が一致している場合を一致と判断しても良い。例えば、両者の固定語や非固定語の配列が一致している場合を一致と判断しても良い。例えば、両者に出現する固定語が一致しているとともに、両者の固定語や非固定語（あるいは非固定語を表す変換語）の配列が一致している場合を一致と判断しても良い。また、両者の予約語や非予約語の配列が一致している場合を一致と判断しても良い。また、例えば、命令語と引数との数等が一致している場合を一致と判断するようにしても良い。また、ここでは第一命令パターン情報と変換単位情報とが対応関係を有している場合を一致と考えても良い。
【００４１】
比較部１０３が、第一ソースプログラムの各変換単位情報と、命令パターン格納部１００に格納されている１以上の第一命令パターン情報とをどのように比較するかは問わない。例えば、比較部１０３は、変換単位情報を、当該変換単位情報に対応した命令パターンを示す情報である比較命令パターン情報に変更して、当該変更した比較命令パターン情報と第一命令パターン情報とを比較しても良い。この比較命令パターン情報は、例えば、上述した第一命令パターン情報と同様の、命令パターンを示すための情報である。また、比較部１０３は、変換単位情報と第一命令パターン情報とをそのまま比較しても良い。例えば、比較部１０３は、変換単位情報の全体と、第一命令パターン情報の全体とをそのまま比較しても良い。また、比較の際に、スペース等の予め指定された記号の違いや段落番号やコメント等を取り除く、例えば削除するようにしても良い。また、比較部１０３は、例えば、変換単位情報のうちの、変数や関数名やリテラル文字等のユーザ等が値や文字列等を指定可能な情報である非固定語以外の文字列である固定語の出現パターンと、命令パターン格納部１００に格納されている１以上の第一命令パターン情報内の固定情報の出現パターンとを比較して、これらが一致しているか否かを判断してもよい。また、比較部１０３は、第一命令パターン情報の非固定語の部分の出現パターンと、第一ソースプログラムの変換単位情報内の非固定語の部分の出現パターンとの一致、または第一命令パターン情報の固定語および非固定語が出現するパターンと、第一ソースプログラムの変換単位情報内の固定語および非固定語が出現するパターンとの一致を判断するようにしてもよい。また、これらを組みあわせて判断するようにしても良い。また、非固定語のうちの、ユーザ等により指定された情報、例えばユーザが指定した文字列であるユーザ指定語等を、固定語に指定して上記の比較および判断を行うようにしても良い。また、比較部１０３は、変換単位情報のうちの、非固定語の一部や全部を、当該非固定語に対応した文字列に変換して、第一命令パターン情報と比較を行うようにしても良い。また、非固定語に対応した文字列に変換する際に、非固定語の属性やデータタイプやパターンを判断して、そのパターンに応じて指定されている文字列に変換するように指定も良い。
【００４２】
比較部１０３は、具体例としては、固定語の出現パターン同士、非固定情報の出現パターン同士、あるいは固定情報と非固定情報の出現パターン同士が、完全一致していれば、比較した第一ソースプログラムの変換単位情報と第一命令パターン情報とが一致していると考える。ここで述べる出現パターンとは、例えば、固定語同士や非固定語同士や固定語と非固定語の配列順序等も含むパターンである。出現パターンは、特定の固定語や非固定語が現れるパターンであってもよく、不特定の固定語や非固定語が現れるパターンであっても良い。また、これらの組み合わせであっても良い。
【００４３】
また、比較部１０３は、第一命令パターン情報の予約語の部分の出現パターンと、第一ソースプログラムの変換単位情報内の予約語の部分の出現パターンとの一致、第一命令パターン情報の非予約語の部分の出現パターンと、第一ソースプログラムの変換単位情報内の非予約語の部分の出現パターンとの一致、または第一命令パターン情報の予約語および非予約語が出現するパターンと、第一ソースプログラムの変換単位情報内の予約語および非予約語が出現するパターンとの一致のうちの、少なくとも一つを判断するようにしてもよい。具体的には、予約語の出現パターン同士、非予約語の出現パターン同士、あるいは予約語と被予約語の出現パターン同士が、完全一致していれば、比較した第一ソースプログラムの変換単位情報と第一命令パターン情報とが一致していると考えるようにしてもよい。ここで述べる出現パターンとは、例えば、予約語同士や予約語と非予約語の配列順序も含むパターンである。出現パターンは、特定の予約語や非予約語が現れるパターンであってもよく、不特定の予約語や非予約語が現れるパターンであっても良い。また、これらの組み合わせであっても良い。
【００４４】
なお、比較部１０３は、上記のように第一ソースプログラムから取り出した変換単位情報と、第一命令パターン情報との比較を行う代わりに、例えば、命令パターン格納部１００に格納されている第一命令パターン情報を一つずつ順次取り出し、取り出した第一命令パターン情報を検索キーとして、第一ソースプログラム受付部１０２が受け付けた第一ソースプログラム内に一致する命令パターンを検索していくようにしても良い。この場合の一致とは、完全一致であってもよいし、部分一致であっても良い。例えば、第一命令パターン情報の一部が、上述した変換語である場合、検索対象となる第一ソースプログラムの、この変換語に対応する位置の文字列については、いわゆる検索におけるワイルドカード等と同様に、一致を判断しない、あるいは変換語が指定する属性等だけが一致するか否かを判断するようにしても良い。
【００４５】
比較部１０３は、通常、ＭＰＵやメモリ等から実現され得る。比較部１０３の処理手順は、通常、ソフトウェアで実現され、当該ソフトウェアはＲＯＭ等の記録媒体に記録されている。但し、ハードウェア（専用回路）で実現しても良い。
【００４６】
変換部１０４は、比較部１０３が、第一命令パターン情報と一致すると判断した第一ソースプログラムの記述箇所を、当該第一命令パターン情報と対になる第二命令パターン情報に対応するよう変換する。変換部１０４は、具体的には、比較部１０３が比較の際に用いた第一命令パターン情報に対応する第二命令パターン情報を、命令パターン格納部１００から読み出し、比較部１０３が一致すると判断した第一ソースプログラムの記述箇所を、読み出した第二命令パターン情報が示す命令パターンに変換する。例えば、比較部１０３が第一命令パターン情報と一致すると判断した第一ソースプログラムの記述箇所の文字列を、第二命令パターン情報に置き換える。また、例えば、比較部１０３が第一命令パターン情報と一致すると判断した第一ソースプログラムの記述箇所のうちの、変換語に対応する文字列以外の文字列を、第二命令パターン情報に置き換えるようにしてもよい。具体的には、第一命令パターン情報が、「ＳＯＵＲＣＥ−ＣＯＭＰＵＴＥＲ．変数」であり、このうちの「変数」が変換語であったとする。そして、この第一命令パターン情報に一致すると判断された第一ソースプログラムの記述箇所が「ＳＯＵＲＣＥ−ＣＯＭＰＵＴＥＲ．ＸＸＸＸ」、第一命令パターン情報に一致する第二命令パターン情報が「ＳＯＵＲＣＥ−ＣＯＭＰＵＴＥＲ．ＪＣＭＦ８００２１」であったとすると、第一ソースプログラムの「ＳＯＵＲＣＥ−ＣＯＭＰＵＴＥＲ．ＸＸＸＸ」という記述箇所が、変換部１０４により、「ＳＯＵＲＣＥ−ＣＯＭＰＵＴＥＲ．ＪＣＭＦ８００２１」に変換される。また、変換の際には、第一命令パターン情報中の変換語に対応する第一ソースプログラム上の文字列の位置を、第二命令パターン情報が示す変換語の文字列の配置される位置に移動させても良い。なお、第二命令パターン情報は、命令パターンがないことを示す情報や、命令パターンが削除されることを示す情報である場合、第一命令パターン情報に一致すると判断された第一ソースプログラムの記述箇所は、変換部１０４により削除される。また、第二命令パターン情報は、命令パターンを追加する情報であってもよい。第二命令パターン情報が、命令パターンを追加する情報である場合、第一命令パターン情報に一致すると判断された第一ソースプログラムの記述箇所に、第二命令パターン情報が示す命令パターンが追加される。変換部１０４による変換は、例えば、いわゆるワイルドカードを用いた検索置換処理と同様の技術により実現可能であり、この場合、ワイルドカードは変換語に相当する。変換部１０４は、通常、ＭＰＵやメモリ等から実現され得る。変換部１０４の処理手順は、通常、ソフトウェアで実現され、当該ソフトウェアはＲＯＭ等の記録媒体に記録されている。但し、ハードウェア（専用回路）で実現しても良い。
【００４７】
コメント記述部１０５は、第一ソースプログラム、具体的には変換部１０４により変換された第一ソースプログラムの、変換部１０４が変換を行った記述箇所に対応する箇所に、変換を行った自装置に関するコメントを記述する。変換を行った自装置に関するコメントとは、例えば変換を行った自装置を識別可能なコメントである。自装置を識別可能なコメントとは、例えば自装置の装置名や、型番等の識別情報である。また、変換部１０４による処理が、ＭＰＵ等にソフトウェアで構成される変換用のツールを実行させることで実現されるものである場合、このツール名や、ツールの識別情報を、自装置を識別可能なコメントとして記述しても良い。ツール名は、例えば、プログラム名や実行ファイル名や、実行モジュール名等である。また、ツールを実現する実行モジュール等が、複数のモジュール等に分かれて図示しない格納部等に格納されている場合、コメント記述部１０５は、これらの実行モジュールの識別情報等を収集して、コメントとして記述しても良い。このツールには、変換の際に利用される命令パターン格納部１００に格納されている第一命令パターン情報と第二ソースプログラムとの対を含むと考えても含まないと考えても良い。コメント記述部１０５は、例えば、自装置の識別情報や、変換に用いたツールの識別情報等を取得し、これらの情報にコメントアウトを示す情報等を付加してコメントを作成し、作成したコメントを第一ソースプログラムに配置する。また、変換を行った際の自装置の状態や設定や条件等を示す情報を取得し、自装置を識別するコメントとして記述しても良い。同じ装置であっても、変換を行う状態や設定や条件で変換を行っている場合には、異なる装置が変換を行っている装置と考えることができるからである。従って、例えば、変換用命令パターン情報が、命令パターン格納部１００に複数格納されており、命令パターン指定情報により指定されたその一つが、変換部１０４による変換に用いられている場合、この変換に用いられている変換用命令パターン情報を識別する情報を取得し、自装置を識別可能なコメントとして記述しても良い。例えば、各変換命令パターン情報に名称が付与されている場合、現在変換に利用されている変換命令パターン情報の名称を取得し、この名称を自装置を識別可能なコメントとして記述する。あるいは各変換命令パターン情報がそれぞれデータベースを構成していると考えた場合、利用するデータベースの名称等の識別情報を取得し、自装置を識別可能なコメントとして記述しても良い。コメントは、例えば、文字列である。コメントを記述する、ということは、例えば、コメントを示す情報を第一ソースプログラムに挿入することである。コメントを記述する箇所は、変換部１０４により変換された記述箇所と対応する箇所、言い換えれば対応関係が分かる箇所であれば、どのような箇所であるかは問わない。ただし、コメントは、変換部１０４により命令パターンが変換された部分のできるだけ近くに記述することが、変換箇所を視覚的に認識しやすい点で好ましい。例えば、コメントは、変換された箇所と同じ行や、その前後の行に記載されることが好ましい。コメントは、プログラムの実行時に無視される形式等で記述される。コメントは、通常、プログラミング言語の仕様等で定められたルールに従って記述される。例えば、仕様により指定された場所や、形式で記述される。例えば、ＣＯＢＯＬ言語等においては、各行の７３カラムから８０カラムまでは、コメントを記述する領域に予め指定されているため、変換部１０４が変換した第一ソースプログラムの記述箇所が含まれる行の７３カラムから８０カラムに、自装置に関するコメントが記述される。また、プログラミング言語によって、予め指定された文字、例えば「＊」や「＃」で挟まれた文字列が、コメントであると定義されている場合、このような文字で囲んだコメントを、変換部１０４が変換した第一ソースプログラムの記述箇所の近傍、例えば、次の行等に記述しても良い。コメント記述部１０５がコメントとして記述する自装置を識別する情報等は、例えば、後述するコメント格納部１０６等に予め格納しておくようにしても良い。また、変換部１０４による処理が、ＭＰＵ等にソフトウェアで構成されるツールを実行させることで実現されるものである場合、このツールの識別情報、例えば実行ファイル名等を、実行ファイルが格納されている図示しない格納部等から取得して、コメントに用いるようにしても良い。また、変換に用いられた変換用命令パターン情報の識別情報を、命令パターン格納部１００等から取得して、コメントに用いるようにしても良い。また、後述するコメント格納部１０６等に、コメントを構成する際に利用されるテンプレートの情報等を予め格納しておくようにし、コメント作成のために取得したツールの識別情報や、変換用命令パターン情報の識別情報等を、このテンプレートに配置することで、コメント記述部１０５がコメントを作成し、作成したコメントを第一ソースプログラムに記述しても良い。
【００４８】
なお、コメント記述部１０５は、変換部１０４が変換を行った記述箇所に対応する箇所に、変換前の記述に対応する第一命令パターン情報に関するコメント、具体的には一致する第一命令パターン情報に関するコメントを更に記述するようにしてもよい。第一命令パターン情報に関するコメントとは、例えば、第一命令パターン情報そのものを含むコメントや、第一命令パターン情報の識別情報を含むコメントや、この第一命令パターンが、変換前の記述に一致する第一命令パターンであることを示すコメントである。例えば、変換の対象となる記述箇所の検出に用いられた第一命令パターン情報や、その識別情報等を、コメントとして更に記述しても良い。例えば、コメント記述部１０５は、変換に用いた第一命令パターン情報やその識別情報を取得し、取得した情報にコメントアウトを示す情報等を適宜付加して構成したコメントを、第一ソースプログラムに配置する。なお、このようなコメントを作成する際に利用されるテンプレートの情報は、後述するコメント格納部１０６に予め格納されているようにしても良い。例えば、このようなテンプレートに、変換前の記述に一致する第一命令パターン情報やその識別情報を配置することで、コメントが作成される。
【００４９】
また、コメント記述部１０５は、変換部１０４が変換を行った記述箇所に対応する箇所に、変換部１０４が変換に用いた第二命令パターン情報に関するコメントを更に記述するようにしてもよい。第二命令パターン情報に関するコメントとは、例えば、第二命令パターン情報そのものを含むコメントや、第二命令パターン情報の識別情報を含むコメントや、この第二命令パターンが、変換に用いられた第二命令パターンであることを示すコメントである。例えば、変換に用いられた第二命令パターン情報そのものを、コメントとして更に記述しても良い。例えば、コメント記述部１０５は、第二命令パターン情報やその識別情報を取得し、取得した情報にコメントアウトを示す情報等を適宜付加して構成したコメントを、第一ソースプログラムに配置する。なお、このようなコメントを作成する際に利用されるテンプレートの情報は、後述するコメント格納部１０６に予め格納されているようにしても良い。例えば、このようなテンプレートに、変換に用いた第二命令パターン情報やその識別情報を配置することで、コメントが作成される。コメント記述部１０５は、通常、ＭＰＵやメモリ等から実現され得る。コメント記述部１０５の処理手順は、通常、ソフトウェアで実現され、当該ソフトウェアはＲＯＭ等の記録媒体に記録されている。但し、ハードウェア（専用回路）で実現しても良い。
【００５０】
コメント格納部１０６には、コメント記述部１０５が記述する自装置についてのコメントの情報が格納され得る。例えば、予め用意された自装置に付いてのコメントが格納されている。なお、コメント格納部１０６には、自装置についてのコメントの情報が格納される代わりに、自装置についてのコメントの情報を作成する際に利用されるテンプレートの情報が格納されていても良い。また、変換前の記述に一致する第一命令パターン情報についてのコメントの情報を作成する際に利用されるテンプレートの情報が格納されていても良い。また、変換に用いられた第二命令パターン情報についてのコメントを作成する際に利用されるテンプレートの情報が格納されていてもよい。コメント格納部１０６は、不揮発性の記録媒体でも、揮発性の記録媒体でも実現可能である。なお、例えばツールの識別情報や、変換用命令パターン情報の識別情報等を、そのままコメントとして用いる場合等には、コメント格納部１０６は省略しても良い。
【００５１】
出力部１０７は、コメント記述部１０５が記述したコメントを含む、変換部１０４が第一ソースプログラムを変換した結果である第二ソースプログラムを出力する。ここで述べる出力とは、ディスプレイへの表示、プロジェクターを用いた投影、プリンタへの印字、外部の装置への送信、記録媒体への蓄積、他の処理装置や他のプログラム等への処理結果の引渡し等を含む概念である。出力部１０７は、ディスプレイやプリンタ等の出力デバイスを含むと考えても含まないと考えても良い。出力部は、出力デバイスのドライバーソフトまたは、出力デバイスのドライバーソフトと出力デバイス等で実現され得る。
【００５２】
指定情報格納部１０８には、ユーザ等により予め指定された情報である１以上の指定情報が格納されている。指定情報は、上述したように、例えば、変換単位情報の区切を指定するための、予め指定された文字列や記号等を含む情報である。指定情報は、具体的には、予め指定された命令語または制御コードの少なくとも一方である。また、指定情報は、上述したような、当該指定情報を用いて変換単位情報を得るためのルールと対応付けられていてもよい。また、このルールを指定情報が有していても良い。指定情報格納部１０８は、不揮発性の記録媒体が好適であるが、揮発性の記録媒体でも実現可能である。
【００５３】
次に、プログラム変換装置の動作について図２のフローチャートを用いて説明する。
【００５４】
（ステップＳ２０１）第一ソースプログラム受付部１０２は、第一ソースプログラムを受け付ける。第一ソースプログラムは、例えば、変換対象のプログラムである。例えば、第一ソースプログラムがメモリ等に格納されている場合、この第一ソースプログラムを、第一ソースプログラム受付部１０２が読み込んで受け付けてもよい。受け付けた第一ソースプログラムは、図示しないメモリ等の記憶媒体に一時記憶される。
【００５５】
（ステップＳ２０２）命令パターン指定情報受付部１０１は、命令パターン指定情報を受け付ける。具体的には、命令パターン格納部１００に格納されている複数の変換用命令パターン情報のうちの一つを指定する命令パターン指定情報を受け付ける。命令パターン指定情報は、例えば変換用命令パターン情報を、当該変換用命令パターン情報の識別情報等を用いて指定する情報である。受け付けた命令パターン指定情報は、例えば、図示しないメモリ等の記憶媒体に一時記憶される。
【００５６】
（ステップＳ２０３）比較部１０３は、カウンターｋに１を代入する。
【００５７】
（ステップＳ２０４）比較部１０３は、ステップＳ２０１で受け付けた第一ソースプログラムからｋ番目の変換単位情報を読み出す。具体例を挙げると、第一ソースプログラムのうちの、前回変換単位情報が読み出された位置から（ただし、ｋ＝１の場合には、第一ソースプログラムの最初の位置から）所定のルールで決められた文字列、例えば、スペース等で区切られたいわゆる単語等の文字列を順番に読み出し、読み出した文字列が、指定情報格納部１０８に格納された文字列である指定情報のいずれか一つと一致するか否かを順次判断していく。そして、一致する文字列が読み出されてから、次の一致する文字列が読み出されるまで、処理を繰り返し、最初に一致する文字列から、次に一致する文字列の直前までの情報をｋ番目の変換単位情報として読みだす。なお、このルールに従って、変換単位情報を読み出す場合、変換単位情報の読み出し開始位置の最初の文字列は、指定情報に一致すると考えて、最初の文字列に対する指定情報との比較を行わず、読み出し開始位置から、次に現れた指定情報と一致する文字列の直前までの情報を取り出すようにしても良い。ただし、上記以外の方法で変換単位情報を取得するようにしても良い。
【００５８】
（ステップＳ２０５）比較部１０３は、ステップＳ２０４で取り出したｋ番目の変換単位情報と、命令パターン格納部１００に蓄積されている第一命令パターン情報との比較処理を行う。なお、この比較処理の詳細については、後述する。
【００５９】
（ステップＳ２０６）変換部１０４は、ステップＳ２０５による比較の結果、ｋ番目の変換単位情報が、命令パターン格納部１００に格納されている第一命令パターン情報のいずれか一つと一致しているという結果が得られたか否かを判断する。いずれか一つと一致しているという結果が得られた場合、ステップＳ２０７に進み、いずれにも一致していないという結果が得られた場合、ステップＳ２１０に進む。
【００６０】
（ステップＳ２０７）変換部１０４は、ステップＳ２０２において指定された変換用パターン情報のうちの、ステップＳ２０５において一致すると判断された第一命令パターン情報に対応付けられた第二命令パターン情報を、命令パターン格納部１００から読み出す。そして、読み出した第二命令パターン情報を用いて、ステップＳ２０１で受け付けた第一ソースプログラムのｋ番目の変換単位情報に対応する箇所を変換する。例えば、第二命令パターン情報で全体を置き換えても良いし、変換語に対応する部分を除いた箇所だけを置き換えても良い。また、第二命令パターン情報によっては、第一ソースプログラムのｋ番目の変換単位情報に対応する箇所を削除したり、第二命令パターン情報を追加しても良い。
【００６１】
（ステップＳ２０８）コメント記述部１０５は、ステップＳ２０７において変換した箇所に記述するためのコメントの情報を取得する。具体的には、自装置に関するコメントの情報を取得する。例えば、コメント格納部１０６に予め格納されている自装置についてのコメントを読み出してもよい。また、例えば、コメント格納部１０６に予め格納されている、変換部１０４が変換のために利用しているツールの名称等をコメントの情報として取得しても良い。また、ステップＳ２０２において指定された変換用パターン情報の識別情報をコメントの情報として取得しても良い。さらに、自装置に関するコメントに加えて、ステップＳ２０５において一致すると判断された第一命令パターン情報を示す情報をコメントの情報として取得しても良いし、ステップＳ２０７において変換に用いられた第二命令パターン情報を示す情報をコメントの情報として取得しても良い。また、取得したツール名や、変換用パターン情報の識別情報や、変換に利用した第一命令パターン情報と第二命令パターン情報との対に対応した識別情報等の情報を取得し、コメント格納部１０６に予め格納されているテンプレートにはめ込んでコメントの情報を構成しても良い。取得したコメントの情報は、メモリ等の記憶媒体に一時記憶される。
【００６２】
（ステップＳ２０９）コメント記述部１０５は、ステップＳ２０８において取得したコメントの情報を用いて、ステップＳ２０７において変換が行われた第一ソースプログラムの記述箇所に対応する位置にコメントを記述する。例えば、コメントを追記する。
【００６３】
（ステップＳ２１０）比較部１０３は、カウンターｋの値を１インクリメントする。
【００６４】
（ステップＳ２１１）比較部１０３は、第一ソースプログラムの中にｋ番目の変換単位情報があるか否かを判断する。ｋ番目の変換単位情報がある場合、ステップＳ２０４に戻り、ない場合、ステップＳ２１２に進む。例えば、直前のステップＳ２０４の処理において、第一ソースプログラムの末尾の情報が変換単位情報として取り出された場合、ｋ番目の変換単位情報がないと判断するようにしてもよい。
【００６５】
（ステップＳ２１２）出力部１０７は、ステップＳ２０７において変換され、ステップＳ２０９においてコメントが記述された第一ソースプログラムである第二ソースプログラムを、出力する。例えば、図示しない記憶媒体等に蓄積したり、図示しないモニタ等に表示したりする。そして処理を終了する。
【００６６】
なお、図２のフローチャートにおいて、電源オフや処理終了の割り込みにより処理は終了する。
【００６７】
次に、図２のステップＳ２０５の処理の詳細について、図３のフローチャートを用いて説明する。
【００６８】
（ステップＳ３０１）比較部１０３は、カウンターｉに１を代入する。
【００６９】
（ステップＳ３０２）比較部１０３は、ステップＳ２０２において指定された変換用命令パターン情報からｉ番目の第一命令パターン情報を読み出す。
【００７０】
（ステップＳ３０３）比較部１０３は、ステップＳ２０２において指定された変換用命令パターン情報のｉ番目の第一命令パターン情報と、ステップＳ２０４で取得したｋ番目の変換単位情報とを比較する。
【００７１】
（ステップＳ３０４）比較部１０３は、ｉ番目の第一命令パターン情報と、ステップＳ２０４で取得したｋ番目の変換単位情報とが一致するか否かを判断する。ここでの一致は、部分一致であっても完全一致であっても良い。ｉ番目の第一命令パターン情報と、ｋ番目の変換単位情報とが一致するか否かの判断は、例えば、検索や、構文解析や、字句解析等で可能であり、既存技術であるのでここでは詳細な説明を省略する。一致する場合、ステップＳ３０８に進み、一致しない場合、ステップＳ３０５に進む。
【００７２】
（ステップＳ３０５）比較部１０３は、カウンターｉを１インクリメントする。
【００７３】
（ステップＳ３０６）比較部１０３は、ステップＳ２０２において指定された変換用命令パターン情報内のｉ番目の第一命令パターン情報が、ステップＳ２０２において指定された変換用命令パターン情報内にあるか否かを判断する。ある場合、ステップＳ３０２に戻り、ない場合ステップＳ３０７に進む。
【００７４】
（ステップＳ３０７）比較部１０３は、ステップＳ２０２において指定された変換用命令パターン情報内に、一致する第一命令パターン情報がないことを示す判断結果を上位の処理に出力する。そして、上位の処理に戻る。
【００７５】
（ステップＳ３０８）比較部１０３は、ｋ番目の変換単位情報が、ステップＳ２０２において指定された変換用命令パターン情報のｉ番目の第一命令パターン情報に一致することを上位の処理に出力する。そして上位の処理に戻る。
【００７６】
なお、図３のフローチャートにおいて、電源オフや処理終了の割り込みにより処理は終了する。
【００７７】
次に、具体例について説明する。なお、具体例において用いられるプログラムやソースコード等は、一例としてＣＯＢＯＬ言語に基づいて説明のために便宜上用意されたものである。ただし、一部、実際のものとは異なる場合がある。また、本発明はＣＯＢＯＬ言語に限定されるものではない。
【００７８】
図４は、命令パターン格納部１００に格納されている変換用命令パターン情報を管理する変換用命令パターン情報管理表である。変換用命令パターン情報管理表は、「パターンＩＤ」、「変換用命令パターンＩＤ」、「第一命令パターン情報」、および「第二命令パターン情報」という属性を有している。「パターンＩＤ」は、レコードを識別する情報であり、表管理上、利用される情報である。本具体例においては、特に、「パターンＩＤ」を、第一命令パターン情報と第二命令パターン情報との対を管理するための識別情報としても利用する。「変換用命令パターンＩＤ」は、変換用命令パターン情報の識別情報であり、「変換用命令パターンＩＤ」の属性値が同じレコード（行）に含まれる第一命令パターン情報と第二命令パターン情報との対は、同一の変換用命令パターン情報を構成する第一命令パターン情報と第二命令パターン情報との対であることを示している。変換用命令パターン情報は、第一命令パターン情報と第二命令パターン情報との対により構成されるデータベースと考えても良い。「変換用命令パターンＩＤ」の属性値が異なる変換用命令パターン情報は、異なるデータベースと考えも良い。「第一命令パターン情報」は、第一命令パターン情報を示している。「第二命令パターン情報」は、第二命令パターン情報を示している。第二命令パターン情報は、同じレコードに含まれる第一命令パターン情報と対応付けられている。第一命令パターン情報や第二命令パターン情報は、英字と数字と日本語とスペース等の記号を用いて表されている。日本語の部分は、変数や関数名やリテラル文字等のユーザ等が値や文字列等を指定可能な情報である変換語を示しており、他の部分は変換語以外の情報を示している。例えば、「ＳＥＬＥＣＴ  変数０１  ＡＳＳＩＧＮ  ＴＯ  変数０２」では、「変数０１」、「変数０２」が変換語、例えば非予約語であり、「ＳＥＬＥＣＴ」、「ＡＳＳＩＧＮ」、「ＴＯ」が変換語以外の文字列、例えば予約語である。変換語は正規表現に対応している。これらの変換語は、例えば、「［ａ−ｚ、Ａ−Ｚ、０−９…］＊」、すなわち、ａからｚの小文字または大文字のアルファベット、または０から９までの数字等のいずれかの文字で構成される１文字以上の文字列を表している。なお、ここでの「＊」は、１文字以上の文字数を指定する。また、第二命令パターン情報における「＃ＤＥＬ＃」は、置き換え用の第二命令パターン情報がなく、第一命令パターン情報に対応する第一ソースプログラムの記述箇所を、削除する処理が行われることを示す文字列である。また、「＃ＡＤＤ＃」は、これに続く命令パターンが、第一命令パターン情報に対応する第一ソースプログラムの記述箇所に追加されることを示す。
【００７９】
図５は、第一ソースプログラム受付部１０２が受け付ける第一ソースプログラムの例である。ここでは、プログラム変換装置１が、ユーザの指示により、図５に示すような第一ソースプログラムを受け付けて解析を開始する場合について説明する。なお、図５の第一ソースプログラムにおいては、各行の７３カラムから８０カラムまでがコメントを記述するコメント領域５０であるとする。また、「＊」で挟まれた箇所や「＃」で始まる文字列（例えば＃からピリオドや改行コードまでの文字列）は、コメント行であるとする。比較部１０３は、コメント領域や、コメント行であることを判断した場合、その領域や行等に記述されているコードについての比較は行わない。また、改行コード等の制御記号等は、比較部１０３による比較の対象としないようにしてもよい。例えば無視するようにして良い。なお、図５において、二以上の連続したスペース等については、１つのスペースと同じ扱いをするようにしても良い。
【００８０】
まず、ユーザの指示等に応じて、第一ソースプログラム受付部１０２が、メモリ等から図５に示すような第一ソースプログラムを読み出す。読み出した第一ソースプログラムは、図示しないメモリ等に一時記憶される。
【００８１】
次に、ユーザがメニュー画面等を操作して、第一ソースプログラムの変換に用いる変換用命令パターン情報を指定する指示、具体的には、変換用命令パターンＩＤの一つである「Ａ」を入力すると、命令パターン指定情報受付部１０１は、指示に応じて変換用命令パターンＩＤが「Ａ」である変換用命令パターン情報の指定を受け付ける。
【００８２】
図６は、指定情報格納部１０８に格納されている指定情報を管理する指定情報管理表である。指定情報管理表は、「ＩＤ」と「指定情報」という属性を有している。「ＩＤ」は、レコードを識別する情報であり、表管理上、利用される情報である。「指定情報」は、指定情報である。なお、ここでは、指定情報は、ユーザが指定する文字列、例えば「ＭＯＶＥ」や「ＣＡＬＬ」等の命令語やピリオドを含む文字列である。なお、ここでは、命令語として、「ＩＦ」や「ＥＬＳＥ」等も含むと考える。
【００８３】
次に、比較部１０３が、第一ソースプログラム受付部１０２が受け付けた第一ソースプログラムから、変換単位情報を取り出す処理を行う。具体的には、比較部１０３は、予め指定された変換単位情報を取り出すためのルールに従って、変換単位情報を取り出す処理を行う。変換単位情報を取り出すルールは、ここでは具体例として、第一ソースプログラム内の、図６に示したような指定情報格納部１０８に格納されている指定情報の一つであるピリオドが現れた位置の次の文字列から、次に指定情報が現れた直前の位置までの情報、および、第一ソースプログラム内の、指定情報格納部１０８に格納されている指定情報のうちのピリオド以外の文字列が現れた位置から、次に指定情報が現れた直前の位置までの範囲の情報を取り出す、というルールであるとする。なお、このルールは一例であり、適宜変更や追加が可能である。また、改行コード等は、この取り出す処理においては無視されるか、あるは情報を取り出す際に、スペース等に変換されるようにすればよい。また、２以上の連続したスペース等を一のスペースを残して削除してもよい。また、コメント行や、コメント領域の文字列は取り出さない。なお、この取り出す処理を行なう前に、上述したように、改行コード等をスペースに置換する処理等を、第一ソースプログラムに実行しておくようにしてもよい。比較部１０３が、このルールに従って変換単位情報を取り出す処理は、例えば、プログラム等を実行することにより行われるようにする。このプログラムについては、図示しないメモリ等に予め格納されているようにすればよい。
【００８４】
例えば、このようなるルールに従うことによって、第一ソースプログラムの先頭から、図７において点線で示したような変換単位情報が、順番に比較部１０３により取り出されることとなる。
【００８５】
次に、比較部１０３は、第一ソースプログラムから取得した変換単位情報が、図４に示したような命令パターン格納部１００に格納されている第一命令パターン情報のうちの、「変換用命令パターンＩＤ」が「Ａ」である第一命令パターン情報のいずれか一つと一致するか否かを判断する。ここでは、比較部１０３は、スペースや、ピリオドで区切られた文字列、すなわち単語を単位として、変換単位情報と各第一命令パターン情報との比較等を行なうものとする。なお、変換単位情報と第一命令パターン情報との比較は、ここでは、第一命令パターン情報と変換単位情報との、変換語に対応する文字列（単語）を除いた文字列が完全一致であるか否かにより判断される。ただし、スペースや改行コード等の制御コード等については、一致であるか否かの判断においては無視するようにしても良い。また、第一命令パターン情報の変換語が示す属性と、変換単位情報の変換語に相当する位置に配置されている文字列の属性とが一致するか否か等も判断するようにしても良い。なお、このような比較については、例えば、構文解析や、字句解析、パターンマッチングの技術等において公知であるので詳細な説明は省略する。
【００８６】
この比較において、例えば、第一ソースプログラムから取得した変換単位情報である「ＳＯＵＲＣＥ−ＣＯＭＰＵＴＥＲ  ＢＣＤ７１００」が、「変換用命令パターンＩＤ」が「Ａ」である変換用命令パターン情報に含まれる第一命令パターン情報である「ＳＯＵＲＣＥ−ＣＯＭＰＵＴＥＲ  変数」という第一命令パターン情報と一致すると判断される。この第一命令パターン情報「ＳＯＵＲＣＥ−ＣＯＭＰＵＴＥＲ  変数」は「パターンＩＤ」が「Ｐ０１」である第一命令パターン情報である。
【００８７】
一致すると判断されたため、変換部１０４は、「パターンＩＤ」が「Ｐ０１」である「ＳＯＵＲＣＥ−ＣＯＭＰＵＴＥＲ  変数」という第一命令パターン情報に対応する第二命令パターン情報を、命令パターン格納部１００から読み出す。具体的には、図４に示した変換用命令パターン情報管理表における「パターンＩＤ」が「Ｐ０１」である第二命令パターン情報である「ＳＯＵＲＣＥ−ＣＯＭＰＵＴＥＲ  ＡＢＣ−６００」を読み出す。そして、第一ソースプログラム受付部１０２が受け付けた第一ソースプログラムにおける「ＳＯＵＲＣＥ−ＣＯＭＰＵＴＥＲ  ＢＣＤ７１００」という変換単位情報の取得元となる記述箇所を、取得した第二命令パターン情報「ＳＯＵＲＣＥ−ＣＯＭＰＵＴＥＲ  ＡＢＣ−６００」で置換する。
【００８８】
なお、対をなす第一命令パターン情報と第二命令パターン情報とのいずれにも共通する変換語が含まれる場合、変換部１０４は、変換単位情報の、第一命令パターン情報の変換語に対応する位置に配置されている文字列を取り出し、この取り出した文字列で、対をなす第二命令パターン情報の共通する変換語を置換し、この置換により得られた第二命令パターン情報で、第一ソースプログラムの変換単位情報の取得元となる記述箇所を置換するようにすればよい。
【００８９】
さらに、コメント記述部１０５は、第一ソースプログラムの変換を行った自装置についての情報を取得し、第二命令パターン情報による置換を行った文字列を含む行のコメント領域５０に、自装置についての情報を示すコメントを記述する。ここでは、例えば、比較部１０３および変換部１０４が一以上の実行モジュールを実行させることで、比較や変換を行っており、その実行モジュールのモジュール名が「Ｔ１」であったとする。また、コメント格納部１０６には、コメントのテンプレートの情報である「モジュール名，変換用命令パターンＩＤ，パターンＩＤ」が予め格納されているものとする。このテンプレートにおいて、「モジュール名，変換用命令パターンＩＤ」の部分が、自装置についてのコメントである。このうち、「変換用命令パターンＩＤ」の部分は、命令パターン指定情報により指定される変換用命令パターン情報を用いた変換であることを示すコメントである。コメント記述部１０５は、比較および変換に利用した実行モジュール名「Ｔ１」と、比較および変換に用いられた「変換用命令パターン情報ＩＤ」である「Ａ」と、変換に用いられた第一命令パターン情報と第二命令パターン情報との対の「パターンＩＤ」である「Ｐ０１」をそれぞれ取得し、コメント格納部１０６に格納されていたテンプレートのモジュール名を、実行モジュール名「Ｔ１」で置き換え、さらに、「変換用命令パターンＩＤ」を、「Ａ」で置き換え、「パターンＩＤ」を「Ｐ０１」で置き換えたコメント「Ｔ１，Ａ，Ｐ０１」を作成する。このコメントは、「Ｔ０１」という実行モジュールで、「Ａ」という変換用命令パターン情報を用いて、「Ｐ０１」という第一命令パターン情報と第二命令パターン情報との対に応じた変換が行われたことを示すコメントである。そして、作成したコメントを、第二命令パターン情報による置換を行った文字列を含む行のコメント領域５０に記述する。
【００９０】
図８は、コメントを記述した状態の第一ソースプログラムを示す図である。
【００９１】
なお、比較部１０３は、第一ソースプログラムから取得した変換単位情報が、図４に示したような命令パターン格納部１００に格納されている第一命令パターン情報のうちの、「変換用命令パターンＩＤ」が「Ａ」である第一命令パターン情報のいずれにも一致しないと判断された場合、第二命令パターンによる変換は行われず、他の変換単位情報についての、同様の処理が繰り返される。
【００９２】
また、比較部１０３により、変換単位情報が、「パターンＩＤ」が「Ｐ０６」の第一命令パターン情報と一致すると判断された場合、「パターンＩＤ」が「Ｐ０６」である「第二命令パターン情報」の値が「＃ＤＥＬ＃」であるため、この変換単位情報に対応する第一ソースプログラムの記述箇所は削除される。
【００９３】
以上の処理を、第一ソースプログラムの変換単位情報について繰り返し、第一ソースプログラムの全ての変換単位情報についての処理が終わった時点で変換の処理が終了する。
【００９４】
変換が終了した時点で、第一ソースプログラムが変換されたことにより作成された第二ソースプログラムが、出力部１０７により、図示しないハードディスク等の記憶媒体により構成される格納部に蓄積される。また、作成された第二ソースプログラムがユーザ等の指示に応じて、図示しないモニタやプリンタに出力される。
【００９５】
図９に、第二ソースプログラムの表示例を示す図である。このような第二ソースプログラムにおいては、コメント領域５０のコメントを見ることで、ユーザは、コメントがある行が、第二命令情報により変換されていることや、コメントがある行が、どのような装置やモジュールで、どのような変換用命令パターン情報を用いて変換されたかを容易に知ることができる。また、コメントから、どのような第一命令パターン情報と第二命令パターン情報との対を用いて変換が行われたかを知ることもできる。これにより、変換が適切に行われているか否かや、どのような装置やモジュールや変換用命令パターン情報を用いた場合に、効率的に変換が行われるか等を、容易に認識することが可能となる。
【００９６】
なお、ユーザがメニュー画面等を操作して、第一ソースプログラムの変換に用いる変換用命令パターン情報を指定する指示として、「Ａ」以外の変換用命令パターンＩＤ、例えば「Ｂ」を入力した場合、この変換用命令パターンＩＤ「Ｂ」に対応した変換用命令パターン情報を構成する第一命令パターン情報や、第二命令パターン情報を用いて第一ソースプログラムの変換が行われることとなる。
【００９７】
なお、上記具体例において、比較部１０３や変換部１０４が利用するモジュールが予め複数用意されており、ユーザにからの指定によって、比較や変換の処理に用いるモジュールを適宜変更できるようにしても良い。この場合、例えば、現在利用されている実行モジュール名が、コメントに用いられることとなる。
【００９８】
また、ユーザにより変換用命令パターン情報を指定する代わりに、実行モジュールによって、予めどのような変換用命令パターン情報が利用されるかが指定されているようにしても良い。
【００９９】
また、上記具体例においては、変換に用いられた第一命令パターン情報と第二命令パターン情報との対を示す「パターンＩＤ」を含むコメントを記述するようにしたが、第一ソースプログラムの、第二命令パターン情報により変換された記述箇所の、変換前のソースコードを、コメントに記述するようにしても良いし、変換部が変換を行った記述箇所の、変換前の記述に対応する第一命令パターン情報や、変換に用いられた第二命令パターン情報を示す情報を、コメントに記述するようにしても良い。
【０１００】
なお、上記具体例においては、コメントをコメント領域５０に記述するようにしたが、例えば、図１０に示すように、第二命令情報を用いて変換を行った箇所の次の行等に、コメント行を設け、上記と同様の、自装置のコメントを含む変換に関するコメントを記述するようにしても良い。なお、図１０において、「＃ＤＥＬ＃」と同じ行にある文字列は、削除されたソースコード、「＃ＣＨＧ＃」と同じ行にある文字列は、削除された箇所の置き換えに用いられた第二命令パターン情報を示す。また、「＃ＴＯＯＬ＃」は、変換や追加や削除に用いられた実行モジュールを示す情報、「＃ＤＢ＃」は、変更や追加や削除に用いられた変換用命令パターン情報を示す情報である。
【０１０１】
また、コメント領域５０に記述するコメントの文字数がコメント領域一行分よりも長い場合、複数行にわたってコメントを記述するようにしても良い。
【０１０２】
以上、本実施の形態によれば、第一ソースプログラムの、第一命令パターン情報と第二命令パターン情報の対を用いて変換を行った箇所に、変換を行った自装置に関するコメントを記述するようにしたことにより、どのような装置やツールによって変換を行った場合に、どのような変換結果が得られるかを、容易に認識することができる。これにより、例えば、ソースプログラムを変換する際にどのような装置やツールを利用するかを検討する際に、有用な情報を得ることが可能となる。また、ツールや、変換用命令パターン情報のデータベース等を切り替えて、ソースプログラムの変換を行った場合に、どのような変換が行われるかを容易に調べて判断することが可能となる。
【０１０３】
（実施の形態２）
本実施の形態のプログラム分析装置は、上記実施の形態において説明したプログラム分析装置のような変換ツールを用いて第一ソースプログラムを変換した場合に変換されると考えられる部分を、上記実施の形態の比較部と同様の構成を用いて検出し、当該検出された部分がどのような変換ツールによって変換されるかを示すコメントを記述するようにしたものである。
【０１０４】
図１７は、本実施の形態におけるプログラム分析装置のブロック図である。
【０１０５】
プログラム分析装置２は、第一命令パターン格納部２００、変換ツール指定情報受付部２０１、命令パターン組指定情報受付部２０２、第一ソースプログラム受付部２０３、比較部２０４、コメント記述部２０５、コメント格納部２０６、第一ソース出力部２０７、および指定情報格納部２０８を備えている。
【０１０６】
第一命令パターン格納部２００には、第一ソースプログラムを第二ソースプログラムに変換するツールである変換ツールと対応付けられた情報であって、当該変換ツールが変換に利用する第一ソースプログラムの命令パターンを示す情報である第一命令パターン情報が１以上格納され得る。具体的には、第一ソースプログラムを第二ソースプログラムに変換するツールである変換ツールを識別する情報であるツール識別情報と、当該変換ツールが変換に利用する、第一ソースプログラムの命令パターンを示す情報である第一命令パターン情報とが対応付けられて１以上格納され得る。例えば、変換ツールの識別情報と、当該変換ツールがソースコードの変換に利用する、変換前の第一ソースプログラムの命令パターンの情報と、当該命令パターンに対応する変換後の第二ソースプログラムの命令パターンの情報との対が１以上格納され得る。ただし、第二ソースプログラムの命令パターン情報とは対応付けられていなくても良い。ここでの第一命令パターン情報は、具体的には、上記実施の形態１において説明した第二命令パターン情報と対応付けられた命令パターンの情報である。即ち、第一命令パターン情報は、変換後の命令パターンの情報である第二命令パターン情報と対応付けられた命令パターンの情報である。第一ソースプログラムや、第二ソースプログラムや、命令パターンや、第一命令パターン情報等については、上記実施の形態１と同様であるのでここでは説明を省略する。変換ツールとは、第一ソースプログラムを第二ソースプログラムに変換する装置や、変換を行うためのプログラムや実行モジュール等である。変換ツールを実現する実行モジュール等は、複数のモジュールにより構成されていてもよい。変換ツールは、例えば、上記実施の形態において説明したプログラム変換装置１の変換部１０４等と同様の、ソースプログラムを変換するための構成を備えた変換装置等である。変換ツールは変換を行うためのプログラムを実行可能なコンピュータ等であってもよい。ツール識別情報は、変換ツールに割り当てられた任意の識別情報等の、ツールが識別可能な情報であればよい。ツール識別情報は、例えば変換ツールのツール名や、プログラム名や、実行ファイル名や、実行モジュール名等である。なお、ソースプログラムの変換に利用可能な変換ツールは１以上であってもよい。第一命令パターン格納部２００には、複数の変換ツールのツール識別情報と対応付けられた第一命令パターン情報が格納されていても良い。即ち、第一命令パターン格納部２００には、各変換ツールに対応した第一命令パターン情報が、ツール識別情報と対応付けられて格納されていてもよい。第一命令パターン格納部２００に格納されている第一命令パターン情報は、例えば、上記実施の形態において説明した命令パターン情報に格納されている第一命令パターン情報と同様の命令パターン情報である。また、第一命令パターン格納部２００には、上記実施の形態１と同様に、第一ソースプログラムの第一命令パターン情報に対応した部分（例えば上述した変換単位）を変換する際に利用される第二命令パターン情報が、第一命令パターン情報と対応付けられて格納されていても良い。
【０１０７】
なお、本実施の形態においては、第一ソースプログラムに利用され得る命令パターンであって、第一ソースプログラムを第二ソースプログラムに変換する際に変換されない命令パターンを示す情報が、ツール識別情報と対応付けられて格納されていても良い。ここではこのような命令パターン及び命令パターンの情報を、非変換命令パターンおよび非変換命令パターン情報と呼ぶ。このような非変換命令パターンは、分析結果や命令パターンの見直し等によって、変換の対象となる第一命令パターンとなり得る可能性がある。例えば、移行後の新たな環境にあわせて変換が必要な命令パターンが増える場合や、本願のプログラム分析装置２等を用いた変換状況の分析の結果、変換効率を挙げる必要がある場合に変換の対象となる第一命令パターンに変更されることが考えられるからである。また、分析時には、変換内容、具体的には対応する第二命令パターンが確定していないものもあるからである。このため、予め非変換命令パターン情報として登録しておくことで、分析時には変換の対象となる第一命令パターンとしての分類はできていなくても、必要なときに、容易に第一命令パターンに変換が可能となる。非変換命令パターン情報や、非変換命令パターン情報であることを示す情報と対応付けて格納されてもよい。第一命令パターン格納部２００は、不揮発性の記録媒体が好適であるが、揮発性の記録媒体でも実現可能である。
【０１０８】
なお、第一命令パターン格納部２００には、変換ツールが変換に利用可能な１以上の第一命令パターン情報の組が、一の変換ツールに対して複数対応付けられて格納されていてもよい。例えば、複数の変換ツールがある場合、各変換ツール毎に第一命令パターン情報により構成される組が複数用意されていても良い。例えば、第一命令パターン格納部２００には、変換ツールと、当該変換ツールが利用可能な上述した変換命令用パターン情報と同様の情報とが対応付けられて格納されていても良い。例えば、異なる第一命令パターン情報の組においては、一方の組にしか存在しない第一命令パターン情報が存在しても良い。このような場合、一の変換ツールが、第一命令パターン情報のどの組を変換に利用するかによって、変換ツールによる変換結果、即ち変換により得られる第二ソースプログラムが異なるものとなり得る。つまり、変換の際に利用する第一命令パターン情報の組をユーザの指定等に応じて切り替えることで、一の変換ツールで、第一ソースプログラムに対して異なる変換を行って、異なる第二ソースプログラムを変換結果として得ることが可能となる。
【０１０９】
変換ツール指定情報受付部２０１は、ユーザ等から、変換ツールを指定する指示である変換ツール指定情報を受け付ける。例えば、指定する変換ツールの変換ツール識別情報を受け付けてもよい。なお、第一命令パターン格納部２００に複数の変換ツールに対応した第一ソースプログラムが格納されていない場合、常に第一命令パターン格納部２００に格納されている変換ツール識別情報が示す変換ツールを指定するようにすれば良いため、変換ツール指定情報受付部２０１は省略しても良い。ここで述べる受付とは、例えば、入力手段からの受付や、他の機器等から送信される入力信号の受信や、記録媒体等からの情報の読み出し等である。変換ツール指定情報の入力手段は、テンキーやキーボードやマウスやメニュー画面によるもの等、何でも良い。変換ツール指定情報受付部２０１は、テンキーやキーボード等の入力手段のデバイスドライバーや、メニュー画面の制御ソフトウェア等で実現され得る。
【０１１０】
命令パターン組指定情報受付部２０２は、変換ツール指定情報により指定される変換ツールに対応した第一命令パターン情報が、複数の組を構成している場合、いずれの組を選択するかを指定する情報を受け付ける。なお、以下、一以上の第一命令パターン情報で構成される一の組を、第一命令パターン情報組と呼ぶ。また、第一命令パターン情報組を指定する情報を、命令パターン組指定情報と呼ぶ。なお、第一命令パターン情報が複数の組を構成していない場合、命令パターン組指定情報受付部２０２は省略しても良い。ここで述べる受付とは、例えば、入力手段からの受付や、他の機器等から送信される入力信号の受信や、記録媒体等からの情報の読み出し等である。命令パターン組指定情報の入力手段は、テンキーやキーボードやマウスやメニュー画面によるもの等、何でも良い。命令パターン組指定情報受付部２０２は、テンキーやキーボード等の入力手段のデバイスドライバーや、メニュー画面の制御ソフトウェア等で実現され得る。
【０１１１】
第一ソースプログラム受付部２０３は、第一ソースプログラムを受け付ける。第一ソースプログラム受付部２０３の構成および処理等については、上述した第一ソースプログラム受付部１０２と同様であるので、ここでは説明を省略する。
【０１１２】
比較部２０４は、第一ソースプログラム受付部２０３が受け付けた第一ソースプログラムと、第一命令パターン格納部２００に格納されている第一命令パターン情報とを比較する。例えば、比較部２０４は、変換ツール指定情報により指定された変換ツールのツール識別情報に対応する第一命令パターン情報と、第一ソースプログラムとを比較する。また、例えば、比較部２０４は、命令パターン組指定情報により指定された第一命令パターン情報の組に含まれる第一命令パターン情報と、第一ソースプログラムとを比較する。比較部２０４が行う比較処理については上述した比較部２０４と同様であるので、ここでは説明を省略する。比較部２０４は、通常、ＭＰＵやメモリ等から実現され得る。比較部２０４の処理手順は、通常、ソフトウェアで実現され、当該ソフトウェアはＲＯＭ等の記録媒体に記録されている。但し、ハードウェア（専用回路）で実現しても良い。
【０１１３】
コメント記述部２０５は、比較部２０４が第一命令パターン情報と一致すると判断した、第一ソースプログラムの記述箇所に対応する箇所に、変換ツールに関するコメントを記述する。変換ツールに関するコメントは、自装置の代わりに変換ツール指定情報で指定された変換ツールについての記述を行う点を除けば、上述した自装置に関するコメントと同様のコメントである。変換ツールに関するコメントは、例えば変換ツールを識別する情報や、変換ツールの属性や特徴等を示す情報を含む情報であってもよい。コメント記述部２０５は、例えば、変換ツール指定情報受付部２０１が受け付けた変換ツール指定情報が有する変換ツール識別情報を取得してコメントを作成し記述する。さらに、変換ツール指定情報が指定した変換ツールを示す情報と比較部２０４が一致すると判断した第一命令パターン情報とを含むコメントを作成し記述しても良い。また、変換ツール指定情報が指定する変換ツールの変換ツール識別情報を、後述するコメント格納部２０６に格納されているコメント用のテンプレート等に配置することでコメントを作成し、記述しても良い。また、取得した変換ツール識別情報を、後述するコメント格納部２０６に格納されているルールに従って変換したり配置したりすることでコメントを作成し、記述しても良い。また、変換ツール指定情報が指定する変換ツールに対応付けられて（具体的には変換ツール識別情報に対応付けられて）コメント格納部２０６に格納されている変換ツールに関するコメントを取得しても良い。コメントを記述する箇所は、結果的に、比較部２０４が一致すると判断した記述箇所との対応関係が分かる箇所であればよく、上述したコメント記述部１０７がコメントを記述する箇所とは、比較部２０４が一致すると判断した箇所と対応する箇所である点が異なる以外は同様の箇所である。例えば、コメントは、上記実施の形態１と同様に、第一ソースプログラムと一致すると判断された箇所と同じ行や、その前後の行に記載されることが好ましい。なお、コメント記述部２０５がコメントを記述する処理等は、コメントの記述先が、上記実施の形態とは異なる変換されていない第一ソースプログラムである点や、比較部２０４が比較に用いた第一命令パターン情報に対応する変換ツールに関するコメントを記述する点等を除けば、上記コメント記述部１０５と同様であるので、ここでは詳細な説明は省略する。コメント記述部２０５は、通常、ＭＰＵやメモリ等から実現され得る。コメント記述部２０５の処理手順は、通常、ソフトウェアで実現され、当該ソフトウェアはＲＯＭ等の記録媒体に記録されている。但し、ハードウェア（専用回路）で実現しても良い。
【０１１４】
コメント格納部２０６には、コメント記述部１０５が記述する変換ツールに関するコメントの情報が格納され得る。コメント格納部２０６は、格納され得るコメントの情報が、コメント記述部１０５が記述する変換ツールに関するコメント、具体的には、比較部２０４が比較に用いた第一命令パターン情報に対応する変換ツールに関するコメントである点を除けば、上述したコメント格納部１０６と同様であるので、ここでは説明を省略する。なお、コメント格納部２０６には、コメントの情報が格納されている代わりに、コメントを作成する際に利用されるテンプレートや、コメント作成のためのルール等が格納されていても良い。
【０１１５】
第一ソース出力部２０７は、コメント記述部２０５が記述したコメントを含む第一ソースプログラムを出力する。第一ソース出力部２０７が出力する第一ソースプログラムは、具体的には、上記実施の形態１の出力部１０７が出力する第二命令パターン情報で変換されたソースプログラムとは異なり、第二命令パターン情報を用いて変換されていない第一ソースプログラムである。ここで述べる出力とは、ディスプレイへの表示、プロジェクターを用いた投影、プリンタへの印字、外部の装置への送信、記録媒体への蓄積、他の処理装置や他のプログラム等への処理結果の引渡し等を含む概念である。第一ソース出力部２０７は、ディスプレイやプリンタ等の出力デバイスを含むと考えても含まないと考えても良い。出力部は、出力デバイスのドライバーソフトまたは、出力デバイスのドライバーソフトと出力デバイス等で実現され得る。
【０１１６】
指定情報格納部２０８には、ユーザ等により予め指定された情報である１以上の指定情報が格納されている。指定情報格納部２０８の構成および処理は、上述した指定情報格納部１０８等と同様であるので、ここでは説明を省略する。
【０１１７】
次に、プログラム分析装置の動作について図１８のフローチャートを用いて説明する。
【０１１８】
（ステップＳ１２０１）第一ソースプログラム受付部２０３は、第一ソースプログラムを受け付ける。第一ソースプログラムは、例えば、分析対象のプログラムである。第一ソースプログラムは、例えば、プログラム変換装置により変換の対象となるプログラムの一部等であってもよい。例えば、第一ソースプログラムがメモリ等に格納されている場合、第一ソースプログラム受付部２０３は、この第一ソースプログラムを読み込んで受け付けてもよい。受け付けた第一ソースプログラムは、図示しないメモリ等の記憶媒体に一時記憶される。
【０１１９】
（ステップＳ１２０２）変換ツール指定情報受付部２０１は、ユーザ等から、変換ツール指定情報を受け付ける。受け付けた変換ツール指定情報は、例えば、図示しないメモリ等の記憶媒体に一時記憶される。
【０１２０】
（ステップＳ１２０３）命令パターン組指定情報受付部２０２は、命令パターン組指定情報を受け付ける。具体的には、変換ツール指定情報により指定される変換ツールに対応した、第一命令パターン格納部２００に格納されている一以上の第一命令パターン情報組のいずれかの組を指定する命令パターン組指定情報を受け付ける。命令パターン組指定情報は、例えば、第一命令パターン情報組を指定するための、当該第一命令パターン情報組の識別情報等を有する情報である。受け付けた命令パターン組指定情報は、例えば、図示しないメモリ等の記憶媒体に一時記憶される。
【０１２１】
（ステップＳ１２０４）比較部２０４は、カウンターｋに１を代入する。
【０１２２】
（ステップＳ１２０５）比較部２０４は、ステップＳ１２０１で受け付けた第一ソースプログラムからｋ番目の変換単位情報を読み出す。具体例を挙げると、第一ソースプログラムのうちの、前回変換単位情報が読み出された位置から（ただし、ｋ＝１の場合には、第一ソースプログラムの最初の位置から）所定のルールで決められた文字列、例えば、スペース等で区切られたいわゆる単語等の文字列を順番に読み出し、読み出した文字列が、指定情報格納部１０８に格納された文字列である指定情報のいずれか一つと一致するか否かを順次判断していく。そして、一致する文字列が読み出されてから、次の一致する文字列が読み出されるまで、処理を繰り返し、最初に一致する文字列から、次に一致する文字列の直前までの情報をｋ番目の変換単位情報として読みだす。なお、このルールに従って、変換単位情報を読み出す場合、変換単位情報の読み出し開始位置の最初の文字列は、指定情報に一致すると考えて、最初の文字列に対する指定情報との比較を行わず、読み出し開始位置から、次に現れた指定情報と一致する文字列の直前までの情報を取り出すようにしても良い。ただし、上記以外の方法で変換単位情報を取得するようにしても良い。
【０１２３】
（ステップＳ１２０６）比較部２０４は、ステップＳ１２０５で取り出したｋ番目の変換単位情報と、第一命令パターン格納部２００に蓄積されている第一命令パターン情報のうちの、ステップＳ１２０２で指定された変換ツール指定情報により指定された変換ツールに対応した第一命令パターン情報のうちの、ステップＳ１２０３で指定された命令パターン組指定情報により指定された第一命令パターン情報組に含まれる第一命令パターン情報との比較処理を行う。なお、この比較処理については、比較対象となる第一命令パターン情報が異なる点を除けば、上記実施の形態において説明したステップＳ２０５の処理、即ち、図３に示した処理と同様であるので、詳細な説明は省略する。
【０１２４】
（ステップＳ１２０７）コメント記述部２０５は、ステップＳ１２０６による比較の結果、ｋ番目の変換単位情報が、第一命令パターン格納部２００に格納されている第一命令パターン情報のいずれか一つと一致しているという結果が得られたか否かを判断する。いずれか一つと一致しているという結果が得られた場合、ステップＳ１２０８に進み、いずれにも一致していないという結果が得られた場合、ステップＳ１２１０に進む。
【０１２５】
（ステップＳ１２０８）コメント記述部２０５は、ステップＳ１２０７において一致していると判断された箇所に記述するためのコメントの情報を取得する。具体的には、ステップＳ１２０２において変換ツール指定情報受付部２０１が受け付けた変換ツール指定情報が指定する変換ツールに関するコメントの情報を取得する。例えば、コメント格納部２０６に予め格納されている変換ツール指定情報に対応した変換ツールの識別情報、例えばツール名等をコメントの情報として取得してもよい。また、ステップＳ１２０３において命令パターン組指定情報により指定された第一命令パターン情報組の識別情報等をコメントの情報として取得しても良い。さらに、変換ツール等に関するコメントに加えて、ステップＳ１２０６において一致すると判断された第一命令パターン情報を示す情報をコメントの情報として取得しても良い。また、取得した変換ツールの識別情報や、命令パターン組識別情報や、一致すると判断された第一命令パターン情報等の情報を取得し、コメント格納部１０６に予め格納されているテンプレート等の予め指定された位置に配置して、コメントの情報を構成しても良い。取得したコメントの情報は、メモリ等の記憶媒体に一時記憶される。
【０１２６】
（ステップＳ１２０９）コメント記述部２０５は、ステップＳ１２０８において取得したコメントの情報を用いて、ステップＳ１２０６において一致していると判断された第一ソースプログラムの記述箇所に対応する位置にコメントを記述する。例えば、コメントを追記する。
【０１２７】
（ステップＳ１２１０）比較部２０４は、カウンターｋの値を１インクリメントする。
【０１２８】
（ステップＳ１２１１）比較部２０４は、第一ソースプログラムの中にｋ番目の変換単位情報があるか否かを判断する。ｋ番目の変換単位情報がある場合、ステップＳ１２０５に戻り、ない場合、ステップＳ１２１２に進む。例えば、直前のステップＳ１２０５の処理において、第一ソースプログラムの末尾の情報が変換単位情報として取り出された場合、ｋ番目の変換単位情報がないと判断するようにしてもよい。
【０１２９】
（ステップＳ１２１２）第一ソース出力部２０７は、ステップＳ１２０９においてコメントが記述された第一ソースプログラムを、出力する。例えば、図示しない記憶媒体等に蓄積したり、図示しないモニタ等に表示したりする。そして処理を終了する。
【０１３０】
なお、図１８のフローチャートにおいて、電源オフや処理終了の割り込みにより処理は終了する。
【０１３１】
以下、本実施の形態におけるプログラム分析装置の具体的な動作について説明する。なお、この具体例においては、各変換ツールに対応した第一命令パターン情報組がそれぞれ一つであり、命令パターン組指定情報の入力等が不要である場合について説明する。
【０１３２】
図１３は、第一命令パターン格納部２００に格納されている第一命令パターン情報を管理する第一命令パターン情報管理表である。この第一命令パターン情報管理表においては、第二命令パターン情報に変換されない第一命令パターン情報も管理されているものとする。なお、ここでは、第一命令パターン情報が変換される第二命令パターン情報も、第一命令パターン情報と対応付けて管理しているが、単に分析を行うだけであれば、第二命令パターン情報は省略可能である。第一命令パターン情報管理表は、「変換ツールＩＤ」、「パターンＩＤ」、「第一命令パターン情報」、および「第二命令パターン情報」という属性を有している。「変換ツールＩＤ」は、変換ツールの識別情報である。「パターンＩＤ」は、第一命令パターン情報を管理するための識別情報である。なお、「パターンＩＤ」の末尾が「Ｓ」の行から、次に現れる末尾が「Ｅ」である「パターンＩＤ」の行までのレコードの「第一命令パターン情報」は、一の第一命令パターン情報であることを示す。「第一命令パターン情報」は、第一命令パターン情報を示している。「第二命令パターン情報」は、第二命令パターン情報を示している。第二命令パターン情報は、同じレコードに含まれる第一命令パターン情報と対応付けられている。第一命令パターン情報や第二命令パターン情報については、上記実施の形態において説明した具体例と同様である。なお、「第二命令パターン情報」の値のないレコード「第一命令パターン情報」は、変換ツールにより変換されずに、そのまま残る第一命令パターン情報であることを示す。また、第二命令パターン情報における「＃ＤＥＬ＃」は、置き換え用の第二命令パターン情報がなく、第一命令パターン情報に対応する第一ソースプログラムの記述箇所を、削除する処理が行われることを示す文字列であるとする。
【０１３３】
図１４は、第一ソースプログラム受付部２０３が受け付ける第一ソースプログラムの例である。ここでは、プログラム分析装置２が、ユーザの指示により、図１４に示すような第一ソースプログラムを受け付けて解析を開始する場合について説明する。なお、図１４の第一ソースプログラムにおいては、各行の１から６カラムまでが行番号等を記述するコメント領域であり、各行の８１カラム以降がコメントを記述するコメント領域であるとする。また、「＊」で始まる文字列（例えば「＊」からピリオドや改行コードまでの文字列）は、コメント行であるとする。比較部２０４は、コメント領域や、コメント行であることを判断した場合、その領域や行等に記述されているコードについての比較は行わない。また、改行コード等の制御記号等は、比較部２０４による比較の対象としないようにしてもよい。例えば無視するようにして良い。なお、図１４において、二以上の連続したスペース等については、１つのスペースと同じ扱いをするようにしても良い。
【０１３４】
まず、ユーザの指示等に応じて、第一ソースプログラム受付部２０３が、メモリ等から図１４に示すような第一ソースプログラムを読み出す。読み出した第一ソースプログラムは、図示しないメモリ等に一時記憶される。
【０１３５】
次に、ユーザがメニュー画面等を操作して、第一ソースプログラムの変換に用いる変換ツールを指定する指示を与えたとする。ここでは例として変換ツールＩＤが「Ｅ」である実行モジュールを変換に用いることを指定する指示を与えたとする。変換ツール指定情報受付部２０１は、この指示の入力に応じて「変換ツールＩＤ」が「Ｅ」である変換ツール指定情報の入力を受け付ける。
【０１３６】
次に、ユーザが、図示しない受付部等にプログラムの分析を行う指示を与えると、比較部２０４が、第一ソースプログラム受付部２０３が受け付けた第一ソースプログラムから、変換単位情報を取り出す処理を行う。この処理については、上記実施の形態において説明した具体例と同様であるので、ここでは説明を省略する。
【０１３７】
次に、比較部２０４は、第一ソースプログラムから取得した変換単位情報が、図１３に示したような第一命令パターン格納部２００に格納されている第一命令パターン情報管理表のうちの、「変換ツールＩＤ」が「Ｅ」である第一命令パターン情報のいずれか一つと一致するか否かを判断する。この比較処理については、上記実施の形態において説明した具体例と同様であるので、ここでは説明を省略する。なお、複数行にわたる第一命令パターン情報、例えばパターンＩＤの末尾が「Ｓ」から「Ｅ」までの第一命令パターン情報は、１つの命令パターンとして、複数行にわたる一の変換単位情報と比較する。
【０１３８】
コメント記述部１０５は、比較部２０４による比較の結果、第一命令パターン情報と一致すると判断された変換単位情報については、一致する第一命令パターン情報に対応した変換ツールの情報、ここでは変換ツールＩＤ「Ｅ」と、一致する第一命令パターン情報のパターンＩＤとを取得し、この変換ツールＩＤとパターンＩＤとを並べた変換ツールに関するコメントを作成し、第一ソースプログラム内の変換単位情報の取得元となる行のコメント領域に、作成した変換ツールに関するコメントを記述する。
【０１３９】
比較部２０４およびコメント記述部２０５は、以上の処理を、第一ソースプログラムの変換単位情報について繰り返し、第一ソースプログラムの全ての変換単位情報についての処理が終わった時点で変換の処理が終了する。
【０１４０】
変換が終了した時点で、コメントが記述された第一ソースプログラムが、第一ソース出力部２０７により、図示しないハードディスク等の記憶媒体により構成される格納部に蓄積される。また、コメントが記述されたソースプログラムがユーザ等の指示に応じて、図示しないモニタやプリンタに出力される。
【０１４１】
図１５は、第一ソース出力部２０７が出力する、変換ツールに関するコメントが記述された第一ソースプログラムの表示例を示す図である。このような第一ソースプログラムにおいては、コメント領域のコメントを見ることで、ユーザは、コメントがある行が、変換ツールが変換に用いる第一命令パターン情報のうちの、どのような第一命令パターン情報と一致しているか否かを容易に知ることができる。これにより、例えば、変換ツールのどの第一命令パターン情報が、第一ソースプログラム内に利用されているかを分析することができる。したがって、この分析結果を用いて、変換ツールを用いて効率的に第一ソースプログラムを変換するためには、どの第一命令パターン情報に、変換先となる第二命令パターン情報を用意すればよいか等を知ることが可能となる。
【０１４２】
なお、第一ソース出力部２０７の出力結果を用いて、上記実施の形態において説明したような変換部１０４等を備えた図示しないプログラム変換装置が、上記実施の形態と同様の変換処理により、第一ソースプログラムの変換を行うようにしても良い。この変換の処理については、上記具体例と同様であるので説明は省略する。
【０１４３】
例えば、図１５に示した第一ソースプログラムにおいては、第一ソースプログラムの各部分が、どの変換ツールのどのパターンＩＤの第一命令パターン情報と一致しているかが、コメントとして記述されている。このため、第一ソースプログラムのコメントが対応付けられた箇所を、当該コメントに記述された変換ツールを用いて、コメントに記述された第一命令パターン情報と対応付けられた第二命令パターン情報で置き換えていくことで、第一ソースプログラムを、容易に第二ソースプログラムに変換することができる。
【０１４４】
図１６は、第一ソース出力部２０７が出力した第一ソースプログラムから、図示しないプログラム変換装置によって、図１３に示したような第一命令パターン情報管理表を用いて変換された第二ソースプログラムの例を示す図である。図において、変換前の行および変換後の行については、変換に関連する行であることを示す文字列「＃ＣＮＶ＃」が、行番号の代わりに記載されている。特に、第二命令パターン情報に変換される前の変換単位情報については、コメント行であることを示す「＊」を付した行として配置されている。また、この変換単位情報が第二命令パターン情報で変換された行は、この変換前の変換単位情報の直後の行として配置されている。
【０１４５】
なお、この具体例においては説明を省略したが、命令パターン組指定情報を用いる場合については、上記実施の形態において具体例に説明したように、変換用命令パターンＩＤを用いる場合と同様である。つまり、ユーザにより指定された変換ツールが利用可能な第一命令パターン情報組のうちの、命令パターン組指定情報が指定する第一命令パターン情報組の第一命令パターン情報と、第一ソースプログラムの変換単位情報とを比較するようにする。そして、一致する変換単位情報に対応したコメントとして、例えば、変換ツールの識別情報に加えて、指定された第一命令パターン情報組の識別情報を加えるようにすればよい。
【０１４６】
以上、本実施の形態によれば、変換ツールを用いた場合の変換状況を、第一ソースプログラムの変換前に予め確認することができる。例えば、変換ツールが変換に用いる第一命令パターン情報のうちの、どの第一命令パターン情報が、分析対象となる第一ソースプログラムに出現しているかを変換前の第一ソースプログラムに対してコメントとして出力することができる。この結果、変換ツールを用いて変換を行う前に、変換ツールを第一ソースプログラムにあわせて、どのように最適化すべきかを確認することができる。例えば、変換ツールを用いて効率的に第一ソースプログラムを変換するためには、どの第一命令パターン情報に、変換先となる第二命令パターン情報を用意することが適切であるか等を知ることが可能となる。具体例としては、出力結果を基に、出現頻度の高い第一命令パターン情報に応じた第二命令パターン情報を第一ソースプログラムにあわせて新たに用意すること等によって、変換ツールによる変換率を向上させることができる。
【０１４７】
なお、上記具体例においては、変換されない第一命令パターン情報に一致する箇所も検出するようにしたが、本発明においては、変換されない第一命令パターン情報については、検出しないようにしても良い。このようにすることで、変換ツールが変換可能な箇所だけにコメントを作成して、変換箇所を認識しやすくすることができる。
【０１４８】
また、上記各実施の形態において、各処理（各機能）は、単一の装置（システム）によって集中処理されることによって実現されてもよく、あるいは、複数の装置によって分散処理されることによって実現されてもよい。
【０１４９】
また、上記各実施の形態において、各構成要素が実行する処理に関係する情報、例えば、各構成要素が受け付けたり、取得したり、選択したり、生成したり、送信したり、受信したりする情報や、各構成要素が処理で用いるしきい値や数式、アドレス等の情報等は、上記説明で明記していない場合であっても、図示しない記録媒体において、一時的に、あるいは長期にわたって保持されていてもよい。また、その図示しない記録媒体への情報の蓄積を、各構成要素、あるいは、図示しない蓄積部が行ってもよい。また、その図示しない記録媒体からの情報の読み出しを、各構成要素、あるいは、図示しない読み出し部が行ってもよい。
【０１５０】
また、上記各実施の形態では、プログラム変換装置がスタンドアロンである場合について説明したが、プログラム変換装置は、スタンドアロンの装置であってもよく、サーバ・クライアントシステムにおけるサーバ装置であってもよい。後者の場合には、出力部や受付部は、通信回線を介して入力を受け付けたり、画面を出力したりすることになる。
【０１５１】
また、上記各実施の形態において、各構成要素は専用のハードウェアにより構成されてもよく、あるいは、ソフトウェアにより実現可能な構成要素については、プログラムを実行することによって実現されてもよい。例えば、ハードディスクや半導体メモリ等の記録媒体に記録されたソフトウェア・プログラムをＣＰＵ等のプログラム実行部が読み出して実行することによって、各構成要素が実現され得る。
【０１５２】
なお、上記各実施の形態におけるプログラム変換装置を実現するソフトウェアは、以下のようなプログラムである。つまり、このプログラムは、コンピュータを、命令パターン格納部と、第一ソースプログラムを受け付ける第一ソースプログラム受付部と、前記第一ソースプログラム受付部が受け付けた第一ソースプログラムと、第一ソースプログラムの命令パターンを示す情報である第一命令パターン情報と、第二ソースプログラムの命令パターンを示す情報である第二命令パターン情報の対が１以上格納され得る命令パターン格納部に格納されている第一命令パターン情報とを比較する比較部と、前記比較部が第一命令パターン情報と一致すると判断した、前記第一ソースプログラムの記述箇所を、当該第一命令パターン情報と対になる第二命令パターン情報に対応するよう変換する変換部と、前記第一ソースプログラムの、前記変換部が変換を行った記述箇所に対応する箇所に、変換を行った自装置に関するコメントを記述するコメント記述部と、前記コメント記述部が記述したコメントを含む、前記変換部が前記第一ソースプログラムを変換した結果である第二ソースプログラムを出力する出力部として機能させるためのプログラムである。
【０１５３】
また、コンピュータを、第一ソースプログラムを受け付ける第一ソースプログラム受付部と、前記第一ソースプログラム受付部が受け付けた第一ソースプログラムと、第一ソースプログラムを第二ソースプログラムに変換するツールである変換ツールに対応付けられた情報であって、当該変換ツールが変換に利用する第一ソースプログラムの命令パターンを示す情報である第一命令パターン情報が１以上格納され得る第一命令パターン格納部に格納されている第一命令パターン情報とを比較する比較部と、第一命令パターン情報と一致すると前記比較部が判断した、前記第一ソースプログラムの記述箇所に対応する箇所に、前記変換ツールに関するコメントを記述するコメント記述部と、前記コメント記述部が記述したコメントを含む前記第一ソースプログラムを出力する第一ソース出力部として機能させるためのプログラムである。
【０１５４】
なお、上記プログラムにおいて、上記プログラムが実現する機能には、ハードウェアでしか実現できない機能は含まれない。例えば、情報を取得する取得部や、情報を出力する出力部などにおけるモデムやインターフェースカードなどのハードウェアでしか実現できない機能は、上記プログラムが実現する機能には含まれない。
【０１５５】
また、このプログラムを実行するコンピュータは、単数であってもよく、複数であってもよい。すなわち、集中処理を行ってもよく、あるいは分散処理を行ってもよい。
【０１５６】
図１７は、上記プログラムを実行して、上記実施の形態によるプログラム変換装置を実現するコンピュータの外観の一例を示す模式図である。上記実施の形態は、コンピュータハードウェア及びその上で実行されるコンピュータプログラムによって実現されうる。
【０１５７】
図１７において、コンピュータシステム９００は、ＣＤ−ＲＯＭ（Ｃｏｍｐａｃｔ  Ｄｉｓｋ  Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）ドライブ９０５、ＦＤ（Ｆｌｏｐｐｙ（登録商標）  Ｄｉｓｋ）ドライブ９０６を含むコンピュータ９０１と、キーボード９０２と、マウス９０３と、モニタ９０４とを備える。
【０１５８】
図１８は、コンピュータシステム９００の内部構成を示す図である。図１８において、コンピュータ９０１は、ＣＤ−ＲＯＭドライブ９０５、ＦＤドライブ９０６に加えて、ＭＰＵ（Ｍｉｃｒｏ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）９１１と、ブートアッププログラム等のプログラムを記憶するためのＲＯＭ９１２と、ＭＰＵ９１１に接続され、アプリケーションプログラムの命令を一時的に記憶すると共に、一時記憶空間を提供するＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）９１３と、アプリケーションプログラム、システムプログラム、及びデータを記憶するハードディスク９１４と、ＭＰＵ９１１、ＲＯＭ９１２等を相互に接続するバス９１５とを備える。なお、コンピュータ９０１は、ＬＡＮへの接続を提供する図示しないネットワークカードを含んでいてもよい。
【０１５９】
コンピュータシステム９００に、上記実施の形態によるプログラム変換装置の機能を実行させるプログラムは、ＣＤ−ＲＯＭ９２１、またはＦＤ９２２に記憶されて、ＣＤ−ＲＯＭドライブ９０５、またはＦＤドライブ９０６に挿入され、ハードディスク９１４に転送されてもよい。これに代えて、そのプログラムは、図示しないネットワークを介してコンピュータ９０１に送信され、ハードディスク９１４に記憶されてもよい。プログラムは実行の際にＲＡＭ９１３にロードされる。なお、プログラムは、ＣＤ−ＲＯＭ９２１やＦＤ９２２、またはネットワークから直接、ロードされてもよい。
【０１６０】
プログラムは、コンピュータ９０１に、上記実施の形態によるプログラム変換装置の機能を実行させるオペレーティングシステム（ＯＳ）、またはサードパーティプログラム等を必ずしも含んでいなくてもよい。プログラムは、制御された態様で適切な機能（モジュール）を呼び出し、所望の結果が得られるようにする命令の部分のみを含んでいてもよい。コンピュータシステム９００がどのように動作するのかについては周知であり、詳細な説明は省略する。
【０１６１】
本発明は、以上の実施の形態に限定されることなく、種々の変更が可能であり、それらも本発明の範囲内に包含されるものであることは言うまでもない。
【産業上の利用可能性】
【０１６２】
以上のように、本発明にかかるプログラム変換装置等は、旧ソースプログラムを、新ソースプログラムに変換する装置として適しており、特に、どのような変換が行われたことを明示可能なプログラム変換装置等として有用である。
【図面の簡単な説明】
【０１６３】
【図１】本発明の実施の形態１に係るプログラム変換装置のブロック図
【図２】同プログラム変換装置の動作について説明するフローチャート
【図３】同プログラム変換装置の動作について説明するフローチャート
【図４】同プログラム変換装置の変換用命令パターン情報管理表を示す図
【図５】同プログラム変換装置が受け付ける第一ソースプログラムの一例を示す図
【図６】同プログラム変換装置の指定情報管理表を示す図
【図７】同プログラム変換装置を用いて取り出される変換単位情報を示す図
【図８】同プログラム変換装置がコメントを記述した第一ソースプログラムを示す図
【図９】同プログラム変換装置が構成した第二ソースプログラムの表示例を示す図
【図１０】同プログラム変換装置が構成した第二ソースプログラムの変形例を示す図
【図１１】本発明の実施の形態２に係るプログラム分析装置のブロック図
【図１２】同プログラム分析装置の動作について説明するフローチャート
【図１３】同プログラム分析装置の第一命令パターン情報管理表を示す図
【図１４】同プログラム分析装置が受け付ける第一ソースプログラムの一例を示す図
【図１５】同プログラム分析装置によりコメントが記述された第一ソースプログラムの一例を示す図
【図１６】同プログラム分析装置が分析した第一ソースプログラムを変換した例を示す図
【図１７】同実施の形態におけるコンピュータシステムの外観一例を示す模式図
【図１８】同実施の形態におけるコンピュータシステムの構成の一例を示す図
【符号の説明】
【０１６４】
１  プログラム変換装置
２  プログラム分析装置
５０  コメント領域
１００  命令パターン格納部
１０１  命令パターン指定情報受付部
１０２、２０３  第一ソースプログラム受付部
１０３、２０４  比較部
１０４  変換部
１０５  上記コメント記述部
１０５、２０５  コメント記述部
１０６、２０６  コメント格納部
１０７  出力部
１０８、２０８  指定情報格納部
２００  第一命令パターン格納部
２０１  変換ツール指定情報受付部
２０２  命令パターン組指定情報受付部
２０７  第一ソース出力部
【図１】
2010129040.tif 000003
【図２】
2010129040.tif 000004
【図３】
2010129040.tif 000005
【図４】
2010129040.tif 000006
【図５】
2010129040.tif 000007
【図６】
2010129040.tif 000008
【図７】
2010129040.tif 000009
【図８】
2010129040.tif 000010
【図９】
2010129040.tif 000011
【図１０】
2010129040.tif 000012
【図１１】
2010129040.tif 000013
【図１２】
2010129040.tif 000014
【図１３】
2010129040.tif 000015
【図１４】
2010129040.tif 000016
【図１５】
2010129040.tif 000017
【図１６】
2010129040.tif 000018
【図１７】
2010129040.tif 000019
【図１８】
2010129040.tif 000020