(57)【要約】【課題】本発明は、既存のプログラムを新しい技術のソフトウェアに適した構造に変換することを目的とする。【解決手段】入力部１１００はコボルプログラム１００を入力し、記憶部１８００に記憶する。分割部１２００はコボルプログラム１００をまとまりある複数のプログラムに分解し、構文解析部１３００は分解されたそれぞれのプログラムの構文を解析する。プログラム判断部１４００は各プログラムの役割を判断し、節判断部１５００は各プログラム中の節の内容、役割を判断する。これらの動作を終えた後、抽出／変換部３１００は最終プログラム３００を生成するためのデータの抽出及び変換を行ない、その結果、コボルプログラム１００のソースコードから最終プログラム３００のソースコードへの変換が自動的に行われる変換装置を提供する。【選択図】　　　　図１
2004118374.tif 000002
【特許請求の範囲】
【請求項１】
バッチ処理をするプログラムをソースコードの形式で記憶する記憶部と、
上記記憶部が記憶したプログラムのソースコードを１以上のまとまりある処理に区切り、区切った処理を節として節毎の役割を各節の意味情報として判断する節判断部と、
上記節判断部が判断した各節の意味情報に基づいて上記記憶部が記憶したプログラムのソースコードからソースコード変換のための変換情報を抽出し、抽出した変換情報に基づいてプログラムのソースコードをクライアント機器用の変換結果プログラムのソースコードとサーバ機器用の変換結果プログラムのソースコードとの２つからなる変換結果プログラムのソースコードに変換する抽出／変換部とを備える変換装置。
【請求項２】
上記抽出／変換部は、上記２つの変換結果プログラムのソースコードを、オブジェクト指向プログラムのソースコードに変換する請求項１に記載された変換装置。
【請求項３】
上記抽出／変換部は、所定のデータ構造と手続きをもつ複数のクラスに対応した複数のオブジェクト指向プログラムのテンプレートを生成し、上記２つの変換結果プログラムのソースコードから所定のデータ構造と手続きからなる情報を複数抽出し、抽出した各情報をテンプレートの対応する部分に適用することによって上記２つの変換結果プログラムのソースコードを複数のオブジェクト指向プログラムのソースコードに変換する請求項２に記載された変換装置。
【請求項４】
バッチ処理をするプログラムをソースコードの形式で記憶する記憶部と、
上記記憶部が記憶したプログラムのソースコードを１以上のまとまりある処理に区切り、区切った処理を節として節毎の役割を各節の意味情報として判断する節判断部と、
所定のデータ構造と手続きをもつ複数のクラスに対応した複数のオブジェクト指向プログラムのテンプレートを生成し、上記節判断部が判断した各節の意味情報に基づいて上記記憶部に記憶されたバッチ処理をするプログラムのソースコードから所定のデータ構造と手続きからなる情報を複数抽出し、抽出した各情報をテンプレートの対応する部分に適用することによって上記記憶部が記憶したプログラムのソースコードを複数のオブジェクト指向プログラムのソースコードに変換する変換装置。
【請求項５】
上記変換装置は、さらに、
上記記憶部が記憶したプログラムのソースコードの役割をプログラムの意味情報として判断するプログラム判断部を備え、
上記抽出／変換部は、上記プログラム判断部が判断したプログラムの意味情報と上記節判断部が判断した各節の意味情報とに基づいてプログラムのソースコードからプログラムのソースコードを変換するための変換情報を抽出する請求項１又は請求項４のいずれかに記載された変換装置。
【請求項６】
上記変換装置は、さらに、
上記記憶部が記憶したプログラムを構文解析する構文解析部を備え、
上記節判断部は、上記構文解析部によって構文解析されたプログラムに含まれる各節の意味情報を判断する請求項１または請求項４のいずれかに記載された変換装置。
【請求項７】
上記変換装置は、バッチ処理をするコボルプログラムのソースコードを変換する請求項１または請求項４のいずれかに記載された変換装置。
【請求項８】
バッチ処理をするプログラムをソースコードの形式で記憶し、
上記記憶したプログラムのソースコードを１以上のまとまりある処理に区切り、区切った処理を節として節毎の役割を各節の意味情報として判断し、
上記判断した各節の意味情報に基づいて上記記憶したプログラムのソースコードからソースコード変換のための変換情報を抽出し、抽出した変換情報に基づいてプログラムのソースコードをクライアント機器用の変換結果プログラムのソースコードとサーバ機器用の変換結果プログラムのソースコードとの２つからなる変換結果プログラムのソースコードに変換する変換方法。
【請求項９】
バッチ処理をするプログラムをソースコードの形式で記憶する処理と、
上記記憶したプログラムのソースコードを１以上のまとまりある処理に区切り、区切った処理を節として節毎の役割を各節の意味情報として判断する処理と、
上記判断した各節の意味情報に基づいて上記記憶したプログラムのソースコードからソースコード変換のための変換情報を抽出し、抽出した変換情報に基づいてプログラムのソースコードをクライアント機器用の変換結果プログラムのソースコードとサーバ機器用の変換結果プログラムのソースコードとの２つからなる変換結果プログラムのソースコードに変換する処理とをコンピュータに実行させる変換プログラム。
【請求項１０】
バッチ処理をするプログラムをソースコードの形式で記憶する処理と、
上記記憶したプログラムのソースコードを１以上のまとまりある処理に区切り、区切った処理を節として節毎の役割を各節の意味情報として判断する処理と、
上記判断した各節の意味情報に基づいて上記記憶したプログラムのソースコードからソースコード変換のための変換情報を抽出し、抽出した変換情報に基づいてプログラムのソースコードをクライアント機器用の変換結果プログラムのソースコードとサーバ機器用の変換結果プログラムのソースコードとの２つからなる変換結果プログラムのソースコードに変換する処理とをコンピュータに実行させるための変換プログラムを記録したコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、プログラム変換装置及びその方法に関するものである。
【０００２】
【従来の技術】
従来からバッチ処理を行うコボルプログラムをＣＯＲＢＡ、ＣＯＭなどの技術を用いて、ほぼ全体を人手によってクライアント／サーバ型のコボルプログラムに変換しようとする試みは存在した（例えば、非特許文献１参照）。
図５７は一連のコボルプログラムをＣＯＲＢＡ、ＣＯＭなどの技術を用いて、クライアント／サーバ型コボルプログラムに変換する動作を示した従来図である。なお、ここで変換された結果は、クライアント／サーバ型ではあるが従来のコボルプログラムでありオブジェクト指向コボルプログラムではない。
このような試みでは、従来のコボル言語の手法を用いてコーディングされたコボルプログラム１００をクライアント／サーバ型のプログラムに変換する。まず、人間が一連のコボルプログラム１００のソースコードに記載された内容を理解する。そして、人間によってコボルプログラム１００を内容的にまとまりのある個々のプログラムに分解する必要がある。また、ＣＯＲＢＡやＣＯＭなどと先程分解された個々のプログラムとを連携するためのインターフェースをインターフェース定義言語（ＩＤＬ：ＩＮＴＥＲＦＡＣＥ　ＤＥＦＩＮＩＴＩＯＮ　ＬＡＮＧＵＡＧＥ）によって記述する必要があるが、その作業にも人手が必要である。非特許文献１では、このＩＤＬ作成の一部のみを自動化している。
【０００３】
【非特許文献１】
ＮＥＣ　Ｓｏｌｕｔｉｏｎｓ、
Ｏｐｅｎ　ＣＯＢＯＬ　Ｆａｃｔｏｒｙ　２１／
ＯｂｊｅｃｔＰａｒｔｎｅｒ　Ｐｒｏ、
［平成１４年７月１２日検索］、インターネット＜ＵＲＬ：
ｈｔｔｐ：／／ｗｗｗ．ｓｗ．ｎｅｃ．ｃｏ．ｊｐ／ｃｃｅｄ／ｏｃｆ２１／ｏｂｊｐｔｎｐｒｏ／ｓｅｉｈｉｎ．ｈｔｍｌ＞
【０００４】
【発明が解決しようとする課題】
このように、コボルプログラム１００のソースコードから最終プログラム３００のソースコードを生成するために行なわれる変換処理は、従来においては自動化されていないか、自動化されている部分があっても手動で行なわなければならない部分があり、人間の労力を軽減する変換方法が望まれていた。すなわち、従来、メインフレーム機器４０００などに使われていたコボルプログラム１００の資源をクライアント／サーバシステム（分散システム）においても活用可能にするために、人的労力をかけない自動化された変換装置及び方法が望まれていた。さらに、情報システムへの要請が集中型処理から分散型処理に変化している近年の状況を踏まえると、過去にコボルプログラムで構築した業務ロジックを再利用する方法がより一層求められていた。
【０００５】
本発明は、既存のプログラムを新しい技術のソフトウェアに適した構造に変換することを目的とする。
【０００６】
【課題を解決するための手段】
この発明に係る変換装置は、バッチ処理をするプログラムをソースコードの形式で記憶する記憶部と、
上記記憶部が記憶したプログラムのソースコードを１以上のまとまりある処理に区切り、区切った処理を節として節毎の役割を各節の意味情報として判断する節判断部と、
上記節判断部が判断した各節の意味情報に基づいて上記記憶部が記憶したプログラムのソースコードからソースコード変換のための変換情報を抽出し、抽出した変換情報に基づいてプログラムのソースコードをクライアント機器用の変換結果プログラムのソースコードとサーバ機器用の変換結果プログラムのソースコードとの２つからなる変換結果プログラムのソースコードに変換する抽出／変換部とを備える。
【０００７】
上記抽出／変換部は、上記２つの変換結果プログラムのソースコードを、オブジェクト指向プログラムのソースコードに変換することを特徴とする。
【０００８】
上記抽出／変換部は、所定のデータ構造と手続きをもつ複数のクラスに対応した複数のオブジェクト指向プログラムのテンプレートを生成し、上記２つの変換結果プログラムのソースコードから所定のデータ構造と手続きからなる情報を複数抽出し、抽出した各情報をテンプレートの対応する部分に適用することによって上記２つの変換結果プログラムのソースコードを複数のオブジェクト指向プログラムのソースコードに変換する。
【０００９】
この発明に係る変換装置は、バッチ処理をするプログラムをソースコードの形式で記憶する記憶部と、
上記記憶部が記憶したプログラムのソースコードを１以上のまとまりある処理に区切り、区切った処理を節として節毎の役割を各節の意味情報として判断する節判断部と、
所定のデータ構造と手続きをもつ複数のクラスに対応した複数のオブジェクト指向プログラムのテンプレートを生成し、上記節判断部が判断した各節の意味情報に基づいて上記記憶部に記憶されたバッチ処理をするプログラムのソースコードから所定のデータ構造と手続きからなる情報を複数抽出し、抽出した各情報をテンプレートの対応する部分に適用することによって上記記憶部が記憶したプログラムのソースコードを複数のオブジェクト指向プログラムのソースコードに変換する。
【００１０】
上記変換装置は、さらに、
上記記憶部が記憶したプログラムのソースコードの役割をプログラムの意味情報として判断するプログラム判断部を備え、
上記抽出／変換部は、上記プログラム判断部が判断したプログラムの意味情報と上記節判断部が判断した各節の意味情報とに基づいてプログラムのソースコードからプログラムのソースコードを変換するための変換情報を抽出する。
【００１１】
上記変換装置は、さらに、
上記記憶部が記憶したプログラムを構文解析する構文解析部とを備え、
上記節判断部は、上記構文解析部によって構文解析されたプログラムに含まれる各節の意味情報を判断する。
【００１２】
上記変換装置は、バッチ処理をするコボルプログラムのソースコードを変換する。
【００１３】
この発明に係る変換方法は、バッチ処理をするプログラムをソースコードの形式で記憶し、
上記記憶したプログラムのソースコードを１以上のまとまりある処理に区切り、区切った処理を節として節毎の役割を各節の意味情報として判断し、
上記判断した各節の意味情報に基づいて上記記憶したプログラムのソースコードからソースコード変換のための変換情報を抽出し、抽出した変換情報に基づいてプログラムのソースコードをクライアント機器用の変換結果プログラムのソースコードとサーバ機器用の変換結果プログラムのソースコードとの２つからなる変換結果プログラムのソースコードに変換する。
【００１４】
この発明に係る変換プログラムは、バッチ処理をするプログラムをソースコードの形式で記憶する処理と、
上記記憶したプログラムのソースコードを１以上のまとまりある処理に区切り、区切った処理を節として節毎の役割を各節の意味情報として判断する処理と、
上記判断した各節の意味情報に基づいて上記記憶したプログラムのソースコードからソースコード変換のための変換情報を抽出し、抽出した変換情報に基づいてプログラムのソースコードをクライアント機器用の変換結果プログラムのソースコードとサーバ機器用の変換結果プログラムのソースコードとの２つからなる変換結果プログラムのソースコードに変換する処理とをコンピュータに実行させる。
【００１５】
この発明に係るコンピュータに実行させるための変換プログラムを記録したコンピュータ読み取り可能な記録媒体は、バッチ処理をするプログラムをソースコードの形式で記憶する処理と、
上記記憶したプログラムのソースコードを１以上のまとまりある処理に区切り、区切った処理を節として節毎の役割を各節の意味情報として判断する処理と、
上記判断した各節の意味情報に基づいて上記記憶したプログラムのソースコードからソースコード変換のための変換情報を抽出し、抽出した変換情報に基づいてプログラムのソースコードをクライアント機器用の変換結果プログラムのソースコードとサーバ機器用の変換結果プログラムのソースコードとの２つからなる変換結果プログラムのソースコードに変換する処理とを備える。
【００１６】
【発明の実施の形態】
実施の形態１．
本実施の形態では、既存の資産であるコボルプログラム１００のソースコードをまず中間プログラム２００のソースコードに変換し、さらに、最終プログラム３００のソースコードに変換する装置及び方法について説明する。
図１は、本実施の形態によるプログラム変換方法の一例を示す図である。コボルプログラム１００はメインフレーム機器における集中型処理及びオフライン処理及び一括処理（バッチ処理）の環境で動作するコボル言語で記述されたプログラムである。このプログラムのソースコードを変換装置Ａ１０００によって中間プログラム２００のソースコードに変換する。
中間プログラム２００はクライアント／サーバシステムである分散処理及びオンライン処理及び一件別処理の環境において動作するオブジェクト指向プログラムである。中間プログラム２００はインターフェースクラス２１０とファイルクラス２２０とから構成される。インターフェースクラス２１０はクライアント機器が処理するプログラムでありクライアント機器用の変換結果プログラムの一例である。ファイルクラス２２０はサーバ機器が処理するプログラムであり、サーバ機器用の変換結果プログラムの一例である。このように、コボルプログラム１００をインターフェースクラス２１０とファイルクラス２２０に分解することによって、メインフレーム機器上で動作していたコボルプログラム１００をネットワーク上につながれたクライアント機器とサーバ機器を連携させて処理するシステムに活用することができる。
なお、オブジェクトとは、外界の対象領域に存在するものについて、データ（属性）と手続き（メソッド）を一体化して表現したものをいう。また、クラスとは、オブジェクトの集合を抽象化した形で定義したものをいう。
【００１７】
中間プログラム２００のソースコードは、さらに、変換装置Ｂ２０００によって最終プログラム３００のソースコードに変換される。最終プログラム３００は、ＷＥＢやＶＢやＪａｖａ（登録商標）などに連携することが可能なオブジェクト指向プログラムの一例である。最終プログラム３００は、中間プログラム２００よりさらにオブジェクト指向性の高いプログラムである。また、最終プログラム３００は、ビュークラス３１０、制御クラス３２０、モデルクラス３３０、セッションクラス３４０、エンティティクラス３５０から構成されるプログラムである。
このように、既存のコボルプログラム１００をオブジェクト指向プログラムにまでソースコード変換することにより、インターネットなどのネットワーク上に構築された分散システム上で変換後のプログラムを動作させることができる。よって、既存のプログラムのさらなる有効活用が図れる。
【００１８】
まず、変換装置Ａ１０００が、コボルプログラム１００のソースコードを中間プログラム２００のソースコードへ変換する方法について説明する。
図２は、コボルプログラム１００によるオフライン一括処理を変換装置Ａ１０００によって中間プログラム２００によるオンライン一件別処理に変換する一例を示す図である。
左側の一括処理では、メインフレーム機器が複数の入力データをチェック、ソートし、トランザクションファイルを生成した後、旧マスタファイルとマッチング、更新して、新マスタファイルを出力するとともに、必要ならばエラーリストを出力する。変換装置Ａ１０００は、このように、コボルプログラム１００によるオフライン一括処理をクライアント／サーバシステムで行われるオンライン一件別処理に適合させるようにプログラムのソースコードを変換する。即ち、クライアント側では入力データの入力、チェックを行ない、トランザクションとしてサーバ機器に送る。サーバ機器ではクライアント機器から送られたトランザクションとマスタファイルをマッチングしてマスタファイルを更新するととに、その結果をクライアント機器に伝える。
このように、変換装置Ａ１０００によってコボルプログラム１００のソースコードを中間プログラム２００のソースコードに変換することにより、オンラインの一件別処理が可能となる。
【００１９】
次に、上述したコボルプログラムでデータの追加や、更新削除などのトランザクションをオフライン一括処理を行うコボルプログラム１００を中間プログラム２００に変換することによってオンライン一件別処理を可能とする方法について、図３を用いてさらに詳細に説明する。
図３の左側はコボルプログラム１００によるオフライン一括処理を示し、右側は中間プログラム２００によるオンライン一件別処理を示す。
まず、入力・チェックプログラム１０２は、トランザクションファイル１０１のレコードを入力チェックし、チェック済みトランザクションファイル１０３を生成する。この処理の内容を記述した入力・チェックプログラム１０２のソースコードは、変換装置Ａ１０００によって、右側のインターフェースクラス２１０のプログラムのソースコードに変換される。
左側の一括処理で生成されたチェック済みトランザクションファイル１０３のレコードは右側のトランザクションレコード２０３に対応するものである。
次に、左側の一括処理では、チェック済みトランザクションファイル１０３をソートプログラム１０４よってソートし、チェック・ソート済みトランザクションファイル１０５を生成する。このソート処理は、右側の処理には不要である。なぜなら、右側の処理はバッチ処理ではなく一件別処理であるため、トランザクションレコード２０３は直接マッチング処理の対象レコードとなるからである。
次に、左側の一括処理では、チェック・ソート済みトランザクションファイル１０５と旧マスタファイル１０６をマッチングプログラム１０７によりマッチングする。その結果、新マスタファイル１０８を得る。この処理に対応して右側の一件別処理では、トランザクションレコード２０３とマスタファイル２０６をマッチングする（２０７）処理が行われる。このマッチング処理はファイルクラス２２０に記述され、サーバ機器によって実行される。
最後に、左側の一括処理では、結果出力プログラム１０９がマッチング処理から得られた結果を出力する。この処理に対応して右側の一件別処理では、サーバ機器に結果が出力される（２０８）。
【００２０】
次に、上記左側の一括処理を行うプログラムから右側の一件別処理を行うプログラムへ、そのソースコードを変換する変換装置Ａ１０００について説明する。
図４は、コボルプログラム１００のソースコードを中間プログラム２００のソースコードに変換する変換装置Ａ１０００の内部構成及び動作を示す図である。変換装置Ａ１０００は変換前のコボルプログラム１００を入力する入力部１１００と、入力部１１００が入力したプログラムを複数のプログラムに分割する分割部１２００と、分割された各プログラムを構文解析する構文解析部１３００と、構文解析したプログラムから各プログラムの内容を判断するプログラム判断部１４００と、プログラム判断部１４００が判断した各プログラム中の複数の節の内容を判断する節判断部１５００と、節判断部１５００が判断した節を用いてコボルプログラム１００から中間プログラム２００へ変換するために必要なデータを抽出し、抽出したデータを用いて中間プログラム２００に変換する抽出／変換部１６００と、変換した中間プログラム２００を出力する出力部１７００と、入力部１１００が入力したプログラム等を記憶する記憶部１８００とから構成される。なお、記憶部１８００は必ずしも変換装置Ａ１０００の内部に存在する必要はなく、外部記憶装置を利用してもよい。
【００２１】
次に、図４に示された各内部構成を用いてコボルプログラム１００のソースコードを中間プログラム２００のソースコードに変換する動作を説明する。
図５は、左から右に進行し、左から入力されたコボルプログラム１００を変換して右の中間プログラム２００を取得する動作を示した図である。
前述した通り、コボルプログラム１００は、トランザクションファイル１０１を入力し、その内容をチェックする入力チェックプログラム１０２と、各チェック済みトランザクションレコードをソートするソートプログラム１０４と、チェック・ソート済みトランザクションファイル１０５と旧マスタファイル１０６をマッチングするマッチングプログラム１０７とマッチングした結果を出力する結果出力プログラム１０９とから構成されている。ただし、入力チェックプログラム１０２、ソートプログラム１０４、マッチングプログラム１０７、結果出力プログラム１０９のうちどれか一つが欠けていても構わない。
【００２２】
入力部１１００は、このコボルプログラム１００を入力する。
次に、分割部１２００は、４つのプログラムが１つにまとまった入力プログラムをそれぞれ４つのプログラムに分割する（Ｓ１２００）。ただし、コボルプログラム１００が一つのまとまったプログラムである場合には、分割部１２００は何も処理しない。
次に、構文解析部１３００は、分割された４つのプログラムに記載された各構文を解析する（Ｓ１３００）。
次に、プログラム判断部１４００は、構文解析部１３００によって行なわれた構文解析に基づいて各プログラムの役割を判断する（Ｓ１４００）。この判断の結果、入力チェックプログラム１０２は入力データの入力とチェック、ソートプログラム１０４は複数のレコードのソート、マッチングプログラム１０７はマスタファイルとのマッチング、結果出力プログラム１０９はマッチング結果の出力という役割を果たしていることが判断される。
次に、節判断部１５００がプログラム判断部１４００によって判断された各プログラム中の節の役割を判断する（Ｓ１５００）。ここで、節とはプログラムを一又は複数のまとまりある処理に区切り、その区切った各処理をいう。
抽出／変換部１６００は、節判断部１５００によって判断された各節の役割からコボルプログラム１００のソースコードを中間プログラム２００のソースコードに変換するために必要なデータをコボルプログラム１００のソースコードから抽出し、抽出したデータを中間プログラム２００に適合するように変換する。
その結果、インターフェースクラス２１０とファイルクラス２２０とから構成される中間プログラム２００が生成され、出力部１７００によって出力される。
【００２３】
次に、変換装置Ａ１０００の各部の動作について説明する。
まず分割部１２００の動作について説明する。
図６は、入力部１１００が入力したコボルプログラム１００の一例である。ここでは、前述したように、コボルプログラム１００は４つのまとまりあるプログラムから構成されている。各プログラムの最終行には「ＥＮＤ　ＰＲＯＧＲＡＭ．」が存在する。
【００２４】
図７は、図６で示したコボルプログラム１００を複数のまとまりあるプログラムに分割する流れ図である。この流れ図は、ＰＡＤ（ＰＲＯＢＬＥＭ　ＡＮＡＬＹＳＩＳ　ＤＩＡＧＲＡＭＳ）によって記載されている。
ここでは、図６に示したプログラムに記述された見出し「ＩＤＥＮＴＩＦＩＣＡＴＩＯＮ　ＤＩＶＩＳＩＯＮ．」から次の見出し「ＥＮＤ　ＰＲＯＧＲＡＭ．」までを一つのプログラムと判断し、それぞれ別個の出力ファイルに格納する。
すなわち、まず新しい出力ファイルを開き（Ｓ１２０１）、プログラムが終わるまで以下の処理を繰り返す（Ｓ１２０２）。
プログラムを一行読み（Ｓ１２０３）、「ＥＮＤ　ＰＲＯＧＲＡＭ．」があるかどうかを判断する（Ｓ１２０４）。
「ＥＮＤ　ＰＲＯＧＲＡＭ．」が存在しない場合には、読み込んだ１行を出力ファイルに書き出す（Ｓ１２０７）。
「ＥＮＤ　ＰＲＯＧＲＡＭ．」が存在する場合には、まとまるある１つのプログラムの最終と判断し、出力ファイルを閉じ（Ｓ１２０５）、新しい出力ファイルを開く（Ｓ１２０６）。
この処理を繰り返すことによって、たとえば、図６に示されたコボルプログラム１００は４つのプログラム（入力・チェックプログラム１０２、ソートプログラム１０４、マッチングプログラム１０７、結果出力プログラム１０９）に分割される。
なお、図７においては見出し「ＥＮＤ　ＰＲＯＧＲＡＭ．」が存在するかを判断してプログラムを分割したが、入力ファイル名自体を用いて各々のファイル名から各まとまりあるプログラムに分割することも可能である。
また、分割部１２００は必ずしも設ける必要はなく、構文解析部１３００が直接入力されたプログラムに基づいて構文解析してもよい。
【００２５】
次に、分割部１２００によって分割された４個のプログラムの構文解析について説明する。構文解析部１３００は、分割された個々のプログラムを別個に構文解析する。その結果、各プログラムについてプログラムの階層構造を表現した構文解析木が得られる。
【００２６】
この構文解析木の各ノードには、プログラム中の命令に対する構文上の意味情報が付与されている。この構文解析木を作る操作はプログラム判断部１４００によって行なわれる。ここで、ノードとは、命令文の始まり及び終わりを境とし、プログラム中で意味を持つ最小の単位となる一連の語をまとめて格納したものをいう。
プログラム判断部１４００では各プログラム名の命名規則をもとに、入力チェックやマッチングなど、各プログラムの役割を判断し、判断した役割を意味情報として各プログラムに付与する。
ここで、プログラム名の命名規則について説明する。
プログラム中のプログラム名、ファイル、及びデータ項目については、予め各社内毎のコーディング規約によって命名規則が定められている。プログラム名については一連の処理に共通する名前と、入力、ソート、更新、結果出力の内どれかが識別できる名前が付いている。また、ファイル名にも各ファイルの役割を識別できる接辞が付与されている。
また、データ項目名には、ファイルのデータ項目ならばファイル名と同様にデータ項目の役割を識別できる接辞が付与されている。
これらプログラム中の命名規則に基づいて各プログラムに意味情報を付与することが可能である。
【００２７】
プログラム判断部１４００がプログラム名から各プログラムの役割を判断する流れ図を図８に示す。このフローは、プログラム判断部１４００によって実行される。
まず、プログラム判断部１４００は、構文解析部１３００によって解析された各プログラムについて（Ｓ１４０１）、プログラム名を抽出する（Ｓ１４０２）。
プログラム名が入力チェックならば、プログラムに意味情報として「入力チェック」を付与する（Ｓ１４０４）。
プログラム名がソートならばプログラムに意味情報「ソート」を付与する（Ｓ１４０５）。
プログラム名がマッチング更新であるならば、プログラムに意味情報「マッチング更新」を付与する（Ｓ１４０６）。
プログラム名が結果出力ならばプログラムに意味情報「結果出力」を付与する（Ｓ１４０７）。
【００２８】
次に、節判断部１５００が各プログラムの構文解析木の各節のノードを１つずつ抽出し、そのノードへ意味情報を付与する処理について説明する。
各プログラムは、前述したように、プログラム中のまとまりある処理である節から構成されている。
図９は、入力チェックプログラム１０２の各節の構造を示している。四角で囲まれた各処理が節に相当する。図９では、左の節が右の節を呼び出す構造になっている。
主処理（Ｓ１２９）はトランザクション入力処理（Ｓ１３８）と変換コントロール処理（Ｓ１３５）を呼び出している。トランザクション入力処理は、トランザクションファイル１０１からレコードを読み込む処理であり、変換コントロール処理は変換コントロール処理が呼び出す各処理（変換処理、トランザクション入力処理）を繰り返す制御処理である。
変換コントロール処理（Ｓ１３５）で行なわれる繰り返し処理は、変換処理（Ｓ１３９）とトランザクション入力処理（Ｓ１３８）を呼び出すことにより行なわれる。変換処理が行なわれた後には、チェック済トランザクション出力処理（Ｓ１４１）の節によってチェック済トランザクションレコードをファイルに書き出す処理を行う。なお、Ｓ１３９の変換処理では、トランザクションレコードをチェックし、正しいレコードを出力側に転記する処理を行なっている。
このようにして、節判断部１５００は、図９で示す入力・チェックプログラム１０２の節の構造から各節の役割を判断する。
【００２９】
節判断部１５００が図９に示した各節の役割を判断する流れ図を図１０に示す。
まず、節判断部１５００は節のノードを一つずつ抽出し（Ｓ１５０１）、ＯＰＥＮ文又はＲＥＡＤ文又はＷＲＩＴＥ文を含むかを判断する（Ｓ１５０２）。
節判断部１５００は、節に対応する構文解析木のノードにＯＰＥＮ文を含むと判断されている場合には節の役割として意味情報「主処理」を付与する（Ｓ１５０３）。ＲＥＡＤ文を含む場合には節の役割として意味情報「トランザクション入力」を付与する（Ｓ１５０４）。ＷＲＩＴＥ文を含む場合には節の役割の意味情報として「チェック済トランザクション出力」を付与する（Ｓ１５０５）。
次に、節判断部１５００は、他の節に対してチェック済出力をＰＥＲＦＯＲＭ文で読み出しているかを判断し（Ｓ１５０７）、呼び出している場合にはその節の役割として意味情報「変換処理」を付与する（Ｓ１５０８）。
節判断部１５００は、他の節に対して変換処理をＰＥＲＦＯＲＭ文で呼び出している判断される場合には（Ｓ１５１０）、その節の役割として意味情報「変換処理コントロール」を付与する（Ｓ１５１１）。このようにして、各節の役割として意味情報を自動的に付与することができる。
【００３０】
次に、節判断部１５００がマッチングプログラム１０７に対して節の判断と意味情報の付与を行う動作を説明する。
図１１は、マッチングプログラム１０７の節の構造を示している。図９と同様に四角で囲まれた処理は節を表し、左の処理が右の処理を呼び出す関係となっている。主処理（Ｓ１５７）はトランザクションを入力し（Ｓ１６５）、旧マスタファイルを入力し（Ｓ１６６）、これらのデータを元に更新コントロールに基づいて更新処理を繰り返す。すなわち、更新コントロールでは、トランザクションキーとマスタキーを照合する合致処理を行ない（Ｓ１５９）、また次のマスタレコードを準備するマスタ処理（Ｓ１６９）と次のトランザクションレコードを準備するトランザクション処理（Ｓ１６０）に基づいて合致処理（Ｓ１５９）を繰り返す。その結果は新マスタファイルに出力される。このようにマッチングプログラム１０７は図１１に示す節の構造を持っているので、節判断部１５００はこれらの節の構造から各節の役割を判断する。
【００３１】
節判断部１５００が図１０に示した各節の役割を判断する流れ図を図１２に示す。
まず、節判断部１５００は、節が対応する構文解析木のノードを一つずつ抽出し（Ｓ１５２１）、ＯＰＥＮ文、トランザクションのＲＥＡＤ文、旧マスタファイルのＲＥＡＤ文、新マスタファイルのＲＥＡＤ文があるかどうかを判断する（Ｓ１５２２）。ＯＰＥＮ文がある場合には、その節の役割として、意味情報「主処理」を付与する（Ｓ１５２３）。トランザクションのＲＥＡＤ文がある場合にはその節に意味情報「トランザクション入力」を付与する（Ｓ１５２４）。旧マスタファイルのＲＥＡＤ文がある場合には、その節に意味情報「旧マスタファイル入力」を付与する（Ｓ１５２５）。新マスタファイルのＲＥＡＤ文がある場合にはその節に意味情報「新マスタファイル出力」を付与する（Ｓ１５２６）。
また、節判断部１５００は、残りの節について、前述したプログラム中の命名規則に従ってプログラム名、ファイル名、データ項目名を用いてどのレコード定義がトランザクションファイル、新マスタファイル、旧マスタファイルのいずれかのレコードかを判断することができる（Ｓ１５２８）。
【００３２】
以上、節判断部１５００が入力・チェックプログラム１０２とマッチングプログラム１０７について節の判断を行なった後、抽出／変換部１６００が各節の判断に基づいて中間プログラム２００を生成するのに必要なデータを抽出し、変換する。次に、抽出／変換部１６００で行なわれる抽出／変換処理について説明する。
まず、前処理として中間プログラム２００に予め各クラス中のメソッドを作り込む作業が必要である。ここで、メソッドとは具体的処理方法（手段）をいう。抽出／変換部１６００は、この前処理として中間プログラム２００を構成するインターフェースクラス２１０及びファイルクラス２２０の２つ構造を作り、各クラスにファイル名情報をつけておく。
また、上記２つのクラスには各々次の段落に示すメソッドを作り、中身は空にしておく。各メソッドには意味情報を付与しておき、後で抽出及び変換する際に各メソッドを特定できるようにする。
【００３３】
図１３は、入力チェックプログラム１０２と結果出力プログラム１０９とインターフェースクラス２１０の対応図である。
図１４は、マッチングプログラム１０７とソートプログラム１０４とファイルクラス２２０の対応図である。
図１３に示すように、抽出／変換部１６００は予め、インターフェースクラス２１０に画面表示入力メソッド（メソッド：ｄｉｓｐｌａｙＳｃｒｅｅｎ）とＵＩメインメソッド（メソッド：ｕｉＭａｉｎ）と入力チェックメソッド（メソッド：ｃｈａｎｇｅＭｏｄｅｌ）を作っておく。
また、抽出／変換部１６００は予め、ファイルクラス２２０にマッチング更新メソッド（メソッド：ｕｐｄａｔｅＲｅｃｏｒｄ）を作っておく。
【００３４】
このような前処理を行なった後、図１３に示すように、抽出／変換部１６００は、入力チェックプログラム１０２と結果出力プログラム１０９からデータを抽出、変換し、クライアント機器５０００用の変換結果プログラムとしてインターフェースクラス２１０を生成する抽出変換処理を行う。また、図１４に示すように、抽出／変換部１６００はマッチングプログラム１０７とソートプログラム１０４からデータを抽出、変換し、サーバ機器６０００用の変換結果プログラムとしてファイルクラス２２０を生成する抽出変換処理を行う。
以下に、上記抽出／変換部１６００が行う抽出変換処理を説明する。
【００３５】
・入力チェックプログラム１０２と結果出力プログラム１０９からインターフェースクラス２１０への抽出変換処理
図１３に示すように、抽出／変換部１６００では入力チェックプログラム１０２と結果出力プログラム１０９とからインターフェースクラス２１０を生成するために対応付けを行う。
抽出／変換部１６００は入力チェックプログラム１０２から入力チェックのロジックを抽出し、インターフェースクラス２１０に対応付ける。また、抽出／変換部１６００は結果出力プログラム１０９から伝票定義を抽出し、インターフェースクラス２１０に対応付ける。
【００３６】
抽出／変換部１６００は、次に示す３つのロジックの対応付けに基づいて抽出変換処理を行う。
第１に入力チェックプログラム１０２では、トランザクションファイル１０１からレコードを読み込むロジックが存在していたが、インターフェースクラス２１０では画面からデータを入力してレコード形式に格納するロジックに変換する必要がある。すなわち、トランザクションファイル１０１からレコードを読み込むロジックは不要となる。したがって、第１の対応付けから入力チェックプログラム１０２に存在していたトランザクションファイル１０１からレコードを読み込むロジックを無視する。
第２に入力チェックプログラム１０２では読み込んだ各レコードのデータをチェックするロジックが存在するが、インターフェースクラス２１０においてもこのロジックを継承する必要がある。
第３に入力チェックプログラム１０２ではデータが正しければレコードをチェック済トランザクションファイル１０３に書き出すロジックが存在していたが、インターフェースクラス２１０においてはデータが正しければレコードをファイルクラス２２０に送るロジックに変換する必要がある。すなわち、データが正しければレコードをチェック済トランザクションファイル１０３に書き出すロジックは不要となる。したがって、第３の対応付けから入力チェックプログラム１０２に存在していたチェック済トランザクションファイル１０３の定義部分とチェック済トランザクションファイル１０３に書き出すロジックを無視し、レコードをチェックして正しければファイルクラス２２０のメソッドに送るようにするロジックを加える。
また、一括処理から一件別処理へ処理方法が変更されるので、入力チェックプログラム１０２に存在していた次のレコードを準備する繰り返しのロジックを無視する。
【００３７】
これらの対応付けに基づいたプログラムの抽出、変換の詳細を図１５及び図１６に示す。図１５は入力チェックプログラム１０２からインターフェースクラス２１０のプログラムへの抽出及び変換の詳細を説明する図である。図１６は結果出力プログラム１０９からインターフェースクラス２１０のプログラムへの抽出及び変換を説明する図である。図１５及び図１６に示す位置番号は図１３及び図１４に示す対応付けの番号に対応している。すなわち、入力チェックプログラム１０２の見出し部にかかれたプログラム名からインターフェースクラス２１０の見出し部のクラス名及び環境部のファイルクラス２２０へのリポジトリ指定及びクラス終わり見出しの抽出変換を行うが、その詳細については図１５の位置番号（１−１）に示されている。
【００３８】
この抽出変換の詳細について、図１７と図１８を用いて説明する。
図１７は、入力チェックプログラム１０２の一部を示す図である。図１８は、インターフェースクラス２１０の一部を示す図である。
図１７の位置番号（１−１）で示されたステップから図１８の（１−１）で示されたステップが抽出変換される。
さらに、具体的に説明すると、図１７の見出し部（Ｓ１２１）中のＰＲＯＧＲＡＭ−ＩＤ（Ｓ１２２）の行から「在庫マスタ修正−入力チェック」を抽出し、図１８のインターフェースクラス２１０中の見出し部（Ｓ２２１）のクラスＩＤ「在庫マスタ修正ＵＩ」として変換する。
また、インターフェースクラス２１０内の環境部（Ｓ２２２）に記載されたファイルクラス２２０に対するリポジトリ指定の内部名として、入力チェックプログラム１０２から抽出した「在庫マスタ修正」にファイルクラス名の接辞を付加するとともに、外部名については各会社毎のコーディング規約中の命名規則に従ってファイルクラス２２０のファイル名を挿入する。
クラスの終わりを示す見出しについては後述する。
【００３９】
次に、図１７で示す入力チェックプログラム１０２のデータ部（Ｓ１２３）のトランザクションファイル定義に基づき、インターフェースクラス２１０のクラス変数を抽出変換する。具体的には図１７に示された位置番号（１−２）から抽出し、図１８のデータ部（Ｓ２２３）に示された位置番号（１−２）に変換する。このように入力チェックプログラム１０２のトランザクションファイルの接辞がついたレコードをインターフェースクラス２１０のクラス変数として記載し、画面からの入力をレコードの形式にしてファイルクラス２２０に送ることが可能となる。
【００４０】
次に、入力・チェックプログラム１０２中の手続き部からインターフェースクラス２１０の入力チェックメソッドを作成するための抽出変換処理について説明する。
図１９は、入力チェックプログラム１０２の手続き部を示している。図２０は、インターフェースクラス２１０の入力チェックメソッドの手続部とクラスの終わりの見出し部分を示している。
図１３に示すように、入力チェックプログラム１０２の手続き部（Ｓ１２８）はインターフェースクラス２１０の入力チェックメソッド「ｃｈａｎｇｅＭｏｄｅｌ」（Ｓ２２７）の手続き部に変換される。各変換処理についての詳細は、図１５の位置番号（１−４）から（１−８）に示されているが、この変換処理について図１９と図２０を用いて実際の具体的抽出変換を説明する。
【００４１】
図１９の手続き部（Ｓ１２８）中の主処理（Ｓ１２９）に記載された主処理節（Ｓ１３０からＳ１３４）を抽出し、この抽出した要素から図２０に示す入力チェックメソッドの手続き部の主処理（Ｓ２２８）の処理内容を生成する変換処理を説明する。なお、抽出時の主処理部分の特定の仕方については前述したとおりであるので、省略する。
実際の構造及び構文上の変換については、まず、図１９で示すファイルのＯＰＥＮ文（Ｓ１３０）及びファイルのＣＬＯＳＥ文（Ｓ１３３）を無視する。また、変換処理コントロールへのＰＥＲＦＯＲＭ文（Ｓ１３２）から繰り返しの指定（ＵＮＴＩＬ指定）を無視する。ファイルのＯＰＥＮ文及びＣＬＯＳＥ文を無視するのは、インターフェースクラス２１０では入力は画面で行ない、チェック済レコードはファイルクラス２２０に出力するために不要となるためである。また、繰り返しの指定を無視するのは、中間プログラムではレコードを１件しか処理しないためである（一件別処理）。
次に、ＳＴＯＰ　ＲＵＮ．（Ｓ１３４）を中間プログラムの構文上必要なＥＸＩＴ　ＭＥＴＨＯＤ．に変換する。これは図２０のＳ２３８に示されている。
【００４２】
次に、位置番号（１−５）に示される処理の変換について説明する。
図１９において、変換処理コントロール（Ｓ１３５）に記載された具体的内容（Ｓ１３６、Ｓ１３７）を抽出し、トランザクション入力へのＰＥＲＦＯＲＭ文（Ｓ１３７）を消去する。これは、中間プログラムではレコードを１件しか処理しないので、次のトランザクションレコードを入力する必要がないためである。その結果、図２０にはＳ２３１及びＳ２３２のみが抽出される。
【００４３】
次に、位置番号（１−６）の抽出変換について説明する。
図１９のＳ１３８で示すトランザクションファイルのＲＥＡＤ文を無視し、処理を何も行わないことを表すＣＯＮＴＩＮＵＥ文に置き換える。中間プログラムでは画面からの入力データが直ちにトランザクションレコードに入るため、ＲＥＡＤ文は不要となるためである。その結果、トランザクション入力処理は図２０のＳ２３４で示す部分のように変換される。
【００４４】
次に位置番号（１−７）の変換処理についての抽出変換を説明する。
図１９のＳ１３９で示す変換処理の内、Ｓ１４２のＭＯＶＥ文、すなわち、トランザクションレコードからチェック済トランザクションレコードへレコードを移動させるための文を無視する。中間プログラムによれば、トランザクションレコードをチェックしてデータが正しければそのままファイルクラス２２０にそのデータを送るためである。その結果、変換処理には図２０のＳ２３５で示す部分のみが抽出される。
【００４５】
次に、位置番号（１−８）の抽出変換処理について説明する。
ここでは、図１９のＳ１４１に示すトランザクション出力処理の抽出変換処理が行なわれる。具体的にはチェック済トランザクションファイルへのＷＲＩＴＥ文（Ｓ１４３）をファイルクラス２２０のマッチング更新メソッドへのＩＮＶＯＫＥ文に置き換える。中間処理プログラムにおいては、チェックしたレコードはファイルクラス２２０のマッチング更新メソッドへの引数となるからである。このようにして、抽出変換した結果を図２０のＳ２３６に示す。
なお、Ｓ２３７は位置番号（１−１）に対応してクラスの終わりの見出しを抽出変換した変換後のステップを示している。
【００４６】
以上のようにして抽出／変換部１６００はコボルプログラム１００に記載された入力チェックプログラム１０２のソースコードから中間プログラム２００を構成するインターフェースクラス２１０のソースコードを自動的に抽出変換する。
実際の入力チェックプログラム１０２のソースコードを図２１に示す。また、入力チェックプログラム１０２のソースコードから抽出／変換部１６００によって抽出、変換されたインターフェースクラス２１０のソースコードを図２２、図２３に示す。すなわち、図２２の第１行であるステップ１（０００００１）から図２３の最終行であるステップ１００（０００１００）までのソースコードが抽出、変換されたインターフェースクラス２１０のソースコードである。
図２１、図２２、図２３に示すプログラム中、各位置番号はどのように変換がなされたかを説明するためのものであり、実際のプログラムに記載する必要はない。また、上記において説明されていない位置番号については後述する。
【００４７】
次に、図１６に示す結果出力プログラム１０９からインターフェースクラス２１０への抽出、変換の具体的動作を説明する。図２４、図２５に結果出力プログラム１０９のプログラムを記載する。図２４の第１行であるステップ１（０００００１）から図２５の最終行であるステップ８４（００００８４）までのソースコードが結果出力プログラム１０９のソースコードである。
上記結果出力プログラム１０９に記載された位置番号（１−２５）から伝票定義を抽出し、図１８の位置番号（１−２５）に示す画面表示メソッドの画面定義に変換する。この場合、伝票の行位置、桁位置を画面の行位置、桁位置に対応付ける必要がある。
また、上記結果出力プログラム１０９の位置番号（１−２５）に示す伝票項目の「ＳＯＵＲＣＥ指定」を図１８の位置番号（１−２５）に示す画面項目の「ＴＯ指定」に置き換えることが必要となる。
さらに、トランザクションレコードに含まれているがマスタレコードに含まれないデータ項目をもとにそれらの項目について画面項目を生成する。結果出力プログラム１０９はマスタレコードの項目を出力しているが、インターフェースクラス２１０の画面表示メソッドでは画面からトランザクションの項目を入力するためである。
以下に、上記抽出／変換部１６００がマッチングプログラム１０７とソートプログラム１０４からファイルクラス２２０へ変換する情報を抽出する抽出変換処理を図１４を用いて説明する。
【００４８】
・マッチングプログラム１０７とソートプログラム１０４からファイルクラス２２０への抽出変換処理
次に、マッチングプログラム１０７とソートプログラム１０４とに基づいて中間プログラムのファイルクラス２２０を抽出、変換する動作について説明する。前述したように、図１４は左側に示すマッチングプログラム１０７とソートプログラム１０４から必要なデータを抽出し、抽出したデータに基づいてマッチングプログラム１０７またはソートプログラム１０４を変換し、右側に示すファイルクラス２２０を生成するための各対応付けを示している。
【００４９】
マッチングプログラム１０７とソートプログラム１０４とから中間プログラム２００を生成するための各対応についての基本的方針を説明する。
まず、マッチングプログラム１０７からはマッチング更新のロジックを抽出する。また、ソートプログラム１０４からはレコードキーの情報を抽出する。
マッチング更新のロジックは次の３つの対応付けにより変換する。
第１はマッチングプログラム１０７ではチェック・ソート済みトランザクションファイル１０５からレコードを読み込んでいたが、ファイルクラス２２０ではトランザクションレコードを手続きの引数として受け取るように変換する必要がある。
第２にマッチングプログラム１０７ではマスタレコードとチェック・ソート済みトランザクションファイル１０５のレコードをマッチングするロジックが存在していたが、ファイルクラス２２０においてもこのロジックが必要となる。
第３にマッチングプログラム１０７ではマッチングした結果、データが正しければ処理区分に応じて、新マスタレコードを更新し、新マスタファイルに書き出す動作を行なっていたが、ファイルクラス２２０ではデータが正しければ処理区分に応じてマスタレコードを更新し、マスタファイルを書き換えるという処理に変換する必要がある。
【００５０】
上記第１〜第３の対応付けに従い、抽出／変換部１６００は、マッチングプログラム１０７で存在していたトランザクションファイルからレコードを読み込むロジックを無視し、トランザクションレコードを引数として定義する。
また、抽出／変換部１６００は、マッチングプログラム１０７で存在していたマスタファイルの定義のどちらか一方を無視し（この例では新マスタファイルを無視する）マスタファイルへの読み書きは無視しなかった残る一方のファイルのみに行うようにロジックを変換する。
また、抽出／変換部１６００は、マスタファイルを索引編成ファイルにする。
抽出／変換部１６００は、マスタレコードを書き出す命令を、追加（ＷＲＩＴＥ）、更新（ＲＥＷＲＩＴＥ）、削除（ＤＥＬＥＴＥ）にする。
トランザクションレコード、マスタレコードとも、ファイルクラス２２０においては一件のみ処理するので、抽出／変換部１６００は次のレコードを準備する繰り返しのロジックを無視する。
以上の方針に基づき、抽出／変換部１６００は変換前のマッチングプログラム１０７とソートプログラム１０４とから必要な情報を抽出、変換し、ファイルクラス２２０のソースコードを自動生成する。
【００５１】
上記抽出／変換部１６００による抽出、変換の詳細を図２６〜図２８に示す。図２６、図２７は、マッチングプログラム１０７からファイルクラス２２０への抽出、変換の詳細を示す図である。図２８は、ソートプログラム１０４からファイルクラス２２０への抽出、変換を示す図である。図２６〜図２８に示された位置番号は図１４の対応付けに示された位置番号と一致している。このように、抽出／変換部１６００が自動的に必要な情報を抽出変換し、ファイルクラス２２０が生成される。
【００５２】
抽出／変換部１６００は、コボルプログラム１００にはないが中間プログラム２００で必要となる要素を新規に生成して追加する。すなわち、インターフェースクラス２１０に次の３つの要素を追加する。第１の要素は、画面からの入力が終了かを判定するフラグ項目である。第２の要素は、画面表示メソッドや、入力チェックメソッドを呼び出すメイン手続である。第３の要素は画面表示メソッド内の表示及び入力受付命令である。
【００５３】
以上に説明したマッチングプログラム１０７のソースコードを図２９〜図３１に示す。また、ソートプログラム１０４のソースコードを図３２に示す。さらに、ファイルクラス２２０のプログラムを図３３、図３４に示す。
プログラム中の位置情報は図１４、図２６及び図２７及び図２８との対応を明確に示すために記載しているが、実際のプログラムには不要である。
【００５４】
本実施の形態の変換装置Ａ１０００によれば、集中型処理に適合したコボルプログラム１００のソースコードから分散型処理に適合した中間プログラム２００のソースコードへの自動変換が可能となる。従って、集中型処理に用いられていたプログラム資産を分散型処理においても使用することができるため、プログラム資産の有効活用が図れる。
【００５５】
また、本発明の実施の形態によれば、旧来コーディングされたプログラム中の業務ロジックを再利用することができる。
【００５６】
また、プログラムの変換作業は変換装置Ａ１０００によって自動的に行われるために、人的労力を必要としないため、労力の低減を図ることができる。
【００５７】
また、企業などの組織において、集中型処理から分散型処理へシステムを移行する場合に、集中型処理に用いていたプログラムを分散型処理においても有効に使用できるため、新たにプログラムを開発する必要を最小限に抑えることができ、人的労力の軽減、システム構築期間の短縮化及びシステム構築費用の低減を図ることができる。
【００５８】
また、手続き型プログラムからオブジェクト指向プログラムに変換することによって、プログラム間のインターフェースをより明確にできる。
【００５９】
また、手続き型プログラムからオブジェクト指向プログラムに変換することによって、オブジェクト内部の仕様変更が外部に及ばないようなプログラムが可能になり、ソースコードを再利用しやすくなる。
【００６０】
次に、図１に記載された中間プログラム２００から最終プログラム３００を生成する変換装置Ｂ２０００について説明する。この変換装置Ｂ２０００により、中間プログラム２００をよりオブジェクト指向的な、個別の役割に特化したクラスからなる最終プログラム３００に変換することができる。
まず、中間プログラム２００から最終プログラム３００へプログラム変換を行う変換装置Ｂ２０００の内部構成について説明する。
図３５は変換装置Ｂ２０００の内部構成図である。
入力部２１００は変換装置Ａ１０００によって変換された中間プログラム２００を入力する。
次に、抽出／変換部２２００が入力部２１００によって入力された中間プログラム２００から必要な情報を抽出し、変換する。出力部２３００は抽出／変換部２２００によって抽出変換されたプログラムを最終プログラム３００として出力する。入力部２１００、抽出／変換部２２００、出力部２３００は必要に応じて記憶部２４００に情報を記憶することができる。たとえば、入力部２１００は入力した中間プログラム２００を記憶部２４００に記憶することができる。なお、記憶部２４００は必ずしも変換装置Ｂ２０００の内部に存在する必要はなく、外部記憶装置を利用してもよい。
【００６１】
次に、変換装置Ｂ２０００により中間プログラム２００を最終プログラム３００に変換する場合において、各データ処理の変換の流れを説明する。
図３６は、変換装置Ｂ２０００によってデータ処理の方法がどのように変換されたかを示す図である。
図の左側は中間プログラム２００によるオンライン一件別処理を示している。図の右側は、最終プログラム３００による、中間プログラム２００よりさらにオブジェクト指向的なオンライン一件別処理を示している。
左側の処理を行う中間プログラム２００はインターフェースクラス２１０とファイルクラス２２０とを持つ。左側のデータの流れについては図３の説明で行なったので、ここでは省略する。
【００６２】
右側の最終プログラム３００は５つのクラスから成り立っている。具体的にはインターフェースクラス２１０からビュークラス３１０，制御クラス３２０及びモデルクラス３３０の３つのクラスが生成される。また、ファイルクラス２２０からセッションクラス３４０及びエンティティクラス３５０の２つのクラスが生成される。
ビュークラス３１０と制御クラス３２０とモデルクラス３３０とはクライアント機器５０００側のクラスである。このうち、ビュークラス３１０は画面表示と入力の受付を行うクラスである。モデルクラス３３０はデータのモデル（属性など）を管理するクラスである。制御クラス３２０はビュークラス３１０によって管理される画面と、モデルクラス３３０によって管理されるデータモデルの制御を行うクラスである。
【００６３】
セッションクラス３４０とエンティティクラス３５０とはサーバ機器６０００側のクラスである。セッションクラス３４０はマスタレコードとトランザクションレコードの照合を行うクラスである。エンティティクラス３５０はセッションクラス３４０によって行なわれた照合の結果を記憶媒体へ書き込むことを管理するクラスである。
【００６４】
このような各クラスの制御に従って、トランザクションレコード３０３をクライアント機器５０００側からサーバ機器６０００側に受け渡し、よりオブジェクト指向的なオンライン一件別処理が可能となる。
【００６５】
次に最終プログラム３００を生成するために抽出／変換部２２００が行う動作について説明する。
まず、抽出／変換部２２００は最終プログラム３００に予め作り込む要素を生成する。生成した要素は、図３６に示した５つのクラスに対応させて５つのオブジェクト指向プログラムのテンプレートに記憶させておく。また、各クラスのファイル名情報を各クラスに対応するテンプレートに付けておく。　また、抽出／変換部２２００は、各クラスにそれぞれ必要なメソッドを作り、中身は空にしておく。この時、意味情報を各メソッドに付与しておき、後で抽出変換の際に各メソッドを特定できるようにする。具体的には、ビュークラス３１０には初期化メソッドと画面表示入力メソッドを作成する。制御クラス３２０には初期化メソッドとＵＩメインメソッドを作成する。モデルクラス３３０には初期化メソッドと入力チェックメソッドと、画面データ受け取りメソッドを作成する。セッションクラス３４０には初期化メソッドとトランザクションチェックメソッドを作成する。エンティティクラス３５０には初期化メソッドとマスタファイル存在チェックメソッドとマッチング更新メソッドとを作成しておく。
【００６６】
次に、抽出／変換部２２００が中間プログラム２００から必要な情報を抽出変換し、最終プログラム３００を生成する動作について、まず、インターフェースクラス２１０からビュークラス３１０、制御クラス３２０及びモデルクラス３３０を抽出、変換する動作を説明し、その後にファイルクラス２２０からセッションクラス３４０とエンティティクラス３５０とを抽出、変換する動作を説明する。
【００６７】
・インターフェースクラス２１０から３つのクラスへの対応付け
まず、インターフェースクラス２１０から３つのクラスへの対応付けについて説明する。　抽出／変換部２２００は、インターフェースクラス２１０の持つ役割のうち画面表示と入力の役割部分をビュークラス３１０に振り分ける。次に、抽出／変換部２２００は、入力のチェックの役割部分をモデルクラス３３０に振り分ける。そして、抽出／変換部２２００は、これら２つのクラスに振り分けた各役割を呼び出す動作制御を制御クラス３２０に振り分ける。
以上に説明したインターフェースクラス２１０から３つのクラスへの対応付けを図３７に示す。また、各クラスへの具体的な抽出変換方法を図３８〜図４０に示す。ここで、図３８〜図４０中で示した位置番号は図３７の位置番号に対応している。図３８はインターフェースクラス２１０のプログラムからビュークラス３１０のプログラムへの具体的抽出変換方法を示す。図３９はインターフェースクラス２１０から制御クラス３２０への具体的抽出変換方法を示す。図４０はインターフェースクラス２１０からモデルクラス３３０への具体的抽出変換方法を示す。図３８に示す抽出、変換方法に基づいて抽出／変換部２２００により自動生成されたビュークラス３１０の具体的プログラムのソースコードを図４１、図４２に示す。なお、位置番号は変換前のプログラムのソースコードと変換後のプログラムのソースコードを対応付けるために記載されたものであり、実際のプログラム中には存在する必要はない。変換前のインターフェースクラス２１０は図２２、図２３に明示されているが、このインターフェースクラス２１０のプログラム中に記載された位置番号（２−１）（２−２）（２−３）と図４１、図４２に示すビュークラス３１０のプログラム中に明示された位置番号（２−１）（２−２）（２−３）とが対応つけられている。
【００６８】
図３９に示す抽出、変換方法に基づいて抽出／変換部２２００によって自動生成された制御クラス３２０のプログラムのソースコードを図４３に示す。インターフェースクラス２１０と制御クラス３２０とは、これら２つのプログラムのソースコードに明示された位置番号（２−１）（２−４）によって対応付けがなされている。
【００６９】
さらに、図４０に示す抽出、変換方法に基づいて抽出／変換部２２００によって自動生成されたモデルクラス３３０のプログラムのソースコードを図４４、図４５に示す。インターフェースクラス２１０とモデルクラス３３０とは、位置番号（２−１）（２−２）（２−５）（２−６）（２−７）（２−８）（２−９）によって対応付けがなされている。
【００７０】
・ファイルクラス２２０から２つのクラスへの対応付け
次に、ファイルクラス２２０から２つのクラス（３４０，３５０）への対応つけについて説明する。抽出／変換部２２００は、ファイルクラス２２０の持つ役割をセッションクラス３４０及びエンティティクラス３５０の２つのクラスに次のように振り分ける。すなわち、ファイルクラス２２０では、マスタファイルの更新又は削除の場合には、トランザクションレコードに該当するものがマスタファイルに存在することを確認し、マスタファイルへの追加の場合には、トランザクションレコードに該当するものがマスタファイルに存在しないことを確認するロジックが存在していた。抽出／変換部２２００は、これらのロジックをセッションクラス３４０に振り分ける。また、抽出／変換部２２００は、トランザクションレコードの処理区分に応じてマスタファイルにトランザクションレコードを追加または更新または削除するロジックをエンティティクラス３５０に振り分ける。
このような対応づけによりファイルクラス２２０のプログラムのソースコードは変換装置Ｂ２０００によってセッションクラス３４０のプログラムのソースコードとエンティティクラス３５０のプログラムのソースコードに変換される。
【００７１】
上記抽出／変換部２２００によるファイルクラス２２０からセッションクラス３４０及びエンティティクラス３５０への対応付けを図４６に示す。
また、ファイルクラス２２０のプログラムからセッションクラス３４０のプログラムへ変更するための具体的抽出変換方法を図４７に示す。また、ファイルクラス２２０のプログラムからエンティティクラス３５０のプログラムへ変換するための具体的抽出変換方法を図４８に示す。
抽出／変換部２２００は、図４７に示す抽出変換方法に基づいて、ファイルクラス２２０のプログラムから必要なデータを抽出し、抽出したデータを用いてセッションクラス３４０のプログラムに自動変換する。自動変換されたセッションクラス３４０のプログラムを図４９、図５０に示す。
また、　抽出／変換部２２００は、図４８に示す抽出変換方法に基づいて、ファイルクラス２２０のプログラムから必要なデータを抽出し、抽出したデータを用いてエンティティクラス３５０のプログラムに自動変換する。自動変換されたエンティティクラス３５０のプログラムを図５１〜図５３に示す。
【００７２】
上記生成された最終プログラム３００の５つのクラスには、中間プログラム２００には含まれない要素が存在する。そのため、その要素を新規に生成する必要がある。新規に作成すべき各クラスへの追加の要素を説明する。
この追加の要素作成は、抽出／変換部２２００によって行なわれる。
【００７３】
まず、抽出／変換部２２００がビュークラス３１０への新規事項追加を行う動作について図４１を用いて説明する。
・初期化メソッド
初期化メソッドの内容として自己インスタンスを生成し、制御クラスの初期化メソッドを呼び出すステップを追加する。
具体的には、メソッドのデータ部にＷＯＲＫＩＮＧ−ＳＴＯＲＡＧＥ　ＳＥＣＴＩＯＮを設け、自己インスタンスを参照するステップを追加する（ステップ１９〜２０）。メソッドの手続き部には、自己インスタンスを生成するステップ（ステップ２２〜ステップ２３）、また自己インスタンスを引数として制御クラスの初期化メソッドを呼び出すステップ（ステップ２４〜ステップ２５）を追加する。
【００７４】
次に、抽出／変換部２２００が制御クラス３２０へ追加する事項について図４３を用いて説明する。
・初期化メソッド
初期化メソッドの内容として自己インスタンスを生成し、引数のビューインスタンスと自己インスタンスとをつなげるステップを追加する。またモデルクラス３３０の初期化メソッドを呼び出し、戻り値のモデルインスタンスを自己インスタンスとつなげるステップを追加する。
具体的には、メソッドのデータ部にＬＩＮＫＡＧＥ　ＳＥＣＴＩＯＮを設け、引数のビューインスタンスを参照するステップを追加する（ステップ２０〜ステップ２１）。またＷＯＲＫＩＮＧ−ＳＴＯＲＡＧＥ　ＳＥＣＴＩＯＮを設け、自己インスタンスを参照するステップを追加する（ステップ２２〜ステップ２３）。メソッドの手続き部には、ビューインスタンスを引数として受け取ることを宣言するステップ（ステップ２４）、自己インスタンスを生成するステップ（ステップ２５〜ステップ２６）、引数のビューインスタンスと自己インスタンスとをつなげるステップ（ステップ２７〜ステップ２８）、モデルクラス３３０の初期化メソッドを呼び出し、戻り値のモデルインスタンスを自己インスタンスとつなげるステップ（ステップ２９〜ステップ３１）、また制御クラス３２０のＵＩメインメソッドを呼び出すステップ（ステップ３２）を追加する。
【００７５】
次に、抽出／変換部２２００がモデルクラス３３０へ追加する事項について図４４、図４５を用いて説明する。
・初期化メソッド
初期化メソッドの内容として自己インスタンスを生成し、引数のビューインスタンスと自己インスタンスとをつなげ、自己インスタンスを戻り値として設定するステップを追加する。
具体的には、メソッドのデータ部にＬＩＮＫＡＧＥ　ＳＥＣＴＩＯＮを設け、引数のビューインスタンスを参照するステップと戻り値の自己インスタンスを参照するステップを追加する（ステップ２０〜ステップ２２）。またＷＯＲＫＩＮＧ−ＳＴＯＲＡＧＥ　ＳＥＣＴＩＯＮを設け、自己インスタンスを参照するステップを追加する（ステップ２３〜ステップ２４）。メソッドの手続き部には、ビューインスタンスを引数として受取り自己インスタンスを戻り値として返すことを宣言するステップ（ステップ２６〜ステップ２７）、自己インスタンスを生成するステップ（ステップ２８〜ステップ２９）、引数のビューインスタンスと自己インスタンスとをつなげるステップ（ステップ３０〜ステップ３１）、また自己インスタンスを戻り値として設定するステップ（ステップ３２）を追加する。
【００７６】
次に、抽出／変換部２２００がセッションクラス３４０へ追加する事項について図４９、図５０を用いて説明する。
・初期化メソッド
初期化メソッドの内容として自己インスタンスを生成し、エンティティクラス３５０の初期化メソッドを呼び出して戻り値のエンティティインスタンスを自己インスタンスにつなげ、自己インスタンスを戻り値として設定するステップを追加する。
具体的には、メソッドのデータ部にＬＩＮＫＡＧＥ　ＳＥＣＴＩＯＮを設け、戻り値の自己インスタンスを参照するステップを追加する（ステップ１８〜ステップ１９）。またＷＯＲＫＩＮＧ−ＳＴＯＲＡＧＥ　ＳＥＣＴＩＯＮを設け、自己インスタンスを参照するステップを追加する（ステップ２０〜ステップ２１）。メソッドの手続き部には、自己インスタンスを戻り値として返すことを宣言するステップ（ステップ２２）、自己インスタンスを生成するステップ（ステップ２３〜ステップ２４）、エンティティクラスの初期化メソッドを呼び出し、戻り値のエンティティインスタンスを自己インスタンスとつなげるステップ（ステップ２５〜ステップ２６）、また自己インスタンスを戻り値として設定するステップ（ステップ２７）を追加する。
・トランザクションチェックメソッド
トランザクションチェックメソッドにはエンティティクラス３５０のマスタレコード存在チェックメソッドを呼び出し、結果が正しければエンティティクラス３５０のマッチング更新メソッドを呼び出すステップを追加する。
具体的には、メソッドのデータ部にＷＯＲＫＩＮＧ−ＳＴＯＲＡＧＥ　ＳＥＣＴＩＯＮを設け、エンティティクラス３５０のマスタレコード存在チェックメソッドからの戻り値を格納するステップを追加する（ステップ６１〜ステップ６４）。メソッドの手続き部には、エンティティクラス３５０のマスタレコード存在チェックメソッドを呼び出すステップ（ステップ６７〜ステップ６８）、またこの呼び出しの結果が正しければエンティティクラス３５０のマッチング更新メソッドを呼び出すステップ（ステップ６９〜ステップ８２）を追加する。
【００７７】
最後に抽出／変換部２２００がエンティティクラス３５０のプログラムへ追加する事項について図５１、図５２を用いて説明する。
・初期化メソッド
初期化メソッドの内容として、自己インスタンスを生成し、これを戻り値として返すステップを追加する。
具体的にはメソッドのデータ部にＬＩＮＫＡＧＥ　ＳＥＣＴＩＯＮを設け、戻り値の自己インスタンスを参照するステップを追加する（ステップ１７〜ステップ１８）。またＷＯＲＫＩＮＧ−ＳＴＯＲＡＧＥ　ＳＥＣＴＩＯＮを設け、自己インスタンスを参照するステップを追加する（ステップ１９〜ステップ２０）。メソッドの手続き部には、戻り値として自己インスタンスを返すことを宣言するステップ（ステップ２１）、自己インスタンスを生成するステップ（ステップ２２〜ステップ２３）、戻り値に自己インスタンスを設定するステップ（ステップ２４）を追加する。
・マスタレコード存在チェックメソッド
マスタレコード存在チェックメソッドの内容として、レコードキーを引数に受取り、そのキーでマスタファイルを読み込み、その結果をマスタレコード存在フラグに格納して戻り値として返すステップを追加する。
具体的には、メソッドのデータ部にＬＩＮＫＡＧＥ　ＳＥＣＴＩＯＮを設け、引数のレコードキーを格納するステップと戻り値のマスタレコード存在フラグを格納するステップを追加する（ステップ６２〜ステップ６６）。メソッドの手続き部には、レコードキーを引数として受取りマスタレコード存在フラグを戻り値として返すことを宣言するステップ（ステップ６７〜ステップ６８）、マスタファイルを読み込む準備をするステップ（ステップ７０〜ステップ７１）、またマスタファイルを読み込みその結果を戻り値として設定するステップ（ステップ７２〜ステップ７７）を追加する。
【００７８】
このようにして変換装置Ｂ２０００は中間プログラム２００のソースコードから最終プログラム３００のソースコードを自動変換することにより、よりオブジェクト指向性の高いプログラムを生成することができる。このようにオブジェクト指向性の高いプログラムに変換することによって、オブジェクト内部の仕様変更が外部に及ばないようなプログラムが可能になり、ソースコードを再利用しやすくなる。よって、過去において作成されたプログラム資産を分散型処理でさらに有効活用することが可能となる。
【００７９】
また、ＷＥＢやＸＭＬなどに容易に連携することができるため、中間プログラム２００よりも現代社会のネットワークシステムにより合致したプログラム構造と言える。従って、このようにして、従来のプログラムから自動的に人的労力をかけずに自動変換された最終プログラム３００によれば、現在主流となっている分散型処理のインフラをより有効に活用することができるアプリケーションプログラムとして再利用することが可能となる。
【００８０】
実施の形態２．
次に実施の形態２について説明する。本実施の形態では、実施の形態１のように中間プログラム２００を生成するステップを設けず、コボルプログラム１００のソースコードから直接最終プログラム３００のソースコードを抽出、変換する形態である。
図５４は、本実施の形態の概念図である。
本実施の形態では、変換装置Ｃ３０００がコボルプログラム１００のソースコードを直接最終プログラム３００のソースコードに変換している。このように、変換装置Ｃ３０００が自動的に直接最終プログラム変換を行うことにより、中間プログラム２００を生成する段階を設けずに、集中型処理からＷＥＢやＸＭＬなどに連携できる分散型処理に適したプログラムを短期間に容易に取得することができる。
【００８１】
変換装置Ｃ３０００の構成及び動作について説明する。図５５は、変換装置Ｃ３０００の内部構成図である。
実施の形態１の変換装置Ａ１０００の内部構成を示す図４と比べ、内部構成自体は同一である。ただし、出力部１７００が出力するプログラムが最終プログラム３００であることと、抽出／変換部３１００の動作が一部異なっている。即ち、変換装置Ａ１０００の抽出／変換部１６００では中間プログラム２００を生成するためにデータの抽出変換を行なっていたが、本実施の形態の抽出／変換部３１００では、最終プログラム３００を生成するためにデータの抽出及び変換を行なっている。
【００８２】
入力部１１００はコボルプログラム１００を入力し、記憶部１８００に記憶する。分割部１２００はコボルプログラム１００をまとまりある複数のプログラムに分解し、構文解析部１３００は分解されたそれぞれのプログラムの構文を解析する。プログラム判断部１４００は各プログラムの役割を判断し、節判断部１５００は各プログラム中の節の内容、役割を判断する。
これらの動作を終えた後、抽出／変換部３１００は最終プログラム３００を生成するためのデータの抽出及び変換を行ない、その結果、生成された最終プログラム３００は出力部１７００によって出力される。この場合、記憶部１８００は必要に応じてデータを記憶する領域として利用することができ、また３０００の内部に記憶部１８００が存在しなくても、外部記憶装置に記憶させてもよい。
【００８３】
このように、本実施の形態では、コボルプログラム１００から中間プログラム２００を出力することなく、直接最終プログラム３００を出力するため、変換処理を高速に行え、ＷＥＢやＸＭＬなどに連携できる分散型処理に適したプログラムを短期間に容易に取得することができる。
【００８４】
また、最終プログラム３００を中間プログラム２００と比較すると機能自体は変わらないが、最終プログラム３００ではプログラムの部品化が進むため、既存部品に差分だけを付け加えて必要な動作を実行するプログラムを容易に作成できる。このため、さらに資産価値が高いプログラムを取得することができる。
【００８５】
また、最終プログラム３００を中間プログラム２００をＪａｖａ（登録商標）言語やＣ＋＋言語等の言語を用いて記述することが可能である。
【００８６】
なお、上記全ての実施の形態では、コボルプログラムを基に変換プログラムを生成したが、変換前のプログラムはコボルプログラムに限る必要はなく、バッチ処理をする構造化されたプログラムであればよい。従って、構造化されたプログラムであれば、上記変換装置により、分散型処理に適合したプログラムに変換することができる。
【００８７】
図５６は、変換装置Ａ、変換装置Ｂ、変換装置Ｃのコンピュータ基本構成図である。
図５６において、プログラムを実行するＣＰＵ（Ｃｅｎｔｒａｌ　Ｐｒｏｃｅｓｓｉｎｇ　Ｕｎｉｔ）４０は、バス３８を介してモニタ４１、キーボード４２、マウス４３、通信ボード４４、磁気ディスク装置４６等と接続されている。
磁気ディスク装置４６には、オペレーティングシステム（ＯＳ）４７、プログラム群４９、ファイル群５０が記憶されている。ただし、プログラム群４９、ファイル群５０が一体となってオブジェクト指向のプログラム群４９を形成する形態も一実施の形態として考えられる。
プログラム群４９は、ＣＰＵ４０、ＯＳ４７により実行される。
上記各実施の形態では、変換装置Ａ、変換装置Ｂ、変換装置Ｃは、通信ボード４４の機能を使用して、各種ネットワークを経由して接続された機器と通信を行う。
【００８８】
以上に記載した「格納する」、「記憶する」という用語は、記録媒体に保存することを意味する。
【００８９】
すべての実施の形態では、各構成要素の各動作はお互いに関連しており、各構成要素の動作は、上記に示された動作の関連を考慮しながら、一連の動作として置き換えることができる。そして、このように置き換えることにより、変換装置の実施形態を変換方法の発明の実施形態とすることができる。
また、上記各構成要素の動作を、各構成要素の処理と置き換えることにより、変換プログラムの実施の形態とすることができる。
また、変換プログラムをコンピュータ読み取り可能な記録媒体に記憶させることで、変換プログラムを記録したコンピュータ読み取り可能な記録媒体の実施の形態とすることができる。
【００９０】
変換プログラムの実施の形態及び変換プログラムを記録したコンピュータ読取り可能な記録媒体の実施の形態は、すべてコンピュータで動作可能なプログラムにより構成することができる。
また、変換プログラムの実施の形態および変換プログラムを記録したコンピュータ読取り可能な記録媒体の実施の形態における各処理はプログラムで実行されるが、このプログラムは、記録装置に記録されていて、記録装置から中央処理装置（ＣＰＵ）に読み込まれ、中央処理装置によって、プログラムに記述された動作が実行されることになる。
【００９１】
また、各実施の形態に記載されたソフトウエアやプログラムは、ＲＯＭ（ＲＥＡＤ　ＯＮＬＹ　ＭＥＭＯＲＹ）に記憶されたファームウエアで実現されていても構わない。あるいは、ソフトウエアとファームウエアとハードウエアとの組み合わせで前述したプログラムの各機能を実現しても構わない。
【００９２】
【発明の効果】
本発明の実施の形態によれば、旧来のプログラム資産を分散システムに対応するプログラム資産に変換することができる。
【００９３】
また、本発明の実施の形態によれば、旧来コーディングされたプログラム中の業務ロジックを再利用することができる。
【００９４】
また、本発明の実施の形態によれば、旧来のプログラム資産を利用して、新しいシステムを構築することができる。
【００９５】
また、本発明の実施の形態によれば、旧来のプログラム資産から中間プログラムへ変換することなく直接最終プログラムへ変換することができる。
【図面の簡単な説明】
【図１】プログラム変換方法の一例を示す図である。
【図２】オフライン一括処理をオンライン一件別処理に変換する図である。
【図３】オフライン一括処理をオンライン一件別処理に変換する図である。
【図４】変換装置Ａ１０００の内部構成図である。
【図５】コボルプログラム１００から中間プログラム２００を取得する動作を示した図である。
【図６】コボルプログラム１００の一例を示す図である。
【図７】コボルプログラム１００を分割する流れ図である。
【図８】各プログラムの役割を判断する流れ図である。
【図９】入力チェックプログラム１０２の節の構造を示す図である。
【図１０】各節の役割を判断する流れ図である。
【図１１】マッチングプログラム１０７の節の構造を示す図である。
【図１２】各節の役割を判断する流れ図である。
【図１３】入力チェックプログラム１０２と結果出力プログラム１０９とインターフェースクラス２１０の対応図である。
【図１４】マッチングプログラム１０７とソートプログラム１０４とファイルクラス２２０の対応図である。
【図１５】プログラムの抽出、変換の詳細を示す図である。
【図１６】プログラムの抽出、変換の詳細を示す図である。
【図１７】入力チェックプログラム１０２の一部を示す図である。
【図１８】インターフェースクラス２１０の一部を示す図である。
【図１９】入力チェックプログラム１０２の一部を示す図である。
【図２０】インターフェースクラス２１０の一部を示す図である。
【図２１】入力チェックプログラム１０２を示す図である。
【図２２】インターフェースクラス２１０を示す図である。
【図２３】インターフェースクラス２１０を示す図である。
【図２４】結果出力プログラム１０９を示す図である。
【図２５】結果出力プログラム１０９を示す図である。
【図２６】プログラムの抽出、変換の詳細を示す図である。
【図２７】プログラムの抽出、変換の詳細を示す図である。
【図２８】プログラムの抽出、変換の詳細を示す図である。
【図２９】マッチングプログラム１０７を示す図である。
【図３０】マッチングプログラム１０７を示す図である。
【図３１】マッチングプログラム１０７を示す図である。
【図３２】ソートプログラム１０４を示す図である。
【図３３】ファイルクラス２２０のプログラムを示す図である。
【図３４】ファイルクラス２２０のプログラムを示す図である。
【図３５】変換装置Ｂ２０００の内部構成図である。
【図３６】オンライン一件別処理をよりオブジェクト指向的なオンライン一件別処理に変換する図である。
【図３７】インターフェースクラス２１０と３つのクラスの対応図である。
【図３８】プログラムの抽出、変換の詳細を示す図である。
【図３９】プログラムの抽出、変換の詳細を示す図である。
【図４０】プログラムの抽出、変換の詳細を示す図である。
【図４１】ビュークラス３１０のプログラムを示す図である。
【図４２】ビュークラス３１０のプログラムを示す図である。
【図４３】制御クラス３２０のプログラムを示す図である。
【図４４】モデルクラス３３０のプログラムを示す図である。
【図４５】モデルクラス３３０のプログラムを示す図である。
【図４６】ファイルクラス２２０と２つのクラスの対応図である。
【図４７】プログラムの抽出、変換の詳細を示す図である。
【図４８】プログラムの抽出、変換の詳細を示す図である。
【図４９】セッションクラス３４０のプログラムを示す図である。
【図５０】セッションクラス３４０のプログラムを示す図である。
【図５１】エンティティクラス３５０のプログラムを示す図である。
【図５２】エンティティクラス３５０のプログラムを示す図である。
【図５３】エンティティクラス３５０のプログラムを示す図である。
【図５４】プログラム変換方法の他の一例を示す図である。
【図５５】変換装置Ｃ３０００の内部構成図である。
【図５６】変換装置Ａ、変換装置Ｂ、変換装置Ｃのコンピュータ基本構成図である。
【図５７】従来図である。
【符号の説明】
１００　コボルプログラム、１０１　トランザクションファイル、１０２　入力チェックプログラム、１０３　チェック済みトランザクションファイル、１０４　ソートプログラム、１０５　チェック・ソート済みトランザクションファイル、１０６　旧マスタファイル、１０７　マッチングプログラム、１０８　新マスタファイル、１０９　結果出力プログラム、２００　中間プログラム、２０６マスタファイル、２１０　インターフェースクラス、２２０　ファイルクラス、３００　最終プログラム、３１０　ビュークラス、３２０　制御クラス、３３０　モデルクラス、３４０　セッションクラス、３５０　エンティティクラス、１０００　変換装置Ａ、１１００　入力部、１２００　分割部、１３００　構文解析部、１４００　プログラム判断部、１５００　節判断部、１６００　抽出／変換部、１７００　出力部、１８００　記憶部、２０００　変換装置Ｂ、２１００　入力部、２２００　抽出／変換部、２３００　出力部、２４００　記憶部、３０００　変換装置Ｃ、３１００　抽出／変換部、４０００　メインフレーム機器、５０００　クライアント機器、６０００　サーバ機器。
【図１】
2004118374.tif 000003
【図２】
2004118374.tif 000004
【図３】
2004118374.tif 000005
【図４】
2004118374.tif 000006
【図５】
2004118374.tif 000007
【図６】
2004118374.tif 000008
【図７】
2004118374.tif 000009
【図８】
2004118374.tif 000010
【図９】
2004118374.tif 000011
【図１０】
2004118374.tif 000012
【図１１】
2004118374.tif 000013
【図１２】
2004118374.tif 000014
【図１３】
2004118374.tif 000015
【図１４】
2004118374.tif 000016
【図１５】
2004118374.tif 000017
【図１６】
2004118374.tif 000018
【図１７】
2004118374.tif 000019
【図１８】
2004118374.tif 000020
【図１９】
2004118374.tif 000021
【図２０】
2004118374.tif 000022
【図２１】
2004118374.tif 000023
【図２２】
2004118374.tif 000024
【図２３】
2004118374.tif 000025
【図２４】
2004118374.tif 000026
【図２５】
2004118374.tif 000027
【図２６】
2004118374.tif 000028
【図２７】
2004118374.tif 000029
【図２８】
2004118374.tif 000030
【図２９】
2004118374.tif 000031
【図３０】
2004118374.tif 000032
【図３１】
2004118374.tif 000033
【図３２】
2004118374.tif 000034
【図３３】
2004118374.tif 000035
【図３４】
2004118374.tif 000036
【図３５】
2004118374.tif 000037
【図３６】
2004118374.tif 000038
【図３７】
2004118374.tif 000039
【図３８】
2004118374.tif 000040
【図３９】
2004118374.tif 000041
【図４０】
2004118374.tif 000042
【図４１】
2004118374.tif 000043
【図４２】
2004118374.tif 000044
【図４３】
2004118374.tif 000045
【図４４】
2004118374.tif 000046
【図４５】
2004118374.tif 000047
【図４６】
2004118374.tif 000048
【図４７】
2004118374.tif 000049
【図４８】
2004118374.tif 000050
【図４９】
2004118374.tif 000051
【図５０】
2004118374.tif 000052
【図５１】
2004118374.tif 000053
【図５２】
2004118374.tif 000054
【図５３】
2004118374.tif 000055
【図５４】
2004118374.tif 000056
【図５５】
2004118374.tif 000057
【図５６】
2004118374.tif 000058
【図５７】
2004118374.tif 000059