コンピュータに、複数の物理ファイルがマージされたマージ論理ファイルへのアクセスに用いられる第1のキーに関する情報およびマージ論理ファイルが参照する物理ファイルのリンクに関する情報が記憶された記憶部を参照して、前記第1のキーに関する情報及び前記リンクに関する情報を抽出し、抽出された前記第1のキーに関する情報および前記リンクに関する情報を用いて、前記第1のキーが一意であるか判定し、該第1のキーが一意で無い場合には、前記マージ論理ファイルにアクセスするための一意であるユニークキーを生成し、生成されたユニークキーが前記マージ論理ファイルのキーであることを定義するスクリプトを作成し、生成されたユニークキーを用いて、前記マージ論理ファイルへアクセスするためのサブルーチンを作成し、前記マージ論理ファイルのアクセス命令文を含むプログラムソースが記憶された前記記憶部を参照して、前記プログラムソースに含まれる前記マージ論理ファイルのアクセス命令文を、前記サブルーチンのコール文に変換する処理を実行させる変換プログラム。前記マージ論理ファイルにマージされる物理ファイルにアクセスするキーが一意であるか判定し、該キーが一意で無い場合には、前記物理ファイルへのアクセスに用いられる、前記物理ファイルに含まれる複数の項目の値を含む第2のキーがさらに記憶された前記記憶部を参照して、前記第2のキーの中から、一意であって、且つ、前記第1のキーに対して追加する項目が最も少ない第3のキーを取得し、前記第3のキーに含まれる前記項目を用いて、前記ユニークキーを生成する処理を実行させることを特徴とする請求項1に記載の変換プログラム。前記サブルーチンとして、オープン処理、スタート処理、デリート処理、リード処理、リライト処理およびクローズ処理に関するサブルーチンを作成することを特徴とする請求項1または2に記載の変換プログラム。コンピュータが、複数の論理ファイルがマージされたマージ論理ファイルへのアクセスに用いられるキーに関する情報およびマージ論理ファイルが参照する物理ファイルのリンクに関する情報が記憶された記憶部を参照して、前記キーに関する情報及び前記リンクに関する情報を抽出し、抽出された前記キーに関する情報および前記リンクに関する情報を用いて、前記マージ論理ファイルへのアクセスに用いられるキーが一意であるか判定し、該キーが一意で無い場合には、前記マージ論理ファイルにアクセスするための一意であるユニークキーを生成し、生成されたユニークキーが前記マージ論理ファイルのキーであることを定義するスクリプトを作成し、生成されたユニークキーを用いて、前記マージ論理ファイルへアクセスするためのサブルーチンを作成し、前記マージ論理ファイルのアクセス命令文を含むプログラムソースが記憶された前記記憶部を参照して、前記プログラムソースに含まれる前記マージ論理ファイルのアクセス命令文を、前記サブルーチンのコール文に変換することを特徴とするプログラム変換方法。複数の論理ファイルがマージされたマージ論理ファイルへのアクセスに用いられるキーに関する情報およびマージ論理ファイルが参照する物理ファイルのリンクに関する情報、及び、前記マージ論理ファイルへのアクセス命令を含むプログラムソースを記憶する記憶部と、前記記憶部に記憶された前記キーに関する情報及び前記リンクに関する情報を抽出する抽出部と、前記抽出部によって抽出された前記キーに関する情報および前記リンクに関する情報を用いて、前記マージ論理ファイルへのアクセスに用いられるキーが一意であるか判定し、該キーが一意で無い場合には、前記マージ論理ファイルにアクセスするための一意であるユニークキーを生成する生成部と、前記生成部によって生成されたユニークキーが前記マージ論理ファイルを作成するスクリプトを作成するスクリプト作成部と、前記生成部によって生成されたユニークキーを用いて、前記マージ論理ファイルへアクセスするためのサブルーチンを作成するサブルーチン作成部と、前記記憶部に記憶された前記プログラムソースに含まれる前記マージ論理ファイルのアクセス命令文を、前記サブルーチンのコール文に変換する変換部とを有することを特徴とするプログラム変換装置。しかしながら、上記したホスト系COBOLソースをオープン系COBOLソースに自動変換する技術では、マージ論理ファイルの機能を有するホスト系COBOLソースをオープン系COBOLソースに変換することが容易でないという課題があった。つまり、オフコンのCOBOLプログラムでは複数の物理ファイルをマージしたマージ論理ファイルというデータアクセス形態が存在するが、オープン系COBOLではそのようなデータアクセス形態は存在していない。オフコンではOSがマージ論理ファイルのアクセス制御を行っていたが、オープン系のOSは、マージ論理ファイルのアクセス制御を行わない。このため、オフコンのCOBOLプログラムをオープン系COBOLプログラムに変換する際に、マージ論理ファイルに関する部分については、自動変換の対象とならず、手作業で内部ロジックの大幅な変換を行うこととなり、手間が掛かる。具体的には、マージ論理ファイルの機能に対応するオープン系COBOLソースに変換するために、ユニークキーでアクセス対象とするレコードを特定するアクセス制御処理をオープン系COBOLプログラムに手作業で追加する。一つの側面では、ホスト系COBOLソースをオープン系COBOLソースに自動変換する際に、マージ論理ファイルの機能を有するオープン系COBOLソースへ容易に変換することを目的とする。開示のプログラムは、複数の物理ファイルがマージされたマージ論理ファイルへのアクセスに用いられる第1のキーに関する情報およびマージ論理ファイルが参照する物理ファイルのリンクに関する情報が記憶された記憶部を参照して、第1のキーに関する情報及びリンクに関する情報を抽出し、抽出された第1のキーに関する情報およびリンクに関する情報を用いて、第1のキーが一意であるか判定し、該第1のキーが一意で無い場合には、マージ論理ファイルにアクセスするための一意であるユニークキーを生成し、生成されたユニークキーがマージ論理ファイルのキーであることを定義するスクリプトを作成し、生成されたユニークキーを用いて、マージ論理ファイルへアクセスするためのサブルーチンを作成し、マージ論理ファイルのアクセス命令文を含むプログラムソースが記憶された記憶部を参照して、プログラムソースに含まれるマージ論理ファイルのアクセス命令文を、サブルーチンのコール文に変換する。開示のプログラムは、ホスト系COBOLソースをオープン系COBOLソースに変換する際に、マージ論理ファイルの機能を有するオープン系COBOLソースへ容易に変換することができる。以下に添付図面を参照して、この発明に係る変換プログラム、プログラム変換方法およびプログラム変換装置の実施例を詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。以下の実施例では、実施例1に係るプログラム変換装置の構成およびプログラム変換装置の処理、COBOL登録集として生成された各代替処理の流れを順に説明し、最後に実施例1による効果を説明する。[プログラム変換装置の構成]最初に、図1を用いてプログラム変換装置の構成を説明する。図1は、実施例1に係るプログラム変換装置の構成を示すブロック図である。図1に示すように、このプログラム変換装置10は、移行前資産記憶部11、データベース12、制御部13、移行後資産記憶部14を有する。以下にこれらの各部の処理を説明する。移行前資産記憶部11は、オフコンのCOBOLCommonBusinessOrientedLanguageプログラムをオープン系のCOBOLプログラムに移行する前の資産に関する情報を記憶しており、マージファイルデータ11aおよびCOBOLソースデータ11bを記憶する。マージファイルデータ11aは、マージファイルに関する情報であって、例えば、構成項目名、属性、キーとしている項目、マージを構成する物理ファイル名や項目などがテキスト形式で記載されているデータである。また、COBOLソースデータ11bは、COBOLプログラムのソースコードである。データベース12は、マージ論理ファイルへのアクセスに用いられるキーに関する情報や、マージ論理ファイルが参照する物理ファイルのリンクに関する情報などを記憶する。データベース12は、マージ一覧情報記憶部12a、キー情報記憶部12b、ソース解析情報記憶部12cを有する。マージ一覧情報記憶部12aは、マージ論理ファイルに関する情報であるマージ一覧情報を記憶する。例えば、マージ一覧情報12aは、図2に例示するように、マージ論理ファイル名であるLF名、マージ論理ファイルへのアクセスに用いられるキーが一意であるかを示す対応可能フラグ、マージする物理ファイル名を示すマージするPF名を記憶する。図2は、マージ一覧情報の一例を示す図である。ここで、対応可能フラグの項目には、1または0のいずれかの値が設定されており、対応可能フラグが1であることは、アクセスに用いられるキーが一意であることを示している。一方、対応可能フラグが0であることは、アクセスに用いられるキーが一意でないことを示している。図2の例を挙げて説明すると、マージ一覧情報記憶部12aは、LF名lfm1、対応可能フラグ1、マージするPF名pfa、pfb、pfcが対応付けて記憶されている。これは、マージ論理ファイルlfm1が複数の物理ファイルpfa、pfb、pfcをマージしており、アクセスに用いられるキーが一意であることを示している。キー情報記憶部12bは、マージ論理ファイルへのアクセスに用いられるキーに関する情報であるキー情報を記憶する。例えば、キー情報記憶部12bは、図3に例示するように、マージされた物理ファイル名であるPF名、マージ論理ファイルを含む全論理ファイル名であるLF名を記憶する。また、キー情報記憶部12bは、図3に例示するように、論理ファイルへのアクセスに用いられるキーが一意であるかを示す一意性、キーを構成する項目名であるキーを構成する項目名、追加されたキーの項目である追加キーの項目名を記憶する。図3は、キー情報の一例を示す図である。ここで、一意性の項目には、UNIQUEまたはDUPLICATEのいずれかが設定されており、UNIQUEであることは、アクセスに用いられるキーが一意であることを示している。一方、DUPLICATEであることは、アクセスに用いられるキーが重複しており、一意でないことを示している。図3の例を挙げて説明すると、キー情報記憶部12bは、PF名pfa、LF名lfm1、一意性UNIQUE、キーを構成する項目名keya1、keya2が対応付けて記憶されている。これは、物理ファイルpfaを参照する論理ファイルlfm1について、アクセスに用いられるキーが一意であり、キーを構成する項目名がkeya1およびkeya2であることを示している。また、図3の例では、キー情報記憶部12bは、PF名pfa、LF名lfm2、一意性DUPLICATE、キーを構成する項目名keya2が対応付けて記憶されている。これは、物理ファイルpfaを参照する論理ファイルlfm2について、アクセスに用いられるキーが一意でなく、キーを構成する項目名がkeya2であり、新たに追加されたキーの項目名がkeya1であることを示している。ソース解析情報記憶部12cは、COBOLソースの解析結果であって、論理アクセスに関する情報であるソース解析情報を記憶する。例えば、ソース解析情報記憶部12cは、図4に例示するように、プログラム名であるプログラム名、プログラム上で定義されたアクセス対象のファイル名であるファイル定義名、アクセス対象の実ファイル名である実ファイル名を記憶する。また、ソース解析情報記憶部12cは、ファイルアクセスの態様を示すアクセスモード、ファイルオープンの態様を示すオープンモードを記憶する。制御部13は、各種の処理手順などを規定したプログラムおよび所要データを格納するための内部メモリを有し、これらによって種々の処理を実行する。また、制御部13は、ファイル解析部13a、ソース解析部13b、マージ情報作成部13c、DDL作成部13d、登録集作成部13eおよびソースプログラム変換部13fを有する。なお、制御部13には、CPUCentralProcessingUnitやMPUMicroProcessingUnitなどを適用する。ここで、制御部13の各部13a~13fが実行する処理について説明する前に、図5および図6を用いて、マージ論理ファイルの機能を有するオフコンのCOBOLCommonBusinessOrientedLanguageプログラムをオープン系のCOBOLプログラムに変換するマイグレーション処理について説明する。図5は、オフコンのマージ論理ファイルの機能を説明する図である。図6は、オープン環境でのマージ論理ファイルの機能を説明する図である。図5の例では、オフコンのCOBOLプログラムは、論理ファイルLFxの宣言文が記述されたファイル宣言部と、OPEN、READ、REWRITE、DELETE、CLOSEなどのファイル操作文が記述されたプログラム部とを有する。図6の例では、オープン環境でのCOBOLプログラムは、論理ファイルLFxa、論理ファイルLFxbの宣言文が記述されたファイル宣言部と、マージ機能を有するOPENなどのファイル操作文が記述されたプログラム部とを有する。図5に示すように、オフコンでは、OSがマージ機能を有しており、OSがマージ論理ファイルのアクセス制御を行っている。図5の例を挙げて説明すると、つまり、OS側で複数の物理ファイルPFaおよびPFbをマージした一つのマージ論理ファイルLFxとして扱う。このため、COBOLプログラム側でマージ論理ファイルのアクセス制御が意識されていなかった。一方、図6に示すように、オープン環境ではOSがマージ機能を有しておらず、OSがマージ論理ファイルのアクセス制御を行うことができない。このため、COBOLプログラム側にマージ機能を持たせ、COBOLプログラム側でマージ論理ファイルに対するアクセス制御を行うようにする。そこで、プログラム変換装置10では、マージ論理ファイルへアクセスするためのマージ機能代替関数をCOBOL登録集形式で自動生成するとともに、プログラムソースのマージ論理ファイルアクセス命令をマージ機能代替関数のコール文に変換する。また、マージ論理ファイルでは、複数の物理ファイルをマージするため、マージ論理ファイルのアクセスに用いられるキーが一意でない場合がある。オフコンでは、OSのマージ機能により、一意でないキーによるアクセスがあった場合でも所定のルールに従ってアクセス制御を行っているが、上記したように、オープン環境ではOSがマージ機能を有していない。このため、プログラム変換装置10では、アクセスに用いられるキーが一意でない場合には、キーが一意となるようにキーの項目を追加する。以下では、制御部13の各部13a~13fが実行する処理について説明する。ファイル解析部13aは、移行前資産記憶部11からマージファイルデータ11aを読み出し、マージファイルデータ11aを解析する。そして、ファイル解析部13aは、複数の物理ファイルがマージされたマージ論理ファイルへのアクセスに用いられるキーに関する情報と、マージ論理ファイルが参照する物理ファイルのリンクに関する情報とを抽出する。例えば、ファイル解析部13aは、キーに関する情報として、物理ファイル名、論理ファイル名、キーの一意性、キーを構成する項目名を抽出し、データベース12のキー情報記憶部12bに記憶する。また、ファイル解析部13aは、マージ論理ファイルが参照する物理ファイルのリンクに関する情報として、マージ論理ファイルのファイル名、マージする物理ファイル名を抽出し、データベース12のマージ一覧情報記憶部12aに格納する。ソース解析部13bは、移行前資産記憶部11からCOBOLソースデータ11bを読み出してCOBOLソースデータ11bを順に解析し、論理ファイルのアクセスに関する情報を抽出する。例えば、ソース解析部13bは、マージ論理ファイルのアクセスに関する情報として、プログラム名、ファイル定義名、実ファイル名、アクセスモード、オープンモードなどを抽出し、データベース12のソース解析情報記憶部12cに格納する。マージ情報作成部13cは、抽出されたキーに関する情報およびリンクに関する情報を用いて、マージ論理ファイルへのアクセスに用いられるキーが一意であるか判定する。この結果、マージ情報作成部13cは、キーが一意で無い場合には、マージ論理ファイルにアクセスするための一意であるユニークキーを生成する。例えば、マージ情報作成部13cは、マージ情報一覧情報記憶部12aからマージ論理ファイルのLF名を読み出し、読み出したLF名に対応するキー情報の一意性の項目に記憶された情報がUNIQUEであるかDUPLICATEであるか判定する。この結果、マージ情報作成部13cは、一意性の項目に記憶された情報がUNIQUEである場合には、キー情報が一意であるので、マージ情報一覧情報における対応可能フラグを1に更新する。また、マージ情報作成部13cは、一意性の項目に記憶された情報がDUPLICATEである場合には、キー情報が一意でないので、マージ情報一覧情報における対応可能フラグを0に更新する。そして、マージ情報作成部13cは、キー情報が一意でない場合には、キーが一意となるように、ユニークなキーを追加する処理を行う。マージ情報作成部13cは、キーを追加する処理として、物理ファイルに関係するキーから一意であるキーを検索し、検索されたキーのうち追加するキーが少ないものを参照して、新たにキーを追加してユニークキーを生成する。ここで、キーを追加する処理について、図7および図8の例を用いて説明する。図7および図8は、ユニークキーの追加処理を説明する図である。図7の例では、物理ファイルであるPFを参照する複数の論理ファイルLF1、LF2、LF3と、マージ論理ファイルマージとが存在することを示している。このうち、論理ファイルLF1およびLF2のアクセスに用いられるキーが一意である図7では、uniqueと記載。また、論理ファイルLF3およびマージ論理ファイルマージのアクセスに用いられるキーが一意でない図7では、duplicatesと記載。図7に示すように、マージ情報作成部13cは、uniqueなキーを構成する項目とマージ論理ファイルのキーを構成する項目を比較する。図7の例では、uniqueな論理ファイルLF1のキーである項目1および項目2と、マージ論理ファイルのキー項目1および項目3とを比較する。また、uniqueな論理ファイルLF2のキーである項目1、項目4および項目5と、マージ論理ファイルのキー項目1および項目3とを比較する。この比較の結果、マージ論理ファイルのキーがuniqueとなるために、追加するキーが少ない論理ファイルを選択する。図7の例では、追加するキーが少ない論理ファイルLF1を選択する。つまり、論理ファイルLF1を選択した場合には、キーを一意にするためには、項目2を追加することとなり、また、論理ファイルLF2を選択した場合には、キーを一意にするためには、項目4、項目5を追加することとなる。この場合、論理ファイルLF1を選択した方が追加するキーが少ないので、論理ファイルLF1を選択する。そして、マージ情報作成部13cは、図8に示すように、論理ファイルLF1を選択すると、ユニークなキーの構成項目に不足する項目である項目2をマージ論理ファイルのキーに追加する。これにより、マージ論理ファイルのアクセスに用いられるキーがユニークとなる。また、マージ情報作成部13cは、マージ論理ファイルのキーを追加した場合には、追加するキーの項目名をキー情報記憶部12bに記憶された追加キーの項目名に格納する。また、マージ情報作成部13cは、マージ論理ファイルのアクセスに用いられるキーがユニークになった場合には、マージ一覧情報記憶部12aに記憶されたマージ対応可能フラグを0から1に変更する。DDL作成部13dは、マージ情報作成部13cによって生成されたユニークキーがマージ論理ファイルのキーであることを定義する、データベースにおけるデータ構造の定義スクリプトであるDDLを作成する。例えば、DDL作成部13dは、後に詳述する図12に示すように、ユニークキーがマージ論理ファイルのキーであることを定義するDDL文データを作成し、移行後資産記憶部14のDDL文データ14aに格納する。登録集作成部13eは、マージ情報作成部13cによって生成されたユニークキーを用いて、マージ論理ファイルへアクセスするためのサブルーチンを作成する。例えば、登録集作成部13eは、後に詳述する図13に示すように、OPEN代替処理やREAD代替処理のサブルーチンを作成し、移行後資産記憶部14のCOBOL登録集データ14bに格納する。なお、登録集作成部13eは、図13では、省略したが、OPEN代替処理やREAD代替処理だけでなく、START代替処理、DELETE代替処理、REWRITE代替処理、CLOSE代替処理のサブルーチンを作成する。ソースプログラム変換部13fは、プログラムソースのマージ論理ファイルアクセス命令を、サブルーチンのコール文に変換する。例えば、ソースプログラム変換部13fは、後に詳述する図14に示すように、COBOLプログラムソースのマージ論理ファイルアクセス命令を、登録集作成部13eによって作成されたサブルーチンのコール文に変換し、移行後資産記憶部14の変換ソースデータ14cに格納する。ここで、図9および図10を用いて、COBOLソースの変換処理について説明する。図9は、移行前のCOBOLソースについて説明する図である。図10は、移行後のCOBOLソースについて説明する図である。図9の例では、移行前のソースプログラムとして、複数の物理ファイルPF1~PF3をマージするマージ論理ファイル図9では、LFマージと記載に対するCOBOLソースが存在する。図9に示すように、COBOLソースには、OPEN処理、START処理、READ処理、REWRITE処理、DELETE処理、CLOSE処理が存在する。そして、図10に示すように、ソースプログラム変換部13fは、COBOLソースに対して変換処理を行うことで、OPEN処理をOPEN代替処理の呼び出し、START処理をSTART代替処理の呼び出しに変換する。また、ソースプログラム変換部13fは、READ処理をREAD代替処理の呼び出し、REWRITE処理をREWRITE代替処理の呼び出し、DELETE処理をDELETE代替処理の呼び出し、CLOSE処理をCLOSE代替処理の呼び出しに変換する。そして、各代替処理は、移行後資産記憶部14のCOBOL登録集データ14bに記憶されている。なお、各代替処理では、どのレコードまでをREADしたか、または、位置付けしたかという情報を記憶するために、ユニークなキーを使用している。ここで、図11を用いて、プログラム変換装置10によるプログラム変換処理の全体の流れを説明する。図11は、プログラム変換処理の全体の流れを説明する図である。図11に示すように、プログラム変換装置10は、マージファイルデータ11aを読み出して解析し、マージファイルに関する情報および全論理ファイルのキーに関する情報を抽出し、マージ一覧情報記憶部12aおよびキー情報記憶部12bに記憶するステップS1。そして、プログラム変換装置10は、移行前資産記憶部11から変換前のCOBOLソースデータ11bを読み出して順に解析し、論理ファイルのアクセスに関する情報を抽出してデータベース12のソース解析情報記憶部12cに格納するステップS2。続いて、プログラム変換装置10は、マージ一覧情報記憶部12aおよびキー情報記憶部12bからマージファイルに関する情報および全論理ファイルのキーに関する情報を読み出し、マージ論理ファイルへのアクセスに用いられるキーが一意であるか判定する。そして、マージ論理ファイルへのアクセスに用いられるキーが一意で無い場合には、ユニークキーを作成するステップS3。そして、プログラム変換装置10は、マージ一覧情報記憶部12aおよびキー情報記憶部12bから情報を読み出し、ユニークキーがマージ論理ファイルのキーであることを定義するDDLを作成するステップS4。続いて、プログラム変換装置10は、マージ一覧情報記憶部12a、キー情報記憶部12b、およびソース解析情報記憶部12cから情報を読み出し、ユニークキーを用いて、マージ論理ファイルへアクセスするためのCOBOL登録集を作成するステップS5。その後、プログラム変換装置10は、マージ一覧情報記憶部12a、キー情報記憶部12b、およびソース解析情報記憶部12cから情報を読み出し、プログラムソースのマージ論理ファイルアクセス命令を、サブルーチンのコール文に変換するステップS6。移行後資産記憶部14は、オフコンのCOBOLCommonBusinessOrientedLanguageプログラムをオープン系のCOBOLプログラムに移行した後の資産に関する情報を記憶している。また、移行後資産記憶部14は、DDL文データ14a、COBOL登録集データ14b、変換ソースデータ14cを記憶する。DDL文データ14aは、ユニークキーがマージ論理ファイルのキーであることを定義するスクリプトであるDDLを記憶する。例えば、DDL文データ14aには、図12に例示するように、各論理ファイルpfa、pfb、pfc、pfd、pfeを作成するためのDDLが存在する。pfa用DDLには、マージファイルを作成するためのDDLとして、CREATEUNIQUEINDEXIX_LFM1およびCREATEUNIQUEINDEXIX_LFM2が記述されている。また、pfa用DDLには、論理ファイルpfaのアクセスに用いられるユニークなキーであるkeya1およびkeya2が定義されている。図12は、DDL文データの一例を示す図である。なお、図12の例では、キー部分のみを抜粋している。COBOL登録集データ14bは、ユニークキーを用いてマージ論理ファイルへアクセスするためのサブルーチンである。例えば、COBOL登録集データ14bは、各マージ論理ファイルをまとめて一つのマージファイルと見なせるような動作をするマージ機能代替関数がCOBOL登録集形式で移行後資産記憶部14に記憶されている。図13に例示するように、COBOL登録集データ14bは、各マージ論理ファイルLFM1、LFM2のCOBOLソースであって、各マージ論理ファイルの操作に関するOPENやREADなどのアクセス機能ごとに記述されたCOBOLソースとして移行後資産記憶部14に記憶されている。変換ソースデータ14cは、ソースプログラム変換部13fによって変換されたソースプログラムを記憶する。例えば、変換ソースデータ14cでは、図14に例示するように、プログラムソースのマージ論理ファイルアクセス命令が、サブルーチンのコール文に変換されたソースプログラムである。図14の例を用いて説明すると、プログラム部におけるマージ論理ファイルアクセス命令OPENFIL01がCOBOL登録集データ14bに記述された代替処理を実行させるPERFORMMLF_LFM1_OPENに変換されている。[プログラム変換装置による処理]次に、図15を用いて、実施例1に係るプログラム変換装置10による処理を説明する。図15は、実施例1に係るプログラム変換装置10の処理動作を示すフローチャートである。図15に示すように、プログラム変換装置10は、プログラム変換処理開始指示を受け付けるとステップS101肯定、移行前資産記憶部11からマージファイルデータ11aを読み出して解析し、マージファイルに関する情報を抽出するステップS102。そして、プログラム変換装置10は、マージファイルデータ11aから全論理ファイルのキーに関する情報を抽出するステップS103。そして、プログラム変換装置10は、移行前資産記憶部11から変換前のCOBOLソースデータ11bを読み出して順に解析し、論理ファイルのアクセスに関する情報を抽出するステップS104。続いて、プログラム変換装置10は、マージ対応が可能であるか判定するステップS105。すなわち、プログラム変換装置10は、マージ論理ファイルへのアクセスに用いられるキーが一意であるか判定する。この結果、プログラム変換装置10は、マージ対応が可能であると判定した場合にはステップS105肯定、ステップS107に進む。また、プログラム変換装置10は、マージ対応が可能でないと判定した場合にはステップS105否定、ユニークとなるようにキーを追加するステップS106。そして、プログラム変換装置10は、ユニークキーがマージ論理ファイルのキーであることを定義するDDLを作成するステップS107。続いて、プログラム変換装置10は、ユニークキーを用いて、マージ論理ファイルへアクセスするためのCOBOL登録集を作成するステップS108。その後、プログラム変換装置10は、COBOLソースのマージ論理ファイルアクセス命令を、サブルーチンのコール文に変換するステップS109。[COBOL登録集として生成された代替処理]次に、図16~図24を用いて、COBOL登録集として生成された各代替処理の流れを説明する。図16は、COBOL登録集として生成されたOPEN代替処理の処理動作を示すフローチャートである。図17は、COBOL登録集として生成されたCLOSE代替処理の処理動作を示すフローチャートである。図18は、COBOL登録集として生成されたSTART代替処理の処理動作を示すフローチャートである。図19は、COBOL登録集として生成された順READ代替処理の処理動作を示すフローチャートである。図20は、COBOL登録集として生成された乱READ代替処理の処理動作を示すフローチャートである。図21は、COBOL登録集として生成された順DELETE代替処理の処理動作を示すフローチャートである。図22は、COBOL登録集として生成された乱DELETE代替処理の処理動作を示すフローチャートである。図23は、COBOL登録集として生成された順REWRITE代替処理の処理動作を示すフローチャートである。図24は、COBOL登録集として生成された乱REWRITE代替処理の処理動作を示すフローチャートである。まず、図16を用いて、COBOL登録集として生成されたOPEN代替処理について説明する。図16に示すように、全ファイルにOPEN処理の対処をしたか判定しステップS201、全ファイルに対処した場合にはステップS201肯定、処理を終了する。また、全ファイルに対処してない場合にはステップS201否定、OPEN処理を実行しステップS202、OPEN処理が成功したか判定するステップS203。この結果、OPENが成功した場合にはステップS203肯定、ステップS201に戻り、OPENが成功しなかった場合にはステップS203否定、処理を終了する。次に、図17を用いて、COBOL登録集として生成されたCLOSE代替処理について説明する。図17に示すように、全ファイルにCLOSE処理の対処をしたか判定しステップS301、全ファイルにCLOSE処理の対処をした場合にはステップS301肯定、処理を終了する。また、全ファイルにCLOSE処理の対処をしてない場合にはステップS301否定、CLOSE処理を実行してステップS302、ステップS301に戻る。次に、図18を用いて、COBOL登録集として生成されたSTART代替処理について説明する。図18に示すように、START代替処理では、全ファイルにSTART処理の対処をしたか判定するステップS401。この結果、全ファイルにSTART処理の対処をした場合にはステップS401肯定、ファイルSTATUSの設定処理を行うステップS408。また、START代替処理では、全ファイルにSTART処理の対処をしていない場合にはステップS401否定、キーの設定処理および追加キーの設定処理を行うステップS402。そして、START代替処理では、START処理の開始位置が=のスタートであるか判定するステップS403。すなわち、例えば、START処理の開始位置例えば、300番目が指定されているか判定する。この結果、START代替処理では、=のスタートでない場合にはステップS403否定、START処理を実行するステップS404。また、START代替処理では、=のスタートである場合にはステップS403肯定、追加キーのあるSTARTであるか判定するステップS405。この結果、追加キーのあるSTARTでない場合にはステップS405否定、開始位置が=のSTART処理を実行するステップS406。また、追加キーのあるSTARTである場合にはステップS405肯定、開始位置が>=のSTART処理を実行するステップS407。つまり、例えばSTART処理の開始位置として300番目が設定されている場合には、300番目以上であって最も300番目に近いデータをSTART処理の開始位置とする。次に、図19を用いて、COBOL登録集として生成された順READ代替処理について説明する。図19に示すように、順READ代替処理では、全ファイルに順READ処理の対処をしたか判定するステップS501。この結果、全ファイルに順READ処理の対処をしていない場合にはステップS501否定、READNEXTを実行しステップS503、ステップS501に戻る。また、全ファイルに順READ処理の対処をした場合にはステップS501肯定、通知するレコードを決定するステップS502。そして、順READ代替処理では、通知したファイル以外対処したか判定しステップS504、通知したファイル以外対処した場合にはステップS504肯定、FILESTATUSを設定するステップS507。また、通知したファイル以外対処していない場合にはステップS504否定、READした値をキーに設定しステップS505、開始位置が>=のSTART処理を実行しステップS506、ステップS504に戻る。次に、図20を用いて、COBOL登録集として生成された乱READ代替処理について説明する。図20に示すように、全ファイルに乱READ処理の対処をしたかを判定するステップS601。この結果、全ファイルに乱READ処理の対処をした場合にはステップS601肯定、FILESTATUSに23を設定するステップS612。ここで、FILESTATUSの23とは、データなしであったことを示す。また、全ファイルに乱READ処理の対処をしていない場合にはステップS601否定、キーの設定処理を行い、追加キーがあれば追加キーの設定処理を行うステップS602。そして、追加キーのあるファイルであるか判定しステップS603、追加キーのあるファイルである場合にはステップS603肯定、開始位置が>=のSTART処理を実行しステップS604、データがないか判定するステップS605。この結果、乱READ処理では、データがない場合にはステップS605肯定、ステップS601に戻る。また、乱READ処理では、データがある場合にはステップS605否定、READNEXTを実行しステップS606、キーが一致するか判定するステップS607。この結果、乱READ処理では、キーが一致しないと判定した場合にはステップS607否定、ステップS601に戻る。また、乱READ処理では、キーが一致すると判定した場合にはステップS607肯定、通知するレコードを作成しステップS610、FILESTATUSを設定してステップS611、処理を終了する。一方、ステップS603の説明に戻って、追加キーのあるファイルでない場合にはステップS603否定、乱READを実行しステップS608、データがないか判定するステップS609。この結果、乱READ処理では、データがある場合にはステップS609否定、ステップS601に戻る。また、乱READ処理では、データがない場合にはステップS609肯定、通知するレコードを作成しステップS610、FILESTATUSを設定してステップS611、処理を終了する。次に、図21を用いて、COBOL登録集として生成された順DELETE代替処理について説明する。図21に示すように、直前にREADしたか判定しステップS701、直前にREADしていない場合にはステップS701否定、FILESTATUSに43を設定するステップS702。ここで、FILESTATUSの43とは、DELETEまたはREWRITE文の実行前に、ファイルに対して実行された最後のIO文が、READ文でなかったことを示す。また、順DELETE処理では、直前にREADした場合にはステップS701肯定、DELETE処理を実行しステップS703、FILESTATUSを設定するステップS704。次に、図22に示すように、COBOL登録集として生成された乱DELETE代替処理について説明する。図22に示すように、全ファイルに乱DELETE処理の対処をしたかを判定するステップS801。この結果、全ファイルに乱DELETE処理の対処をした場合にはステップS801肯定、FILESTATUSに23を設定するステップS812。ここで、FILESTATUSの23とは、データなしであったことを示す。また、全ファイルに乱DELETE処理の対処をしていない場合にはステップS801否定、キーの設定処理を行い、追加キーがあれば追加キーの設定処理を行うステップS802。そして、乱DELETE処理では、追加キーのあるファイルであるか判定するステップS803。この結果、追加キーのあるファイルである場合にはステップS803肯定、開始位置が>=のSTART処理の実行でFILESTATUSが00であるか判定するステップS804。ここで、FILESTATUSの00とは、正常終了であることを示す。この結果、FILESTATUSが00でない場合にはステップS804否定、ステップS801に戻る。また、FILESTATUSが00である場合にはステップS804肯定、READNEXTを実行しステップS805、READが成功か判定するステップS806。この結果、READが成功でなかった場合にはステップS806否定、ステップS801に戻る。また、READが成功した場合にはステップS806肯定、キーが乱DELETEのキーと一致するか判定するステップS807。この結果、乱DELETE処理では、キーが一致しないと判定した場合にはステップS807否定、ステップS801に戻る。また、乱DELETE処理では、キーが一致すると判定した場合にはステップS807肯定、DELETEを実行しステップS810、FILESTATUSを設定してステップS811、処理を終了する。一方、ステップS803の説明に戻って、追加キーのあるファイルでない場合にはステップS803否定、乱DELETEを実行しステップS808、READ成功か判定するステップS809。この結果、乱READ処理では、READ成功である場合にはステップS809否定、ステップS801に戻る。また、乱DELETE処理では、READ成功である場合にはステップS809肯定、DELETEを実行しステップS810、FILESTATUSを設定してステップS811、処理を終了する。次に、図23を用いて、COBOL登録集として生成された順REWRITE代替処理について説明する。図23に示すように、順REWRITE処理では、直前にREADしたか判定しステップS901、直前にREAD処理をしていない場合にはステップS901否定、FILESTATUSに43を設定するステップS908。また、直前にREAD処理をした場合にはステップS901肯定、追加キーがあるか判定するステップS902。この結果、追加キーがない場合にはステップS902否定、REWRITEを実行しステップS906、FILESTATUSを設定するステップS907。また、S902において、追加キーがある場合にはステップS902肯定、追加キーが変更されていないか判定するステップS903。この結果、追加キーが変更されていない場合にはステップS903肯定、REWRITEを実行しステップS906、FILESTATUSを設定するステップS907。また、追加キーが変更されている場合にはステップS903否定、DELETE処理を実行しステップS904、WRITE処理を実行しステップS905、FILESTATUSを設定するステップS907。次に、図24を用いて、COBOL登録集として生成された乱REWRITE代替処理について説明する。図24に示すように、乱REWRITE処理では、全ファイルの乱REWRITE処理の対処をしたか判定するステップS1001。この結果、全ファイルの乱REWRITE処理の対処をした場合にはステップS1001肯定、FILESTATUSを43に設定するステップS1011。また、全ファイルの乱REWRITE処理の対処をしていない場合にはステップS1001否定、キーの設定処理を行い、追加キーがあれば追加キーの設定処理を行うステップS1002。そして、乱READ処理の実行でFILESTATUSが00であるか判定するステップS1003。この結果、FILESTATUSが00である場合にはステップS1003肯定、REWRITE処理を実行しステップS1010、FILESTATUSを設定してステップS1009、処理を終了する。また、乱REWRITE処理では、FILESTATUSが00でない場合にはステップS1003否定、追加キーがあるか判定するステップS1004。この結果、乱REWRITE処理では、追加キーがない場合にはステップS1004否定、ステップS1001に戻る。また、追加キーがある場合にはステップS1004肯定、開始位置が>=のSTART処理の実行でFILESTATUSが00であるか判定するステップS1005。この結果、FILESTATUSが00でない場合にはステップS1005否定、ステップS1001に戻る。また、FILESTATUSが00である場合にはステップS1005肯定、READNEXTしたレコードとキーが一致するか判定するステップS1006。この結果、READNEXTしたレコードとキーが一致しない場合にはステップS1006否定、ステップS1001に戻る。また、READNEXTしたレコードとキーが一致した場合にはステップS1006肯定、DELETE処理を実行するステップS1007。その後、乱REWRITE処理では、WRITE処理を実行しステップS1008、FILESTATUSを設定してステップS1009、処理を終了する。実施例1の効果上述してきたように、プログラム変換装置10は、複数の物理ファイルがマージされたマージ論理ファイルへのアクセスに用いられるキーに関する情報およびマージ論理ファイルが参照する物理ファイルのリンクに関する情報を抽出する。そして、抽出されたキーに関する情報およびリンクに関する情報を用いて、マージ論理ファイルへのアクセスに用いられるキーが一意であるか判定し、キーが一意で無い場合には、マージ論理ファイルにアクセスするための一意であるユニークキーを生成する。そして、生成されたユニークキーがマージ論理ファイルのキーであることを定義するスクリプトを作成する。そして、生成されたユニークキーを用いて、マージ論理ファイルへアクセスするためのサブルーチンを作成する。そして、プログラムソースのマージ論理ファイルアクセス命令を、サブルーチンのコール文に変換する。このため、ホスト系COBOLソースをオープン系COBOLソースに自動変換する際に、マージ論理ファイルの機能を有するオープン系COBOLソースへ容易に変換することが可能である。また、プログラム変換装置10は、マージ論理ファイルにマージされる物理ファイルにアクセスするキーが一意であるか判定し、キーが一意で無い場合には、物理ファイルに関係するキーから一意であるキーを検索する。そして、プログラム変換装置10は、検索されたキーのうち追加するキーが少ないものを参照して、ユニークキーを生成する。このため、追加するキーを少なくしつつ、アクセスに用いられるキーを一意にすることが可能である。また、プログラム変換装置10は、サブルーチンとして、オープン処理、スタート処理、デリート処理、リード処理、スタート処理およびオープン処理に関するサブルーチンを作成する。このため、プログラム変換装置10は、マージ論理ファイルの機能を有するオープン系COBOLソースへ容易に変換することが可能である。さて、これまで実施例1について説明したが、上述した実施例1以外にも、種々の異なる形態にて実施されてよいものである。1システム構成等また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散統合して構成することができる。例えば、ファイル解析部13aとソース解析部13bを統合してもよい。2プログラムところで、上記の実施例で説明した各種の処理は、あらかじめ用意されたプログラムをコンピュータで実行することによって実現することができる。そこで、以下では、図25を用いて、上記の実施例と同様の機能を有するプログラムを実行するコンピュータの一例を説明する。図25は、プログラム変換装置を実行するコンピュータを示す図である。図25に示すように、プログラム変換装置としてのコンピュータ600は、HDD610、RAM620、ROM630およびCPU640をバス650で接続して構成される。そして、ROM630には、上記の実施例と同様の機能を発揮する変換プログラム、つまり、図25に示すように、ファイル解析プログラム631、ソース解析プログラム632、マージ情報作成プログラム633、DDL作成プログラム634、登録集作成プログラム635およびソースプログラム変換プログラム636が予め記憶されている。そして、CPU640が、これらのプログラム631~636をROM630から読み出して実行することで、図25に示すように、各プログラム631~636は、ファイル解析プロセス641、ソース解析プロセス642、マージ情報作成プロセス643、DDL作成プロセス644、登録集作成プロセス645およびソースプログラム変換プロセス646として機能するようになる。また、HDD610には、図25に示すように、マージ一覧データ611、キー情報612およびソース解析情報613が設けられる。そして、CPU640は、マージ一覧データ611、キー情報612およびソース解析情報613に対してデータを登録するとともに、マージ一覧データ611、キー情報612およびソース解析情報613からデータを読み出してRAM620に格納し、RAM620に格納されたデータに基づいて処理を実行する。