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