(57)【要約】【課題】効率的に旧ソースプログラムから、高品質な新ソースプログラムを生産できなかった。【解決手段】旧ソースプログラムにおいて、１以上の第一命令パターン情報の出現回数を解析、出力し、当該第一命令パターン情報の出現回数が、所定回数以上であると解析された第一命令パターン情報に対応する旧ソースプログラムの記述箇所を、第二命令パターン情報に対応するように変換し、新ソースプログラムを出力し、第一命令パターン情報の出現回数が所定回数未満であると解析された第一命令パターン情報に対応する旧ソースプログラムの記述箇所に対して、ユーザの手作業による当該旧ソースプログラムの記述箇所を新ソースプログラムに変更する入力を受け付けるプログラムの生産方法により、旧環境で動作していたソースプログラムから、新しい環境で動作させるための高品質な新プログラムを効率的に生産できる。【選択図】図１１
2011086319.tif 000002
【特許請求の範囲】
【請求項１】
旧ソースプログラムの命令パターンを示す情報である第一命令パターン情報と新ソースプログラムの命令パターンを示す情報である第二命令パターン情報の対を１以上、記憶部に格納しており、
旧ソースプログラムにおいて、前記１以上の第一命令パターン情報が何回出現するかを、解析手段を用いて解析する解析ステップと、
前記解析ステップにおける解析結果を、出力手段を用いて出力する解析結果出力ステップと、
前記解析ステップにおいて第一命令パターン情報の出現回数が、所定回数（所定回数は２以上である）以上であると解析された第一命令パターン情報に対応する旧ソースプログラムの記述箇所を、当該第一命令パターン情報と対になる第二命令パターン情報に対応するように、変換手段を用いて変換する命令パターン変換ステップと、
前記命令パターン変換ステップにおいて前記旧ソースプログラムを変換した結果である新ソースプログラムを、出力手段を用いて出力する新プログラム出力ステップと、
前記解析ステップにおいて第一命令パターン情報の出現回数が前記所定回数未満であると解析された第一命令パターン情報に対応する旧ソースプログラムの記述箇所に対して、ユーザの手作業による当該旧ソースプログラムの記述箇所を新ソースプログラムに変更する、入力手段を用いた入力を受け付けるステップを具備する、
ある環境で動作していたプログラムを他の環境で動作させるための新ソースプログラムを生産するプログラムの生産方法。
【請求項２】
旧ソースプログラムの命令パターンを示す情報である第一命令パターン情報と新ソースプログラムの命令パターンを示す情報である第二命令パターン情報の対を１以上、格納している命令パターン対応情報格納部と、
旧ソースプログラムにおいて、前記１以上の第一命令パターン情報が何回出現するかを解析する解析部と、
前記解析部における解析結果を出力する解析結果出力部と、
前記解析部において第一命令パターン情報の出現回数が、所定回数（所定回数は２以上である）以上であると解析された第一命令パターン情報に対応する旧ソースプログラムの記述箇所を、当該第一命令パターン情報と対になる第二命令パターン情報に対応するように変換する命令パターン変換部と、
前記命令パターン変換部において前記旧ソースプログラムを変換した結果である新ソースプログラムを出力する新プログラム出力部と、
前記解析部において第一命令パターン情報の出現回数が前記所定回数未満であると解析された第一命令パターン情報に対応する旧ソースプログラムの記述箇所に対して、ユーザの手作業による、当該旧ソースプログラムの記述箇所を新ソースプログラムに変更する入力を受け付ける入力受付部を具備する、ある環境で動作していた旧ソースプログラムから他の環境で動作させるための新ソースプログラムを生産するプログラムの生産装置。
【請求項３】
旧ソースプログラムの命令パターンを示す情報である第一命令パターン情報と新ソースプログラムの命令パターンを示す情報である第二命令パターン情報の対を１以上、記憶部に格納しており、
旧ソースプログラムにおいて、前記１以上の第一命令パターン情報が何回出現するかを、解析手段を用いて解析する解析ステップと、
前記解析ステップにおける解析結果を、出力手段を用いて出力する解析結果出力ステップと、
前記解析ステップにおいて第一命令パターン情報の出現回数が、所定回数（所定回数は２以上である）以上であると解析された第一命令パターン情報に対応する旧ソースプログラムの記述箇所を、当該第一命令パターン情報と対になる第二命令パターン情報に対応するように、変換手段を用いて変換する命令パターン変換ステップと、
前記命令パターン変換ステップにおいて前記旧ソースプログラムを変換した結果である新ソースプログラムを、出力手段を用いて出力する新プログラム出力ステップと、
前記解析ステップにおいて第一命令パターン情報の出現回数が前記所定回数未満であると解析された第一命令パターン情報に対応する旧ソースプログラムの記述箇所に対して、ユーザの手作業による当該旧ソースプログラムの記述箇所を新ソースプログラムに変更する、入力手段を用いた入力を受け付けるステップを具備する、
ある環境で動作していたプログラムを他の環境で動作させるためのプログラム自動変換方法。
【請求項４】
旧ソースプログラムの命令パターンを示す情報である第一命令パターン情報と新ソースプログラムの命令パターンを示す情報である第二命令パターン情報の対を１以上、格納している命令パターン対応情報格納部と、
旧ソースプログラムにおいて、前記１以上の第一命令パターン情報が何回出現するかを解析する解析部と、
前記解析部における解析結果を出力する解析結果出力部と、
前記解析部において第一命令パターン情報の出現回数が、所定回数（所定回数は２以上である）以上であると解析された第一命令パターン情報に対応する旧ソースプログラムの記述箇所を、当該第一命令パターン情報と対になる第二命令パターン情報に対応するように変換する命令パターン変換部と、
前記命令パターン変換部において前記旧ソースプログラムを変換した結果である新ソースプログラムを出力する新プログラム出力部と、
前記解析部において第一命令パターン情報の出現回数が前記所定回数未満であると解析された第一命令パターン情報に対応する旧ソースプログラムの記述箇所に対して、ユーザの手作業による、当該旧ソースプログラムの記述箇所を新ソースプログラムに変更する入力を受け付ける入力受付部を具備する、ある環境で動作していた旧ソースプログラムから他の環境で動作させるための新ソースプログラムを生産するプログラム自動変換装置。
【請求項５】
旧ソースプログラムの命令パターンを示す情報である第一命令パターン情報と新ソースプログラムの命令パターンを示す情報である第二命令パターン情報の対を１以上、記憶部に格納しており、
コンピュータを、
旧ソースプログラムにおいて、前記１以上の第一命令パターン情報が何回出現するかを解析する解析部と、
前記解析部における解析結果を出力する解析結果出力部と、
前記解析部において第一命令パターン情報の出現回数が、所定回数（所定回数は２以上である）以上であると解析された第一命令パターン情報に対応する旧ソースプログラムの記述箇所を、当該第一命令パターン情報と対になる第二命令パターン情報に対応するように変換する命令パターン変換部と、
前記命令パターン変換部において前記旧ソースプログラムを変換した結果である新ソースプログラムを出力する新プログラム出力部と、
前記解析部において第一命令パターン情報の出現回数が前記所定回数未満であると解析された第一命令パターン情報に対応する旧ソースプログラムの記述箇所に対して、ユーザの手作業による、当該旧ソースプログラムの記述箇所を新ソースプログラムに変更する入力を受け付ける入力受付部として機能させるためのプログラムであって、
ある環境で動作していた旧ソースプログラムから他の環境で動作させるための新ソースプログラムを生産するプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ある環境で動作していた旧ソースプログラムから他の環境で動作させるための新ソースプログラムを生産するプログラムの生産方法等に関する。
【背景技術】
【０００２】
従来、ソースプログラムやスクリプトを自動変換する技術として、コンパイラ差分により発生する記述の違いを自動検出し、自動修正もしくはリストアップして開発作業を向上させる技術があった（特許文献１参照）。本技術は、Ｃ言語で記述された原始プログラムを構文解析し、1トークン毎のデータベースと中間ファイルを作成し、データベース上の対象になる文字列を削除・変更し、データベースや中間ファイルの情報をＣ言語ファイルに生成し、目的プログラムを生成するものである。
【０００３】
また、第二の従来技術として、特定のコンピュータ上に開発されたプログラム・オブジェクトをもとに、他のコンピュータで実行可能なソフトウェアを自動生成する技術があった（特許文献２参照）。本技術は、与えられたコンピュータ資源のもとで実行可能なオブジェクトコードは、セグメント分割器により、命令コード領域Ｄ２とデータコード領域Ｄ３に分割される。続いて、命令コード領域Ｄ２は、命令コード変換器により、命令セットやＯＳプリミティブを解析し、高級プログラム言語による命令文に変換される。また、データコード領域Ｄ３は、参照している命令コードの種別に応じたデータ型を判別し、データ構文変換器により、高級プログラム言語によるデータ定義文に変換される。さらに、参照領域変換器が、データ定義文に対して、命令文が利用するための参照名を付加し、命令文が参照名を利用する形式に変換して高級言語プログラムを生成するものである。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００２−４１２８６（第１頁、図１等）
【特許文献２】特開平６−８３６３０（第１頁、図１等）
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、上記の特許文献１の技術は、変換対象のソースプログラムが記載されたプログラム言語の仕様が有するすべての命令を自動変換することを前提としている、と考えられる。また、上記の特許文献２の技術は、特定のコンピュータ上におけるすべてのプログラム・オブジェクトを自動変換することを前提としている、と考えられる。つまり、従来技術において、一のプログラムの動作環境を移行するために、一のプログラムを移行後の環境においても効率良く動作させることを考慮していない。従って、従来技術では、変換対象とするソースプログラムのどの命令パターンを自動変換し、どの命令パターンを手作業で行うかが判断できない。従来技術において、一のプログラムを自動変換または半自動変換する自動変換プログラムを開発する場合に、どの命令パターンに対応する自動変換プログラムを開発すべきかが判断できず、効率的に旧ソースプログラムから、高品質な新ソースプログラムを生産できなかった。具体的には、従来技術では、変換対象のプログラムにおいて１度しか出現しない命令パターンも自動変換するプログラムを開発することが前提となっている。
【課題を解決するための手段】
【０００６】
上記の課題を解決するために、旧ソースプログラムの命令パターンを示す情報である第一命令パターン情報と新ソースプログラムの命令パターンを示す情報である第二命令パターン情報の対を１以上、記憶部に格納しており、旧ソースプログラムにおいて、前記１以上の第一命令パターン情報が何回出現するかを、解析手段を用いて解析する解析ステップと、前記解析ステップにおける解析結果を、出力手段を用いて出力する解析結果出力ステップと、前記解析ステップにおいて第一命令パターン情報の出現回数が、所定回数（所定回数は２以上である）以上であると解析された第一命令パターン情報に対応する旧ソースプログラムの記述箇所を、当該第一命令パターン情報と対になる第二命令パターン情報に対応するように、変換手段を用いて変換する命令パターン変換ステップと、前記命令パターン変換ステップにおいて前記旧ソースプログラムを変換した結果である新ソースプログラムを、出力手段を用いて出力する新プログラム出力ステップと、前記解析ステップにおいて第一命令パターン情報の出現回数が前記所定回数未満であると解析された第一命令パターン情報に対応する旧ソースプログラムの記述箇所に対して、ユーザの手作業による当該旧ソースプログラムの記述箇所を新ソースプログラムに変更する、入力手段を用いた入力を受け付けるステップを具備する、ある環境で動作していた旧ソースプログラムから、他の環境で動作させるための新ソースプログラムを生産するプログラムの生産方法により、効率的に不具合が少ないソースプログラムを生産できる。かかるソースプログラムの生産方法は、旧環境で動作していた旧ソースプログラムから、新しい環境で動作させるための高品質な新ソースプログラムを効率的に生産するプログラムの生産方法である。
【０００７】
また、旧ソースプログラムの命令パターンを示す情報である第一命令パターン情報と新ソースプログラムの命令パターンを示す情報である第二命令パターン情報の対を１以上、格納している命令パターン対応情報格納部と、旧ソースプログラムにおいて、前記１以上の第一命令パターン情報が何回出現するかを解析する解析部と、前記解析部における解析結果を出力する解析結果出力部と、前記解析部において第一命令パターン情報の出現回数が、所定回数（所定回数は２以上である）以上であると解析された第一命令パターン情報に対応する旧ソースプログラムの記述箇所を、当該第一命令パターン情報と対になる第二命令パターン情報に対応するように変換する命令パターン変換部と、前記命令パターン変換部において前記旧ソースプログラムを変換した結果である新ソースプログラムを出力する新プログラム出力部と、前記解析部において第一命令パターン情報の出現回数が前記所定回数未満であると解析された第一命令パターン情報に対応する旧ソースプログラムの記述箇所に対して、ユーザの手作業による、当該旧ソースプログラムの記述箇所を新ソースプログラムに変更する入力を受け付ける入力受付部を具備する、ある環境で動作していた旧ソースプログラムから他の環境で動作させるための新ソースプログラムを生産するプログラムの生産装置であり、かかる生産装置により、旧環境で動作していた旧ソースプログラムから、新しい環境で動作させるための高品質な新ソースプログラムを効率的に生産できる。
【０００８】
さらに、上記新プログラム出力部は、新ソースプログラムの中で、命令パターン変換部が変換した箇所と変換していない箇所を視覚的に区別して出力することが好ましい。
【発明の効果】
【０００９】
本発明によれば、旧環境で動作していた旧ソースプログラムから、新しい環境で動作させるための高品質な新ソースプログラムを効率的に生産できる。
【図面の簡単な説明】
【００１０】
【図１】実施の形態１におけるプログラム解析装置のブロック図
【図２】実施の形態１におけるプログラム解析装置の動作について説明するフローチャート
【図３】実施の形態１における命令パターン情報管理表
【図４】実施の形態１における命令パターン出現回数管理表
【図５】実施の形態１におけるプログラムの例を示す図
【図６】実施の形態１における命令パターン出現回数管理表を示す図
【図７】実施の形態１における命令パターン出現回数管理表を示す図
【図８】実施の形態１における解析結果の例を示す図
【図９】実施の形態１における解析結果の表示例を示す図
【図１０】実施の形態２におけるプログラム自動変換装置のブロック図
【図１１】実施の形態２におけるプログラム自動変換装置の動作について説明するフローチャート
【図１２】実施の形態２における命令パターン情報管理表を示す図
【図１３】実施の形態２における変換後の新プログラムの例を示す図
【図１４】実施の形態２における新プログラムの例を示す図
【発明を実施するための形態】
【００１１】
以下、本発明のプログラム解析装置およびプログラム自動変換装置等の実施形態について図面を参照して説明する。なお、実施の形態において同じ符号を付した構成要素は同様の動作を行うので、再度の説明を省略する場合がある。
【００１２】
（実施の形態１）
図１は、プログラム解析装置のブロック図を示す。プログラム解析装置は、命令パターン情報格納部１０１、プログラム格納部１０２、解析部１０３、解析結果出力部１０４を有する。プログラム解析装置は、例えば、ＭＰＵやメモリやハードディスクなどを備えたパーソナルコンピュータである。
【００１３】
命令パターン情報格納部１０１は、プログラムの命令パターンを示す情報である命令パターン情報を１以上格納している。命令パターン情報格納部１０１は、不揮発性の記録媒体、または揮発性の記録媒体でも実現可能である。
【００１４】
プログラム格納部１０２は、プログラムを格納している。プログラム格納部１０２は、不揮発性の記録媒体、または揮発性の記録媒体でも実現可能である。プログラムとは、ソースプログラムであり、その言語は問わない。プログラムは、いわゆるスクリプトと言われるＨＴＭＬ、ＸＭＬなども含む。また、プログラムは、手続き型のプログラム、宣言型のプログラム等問わない、また、プログラムは、プログラムが動作するためのデータ群（ヘッダーファイルなど）も含む。
【００１５】
解析部１０３は、プログラム格納部１０２に格納されているプログラムにおいて、１以上の命令パターン情報が何回出現するかを解析する。解析部１０３は、通常、ＭＰＵやメモリ等から実現され得る。解析部１０３が解析するための処理手順は、通常、ソフトウェアで実現され、当該ソフトウェアはＲＯＭ等の記録媒体に記録されている。但し、ハードウェア（専用回路）で実現しても良い。
【００１６】
解析結果出力部１０４は、解析部１０３における解析結果を出力する。出力とは、通常、ディスプレイへの表示をいうが、プリンタへの印字、他の装置への送信なども含む。また、出力とは、ハードディスクなどの記録媒体への蓄積も含む概念である。また、解析結果出力部１０４は、出力ディスプレイや記録媒体等を含むと考えても含まないと考えても良い。解析結果出力部１０４は、例えば、出力デバイスのドライバーソフト等で実現され得る。
【００１７】
以下、本プログラム解析装置の動作について図２のフローチャートを用いて説明する。
【００１８】
（ステップＳ２０１）解析部１０３は、プログラム格納部１０２のプログラムを読み込む。このプログラムは、解析対象のプログラムである。プログラム格納部１０２に複数のプログラムが格納されている場合、例えば、解析部１０３は、ユーザが指示したプログラムを読み込む。
【００１９】
（ステップＳ２０２）解析部１０３は、命令パターン情報格納部１０１に格納されている１以上の命令パターン情報を読み込む。
【００２０】
（ステップＳ２０３）解析部１０３は、命令パターン情報の出現回数である命令パターン出現回数をすべて０にする。なお、すべての命令パターン情報に対応する命令パターン出現回数は、例えば、解析部１０３が保持しているメモリに記憶されている。
【００２１】
（ステップＳ２０４）解析部１０３は、カウンタｉに１を代入する。このカウンタは、ステップＳ２０１で読み込んだプログラムのプログラムカウンタである。つまり、解析部１０３は、ステップＳ２０１で読み込んだプログラムのｉ番目の行を以下の処理により解析する。なお、ここでは、プログラムは、１行１命令パターンのプログラムである、とする。
【００２２】
（ステップＳ２０５）解析部１０３は、ステップＳ２０１で読み込んだプログラムにおいて、ｉ番目のプログラムソース行が存在するか否かを判断する。ｉ番目のプログラムソース行が存在すればステップＳ２０６に行き、ｉ番目のプログラムソース行が存在しなければステップＳ２１３に飛ぶ。
【００２３】
（ステップＳ２０６）解析部１０３は、カウンタｊに１を代入する。カウンタｊは、ステップＳ２０２で読み込んだ１以上の命令パターン情報のうち、解析に利用する命令パターン情報を取得するためのカウンタである。
【００２４】
（ステップＳ２０７）解析部１０３は、ｉ番目のプログラムソース行は、ｊ番目の命令パターン情報に対応する命令パターンの行であるか否かを判断する。ｉ番目のプログラムソース行がｊ番目の命令パターンであればステップＳ２０８に行き、ｊ番目の命令パターンでなければステップＳ２１０に飛ぶ。ｉ番目のプログラムソース行がｊ番目の命令パターン情報に対応するか否かの判断は、構文解析、字句解析等で可能であり、既存技術であるので、ここでの詳細な説明は省略する。
【００２５】
（ステップＳ２０８）解析部１０３は、ｊ番目の命令パターン情報に対応する命令パターン出現回数を１インクリメントする。
【００２６】
（ステップＳ２０９）解析部１０３は、ｉをインクリメントする。ステップＳ２０５に戻る。
【００２７】
（ステップＳ２１０）解析部１０３は、ｊをインクリメントする。
【００２８】
（ステップＳ２１１）解析部１０３は、ｊ番目の命令パターンが、命令パターン情報格納部１０１に存在するか否かを判断する。ｊ番目の命令パターンが存在すればステップＳ２０７に戻り、ｊ番目の命令パターンが存在しなければステップＳ２１２に行く。
【００２９】
（ステップＳ２１２）解析部１０３は、「どの命令パターンにも該当しない旨」のエラー出力をする。但し、このエラー出力処理はなくても良い。
【００３０】
（ステップＳ２１３）解析結果出力部１０４は、解析結果を出力する。解析結果とは、各命令パターン情報の命令パターン出現回数である。
【００３１】
以下、本実施の形態におけるプログラム解析装置等の具体的な動作について説明する。図３は、命令パターン情報格納部１０１が保持している命令パターン情報管理表である。命令パターン情報管理表は、「ＩＤ」「命令パターン情報」を有するレコードを複数格納している。「ＩＤ」はレコードを識別する情報であり、表管理上利用される情報である。「命令パターン情報」は、命令パターン情報を格納する属性である。
【００３２】
また、図４は、解析部１０３が保持している命令パターン出現回数管理表である。命令パターン出現回数管理表は、「ＩＤ」「出現回数」を有するレコードを１以上有する。「ＩＤ」は、図３の命令パターン情報管理表の「ＩＤ」に対応している。「出現回数」は、命令パターンの出現回数を示す。「出現回数」の初期値は、すべて「０」である。
【００３３】
図５は、プログラム格納部１０２に格納されているプログラムの例である。プログラム解析装置は、ユーザの指示により、図５のプログラムの解析を開始する。図５のプログラムにおいて「＊」で始まる行はコメント行である。なお、プログラム解析装置は、コメント行であることを判断した後の解析は行わない。
【００３４】
解析部１０３は、まず、図５のプログラムの１行目を読み込む。１行目はコメント行であるので、次の行に移る（プログラムカウンタを進める）。解析部１０３は、２行目から８行目までもコメント行であるので、解析は行わない。
【００３５】
次に、解析部１０３は、プログラムの９行目「ＩＤＥＮＴＩＦＩＣＡＴＩＯＮ  ＤＩＶＩＳＩＯＮ．」を読み込む。解析部１０３は、プログラムの９行目は、図３の命令パターン情報管理表の「ＩＤ＝１」の命令パターン情報に対応する、と判断する。そして、解析部１０３は、図４の命令パターン出現回数管理表の「ＩＤ」＝「１」のレコードの「出現回数」の値を１インクリメントする。その結果が、図６の命令パターン出現回数管理表である。
【００３６】
次に、解析部１０３は、プログラムの１０行目「ＰＲＯＧＲＡＭ−ＩＤ．      ＰＳＤ７１２．」を読み込む。解析部１０３は、プログラムの１０行目は、図３の命令パターン情報管理表の「ＩＤ＝２」の命令パターン情報に対応する、と判断する。なお、図３の命令パターン情報管理表の「変数０１」「変数０２」などは、変数を意味する。プログラムにおいて、変数は、英数字の文字列で構成される。ここでは、「ＰＳＤ７１２」は変数である。そして、解析部１０３は、図６の命令パターン出現回数管理表の「ＩＤ」＝「２」の「出現回数」の値を１インクリメントする。
【００３７】
以上のような処理を、図５のプログラムのすべての行に対して行う。そして、図７に示す命令パターン出現回数管理表を得る。
【００３８】
次に、解析結果出力部１０４は、図８に示すような解析結果を出力する。解析結果は、「ＩＤ」「回数」「命令パターン」を有する。「回数」は出現回数である。また、図８の解析結果は、図３の命令パターン情報管理表と、図７の命令パターン出現回数管理表から構成される。具体的には、図８の解析結果は、図３の命令パターン情報管理表の「ＩＤ」と、図７の命令パターン出現回数管理表「ＩＤ」をキーとして、結合演算され、出力された結果である。
【００３９】
以上、本実施の形態によれば、変換対象とするソースプログラムが含む命令パターンの解析が可能となり、その結果、効率的にソースプログラムを変換する自動変換プログラムを開発できる。なお、本実施の形態における解析結果を受けて、プログラムを自動変換する処理については、実施の形態２以降で述べる。
【００４０】
なお、本実施の形態において、ある一定以上の回数が出現する命令パターンを他の命令パターンと視覚的に区別して表示しても良い。かかる場合、例えば、図９に示すような解析結果が表示される。図９によれば、３回以上出現する命令パターンを他の命令パターンと視覚的に区別して表示している。なお、一定以上の回数が出現する命令パターンを他の命令パターンと視覚的に区別して表示する態様は、図９における態様に限らず、何でも良い。
【００４１】
また、本実施の形態において説明した動作は、コンピュータ読み取り可能なプログラムで実現しても良い。当該プログラムは、ＣＤ−ＲＯＭなどの記録媒体に記録されて流布しても良いし、ネットワーク配信により流布しても良いし、放送で流布しても良い。かかることも、他の実施の形態においても同様である。なお、本実施の形態において説明した動作を実現するプログラムは、コンピュータに、プログラムの命令パターンを示す情報である命令パターン情報を１以上格納しており、プログラムにおいて、１以上の命令パターン情報が何回出現するかを解析する解析ステップと、解析ステップにおける解析結果を出力する解析結果出力ステップを実行させるためのプログラム、である。
【００４２】
さらに、本実施の形態において、一のプログラム解析装置でプログラムの解析を行ったが、複数の装置で処理を分担しても良い。つまり、プログラムの命令パターンを示す情報である命令パターン情報を１以上格納しており、プログラムにおいて、１以上の命令パターン情報が何回出現するかを解析する解析ステップと、解析ステップにおける解析結果を出力する解析結果出力ステップを具備するプログラム解析方法により、1以上の装置を用いてプログラムが解析できれば、上述した効果を奏することとなる。
【００４３】
（実施の形態２）
図１０は、プログラム自動変換装置のブロック図を示す。プログラム自動変換装置は、命令パターン対応情報格納部１００１、プログラム格納部１０２、解析部１０３、条件格納部１００２、命令パターン変換部１００３、新プログラム出力部１００４を具備する。プログラム自動変換装置は、例えば、ＭＰＵやメモリやハードディスクなどを備えたパーソナルコンピュータである。
【００４４】
命令パターン対応情報格納部１００１は、旧プログラム（変換対象のプログラム）の命令パターンを示す情報である第一命令パターン情報と新プログラム（変換後のプログラム）の命令パターンを示す情報である第二命令パターン情報の対を１以上格納している。命令パターン対応情報格納部１００１は、不揮発性の記録媒体、または揮発性の記録媒体でも実現可能である。
【００４５】
条件格納部１００２は、第一命令パターン情報に対応する旧プログラムの一部を第二命令パターン情報に対応するように自動変換する条件を格納している。条件格納部１００２は、不揮発性の記録媒体、または揮発性の記録媒体でも実現可能である。条件は、命令パターン変換部１００３が行う処理を実現するプログラム中に埋め込まれている（ヘッダーファイルなどに定義されている場合も含む）場合が多い。なお、条件は、解析部１０３の解析結果に基づく条件である。
【００４６】
命令パターン変換部１００３は、プログラム格納部１０２に格納されているプログラム（旧プログラム）に対して、条件格納部１００２に格納されている条件に合致する第一命令パターン情報に対応する旧プログラムの一部を、当該第一命令パターン情報と対になる第二命令パターン情報に対応するように変換する処理を行う。命令パターン変換部１００３は、通常、ＭＰＵやメモリ等から実現され得る。命令パターン変換部１００３が情報を変換するための処理手順は、通常、ソフトウェアで実現され、当該ソフトウェアはＲＯＭ等の記録媒体に記録されている。但し、ハードウェア（専用回路）で実現しても良い。
【００４７】
新プログラム出力部１００４は、命令パターン変換部１００３がプログラムを変換した結果である新プログラムを出力する。出力とは、通常、ディスプレイへの表示をいうが、プリンタへの印字、他の装置への送信、記録媒体（ハードディスク、デジタル多目的ディスクなど）への蓄積なども含む。また、新プログラム出力部１００４は、出力ディスプレイや記録媒体を含むと考えても含まないと考えても良い。新プログラム出力部１００４は、例えば、出力デバイスのドライバーソフト等で実現され得る。
【００４８】
以下、本プログラム自動変換装置の動作について図１１のフローチャートを用いて説明する。
【００４９】
（ステップＳ１１０１）プログラム解析ルーチンを実行する。本プログラム解析ルーチンは、図２のフローチャートを用いて説明したプログラムの解析処理であり、変換対象のプログラムである旧プログラム中における、命令パターンごとの出現回数を出力する。
【００５０】
（ステップＳ１１０２）命令パターン変換部１００３は、プログラム格納部１０２のプログラムを読み込む。プログラム格納部１０２に２以上のプログラムが存在する場合は、例えば、命令パターン変換部１００３は、ユーザが指示したプログラムを読み込む。
【００５１】
（ステップＳ１１０３）命令パターン変換部１００３は、命令パターン対応情報格納部１００１が保持している１以上の第一命令パターン情報を読み込む。
【００５２】
（ステップＳ１１０４）命令パターン変換部１００３は、カウンタｉに１を代入する。このカウンタは、ステップＳ１１０２で読み込んだプログラムのプログラムカウンタである。つまり、命令パターン変換部１００３は、ステップＳ１１０２で読み込んだプログラムのｉ番目の行を以下の処理により変換する。なお、ここでは、プログラムは、１行１命令パターンのプログラムである、とする。
【００５３】
（ステップＳ１１０５）命令パターン変換部１００３は、ステップＳ１１０２で読み込んだプログラムにおいて、ｉ行目のプログラムソースが存在するか否かを判断する。ｉ行目のプログラムソースが存在すればステップＳ１１０６に行き、ｉ行目のプログラムソースが存在しなければステップＳ１１１６に飛ぶ。
【００５４】
（ステップＳ１１０６）命令パターン変換部１００３は、カウンタｊに１を代入する。カウンタｊは、ステップＳ１１０３で読み込んだ１以上の第一命令パターン情報のうち、変換に利用する第一命令パターン情報を取得するためのカウンタである。
【００５５】
（ステップＳ１１０７）命令パターン変換部１００３は、ｉ行目のプログラムソースは、ｊ番目の第一命令パターン情報に対応するか否かを判断する。ｊ番目の第一命令パターン情報に対応すればステップＳ１１０８に行き、ｊ番目の第一命令パターン情報に対応しなければステップＳ１１１３に飛ぶ。なお、ｉ行目のプログラムソースがｊ番目の第一命令パターン情報に対応するか否かは、ｉ行目のプログラムソースの構文解析、字句解析により可能である。
【００５６】
（ステップＳ１１０８）命令パターン変換部１００３は、ｊ番目の第一命令パターン情報が条件格納部１００２の条件に合致するか否かを、ステップＳ１１０１のプログラム解析ルーチンの解析結果に基づいて決定する。ｊ番目の第一命令パターン情報が条件に合致すればステップＳ１１０９に行き、ｊ番目の第一命令パターン情報が条件に合致しなければステップＳ１１１５に飛ぶ。
【００５７】
（ステップＳ１１０９）命令パターン変換部１００３は、ｊ番目の第一命令パターン情報と対になる第二命令パターン情報を、命令パターン対応情報格納部１００１から取得する。
【００５８】
（ステップＳ１１１０）命令パターン変換部１００３は、ｉ行目のプログラムソースを、ステップＳ１１０９で取得した第二命令パターン情報が示す命令パターンに変換する。
【００５９】
（ステップＳ１１１１）命令パターン変換部１００３は、ステップＳ１１１０で変換したｉ行目のソースを新プログラムに追加する。なお、新プログラムは、例えば、あるファイルに格納され、初期化段階（図示しない）でファイル生成とファイルオープンがされている、とする。
【００６０】
（ステップＳ１１１２）カウンタｉをインクリメントする。ステップＳ１１０５に戻る。
【００６１】
（ステップＳ１１１３）カウンタｊをインクリメントする。
【００６２】
（ステップＳ１１１４）命令パターン変換部１００３は、ｊ番目の第一命令パターン情報が存在するか否かを判断する。ｊ番目の第一命令パターン情報が存在すればステップＳ１１０７に戻り、ｊ番目の第一命令パターン情報が存在しなければステップＳ１１１５に行く。
【００６３】
（ステップＳ１１１５）命令パターン変換部１００３は、ｉ行目のソースを新プログラムに追加する。ここでのｉ行目のソースは、例えば、コメント行である。
【００６４】
（ステップＳ１１１６）新プログラム出力部１００４は、変換された後のプログラム（新プログラム）を出力する。ここでの出力は、記録媒体（ハードディスク等）に蓄積されるだけの処理も含む。
【００６５】
なお、第一命令パターン情報が条件格納部１００２の条件に合致せず、第一命令パターンを第二命令パターンに自動変換しなかった第一命令パターンに関して、プログラマーが、キーボードなどの入力手段を用いて、手作業で第二命令パターンに書き換える。つまり、プログラム自動変換装置は、図示しないが、キーボードやマウスなどの入力手段を具備する。
【００６６】
以下、本実施の形態におけるプログラム変換装置の具体的な動作について説明する。図１２は、命令パターン対応情報格納部１００１が保持している命令パターン情報管理表である。命令パターン情報管理表は、「ＩＤ」「第一命令パターン情報」「第二命令パターン情報」を有するレコードを複数格納している。「ＩＤ」はレコードを識別する情報である。命令パターン情報管理表は、変換対象のプログラム中に出現する第一命令パターン情報のソース行を対になる第二命令パターン情報に対応するように変換する場合に利用する対応表である。具体的には、「第一命令パターン情報」が「SOURCE-COMPUTER.  XXXXXX.」である場合には、「第二命令パターン情報」「#DEL# *  SOURCE-COMPUTER.  XXXXXX.  #CHG#    SOURCE-COMPUTER.  IBM-AS400.」に変換することを示す。なお「XXXXXX」は、任意の変数名を示す。また、「#DEL#」は削除したことを示す。「#CHG#」は変換した結果であることを示す。また、本ソースにおいて「*」はコメント行であり、「#」から「#」はコメントであることを示す。
【００６７】
また、図５は、プログラム格納部１０２に格納されている旧プログラムの例である。図８は、解析部１０３が解析した結果を示す命令パターン出現回数管理表である。さらに、条件格納部１００２は、出現回数が２回以上の第一命令パターン情報のプログラム行を第二命令パターン情報に変換する、という条件を保持している、とする。
【００６８】
そして、命令パターン変換部１００３が、図５の旧プログラムを変換して生成し、新プログラム出力部１００４が出力した新プログラムの例を図１３に示す。図１３において、新プログラムにおいて新たに生成された行が下線で示されている。つまり、新プログラムにおいて、変換された行と変換されてない行が視覚的に区別して表れている。
【００６９】
図１３の新プログラムにおいて、（１）は、命令パターン情報管理表の「ＩＤ＝１」の行により変換された箇所である。（２）は、命令パターン情報管理表の「ＩＤ＝２」の行により変換された箇所である。
【００７０】
なお、図１２の命令パターン情報管理表において、説明の便宜上、旧プログラム１行に対して、新プログラムｎ行（ｎは自然数）が対応する場合のみを記載したが、旧プログラムｍ行（ｍは２以上の自然数）に対して、新プログラムｎ行（ｎは自然数）が対応しても良い。
【００７１】
以上、本実施の形態によれば、変換対象とするソースプログラムが含む命令パターンの解析が可能となり、その結果、効率的にソースプログラムを自動変換または半自動変換できる。具体的には、ソースプログラムを変換するためのプログラムを開発するまでもない一定未満の出現回数の命令パターンは、手作業で修正し、一定以上の出現回数（たとえば、２回以上の出現回数）の命令パターンのみ、ソースプログラムを変換するためのプログラムを開発しておき、当該変換プログラムを用いて自動変換することにより、効率的にプログラムを変換できる。かかるプログラム自動変換装置により、例えば、ある環境で動作していたプログラムを新しい環境で動作させる作業が非常に効率的に、かつ安全に行える。
【００７２】
なお、本実施の形態において、変換プログラムを開発するまでもない一定未満の出現回数の命令パターンは、手作業で旧ソースプログラムを修正するので、プログラム自動変換装置は、手作業で修正するための入力手段を具備する。入力手段とは、例えば、キーボードやマウス等である。
【００７３】
なお、本実施の形態において、図１４に示すように、変換後の新プログラムにおいて、手作業によって変換した箇所と、自動変換した箇所と、変換していない箇所を視覚的に区別する態様で、新プログラムを蓄積や表示等しても良い。図１４の新プログラムにおいて、「@」から「@」が手作業による作業を示すコメントである。「@DEL@」は手作業で削除した行であることを示し、「@ADD@」は手作業で追加した行であることを示す。
【００７４】
また、本実施の形態において、自動変換するか手作業で変換するかを判断するための条件は、プログラムにおける第一命令パターン情報の出現回数をパラメータとする条件（上記例では、２回以上の出現回数の場合に自動変換するという条件）であったが、他の条件により決定しても良い。また、ユーザの入力により自動変換する第一命令パターンを指示する構成でも良い。
【００７５】
また、本実施の形態において説明した動作は、コンピュータ読み取り可能なプログラムで実現しても良い。当該プログラムは、ＣＤ−ＲＯＭなどの記録媒体に記録されて流布しても良いし、ネットワーク配信により流布しても良いし、放送で流布しても良い。かかることも、他の実施の形態においても同様である。なお、本実施の形態において説明した動作を実現するプログラムは、コンピュータに、旧ソースプログラムの命令パターンを示す情報である第一命令パターン情報と新ソースプログラムの命令パターンを示す情報である第二命令パターン情報の対を１以上格納しており、旧ソースプログラムにおいて、前記１以上の第一命令パターン情報が何回出現するかを解析する解析ステップと、前記解析ステップにおける解析結果を出力する解析結果出力ステップと、前記解析ステップにおいて第一命令パターン情報の出現回数が、所定回数（所定回数は２以上である）以上であると解析された第一命令パターン情報に対応する旧ソースプログラムの記述箇所を、当該第一命令パターン情報と対になる第二命令パターン情報に対応するように変換する命令パターン変換ステップと、前記命令パターン変換ステップで前記旧ソースプログラムを変換した結果である新プログラムを出力する新プログラム出力ステップと、前記解析ステップにおいて第一命令パターン情報の出現回数が前記所定回数未満であると解析された第一命令パターン情報に対応する旧ソースプログラムの記述箇所に対して、ユーザの手作業による当該旧ソースプログラムの記述箇所を新ソースプログラムに変更する入力を受け付けるステップを実行させるためのプログラム、である。
【００７６】
また、本実施の形態において、一のプログラム自動変換装置でプログラムの変換を行ったが、複数の装置で処理を分担しても良い。つまり、以下のプログラム自動変換方法を複数の装置で実現しても良い。旧ソースプログラムの命令パターンを示す情報である第一命令パターン情報と新ソースプログラムの命令パターンを示す情報である第二命令パターン情報の対を１以上、記憶部に格納しており、旧ソースプログラムにおいて、前記１以上の第一命令パターン情報が何回出現するかを、解析手段を用いて解析する解析ステップと、前記解析ステップにおける解析結果を、出力手段を用いて出力する解析結果出力ステップと、前記解析ステップにおいて第一命令パターン情報の出現回数が、所定回数（所定回数は２以上である）以上であると解析された第一命令パターン情報に対応する旧ソースプログラムの記述箇所を、当該第一命令パターン情報と対になる第二命令パターン情報に対応するように、変換手段を用いて変換する命令パターン変換ステップと、前記命令パターン変換ステップにおいて前記旧ソースプログラムを変換した結果である新ソースプログラムを、出力手段を用いて出力する新プログラム出力ステップと、前記解析ステップにおいて第一命令パターン情報の出現回数が前記所定回数未満であると解析された第一命令パターン情報に対応する旧ソースプログラムの記述箇所に対して、ユーザの手作業による当該旧ソースプログラムの記述箇所を新ソースプログラムに変更する、入力手段を用いた入力を受け付けるステップを具備する、ある環境で動作していたプログラムを他の環境で動作させるためのプログラム自動変換方法により、効率的に、かつ、不具合が少なくプログラムが移植できる。
【００７７】
また、本実施の形態において、上述したプログラム自動変換装置は、新しい環境（つまり、移植先の環境）で動作するプログラムを生産する方法を実施する装置である、といえる。つまり、プログラム自動変換装置は、以下のプログラム生産方法を実現する。それは、旧ソースプログラムの命令パターンを示す情報である第一命令パターン情報と新ソースプログラムの命令パターンを示す情報である第二命令パターン情報の対を１以上、記憶部に格納しており、旧ソースプログラムにおいて、前記１以上の第一命令パターン情報が何回出現するかを解析する解析ステップと、前記解析ステップにおける解析結果を出力する解析結果出力ステップと、前記解析ステップにおいて第一命令パターン情報の出現回数が、所定回数（所定回数は２以上である）以上であると解析された第一命令パターン情報に対応する旧ソースプログラムの記述箇所を、当該第一命令パターン情報と対になる第二命令パターン情報に対応するように変換する命令パターン変換ステップと、前記命令パターン変換ステップにおいて前記旧ソースプログラムを変換した結果である新ソースプログラムを出力する新プログラム出力ステップと、前記解析ステップにおいて第一命令パターン情報の出現回数が前記所定回数未満であると解析された第一命令パターン情報に対応する旧ソースプログラムの記述箇所に対して、ユーザの手作業による当該旧ソースプログラムの記述箇所を新ソースプログラムに変更する入力を受け付けるステップを具備する、ある環境で動作していた旧ソースプログラムから他の環境で動作させるための新ソースプログラムを生産するプログラムの生産方法、である。また、上記のプログラムの生産方法における新プログラム出力ステップは、新ソースプログラムの中で、前記命令パターン変換ステップで変換した箇所と変換していない箇所を視覚的に区別して出力するプログラムの生産方法、でも良い。
【００７８】
さらに、本実施の形態において、上述したプログラム自動変換装置は、新しい環境（つまり、移植先の環境）で動作するプログラムを生産する装置である、といえる。かかるプログラムの生産装置は、旧ソースプログラムの命令パターンを示す情報である第一命令パターン情報と新ソースプログラムの命令パターンを示す情報である第二命令パターン情報の対を１以上、格納している命令パターン対応情報格納部と、旧ソースプログラムにおいて、前記１以上の第一命令パターン情報が何回出現するかを解析する解析部と、前記解析部における解析結果を出力する解析結果出力部と、前記解析部において第一命令パターン情報の出現回数が、所定回数（所定回数は２以上である）以上であると解析された第一命令パターン情報に対応する旧ソースプログラムの記述箇所を、当該第一命令パターン情報と対になる第二命令パターン情報に対応するように変換する命令パターン変換部と、前記命令パターン変換部において前記旧ソースプログラムを変換した結果である新ソースプログラムを出力する新プログラム出力部と、前記解析部において第一命令パターン情報の出現回数が前記所定回数未満であると解析された第一命令パターン情報に対応する旧ソースプログラムの記述箇所に対して、ユーザの手作業による、当該旧ソースプログラムの記述箇所を新ソースプログラムに変更する入力を受け付ける入力受付部を具備する、ある環境で動作していた旧ソースプログラムから他の環境で動作させるための新ソースプログラムを生産するプログラムの生産装置、である。
【産業上の利用可能性】
【００７９】
以上のように、本発明にかかるプログラムの生産方法および生産装置は、ある環境で動作していた旧ソースプログラムから他の環境で動作させるための新ソースプログラムを生産するプログラムの生産方法、生産装置等として利用できる。
【符号の説明】
【００８０】
１０１  命令パターン情報格納部
１０２  プログラム格納部
１０３  解析部
１０４  解析結果出力部
１００１  命令パターン対応情報格納部
１００２  条件格納部
１００３  命令パターン変換部
１００４  新プログラム出力部
【図１】
2011086319.tif 000003
【図２】
2011086319.tif 000004
【図３】
2011086319.tif 000005
【図４】
2011086319.tif 000006
【図５】
2011086319.tif 000007
【図６】
2011086319.tif 000008
【図７】
2011086319.tif 000009
【図８】
2011086319.tif 000010
【図９】
2011086319.tif 000011
【図１０】
2011086319.tif 000012
【図１１】
2011086319.tif 000013
【図１２】
2011086319.tif 000014
【図１３】
2011086319.tif 000015
【図１４】
2011086319.tif 000016