(57)【特許請求の範囲】
【請求項１】
コンピュータに、
複数の物理ファイルがマージされたマージ論理ファイルへのアクセスに用いられる第１のキーに関する情報およびマージ論理ファイルが参照する物理ファイルのリンクに関する情報が記憶された記憶部を参照して、前記第１のキーに関する情報及び前記リンクに関する情報を抽出し、
抽出された前記第１のキーに関する情報および前記リンクに関する情報を用いて、前記第１のキーが一意であるか判定し、該第１のキーが一意で無い場合には、前記マージ論理ファイルにアクセスするための一意であるユニークキーを生成し、
生成されたユニークキーが前記マージ論理ファイルのキーであることを定義するスクリプトを作成し、
生成されたユニークキーを用いて、前記マージ論理ファイルへアクセスするためのサブルーチンを作成し、
前記マージ論理ファイルのアクセス命令文を含むプログラムソースが記憶された前記記憶部を参照して、前記プログラムソースに含まれる前記マージ論理ファイルのアクセス命令文を、前記サブルーチンのコール文に変換する
処理を実行させる変換プログラム。
【請求項２】
前記マージ論理ファイルにマージされる物理ファイルにアクセスするキーが一意であるか判定し、該キーが一意で無い場合には、前記物理ファイルへのアクセスに用いられる、前記物理ファイルに含まれる複数の項目の値を含む第２のキーがさらに記憶された前記記憶部を参照して、前記第２のキーの中から、一意であって、且つ、前記第１のキーに対して追加する項目が最も少ない第３のキーを取得し、
前記第３のキーに含まれる前記項目を用いて、前記ユニークキーを生成する処理を実行させることを特徴とする請求項１に記載の変換プログラム。
【請求項３】
前記サブルーチンとして、オープン処理、スタート処理、デリート処理、リード処理、リライト処理およびクローズ処理に関するサブルーチンを作成することを特徴とする請求項１または２に記載の変換プログラム。
【請求項４】
コンピュータが、
複数の論理ファイルがマージされたマージ論理ファイルへのアクセスに用いられるキーに関する情報およびマージ論理ファイルが参照する物理ファイルのリンクに関する情報が記憶された記憶部を参照して、前記キーに関する情報及び前記リンクに関する情報を抽出し、
抽出された前記キーに関する情報および前記リンクに関する情報を用いて、前記マージ論理ファイルへのアクセスに用いられるキーが一意であるか判定し、該キーが一意で無い場合には、前記マージ論理ファイルにアクセスするための一意であるユニークキーを生成し、
生成されたユニークキーが前記マージ論理ファイルのキーであることを定義するスクリプトを作成し、
生成されたユニークキーを用いて、前記マージ論理ファイルへアクセスするためのサブルーチンを作成し、
前記マージ論理ファイルのアクセス命令文を含むプログラムソースが記憶された前記記憶部を参照して、前記プログラムソースに含まれる前記マージ論理ファイルのアクセス命令文を、前記サブルーチンのコール文に変換することを特徴とするプログラム変換方法。
【請求項５】
複数の論理ファイルがマージされたマージ論理ファイルへのアクセスに用いられるキーに関する情報およびマージ論理ファイルが参照する物理ファイルのリンクに関する情報、及び、前記マージ論理ファイルへのアクセス命令を含むプログラムソースを記憶する記憶部と、
前記記憶部に記憶された前記キーに関する情報及び前記リンクに関する情報を抽出する抽出部と、
前記抽出部によって抽出された前記キーに関する情報および前記リンクに関する情報を用いて、前記マージ論理ファイルへのアクセスに用いられるキーが一意であるか判定し、該キーが一意で無い場合には、前記マージ論理ファイルにアクセスするための一意であるユニークキーを生成する生成部と、
前記生成部によって生成されたユニークキーが前記マージ論理ファイルを作成するスクリプトを作成するスクリプト作成部と、
前記生成部によって生成されたユニークキーを用いて、前記マージ論理ファイルへアクセスするためのサブルーチンを作成するサブルーチン作成部と、
前記記憶部に記憶された前記プログラムソースに含まれる前記マージ論理ファイルのアクセス命令文を、前記サブルーチンのコール文に変換する変換部と
を有することを特徴とするプログラム変換装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、変換プログラム、プログラム変換方法およびプログラム変換装置に関する。
【背景技術】
【０００２】
従来、コンピュータシステムの移行に伴い、プログラムのマイグレーション処理を行う場合がある。例えば、コンピュータシステムを、各社独自仕様のハードウェアとオペレーティングシステムなどのソフトウェアにより構成されるオフィスコンピュータ（以降オフコンと表記）からオープン標準に準拠したソフトウェアや、それを使用しているコンピュータ（以降オープン系と表記）へ移行する場合に、オフコンのＣＯＢＯＬ（Common  Business  Oriented  Language）プログラムをオープン系のＣＯＢＯＬプログラムに変換するマイグレーション処理を行う。
【０００３】
ここで、企業がマイグレーション処理を行う際に、いかに新規開発を少なくするかがコストを抑える上で重要であり、また、いかに設計品質を保つかが移行先システムの安定運用につながる。このため、レガシーシステム資産を再活用してマイグレーションするための技術として、予め定義された変換ルールに従って、ソースプログラムを自動変換する技術が知られている。例えば、自動変換プログラムが、ホスト系ＣＯＢＯＬソースを入力し、予め定義された変換ルールに従ってホスト系ＣＯＢＯＬソース内の代入文や流れ制御文などを変換することで、オープン系ＣＯＢＯＬソースに自動変換する。
【０００４】
また、自動変換方法の例として、ホスト系ＣＯＢＯＬソースを解析して変換必要部分と変換不要部分とに識別し、変換必要部分を所定規則で変換して新規ソースプログラムを生成し、生成した新規ソースプログラムに対して変換不要部分を併合する技術も知られている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開平１１−３５３１９０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、上記したホスト系ＣＯＢＯＬソースをオープン系ＣＯＢＯＬソースに自動変換する技術では、マージ論理ファイルの機能を有するホスト系ＣＯＢＯＬソースをオープン系ＣＯＢＯＬソースに変換することが容易でないという課題があった。
【０００７】
つまり、オフコンのＣＯＢＯＬプログラムでは複数の物理ファイルをマージしたマージ論理ファイルというデータアクセス形態が存在するが、オープン系ＣＯＢＯＬではそのようなデータアクセス形態は存在していない。オフコンではＯＳがマージ論理ファイルのアクセス制御を行っていたが、オープン系のＯＳは、マージ論理ファイルのアクセス制御を行わない。
【０００８】
このため、オフコンのＣＯＢＯＬプログラムをオープン系ＣＯＢＯＬプログラムに変換する際に、マージ論理ファイルに関する部分については、自動変換の対象とならず、手作業で内部ロジックの大幅な変換を行うこととなり、手間が掛かる。具体的には、マージ論理ファイルの機能に対応するオープン系ＣＯＢＯＬソースに変換するために、ユニークキーでアクセス対象とするレコードを特定するアクセス制御処理をオープン系ＣＯＢＯＬプログラムに手作業で追加する。
【０００９】
一つの側面では、ホスト系ＣＯＢＯＬソースをオープン系ＣＯＢＯＬソースに自動変換する際に、マージ論理ファイルの機能を有するオープン系ＣＯＢＯＬソースへ容易に変換することを目的とする。
【課題を解決するための手段】
【００１０】
開示のプログラムは、複数の物理ファイルがマージされたマージ論理ファイルへのアクセスに用いられる第１のキーに関する情報およびマージ論理ファイルが参照する物理ファイルのリンクに関する情報が記憶された記憶部を参照して、第１のキーに関する情報及びリンクに関する情報を抽出し、抽出された第１のキーに関する情報およびリンクに関する情報を用いて、第１のキーが一意であるか判定し、該第１のキーが一意で無い場合には、マージ論理ファイルにアクセスするための一意であるユニークキーを生成し、生成されたユニークキーがマージ論理ファイルのキーであることを定義するスクリプトを作成し、生成されたユニークキーを用いて、マージ論理ファイルへアクセスするためのサブルーチンを作成し、マージ論理ファイルのアクセス命令文を含むプログラムソースが記憶された記憶部を参照して、プログラムソースに含まれるマージ論理ファイルのアクセス命令文を、サブルーチンのコール文に変換する。
【発明の効果】
【００１１】
開示のプログラムは、ホスト系ＣＯＢＯＬソースをオープン系ＣＯＢＯＬソースに変換する際に、マージ論理ファイルの機能を有するオープン系ＣＯＢＯＬソースへ容易に変換することができる。
【図面の簡単な説明】
【００１２】
【図１】図１は、実施例１に係るプログラム変換装置の構成を示すブロック図である。
【図２】図２は、マージ一覧情報の一例を示す図である。
【図３】図３は、キー情報の一例を示す図である。
【図４】図４は、ソース解析情報の一例を示す図である。
【図５】図５は、オフコンのマージ論理ファイルの機能を説明する図である。
【図６】図６は、オープン環境でのマージ論理ファイルの機能を説明する図である。
【図７】図７は、ユニークキーの追加処理を説明する図である。
【図８】図８は、ユニークキーの追加処理を説明する図である。
【図９】図９は、移行前のＣＯＢＯＬソースについて説明する図である。
【図１０】図１０は、移行後のＣＯＢＯＬソースについて説明する図である。
【図１１】図１１は、プログラム変換処理の全体の流れを説明する図である。
【図１２】図１２は、ＤＤＬ文データの一例を示す図である。
【図１３】図１３は、ＣＯＢＯＬ登録集データの一例を示す図である。
【図１４】図１４は、変換ソースデータの一例を示す図である。
【図１５】図１５は、実施例１に係るプログラム変換装置の処理動作を示すフローチャートである。
【図１６】図１６は、ＣＯＢＯＬ登録集として生成されたＯＰＥＮ代替処理の処理動作を示すフローチャートである。
【図１７】図１７は、ＣＯＢＯＬ登録集として生成されたＣＬＯＳＥ代替処理の処理動作を示すフローチャートである。
【図１８】図１８は、ＣＯＢＯＬ登録集として生成されたＳＴＡＲＴ代替処理の処理動作を示すフローチャートである。
【図１９】図１９は、ＣＯＢＯＬ登録集として生成された順ＲＥＡＤ代替処理の処理動作を示すフローチャートである。
【図２０】図２０は、ＣＯＢＯＬ登録集として生成された乱ＲＥＡＤ代替処理の処理動作を示すフローチャートである。
【図２１】図２１は、ＣＯＢＯＬ登録集として生成された順ＤＥＬＥＴＥ代替処理の処理動作を示すフローチャートである。
【図２２】図２２は、ＣＯＢＯＬ登録集として生成された乱ＤＥＬＥＴＥ代替処理の処理動作を示すフローチャートである。
【図２３】図２３は、ＣＯＢＯＬ登録集として生成された順ＲＥＷＲＩＴＥ代替処理の処理動作を示すフローチャートである。
【図２４】図２４は、ＣＯＢＯＬ登録集として生成された乱ＲＥＷＲＩＴＥ代替処理の処理動作を示すフローチャートである。
【図２５】図２５は、プログラム変換処理を実行するコンピュータを示す図である。
【発明を実施するための形態】
【００１３】
以下に添付図面を参照して、この発明に係る変換プログラム、プログラム変換方法およびプログラム変換装置の実施例を詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。
【実施例１】
【００１４】
以下の実施例では、実施例１に係るプログラム変換装置の構成およびプログラム変換装置の処理、ＣＯＢＯＬ登録集として生成された各代替処理の流れを順に説明し、最後に実施例１による効果を説明する。
【００１５】
［プログラム変換装置の構成］
最初に、図１を用いてプログラム変換装置の構成を説明する。図１は、実施例１に係るプログラム変換装置の構成を示すブロック図である。図１に示すように、このプログラム変換装置１０は、移行前資産記憶部１１、データベース１２、制御部１３、移行後資産記憶部１４を有する。以下にこれらの各部の処理を説明する。
【００１６】
移行前資産記憶部１１は、オフコンのＣＯＢＯＬ（Common  Business  Oriented  Language）プログラムをオープン系のＣＯＢＯＬプログラムに移行する前の資産に関する情報を記憶しており、マージファイルデータ１１ａおよびＣＯＢＯＬソースデータ１１ｂを記憶する。マージファイルデータ１１ａは、マージファイルに関する情報であって、例えば、構成項目名、属性、キーとしている項目、マージを構成する物理ファイル名や項目などがテキスト形式で記載されているデータである。また、ＣＯＢＯＬソースデータ１１ｂは、ＣＯＢＯＬプログラムのソースコードである。
【００１７】
データベース１２は、マージ論理ファイルへのアクセスに用いられるキーに関する情報や、マージ論理ファイルが参照する物理ファイルのリンクに関する情報などを記憶する。データベース１２は、マージ一覧情報記憶部１２ａ、キー情報記憶部１２ｂ、ソース解析情報記憶部１２ｃを有する。
【００１８】
マージ一覧情報記憶部１２ａは、マージ論理ファイルに関する情報であるマージ一覧情報を記憶する。例えば、マージ一覧情報１２ａは、図２に例示するように、マージ論理ファイル名である「ＬＦ名」、マージ論理ファイルへのアクセスに用いられるキーが一意であるかを示す「対応可能フラグ」、マージする物理ファイル名を示す「マージするＰＦ名」を記憶する。図２は、マージ一覧情報の一例を示す図である。ここで、対応可能フラグの項目には、「１」または「０」のいずれかの値が設定されており、対応可能フラグが「１」であることは、アクセスに用いられるキーが一意であることを示している。一方、対応可能フラグが「０」であることは、アクセスに用いられるキーが一意でないことを示している。
【００１９】
図２の例を挙げて説明すると、マージ一覧情報記憶部１２ａは、ＬＦ名「ｌｆｍ１」、対応可能フラグ「１」、マージするＰＦ名「ｐｆａ」、「ｐｆｂ」、「ｐｆｃ」が対応付けて記憶されている。これは、マージ論理ファイル「ｌｆｍ１」が複数の物理ファイル「ｐｆａ」、「ｐｆｂ」、「ｐｆｃ」をマージしており、アクセスに用いられるキーが一意であることを示している。
【００２０】
キー情報記憶部１２ｂは、マージ論理ファイルへのアクセスに用いられるキーに関する情報であるキー情報を記憶する。例えば、キー情報記憶部１２ｂは、図３に例示するように、マージされた物理ファイル名である「ＰＦ名」、マージ論理ファイルを含む全論理ファイル名である「ＬＦ名」を記憶する。また、キー情報記憶部１２ｂは、図３に例示するように、論理ファイルへのアクセスに用いられるキーが一意であるかを示す「一意性」、キーを構成する項目名である「キーを構成する項目名」、追加されたキーの項目である「追加キーの項目名」を記憶する。図３は、キー情報の一例を示す図である。
【００２１】
ここで、一意性の項目には、「ＵＮＩＱＵＥ」または「ＤＵＰＬＩＣＡＴＥ」のいずれかが設定されており、「ＵＮＩＱＵＥ」であることは、アクセスに用いられるキーが一意であることを示している。一方、「ＤＵＰＬＩＣＡＴＥ」であることは、アクセスに用いられるキーが重複しており、一意でないことを示している。
【００２２】
図３の例を挙げて説明すると、キー情報記憶部１２ｂは、ＰＦ名「ｐｆａ」、ＬＦ名「ｌｆｍ１」、一意性「ＵＮＩＱＵＥ」、キーを構成する項目名「ｋｅｙａ１」、「ｋｅｙａ２」が対応付けて記憶されている。これは、物理ファイル「ｐｆａ」を参照する論理ファイル「ｌｆｍ１」について、アクセスに用いられるキーが一意であり、キーを構成する項目名が「ｋｅｙａ１」および「ｋｅｙａ２」であることを示している。また、図３の例では、キー情報記憶部１２ｂは、ＰＦ名「ｐｆａ」、ＬＦ名「ｌｆｍ２」、一意性「ＤＵＰＬＩＣＡＴＥ」、キーを構成する項目名「ｋｅｙａ２」が対応付けて記憶されている。これは、物理ファイル「ｐｆａ」を参照する論理ファイル「ｌｆｍ２」について、アクセスに用いられるキーが一意でなく、キーを構成する項目名が「ｋｅｙａ２」であり、新たに追加されたキーの項目名が「ｋｅｙａ１」であることを示している。
【００２３】
ソース解析情報記憶部１２ｃは、ＣＯＢＯＬソースの解析結果であって、論理アクセスに関する情報であるソース解析情報を記憶する。例えば、ソース解析情報記憶部１２ｃは、図４に例示するように、プログラム名である「プログラム名」、プログラム上で定義されたアクセス対象のファイル名である「ファイル定義名」、アクセス対象の実ファイル名である「実ファイル名」を記憶する。また、ソース解析情報記憶部１２ｃは、ファイルアクセスの態様を示す「アクセスモード」、ファイルオープンの態様を示す「オープンモード」を記憶する。
【００２４】
制御部１３は、各種の処理手順などを規定したプログラムおよび所要データを格納するための内部メモリを有し、これらによって種々の処理を実行する。また、制御部１３は、ファイル解析部１３ａ、ソース解析部１３ｂ、マージ情報作成部１３ｃ、ＤＤＬ作成部１３ｄ、登録集作成部１３ｅおよびソースプログラム変換部１３ｆを有する。なお、制御部１３には、ＣＰＵ（Central  Processing  Unit）やＭＰＵ（Micro  Processing  Unit）などを適用する。
【００２５】
ここで、制御部１３の各部１３ａ〜１３ｆが実行する処理について説明する前に、図５および図６を用いて、マージ論理ファイルの機能を有するオフコンのＣＯＢＯＬ（Common  Business  Oriented  Language）プログラムをオープン系のＣＯＢＯＬプログラムに変換するマイグレーション処理について説明する。図５は、オフコンのマージ論理ファイルの機能を説明する図である。図６は、オープン環境でのマージ論理ファイルの機能を説明する図である。
【００２６】
図５の例では、オフコンのＣＯＢＯＬプログラムは、論理ファイルＬＦ（ｘ）の宣言文が記述されたファイル宣言部と、ＯＰＥＮ、ＲＥＡＤ、ＲＥＷＲＩＴＥ、ＤＥＬＥＴＥ、ＣＬＯＳＥなどのファイル操作文が記述されたプログラム部とを有する。図６の例では、オープン環境でのＣＯＢＯＬプログラムは、論理ファイルＬＦ（ｘａ）、論理ファイルＬＦ（ｘｂ）の宣言文が記述されたファイル宣言部と、マージ機能を有するＯＰＥＮなどのファイル操作文が記述されたプログラム部とを有する。
【００２７】
図５に示すように、オフコンでは、ＯＳがマージ機能を有しており、ＯＳがマージ論理ファイルのアクセス制御を行っている。図５の例を挙げて説明すると、つまり、ＯＳ側で複数の物理ファイルＰＦ（ａ）およびＰＦ（ｂ）をマージした一つのマージ論理ファイルＬＦ（ｘ）として扱う。このため、ＣＯＢＯＬプログラム側でマージ論理ファイルのアクセス制御が意識されていなかった。
【００２８】
一方、図６に示すように、オープン環境ではＯＳがマージ機能を有しておらず、ＯＳがマージ論理ファイルのアクセス制御を行うことができない。このため、ＣＯＢＯＬプログラム側にマージ機能を持たせ、ＣＯＢＯＬプログラム側でマージ論理ファイルに対するアクセス制御を行うようにする。そこで、プログラム変換装置１０では、マージ論理ファイルへアクセスするためのマージ機能代替関数をＣＯＢＯＬ登録集形式で自動生成するとともに、プログラムソースのマージ論理ファイルアクセス命令をマージ機能代替関数のコール文に変換する。
【００２９】
また、マージ論理ファイルでは、複数の物理ファイルをマージするため、マージ論理ファイルのアクセスに用いられるキーが一意でない場合がある。オフコンでは、ＯＳのマージ機能により、一意でないキーによるアクセスがあった場合でも所定のルールに従ってアクセス制御を行っているが、上記したように、オープン環境ではＯＳがマージ機能を有していない。このため、プログラム変換装置１０では、アクセスに用いられるキーが一意でない場合には、キーが一意となるようにキーの項目を追加する。以下では、制御部１３の各部１３ａ〜１３ｆが実行する処理について説明する。
【００３０】
ファイル解析部１３ａは、移行前資産記憶部１１からマージファイルデータ１１ａを読み出し、マージファイルデータ１１ａを解析する。そして、ファイル解析部１３ａは、複数の物理ファイルがマージされたマージ論理ファイルへのアクセスに用いられるキーに関する情報と、マージ論理ファイルが参照する物理ファイルのリンクに関する情報とを抽出する。
【００３１】
例えば、ファイル解析部１３ａは、キーに関する情報として、物理ファイル名、論理ファイル名、キーの一意性、キーを構成する項目名を抽出し、データベース１２のキー情報記憶部１２ｂに記憶する。また、ファイル解析部１３ａは、マージ論理ファイルが参照する物理ファイルのリンクに関する情報として、マージ論理ファイルのファイル名、マージする物理ファイル名を抽出し、データベース１２のマージ一覧情報記憶部１２ａに格納する。
【００３２】
ソース解析部１３ｂは、移行前資産記憶部１１からＣＯＢＯＬソースデータ１１ｂを読み出してＣＯＢＯＬソースデータ１１ｂを順に解析し、論理ファイルのアクセスに関する情報を抽出する。例えば、ソース解析部１３ｂは、マージ論理ファイルのアクセスに関する情報として、プログラム名、ファイル定義名、実ファイル名、アクセスモード、オープンモードなどを抽出し、データベース１２のソース解析情報記憶部１２ｃに格納する。
【００３３】
マージ情報作成部１３ｃは、抽出されたキーに関する情報およびリンクに関する情報を用いて、マージ論理ファイルへのアクセスに用いられるキーが一意であるか判定する。この結果、マージ情報作成部１３ｃは、キーが一意で無い場合には、マージ論理ファイルにアクセスするための一意であるユニークキーを生成する。
【００３４】
例えば、マージ情報作成部１３ｃは、マージ情報一覧情報記憶部１２ａからマージ論理ファイルのＬＦ名を読み出し、読み出したＬＦ名に対応するキー情報の「一意性」の項目に記憶された情報が「ＵＮＩＱＵＥ」であるか「ＤＵＰＬＩＣＡＴＥ」であるか判定する。この結果、マージ情報作成部１３ｃは、「一意性」の項目に記憶された情報が「ＵＮＩＱＵＥ」である場合には、キー情報が一意であるので、マージ情報一覧情報における対応可能フラグを「１」に更新する。
【００３５】
また、マージ情報作成部１３ｃは、「一意性」の項目に記憶された情報が「ＤＵＰＬＩＣＡＴＥ」である場合には、キー情報が一意でないので、マージ情報一覧情報における対応可能フラグを「０」に更新する。そして、マージ情報作成部１３ｃは、キー情報が一意でない場合には、キーが一意となるように、ユニークなキーを追加する処理を行う。
【００３６】
マージ情報作成部１３ｃは、キーを追加する処理として、物理ファイルに関係するキーから一意であるキーを検索し、検索されたキーのうち追加するキーが少ないものを参照して、新たにキーを追加してユニークキーを生成する。
【００３７】
ここで、キーを追加する処理について、図７および図８の例を用いて説明する。図７および図８は、ユニークキーの追加処理を説明する図である。図７の例では、物理ファイルである「ＰＦ」を参照する複数の論理ファイル「ＬＦ１」、「ＬＦ２」、「ＬＦ３」と、マージ論理ファイル「マージ」とが存在することを示している。このうち、論理ファイル「ＬＦ１」および「ＬＦ２」のアクセスに用いられるキーが一意である（図７では、「ｕｎｉｑｕｅ」と記載）。また、論理ファイル「ＬＦ３」およびマージ論理ファイル「マージ」のアクセスに用いられるキーが一意でない（図７では、「ｄｕｐｌｉｃａｔｅｓ」と記載）。
【００３８】
図７に示すように、マージ情報作成部１３ｃは、「ｕｎｉｑｕｅ」なキーを構成する項目とマージ論理ファイルのキーを構成する項目を比較する。図７の例では、「ｕｎｉｑｕｅ」な論理ファイル「ＬＦ１」のキーである「項目１」および「項目２」と、マージ論理ファイルのキー「項目１」および「項目３」とを比較する。また、「ｕｎｉｑｕｅ」な論理ファイル「ＬＦ２」のキーである「項目１」、「項目４」および「項目５」と、マージ論理ファイルのキー「項目１」および「項目３」とを比較する。
【００３９】
この比較の結果、マージ論理ファイルのキーが「ｕｎｉｑｕｅ」となるために、追加するキーが少ない論理ファイルを選択する。図７の例では、追加するキーが少ない論理ファイル「ＬＦ１」を選択する。つまり、論理ファイル「ＬＦ１」を選択した場合には、キーを一意にするためには、「項目２」を追加することとなり、また、論理ファイル「ＬＦ２」を選択した場合には、キーを一意にするためには、「項目４」、「項目５」を追加することとなる。この場合、論理ファイル「ＬＦ１」を選択した方が追加するキーが少ないので、論理ファイル「ＬＦ１」を選択する。
【００４０】
そして、マージ情報作成部１３ｃは、図８に示すように、論理ファイル「ＬＦ１」を選択すると、ユニークなキーの構成項目に不足する項目である「項目２」をマージ論理ファイルのキーに追加する。これにより、マージ論理ファイルのアクセスに用いられるキーがユニークとなる。また、マージ情報作成部１３ｃは、マージ論理ファイルのキーを追加した場合には、追加するキーの項目名をキー情報記憶部１２ｂに記憶された「追加キーの項目名」に格納する。また、マージ情報作成部１３ｃは、マージ論理ファイルのアクセスに用いられるキーがユニークになった場合には、マージ一覧情報記憶部１２ａに記憶されたマージ対応可能フラグを「０」から「１」に変更する。
【００４１】
ＤＤＬ作成部１３ｄは、マージ情報作成部１３ｃによって生成されたユニークキーがマージ論理ファイルのキーであることを定義する、データベースにおけるデータ構造の定義スクリプトであるＤＤＬを作成する。例えば、ＤＤＬ作成部１３ｄは、後に詳述する図１２に示すように、ユニークキーがマージ論理ファイルのキーであることを定義するＤＤＬ文データを作成し、移行後資産記憶部１４のＤＤＬ文データ１４ａに格納する。
【００４２】
登録集作成部１３ｅは、マージ情報作成部１３ｃによって生成されたユニークキーを用いて、マージ論理ファイルへアクセスするためのサブルーチンを作成する。例えば、登録集作成部１３ｅは、後に詳述する図１３に示すように、ＯＰＥＮ代替処理やＲＥＡＤ代替処理のサブルーチンを作成し、移行後資産記憶部１４のＣＯＢＯＬ登録集データ１４ｂに格納する。なお、登録集作成部１３ｅは、図１３では、省略したが、ＯＰＥＮ代替処理やＲＥＡＤ代替処理だけでなく、ＳＴＡＲＴ代替処理、ＤＥＬＥＴＥ代替処理、ＲＥＷＲＩＴＥ代替処理、ＣＬＯＳＥ代替処理のサブルーチンを作成する。
【００４３】
ソースプログラム変換部１３ｆは、プログラムソースのマージ論理ファイルアクセス命令を、サブルーチンのコール文に変換する。例えば、ソースプログラム変換部１３ｆは、後に詳述する図１４に示すように、ＣＯＢＯＬプログラムソースのマージ論理ファイルアクセス命令を、登録集作成部１３ｅによって作成されたサブルーチンのコール文に変換し、移行後資産記憶部１４の変換ソースデータ１４ｃに格納する。
【００４４】
ここで、図９および図１０を用いて、ＣＯＢＯＬソースの変換処理について説明する。図９は、移行前のＣＯＢＯＬソースについて説明する図である。図１０は、移行後のＣＯＢＯＬソースについて説明する図である。図９の例では、移行前のソースプログラムとして、複数の物理ファイルＰＦ１〜ＰＦ３をマージするマージ論理ファイル（図９では、ＬＦ（マージ）と記載）に対するＣＯＢＯＬソースが存在する。図９に示すように、ＣＯＢＯＬソースには、ＯＰＥＮ処理、ＳＴＡＲＴ処理、ＲＥＡＤ処理、ＲＥＷＲＩＴＥ処理、ＤＥＬＥＴＥ処理、ＣＬＯＳＥ処理が存在する。
【００４５】
そして、図１０に示すように、ソースプログラム変換部１３ｆは、ＣＯＢＯＬソースに対して変換処理を行うことで、ＯＰＥＮ処理をＯＰＥＮ代替処理の呼び出し、ＳＴＡＲＴ処理をＳＴＡＲＴ代替処理の呼び出しに変換する。また、ソースプログラム変換部１３ｆは、ＲＥＡＤ処理をＲＥＡＤ代替処理の呼び出し、ＲＥＷＲＩＴＥ処理をＲＥＷＲＩＴＥ代替処理の呼び出し、ＤＥＬＥＴＥ処理をＤＥＬＥＴＥ代替処理の呼び出し、ＣＬＯＳＥ処理をＣＬＯＳＥ代替処理の呼び出しに変換する。
【００４６】
そして、各代替処理は、移行後資産記憶部１４のＣＯＢＯＬ登録集データ１４ｂに記憶されている。なお、各代替処理では、どのレコードまでをＲＥＡＤしたか、または、位置付けしたかという情報を記憶するために、ユニークなキーを使用している。
【００４７】
ここで、図１１を用いて、プログラム変換装置１０によるプログラム変換処理の全体の流れを説明する。図１１は、プログラム変換処理の全体の流れを説明する図である。図１１に示すように、プログラム変換装置１０は、マージファイルデータ１１ａを読み出して解析し、マージファイルに関する情報および全論理ファイルのキーに関する情報を抽出し、マージ一覧情報記憶部１２ａおよびキー情報記憶部１２ｂに記憶する（ステップＳ１）。
【００４８】
そして、プログラム変換装置１０は、移行前資産記憶部１１から変換前のＣＯＢＯＬソースデータ１１ｂを読み出して順に解析し、論理ファイルのアクセスに関する情報を抽出してデータベース１２のソース解析情報記憶部１２ｃに格納する（ステップＳ２）。続いて、プログラム変換装置１０は、マージ一覧情報記憶部１２ａおよびキー情報記憶部１２ｂからマージファイルに関する情報および全論理ファイルのキーに関する情報を読み出し、マージ論理ファイルへのアクセスに用いられるキーが一意であるか判定する。そして、マージ論理ファイルへのアクセスに用いられるキーが一意で無い場合には、ユニークキーを作成する（ステップＳ３）。
【００４９】
そして、プログラム変換装置１０は、マージ一覧情報記憶部１２ａおよびキー情報記憶部１２ｂから情報を読み出し、ユニークキーがマージ論理ファイルのキーであることを定義するＤＤＬを作成する（ステップＳ４）。続いて、プログラム変換装置１０は、マージ一覧情報記憶部１２ａ、キー情報記憶部１２ｂ、およびソース解析情報記憶部１２ｃから情報を読み出し、ユニークキーを用いて、マージ論理ファイルへアクセスするためのＣＯＢＯＬ登録集を作成する（ステップＳ５）。その後、プログラム変換装置１０は、マージ一覧情報記憶部１２ａ、キー情報記憶部１２ｂ、およびソース解析情報記憶部１２ｃから情報を読み出し、プログラムソースのマージ論理ファイルアクセス命令を、サブルーチンのコール文に変換する（ステップＳ６）。
【００５０】
移行後資産記憶部１４は、オフコンのＣＯＢＯＬ（Common  Business  Oriented  Language）プログラムをオープン系のＣＯＢＯＬプログラムに移行した後の資産に関する情報を記憶している。また、移行後資産記憶部１４は、ＤＤＬ文データ１４ａ、ＣＯＢＯＬ登録集データ１４ｂ、変換ソースデータ１４ｃを記憶する。
【００５１】
ＤＤＬ文データ１４ａは、ユニークキーがマージ論理ファイルのキーであることを定義するスクリプトであるＤＤＬを記憶する。例えば、ＤＤＬ文データ１４ａには、図１２に例示するように、各論理ファイル「ｐｆａ」、「ｐｆｂ」、「ｐｆｃ」、「ｐｆｄ」、「ｐｆｅ」を作成するためのＤＤＬが存在する。
【００５２】
「ｐｆａ用ＤＤＬ」には、マージファイルを作成するためのＤＤＬとして、「ＣＲＥＡＴＥ  ＵＮＩＱＵＥ  ＩＮＤＥＸ  ＩＸ＿ＬＦＭ１・・」および「ＣＲＥＡＴＥ  ＵＮＩＱＵＥ  ＩＮＤＥＸ  ＩＸ＿ＬＦＭ２・・」が記述されている。また、「ｐｆａ用ＤＤＬ」には、論理ファイル「ｐｆａ」のアクセスに用いられるユニークなキーである「ｋｅｙａ１」および「ｋｅｙａ２」が定義されている。図１２は、ＤＤＬ文データの一例を示す図である。なお、図１２の例では、キー部分のみを抜粋している。
【００５３】
ＣＯＢＯＬ登録集データ１４ｂは、ユニークキーを用いてマージ論理ファイルへアクセスするためのサブルーチンである。例えば、ＣＯＢＯＬ登録集データ１４ｂは、各マージ論理ファイルをまとめて一つのマージファイルと見なせるような動作をするマージ機能代替関数がＣＯＢＯＬ登録集形式で移行後資産記憶部１４に記憶されている。
【００５４】
図１３に例示するように、ＣＯＢＯＬ登録集データ１４ｂは、各マージ論理ファイル「ＬＦＭ１」、「ＬＦＭ２」のＣＯＢＯＬソースであって、各マージ論理ファイルの操作に関するＯＰＥＮやＲＥＡＤなどのアクセス機能ごとに記述されたＣＯＢＯＬソースとして移行後資産記憶部１４に記憶されている。
【００５５】
変換ソースデータ１４ｃは、ソースプログラム変換部１３ｆによって変換されたソースプログラムを記憶する。例えば、変換ソースデータ１４ｃでは、図１４に例示するように、プログラムソースのマージ論理ファイルアクセス命令が、サブルーチンのコール文に変換されたソースプログラムである。図１４の例を用いて説明すると、プログラム部におけるマージ論理ファイルアクセス命令「ＯＰＥＮ  ＦＩＬ０１」がＣＯＢＯＬ登録集データ１４ｂに記述された代替処理を実行させる「ＰＥＲＦＯＲＭ  ＭＬＦ＿ＬＦＭ１＿ＯＰＥＮ」に変換されている。
【００５６】
［プログラム変換装置による処理］
次に、図１５を用いて、実施例１に係るプログラム変換装置１０による処理を説明する。図１５は、実施例１に係るプログラム変換装置１０の処理動作を示すフローチャートである。
【００５７】
図１５に示すように、プログラム変換装置１０は、プログラム変換処理開始指示を受け付けると（ステップＳ１０１肯定）、移行前資産記憶部１１からマージファイルデータ１１ａを読み出して解析し、マージファイルに関する情報を抽出する（ステップＳ１０２）。そして、プログラム変換装置１０は、マージファイルデータ１１ａから全論理ファイルのキーに関する情報を抽出する（ステップＳ１０３）。
【００５８】
そして、プログラム変換装置１０は、移行前資産記憶部１１から変換前のＣＯＢＯＬソースデータ１１ｂを読み出して順に解析し、論理ファイルのアクセスに関する情報を抽出する（ステップＳ１０４）。続いて、プログラム変換装置１０は、マージ対応が可能であるか判定する（ステップＳ１０５）。すなわち、プログラム変換装置１０は、マージ論理ファイルへのアクセスに用いられるキーが一意であるか判定する。この結果、プログラム変換装置１０は、マージ対応が可能であると判定した場合には（ステップＳ１０５肯定）、ステップＳ１０７に進む。
【００５９】
また、プログラム変換装置１０は、マージ対応が可能でないと判定した場合には（ステップＳ１０５否定）、ユニークとなるようにキーを追加する（ステップＳ１０６）。そして、プログラム変換装置１０は、ユニークキーがマージ論理ファイルのキーであることを定義するＤＤＬを作成する（ステップＳ１０７）。続いて、プログラム変換装置１０は、ユニークキーを用いて、マージ論理ファイルへアクセスするためのＣＯＢＯＬ登録集を作成する（ステップＳ１０８）。その後、プログラム変換装置１０は、ＣＯＢＯＬソースのマージ論理ファイルアクセス命令を、サブルーチンのコール文に変換する（ステップＳ１０９）。
【００６０】
［ＣＯＢＯＬ登録集として生成された代替処理］
次に、図１６〜図２４を用いて、ＣＯＢＯＬ登録集として生成された各代替処理の流れを説明する。図１６は、ＣＯＢＯＬ登録集として生成されたＯＰＥＮ代替処理の処理動作を示すフローチャートである。図１７は、ＣＯＢＯＬ登録集として生成されたＣＬＯＳＥ代替処理の処理動作を示すフローチャートである。図１８は、ＣＯＢＯＬ登録集として生成されたＳＴＡＲＴ代替処理の処理動作を示すフローチャートである。図１９は、ＣＯＢＯＬ登録集として生成された順ＲＥＡＤ代替処理の処理動作を示すフローチャートである。図２０は、ＣＯＢＯＬ登録集として生成された乱ＲＥＡＤ代替処理の処理動作を示すフローチャートである。図２１は、ＣＯＢＯＬ登録集として生成された順ＤＥＬＥＴＥ代替処理の処理動作を示すフローチャートである。図２２は、ＣＯＢＯＬ登録集として生成された乱ＤＥＬＥＴＥ代替処理の処理動作を示すフローチャートである。図２３は、ＣＯＢＯＬ登録集として生成された順ＲＥＷＲＩＴＥ代替処理の処理動作を示すフローチャートである。図２４は、ＣＯＢＯＬ登録集として生成された乱ＲＥＷＲＩＴＥ代替処理の処理動作を示すフローチャートである。
【００６１】
まず、図１６を用いて、ＣＯＢＯＬ登録集として生成されたＯＰＥＮ代替処理について説明する。図１６に示すように、全ファイルにＯＰＥＮ処理の対処をしたか判定し（ステップＳ２０１）、全ファイルに対処した場合には（ステップＳ２０１肯定）、処理を終了する。また、全ファイルに対処してない場合には（ステップＳ２０１否定）、ＯＰＥＮ処理を実行し（ステップＳ２０２）、ＯＰＥＮ処理が成功したか判定する（ステップＳ２０３）。この結果、ＯＰＥＮが成功した場合には（ステップＳ２０３肯定）、ステップＳ２０１に戻り、ＯＰＥＮが成功しなかった場合には（ステップＳ２０３否定）、処理を終了する。
【００６２】
次に、図１７を用いて、ＣＯＢＯＬ登録集として生成されたＣＬＯＳＥ代替処理について説明する。図１７に示すように、全ファイルにＣＬＯＳＥ処理の対処をしたか判定し（ステップＳ３０１）、全ファイルにＣＬＯＳＥ処理の対処をした場合には（ステップＳ３０１肯定）、処理を終了する。また、全ファイルにＣＬＯＳＥ処理の対処をしてない場合には（ステップＳ３０１否定）、ＣＬＯＳＥ処理を実行して（ステップＳ３０２）、ステップＳ３０１に戻る。
【００６３】
次に、図１８を用いて、ＣＯＢＯＬ登録集として生成されたＳＴＡＲＴ代替処理について説明する。図１８に示すように、ＳＴＡＲＴ代替処理では、全ファイルにＳＴＡＲＴ処理の対処をしたか判定する（ステップＳ４０１）。この結果、全ファイルにＳＴＡＲＴ処理の対処をした場合には（ステップＳ４０１肯定）、ファイルＳＴＡＴＵＳの設定処理を行う（ステップＳ４０８）。また、ＳＴＡＲＴ代替処理では、全ファイルにＳＴＡＲＴ処理の対処をしていない場合には（ステップＳ４０１否定）、キーの設定処理および追加キーの設定処理を行う（ステップＳ４０２）。そして、ＳＴＡＲＴ代替処理では、ＳＴＡＲＴ処理の開始位置が「＝」のスタートであるか判定する（ステップＳ４０３）。すなわち、例えば、ＳＴＡＲＴ処理の開始位置（例えば、３００番目）が指定されているか判定する。
【００６４】
この結果、ＳＴＡＲＴ代替処理では、「＝」のスタートでない場合には（ステップＳ４０３否定）、ＳＴＡＲＴ処理を実行する（ステップＳ４０４）。また、ＳＴＡＲＴ代替処理では、「＝」のスタートである場合には（ステップＳ４０３肯定）、追加キーのあるＳＴＡＲＴであるか判定する（ステップＳ４０５）。この結果、追加キーのあるＳＴＡＲＴでない場合には（ステップＳ４０５否定）、開始位置が「＝」のＳＴＡＲＴ処理を実行する（ステップＳ４０６）。また、追加キーのあるＳＴＡＲＴである場合には（ステップＳ４０５肯定）、開始位置が「＞＝」のＳＴＡＲＴ処理を実行する（ステップＳ４０７）。つまり、例えばＳＴＡＲＴ処理の開始位置として３００番目が設定されている場合には、３００番目以上であって最も３００番目に近いデータをＳＴＡＲＴ処理の開始位置とする。
【００６５】
次に、図１９を用いて、ＣＯＢＯＬ登録集として生成された順ＲＥＡＤ代替処理について説明する。図１９に示すように、順ＲＥＡＤ代替処理では、全ファイルに順ＲＥＡＤ処理の対処をしたか判定する（ステップＳ５０１）。この結果、全ファイルに順ＲＥＡＤ処理の対処をしていない場合には（ステップＳ５０１否定）、ＲＥＡＤ  ＮＥＸＴを実行し（ステップＳ５０３）、ステップＳ５０１に戻る。また、全ファイルに順ＲＥＡＤ処理の対処をした場合には（ステップＳ５０１肯定）、通知するレコードを決定する（ステップＳ５０２）。
【００６６】
そして、順ＲＥＡＤ代替処理では、通知したファイル以外対処したか判定し（ステップＳ５０４）、通知したファイル以外対処した場合には（ステップＳ５０４肯定）、ＦＩＬＥ  ＳＴＡＴＵＳを設定する（ステップＳ５０７）。また、通知したファイル以外対処していない場合には（ステップＳ５０４否定）、ＲＥＡＤした値をキーに設定し（ステップＳ５０５）、開始位置が「＞＝」のＳＴＡＲＴ処理を実行し（ステップＳ５０６）、ステップＳ５０４に戻る。
【００６７】
次に、図２０を用いて、ＣＯＢＯＬ登録集として生成された乱ＲＥＡＤ代替処理について説明する。図２０に示すように、全ファイルに乱ＲＥＡＤ処理の対処をしたかを判定する（ステップＳ６０１）。この結果、全ファイルに乱ＲＥＡＤ処理の対処をした場合には（ステップＳ６０１肯定）、ＦＩＬＥ  ＳＴＡＴＵＳに「２３」を設定する（ステップＳ６１２）。ここで、ＦＩＬＥ  ＳＴＡＴＵＳの「２３」とは、データなしであったことを示す。
【００６８】
また、全ファイルに乱ＲＥＡＤ処理の対処をしていない場合には（ステップＳ６０１否定）、キーの設定処理を行い、追加キーがあれば追加キーの設定処理を行う（ステップＳ６０２）。そして、追加キーのあるファイルであるか判定し（ステップＳ６０３）、追加キーのあるファイルである場合には（ステップＳ６０３肯定）、開始位置が「＞＝」のＳＴＡＲＴ処理を実行し（ステップＳ６０４）、データがないか判定する（ステップＳ６０５）。この結果、乱ＲＥＡＤ処理では、データがない場合には（ステップＳ６０５肯定）、ステップＳ６０１に戻る。また、乱ＲＥＡＤ処理では、データがある場合には（ステップＳ６０５否定）、ＲＥＡＤ  ＮＥＸＴを実行し（ステップＳ６０６）、キーが一致するか判定する（ステップＳ６０７）。
【００６９】
この結果、乱ＲＥＡＤ処理では、キーが一致しないと判定した場合には（ステップＳ６０７否定）、ステップＳ６０１に戻る。また、乱ＲＥＡＤ処理では、キーが一致すると判定した場合には（ステップＳ６０７肯定）、通知するレコードを作成し（ステップＳ６１０）、ＦＩＬＥ  ＳＴＡＴＵＳを設定して（ステップＳ６１１）、処理を終了する。
【００７０】
一方、ステップＳ６０３の説明に戻って、追加キーのあるファイルでない場合には（ステップＳ６０３否定）、乱ＲＥＡＤを実行し（ステップＳ６０８）、データがないか判定する（ステップＳ６０９）。この結果、乱ＲＥＡＤ処理では、データがある場合には（ステップＳ６０９否定）、ステップＳ６０１に戻る。また、乱ＲＥＡＤ処理では、データがない場合には（ステップＳ６０９肯定）、通知するレコードを作成し（ステップＳ６１０）、ＦＩＬＥ  ＳＴＡＴＵＳを設定して（ステップＳ６１１）、処理を終了する。
【００７１】
次に、図２１を用いて、ＣＯＢＯＬ登録集として生成された順ＤＥＬＥＴＥ代替処理について説明する。図２１に示すように、直前にＲＥＡＤしたか判定し（ステップＳ７０１）、直前にＲＥＡＤしていない場合には（ステップＳ７０１否定）、ＦＩＬＥ  ＳＴＡＴＵＳに「４３」を設定する（ステップＳ７０２）。ここで、ＦＩＬＥ  ＳＴＡＴＵＳの「４３」とは、ＤＥＬＥＴＥまたはＲＥＷＲＩＴＥ文の実行前に、ファイルに対して実行された最後のＩ/Ｏ文が、ＲＥＡＤ文でなかったことを示す。
【００７２】
また、順ＤＥＬＥＴＥ処理では、直前にＲＥＡＤした場合には（ステップＳ７０１肯定）、ＤＥＬＥＴＥ処理を実行し（ステップＳ７０３）、ＦＩＬＥ  ＳＴＡＴＵＳを設定する（ステップＳ７０４）。
【００７３】
次に、図２２に示すように、ＣＯＢＯＬ登録集として生成された乱ＤＥＬＥＴＥ代替処理について説明する。図２２に示すように、全ファイルに乱ＤＥＬＥＴＥ処理の対処をしたかを判定する（ステップＳ８０１）。この結果、全ファイルに乱ＤＥＬＥＴＥ処理の対処をした場合には（ステップＳ８０１肯定）、ＦＩＬＥ  ＳＴＡＴＵＳに「２３」を設定する（ステップＳ８１２）。ここで、ＦＩＬＥ  ＳＴＡＴＵＳの「２３」とは、データなしであったことを示す。
【００７４】
また、全ファイルに乱ＤＥＬＥＴＥ処理の対処をしていない場合には（ステップＳ８０１否定）、キーの設定処理を行い、追加キーがあれば追加キーの設定処理を行う（ステップＳ８０２）。そして、乱ＤＥＬＥＴＥ処理では、追加キーのあるファイルであるか判定する（ステップＳ８０３）。この結果、追加キーのあるファイルである場合には（ステップＳ８０３肯定）、開始位置が「＞＝」のＳＴＡＲＴ処理の実行でＦＩＬＥ  ＳＴＡＴＵＳが「００」であるか判定する（ステップＳ８０４）。ここで、ＦＩＬＥ  ＳＴＡＴＵＳの「００」とは、正常終了であることを示す。
【００７５】
この結果、ＦＩＬＥ  ＳＴＡＴＵＳが「００」でない場合には（ステップＳ８０４否定）、ステップＳ８０１に戻る。また、ＦＩＬＥ  ＳＴＡＴＵＳが「００」である場合には（ステップＳ８０４肯定）、ＲＥＡＤ  ＮＥＸＴを実行し（ステップＳ８０５）、ＲＥＡＤが成功か判定する（ステップＳ８０６）。この結果、ＲＥＡＤが成功でなかった場合には（ステップＳ８０６否定）、ステップＳ８０１に戻る。また、ＲＥＡＤが成功した場合には（ステップＳ８０６肯定）、キーが乱ＤＥＬＥＴＥのキーと一致するか判定する（ステップＳ８０７）。
【００７６】
この結果、乱ＤＥＬＥＴＥ処理では、キーが一致しないと判定した場合には（ステップＳ８０７否定）、ステップＳ８０１に戻る。また、乱ＤＥＬＥＴＥ処理では、キーが一致すると判定した場合には（ステップＳ８０７肯定）、ＤＥＬＥＴＥを実行し（ステップＳ８１０）、ＦＩＬＥ  ＳＴＡＴＵＳを設定して（ステップＳ８１１）、処理を終了する。
【００７７】
一方、ステップＳ８０３の説明に戻って、追加キーのあるファイルでない場合には（ステップＳ８０３否定）、乱ＤＥＬＥＴＥを実行し（ステップＳ８０８）、ＲＥＡＤ成功か判定する（ステップＳ８０９）。この結果、乱ＲＥＡＤ処理では、ＲＥＡＤ成功である場合には（ステップＳ８０９否定）、ステップＳ８０１に戻る。また、乱ＤＥＬＥＴＥ処理では、ＲＥＡＤ成功である場合には（ステップＳ８０９肯定）、ＤＥＬＥＴＥを実行し（ステップＳ８１０）、ＦＩＬＥ  ＳＴＡＴＵＳを設定して（ステップＳ８１１）、処理を終了する。
【００７８】
次に、図２３を用いて、ＣＯＢＯＬ登録集として生成された順ＲＥＷＲＩＴＥ代替処理について説明する。図２３に示すように、順ＲＥＷＲＩＴＥ処理では、直前にＲＥＡＤしたか判定し（ステップＳ９０１）、直前にＲＥＡＤ処理をしていない場合には（ステップＳ９０１否定）、ＦＩＬＥ  ＳＴＡＴＵＳに「４３」を設定する（ステップＳ９０８）。また、直前にＲＥＡＤ処理をした場合には（ステップＳ９０１肯定）、追加キーがあるか判定する（ステップＳ９０２）。この結果、追加キーがない場合には（ステップＳ９０２否定）、ＲＥＷＲＩＴＥを実行し（ステップＳ９０６）、ＦＩＬＥ  ＳＴＡＴＵＳを設定する（ステップＳ９０７）。
【００７９】
また、Ｓ９０２において、追加キーがある場合には（ステップＳ９０２肯定）、追加キーが変更されていないか判定する（ステップＳ９０３）。この結果、追加キーが変更されていない場合には（ステップＳ９０３肯定）、ＲＥＷＲＩＴＥを実行し（ステップＳ９０６）、ＦＩＬＥ  ＳＴＡＴＵＳを設定する（ステップＳ９０７）。また、追加キーが変更されている場合には（ステップＳ９０３否定）、ＤＥＬＥＴＥ処理を実行し（ステップＳ９０４）、ＷＲＩＴＥ処理を実行し（ステップＳ９０５）、ＦＩＬＥ  ＳＴＡＴＵＳを設定する（ステップＳ９０７）。
【００８０】
次に、図２４を用いて、ＣＯＢＯＬ登録集として生成された乱ＲＥＷＲＩＴＥ代替処理について説明する。図２４に示すように、乱ＲＥＷＲＩＴＥ処理では、全ファイルの乱ＲＥＷＲＩＴＥ処理の対処をしたか判定する（ステップＳ１００１）。この結果、全ファイルの乱ＲＥＷＲＩＴＥ処理の対処をした場合には（ステップＳ１００１肯定）、ＦＩＬＥ  ＳＴＡＴＵＳを「４３」に設定する（ステップＳ１０１１）。
【００８１】
また、全ファイルの乱ＲＥＷＲＩＴＥ処理の対処をしていない場合には（ステップＳ１００１否定）、キーの設定処理を行い、追加キーがあれば追加キーの設定処理を行う（ステップＳ１００２）。そして、乱ＲＥＡＤ処理の実行でＦＩＬＥＳＴＡＴＵＳが「００」であるか判定する（ステップＳ１００３）。この結果、ＦＩＬＥ  ＳＴＡＴＵＳが「００」である場合には（ステップＳ１００３肯定）、ＲＥＷＲＩＴＥ処理を実行し（ステップＳ１０１０）、ＦＩＬＥ  ＳＴＡＴＵＳを設定して（ステップＳ１００９）、処理を終了する。
【００８２】
また、乱ＲＥＷＲＩＴＥ処理では、ＦＩＬＥ  ＳＴＡＴＵＳが「００」でない場合には（ステップＳ１００３否定）、追加キーがあるか判定する（ステップＳ１００４）。この結果、乱ＲＥＷＲＩＴＥ処理では、追加キーがない場合には（ステップＳ１００４否定）、ステップＳ１００１に戻る。また、追加キーがある場合には（ステップＳ１００４肯定）、開始位置が「＞＝」のＳＴＡＲＴ処理の実行でＦＩＬＥ  ＳＴＡＴＵＳが「００」であるか判定する（ステップＳ１００５）。この結果、ＦＩＬＥ  ＳＴＡＴＵＳが「００」でない場合には（ステップＳ１００５否定）、ステップＳ１００１に戻る。
【００８３】
また、ＦＩＬＥ  ＳＴＡＴＵＳが「００」である場合には（ステップＳ１００５肯定）、ＲＥＡＤ  ＮＥＸＴしたレコードとキーが一致するか判定する（ステップＳ１００６）。この結果、ＲＥＡＤ  ＮＥＸＴしたレコードとキーが一致しない場合には（ステップＳ１００６否定）、ステップＳ１００１に戻る。また、ＲＥＡＤ  ＮＥＸＴしたレコードとキーが一致した場合には（ステップＳ１００６肯定）、ＤＥＬＥＴＥ処理を実行する（ステップＳ１００７）。その後、乱ＲＥＷＲＩＴＥ処理では、ＷＲＩＴＥ処理を実行し（ステップＳ１００８）、ＦＩＬＥ  ＳＴＡＴＵＳを設定して（ステップＳ１００９）、処理を終了する。
【００８４】
[実施例１の効果]
上述してきたように、プログラム変換装置１０は、複数の物理ファイルがマージされたマージ論理ファイルへのアクセスに用いられるキーに関する情報およびマージ論理ファイルが参照する物理ファイルのリンクに関する情報を抽出する。そして、抽出されたキーに関する情報およびリンクに関する情報を用いて、マージ論理ファイルへのアクセスに用いられるキーが一意であるか判定し、キーが一意で無い場合には、マージ論理ファイルにアクセスするための一意であるユニークキーを生成する。そして、生成されたユニークキーがマージ論理ファイルのキーであることを定義するスクリプトを作成する。そして、生成されたユニークキーを用いて、マージ論理ファイルへアクセスするためのサブルーチンを作成する。そして、プログラムソースのマージ論理ファイルアクセス命令を、サブルーチンのコール文に変換する。このため、ホスト系ＣＯＢＯＬソースをオープン系ＣＯＢＯＬソースに自動変換する際に、マージ論理ファイルの機能を有するオープン系ＣＯＢＯＬソースへ容易に変換することが可能である。
【００８５】
また、プログラム変換装置１０は、マージ論理ファイルにマージされる物理ファイルにアクセスするキーが一意であるか判定し、キーが一意で無い場合には、物理ファイルに関係するキーから一意であるキーを検索する。そして、プログラム変換装置１０は、検索されたキーのうち追加するキーが少ないものを参照して、ユニークキーを生成する。このため、追加するキーを少なくしつつ、アクセスに用いられるキーを一意にすることが可能である。
【００８６】
また、プログラム変換装置１０は、サブルーチンとして、オープン処理、スタート処理、デリート処理、リード処理、スタート処理およびオープン処理に関するサブルーチンを作成する。このため、プログラム変換装置１０は、マージ論理ファイルの機能を有するオープン系ＣＯＢＯＬソースへ容易に変換することが可能である。
【実施例２】
【００８７】
さて、これまで実施例１について説明したが、上述した実施例１以外にも、種々の異なる形態にて実施されてよいものである。
【００８８】
（１）システム構成等
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。例えば、ファイル解析部１３ａとソース解析部１３ｂを統合してもよい。
【００８９】
（２）プログラム
ところで、上記の実施例で説明した各種の処理は、あらかじめ用意されたプログラムをコンピュータで実行することによって実現することができる。そこで、以下では、図２５を用いて、上記の実施例と同様の機能を有するプログラムを実行するコンピュータの一例を説明する。図２５は、プログラム変換装置を実行するコンピュータを示す図である。
【００９０】
図２５に示すように、プログラム変換装置としてのコンピュータ６００は、ＨＤＤ６１０、ＲＡＭ６２０、ＲＯＭ６３０およびＣＰＵ６４０をバス６５０で接続して構成される。
【００９１】
そして、ＲＯＭ６３０には、上記の実施例と同様の機能を発揮する変換プログラム、つまり、図２５に示すように、ファイル解析プログラム６３１、ソース解析プログラム６３２、マージ情報作成プログラム６３３、ＤＤＬ作成プログラム６３４、登録集作成プログラム６３５およびソースプログラム変換プログラム６３６が予め記憶されている。
【００９２】
そして、ＣＰＵ６４０が、これらのプログラム６３１〜６３６をＲＯＭ６３０から読み出して実行することで、図２５に示すように、各プログラム６３１〜６３６は、ファイル解析プロセス６４１、ソース解析プロセス６４２、マージ情報作成プロセス６４３、ＤＤＬ作成プロセス６４４、登録集作成プロセス６４５およびソースプログラム変換プロセス６４６として機能するようになる。
【００９３】
また、ＨＤＤ６１０には、図２５に示すように、マージ一覧データ６１１、キー情報６１２およびソース解析情報６１３が設けられる。そして、ＣＰＵ６４０は、マージ一覧データ６１１、キー情報６１２およびソース解析情報６１３に対してデータを登録するとともに、マージ一覧データ６１１、キー情報６１２およびソース解析情報６１３からデータを読み出してＲＡＭ６２０に格納し、ＲＡＭ６２０に格納されたデータに基づいて処理を実行する。
【符号の説明】
【００９４】
１０  プログラム変換装置
１１  移行前資産記憶部
１１ａ  マージファイルデータ
１１ｂ  ＣＯＢＯＬソースデータ
１２  データベース
１２ａ  マージ一覧情報記憶部
１２ｂ  キー情報記憶部
１２ｃ  ソース解析情報記憶部
１３  制御部
１３ａ  ファイル解析部
１３ｂ  ソース解析部
１３ｃ  マージ情報作成部
１３ｄ  ＤＤＬ作成部
１３ｅ  登録集作成部
１３ｆ  ソースプログラム変換部
１４  移行後資産記憶部
１４ａ  ＤＤＬ文データ
１４ｂ  ＣＯＢＯＬ登録集データ
１４ｃ  変換ソースデータ
【図１】
0005630358.tif 000002
【図２】
0005630358.tif 000003
【図３】
0005630358.tif 000004
【図４】
0005630358.tif 000005
【図５】
0005630358.tif 000006
【図６】
0005630358.tif 000007
【図７】
0005630358.tif 000008
【図８】
0005630358.tif 000009
【図９】
0005630358.tif 000010
【図１０】
0005630358.tif 000011
【図１１】
0005630358.tif 000012
【図１２】
0005630358.tif 000013
【図１３】
0005630358.tif 000014
【図１４】
0005630358.tif 000015
【図１５】
0005630358.tif 000016
【図１６】
0005630358.tif 000017
【図１７】
0005630358.tif 000018
【図１８】
0005630358.tif 000019
【図１９】
0005630358.tif 000020
【図２０】
0005630358.tif 000021
【図２１】
0005630358.tif 000022
【図２２】
0005630358.tif 000023
【図２３】
0005630358.tif 000024
【図２４】
0005630358.tif 000025
【図２５】
0005630358.tif 000026