(57)【要約】【課題】レガシーシステムのプログラムを効率的に変換する装置等を提供する。【解決手段】プログラム変換装置１００であって、ファイル定義体２００と入力プログラム３００とを記憶している記憶部１０２と、ファイル定義体２００に格納された項目名に、所定の文字と区切り文字とを付加した項目名を作成し、作成した項目名と項目属性とを用いてデータファイルを定義するコピー句４００を生成するコピー句生成部１０３と、ファイル定義体２００に基づいて、テーブル定義５００を生成するテーブル定義生成部１０４と、入力プログラム３００のファイル定義体２００を用いてデータファイルを定義する部分を、コピー句４００を複写する命令と、複写したコピー句４００から所定の文字を置換する命令とを用いてデータファイルを定義するように変換するプログラム変換部１０５とを備える。【選択図】図１
2010134487.tif 000002
【特許請求の範囲】
【請求項１】
第１高級プログラム言語で記述された入力プログラムを、第２高級プログラム言語で記述された目的プログラムへ変換するプログラム変換装置であって、
データファイルを構成するデータ項目の項目名と項目属性とをデータ項目ごとに格納したファイル定義体と、前記入力プログラムとを記憶している記憶部と、
前記ファイル定義体に格納された項目名に、所定の文字と区切り文字とを付加した新たな項目名を作成し、作成した新たな項目名と前記項目属性とを用いて、データファイルを定義する命令であるコピー句を生成するコピー句生成部と、
前記ファイル定義体に格納された項目名と項目属性とを用いて、リレーショナルデータベースマネージメントシステムにおいてテーブルを作成するための命令であるテーブル定義を生成するテーブル定義生成部と、
前記入力プログラム中の、前記ファイル定義体を用いてデータファイルを定義する部分を、前記コピー句を複写する命令と、複写した前記コピー句から前記所定の文字を置換する命令とを用いてデータファイルを定義するように修正することにより、前記入力プログラムを前記目的プログラムに変換するプログラム変換部とを備える
ことを特徴とするプログラム変換装置。
【請求項２】
前記テーブル定義生成部は、前記ファイル定義体に格納された項目属性として反復数が設定されている場合、前記反復数に設定された数量だけ同一の項目属性を有するデータ項目が作成されるようにテーブル定義を生成する
ことを特徴とする請求項１に記載のプログラム変換装置。
【請求項３】
前記コピー句生成部は、前記入力プログラム中の、前記ファイル定義体を用いてデータファイルを定義する部分が、項目名に文字を付加してデータファイルを定義していない場合には、前記作成した新たな項目名と前記項目属性とを用いてデータファイルを定義する命令であるコピー句を生成し、前記入力プログラム中の、前記ファイル定義体を用いてデータファイルを定義する部分が、項目名に文字を付加してデータファイルを定義している場合には、前記ファイル定義体に格納された項目名と前記項目属性とを用いてデータファイルを定義する命令であるコピー句を生成し、
前記プログラム変換部は、前記入力プログラム中の、前記ファイル定義体を用いてデータファイルを定義する部分が、項目名に文字を付加してデータファイルを定義している場合には、当該部分を前記コピー句を複写する命令と、複写した前記コピー句から前記所定の文字を置換する命令とを用いてデータファイルを定義するように修正することにより、前記入力プログラムを前記目的プログラムに変換する
ことを特徴とする請求項１に記載のプログラム変換装置。
【請求項４】
前記コピー句生成部は、前記入力プログラムにおいて前記ファイル定義体に格納された項目名に文字を付加してデータファイルを定義している場合、文字を付加する方向を決定する命令から文字の付加方向を判定する付加方向判定部を有し、前記付加方向判定部において判定された方向から前記所定の文字と前記区切り文字とを付加した項目名を作成する
ことを特徴とする請求項１に記載のプログラム変換装置。
【請求項５】
第１高級プログラム言語で記述された入力プログラムを、第２高級プログラム言語で記述された目的プログラムへ変換するプログラム変換方法であって、
データファイルを構成するデータ項目の項目名と項目属性とをデータ項目ごとに格納したファイル定義体に基づいて、前記ファイル定義体に格納された項目名に、所定の文字と区切り文字とを付加した項目名を作成し、作成した項目名と前記項目属性とを用いて、データファイルを定義する命令であるコピー句を生成するコピー句生成ステップと、
前記ファイル定義体に格納された項目名と項目属性とに基づいて、リレーショナルデータベースマネージメントシステムにおいてテーブルを作成するための命令であるテーブル定義を生成するテーブル定義生成ステップと、
前記入力プログラムの前記ファイル定義体を用いてデータファイルを定義する部分を、前記コピー句を複写する命令と、複写した前記コピー句から前記所定の文字を置換する命令とを用いてデータファイルを定義するように修正することにより、前記入力プログラムを前記目的プログラムに変換するプログラム変換ステップとを含む
ことを特徴とするプログラム変換方法。
【請求項６】
第１高級プログラム言語で記述された入力プログラムを、第２高級プログラム言語で記述された目的プログラムへ変換する変換プログラムであって、
データファイルを構成するデータ項目の項目名と項目属性とをデータ項目ごとに格納したファイル定義体に基づいて、前記ファイル定義体に格納された項目名に、所定の文字と区切り文字とを付加した項目名を作成し、作成した項目名と前記項目属性とを用いて、データファイルを定義する命令であるコピー句を生成するコピー句生成ステップと、
前記ファイル定義体に格納された項目名と項目属性とに基づいて、リレーショナルデータベースマネージメントシステムにおいてテーブルを作成するための命令であるテーブル定義を生成するテーブル定義生成ステップと、
前記入力プログラムの前記ファイル定義体を用いてデータファイルを定義する部分を、前記コピー句を複写する命令と、複写した前記コピー句から前記所定の文字を置換する命令とを用いてデータファイルを定義するように修正することにより、前記入力プログラムを前記目的プログラムに変換するプログラム変換ステップとをコンピュータに実行させる
ことを特徴とする変換プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、第１高級プログラム言語で記述された入力プログラムを、第２高級プログラム言語で記述された目的プログラムへ変換するプログラム変換装置に関する。
【背景技術】
【０００２】
メインフレーム、オフィスコンピュータ（以下、単にオフコンという。）等のベンダー独自のＯＳ（Operating System）が搭載されたコンピュータにおいて、過去に多くの情報処理システム（レガシーシステム）が構築されている。一般的に、これらのレガシーシステムは、リース料、保守料等の運用コストが高く、拡張性が低い。
【０００３】
そこで、近年、運用コストの低減、拡張性の向上等を目的として、レガシーシステムを、Ｗｉｎｄｏｗｓ（登録商標）、ＵＮＩＸ（登録商標）、Ｌｉｎｕｘ（登録商標）等のＯＳが搭載されたコンピュータ（オープンプラットフォーム）に移行すること（レガシーマイグレーション）が多く行われている。
【０００４】
一般的に、レガシーシステムでは、ＯＳを提供するベンダーが独自に開発した拡張命令を有する高級言語を用いて、システムが構築されていることが多い。一方、オープンプラットフォームで構築されるシステムでは、ベンダーが独自に開発した拡張命令は利用できない。したがって、レガシーマイグレーションでは、ベンダーが独自に開発した拡張命令を、オープンプラットフォームにおいて利用可能な命令に変換することが必要となる。
【０００５】
また、レガシーシステムでは、プログラムがアクセスするデータベースとして、ネットワーク型のデータベースが利用されていることが多い。一方、オープンプラットフォームで構築されるシステムでは、リレーショナル型のデータベースが利用されることが多い。したがって、レガシーマイグレーションでは、データベースの変更に伴うプログラムの変換が必要となる。
【０００６】
そこで、従来、レガシーマイグレーションにおけるプログラムの変換を効率的に行うための種々の方法が提案されている（例えば、特許文献１）。特許文献１に記載のプログラム変換方法は、ＣＯＢＯＬ（Common Business Oriented Language）を用いて記述されたレガシーシステムのプログラムにおいて、「ＲＥＤＥＦＩＮＥＳ句」を用いて定義されているデータファイルのデータ項目を、「ＲＡＷ型」のデータ項目へ変換することにより、効率的にプログラムを変換することを可能とする。
【特許文献１】特開２００１−１１７７６４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
しかしながら、上記特許文献１には、レガシーシステムに特有のデータ項目を、リレーショナルデータベースで利用可能なデータ項目に変換する方法は記述されているが、他のデータ項目を含めたデータファイルの定義をどのように移行するかについては、明確に記述されていない。
【０００８】
レガシーシステムのプログラムにおいて、オフコン等を提供するベンダーが独自に開発した拡張命令を利用してデータファイルが定義されている場合、短時間で、効率よくプログラムを変換することが難しい。
【０００９】
例えば、レガシーシステムにおいて、項目名、属性等を含むデータ構造をテーブル形式で格納するファイル定義体を利用してデータファイルを定義しているプログラムがあったとする。このようなファイル定義体を利用するための命令は、オフコン等を提供するベンダー独自の拡張命令である。したがって、レガシーシステムのプログラムにおいて、ファイル定義体を利用するための命令とファイル定義体とを、オープンプラットフォームにおいて利用可能な命令とデータファイルの定義とに変換する必要がある。以下に、従来のプログラム変換の具体例について、図面を用いて説明する。
【００１０】
図２２は、レガシーシステム５０００を示す概念図である。図２２に示すように、レガシーシステム５０００は、顧客マスタ５００１、業者マスタ５００２、ファイル定義体５００３及びプログラム５００４で構成される。
【００１１】
顧客マスタ５００１及び業者マスタ５００２は、顧客及び業者の名称等を保持するデータファイルである。顧客マスタ５００１及び業者マスタ５００２が有する複数のデータ項目は、項目名の一部が異なるが、型、桁数等の項目属性は同一となっている。
【００１２】
ファイル定義体５００３は、顧客マスタ５００１及び業者マスタ５００２の項目名及び項目属性を定義するためのデータテーブルである。ファイル定義体５００３は、顧客マスタ５００１及び業者マスタ５００２の項目名の共通する部分と項目属性とを格納する。
【００１３】
プログラム５００４は、顧客マスタ５００１及び業者マスタ５００２にアクセスするプログラムである。プログラム５００４は、顧客マスタ５００１及び業者マスタ５００２へアクセスするために、プログラム５００４内に、顧客マスタ５００１及び業者マスタ５００２の項目名、型、桁数等をデータ項目ごとに定義する必要がある。そこで、プログラム５００４は、ファイル定義体５００３を呼び出す命令（ＣＯＰＹ）と、文字を付加する命令（ＪＯＩＮＩＮＧ）により、項目名、型、桁数等を定義する。つまり、レガシーシステム５０００のプログラム５００４では、１つのファイル定義体５００３を用いて、項目名の一部が異なる複数のデータファイルを容易に定義することが可能である。
【００１４】
図２３は、図２２のレガシーシステムを、従来の方法によりプログラム変換した場合の、変換後のシステムを示す概念図である。図２３に示すように、変換後システム５５００は、顧客マスタ５００１、業者マスタ５００２、プログラム５５０１で構成される。
【００１５】
変換後システム５５００では、ベンダー独自の拡張命令を必要とするファイル定義体を利用することができない。したがって、プログラム５５０１は、プログラム内にデータ項目の定義命令を直接記述することにより、データファイルを定義する。つまり、プログラム５５０１では、顧客マスタ５００１、業者マスタ５００２ごとに、データ項目の項目名と項目属性とを定義する。
【００１６】
このように、従来の方法では、項目属性が共通する複数のデータファイルを定義する場合に、それぞれで項目属性を定義するように変換する必要がある。つまり、プログラムの変換箇所が多く、自動化するのが難しい。このような場合に、作業者が、手入力により個々にプログラムを修正していたのでは、作業時間がかかる上、修正ミスも多くなってしまう。さらに、変換後のプログラムの保守性も悪くなる。
【００１７】
そこで、本発明は、上記課題を解決するものであって、レガシーシステムのプログラムにおいて、オフコン等を提供するベンダーが独自に開発した拡張機能を利用してデータファイルが定義されている場合、レガシーシステムをオープンプラットフォームへ移管するためのプログラム変換を効率的に実行することができる装置、プログラム等を提供することを目的とする。
【課題を解決するための手段】
【００１８】
上記目的を達成するために、本発明に係るプログラム変換装置は、第１高級プログラム言語で記述された入力プログラムを、第２高級プログラム言語で記述された目的プログラムへ変換するプログラム変換装置であって、データファイルを構成するデータ項目の項目名と項目属性とをデータ項目ごとに格納したファイル定義体と、前記入力プログラムとを記憶している記憶部と、前記ファイル定義体に格納された項目名に、所定の文字と区切り文字とを付加した新たな項目名を作成し、作成した新たな項目名と前記項目属性とを用いて、データファイルを定義する命令であるコピー句を生成するコピー句生成部と、前記ファイル定義体に格納された項目名と項目属性とを用いて、リレーショナルデータベースマネージメントシステムにおいてテーブルを作成するための命令であるテーブル定義を生成するテーブル定義生成部と、前記入力プログラム中の、前記ファイル定義体を用いてデータファイルを定義する部分を、前記コピー句を複写する命令と、複写した前記コピー句から前記所定の文字を置換する命令とを用いてデータファイルを定義するように修正することにより、前記入力プログラムを前記目的プログラムに変換するプログラム変換部とを備えることを特徴とする。
【００１９】
これにより、ファイル定義体を用いてデータファイルを定義する入力プログラムを、コピー句を用いてデータファイルを定義する目的プログラム、つまり、オープンプラットフォームで実行可能な目的プログラムに自動的に変換することができる。よって、プログラム変換に要する時間並びに作業量及び作業ミスを低減し、効率的にプログラムを変換することが可能となる。さらに、目的プログラムにおいて、コピー句を利用した項目属性が同一のデータファイルの定義を一括管理できるので、目的プログラムの保守性を高めることができる。
【００２０】
さらに、入力プログラムの手続き部（データの入出力等を行う処理が記述された部分）を変換する必要がないので、プログラムの変換量を少なくすることができる。つまり、プログラム変換に要する時間並びに作業量及び作業ミスを低減し、効率的にプログラムを変換することが可能となる。
【００２１】
さらに、プログラム変換装置は、プログラムの変換と合わせて、テーブル定義を生成する。したがって、目的プログラム内のデータを入出力する命令をＳＱＬ文に変換する市販プログラム等を利用することにより、目的プログラムは、データファイルにデータを入出力する処理部分等を修正することなく、リレーショナルデータベースにアクセスすることが可能となる。
【００２２】
また、前記テーブル定義生成部は、前記ファイル定義体に格納された項目属性として反復数が設定されている場合、前記反復数に設定された数量だけ同一の項目属性を有するデータ項目が作成されるようにテーブル定義を生成することが好ましい。
【００２３】
これにより、ファイル定義体に反復数が設定されている場合であっても、自動的にデータファイル定義を生成することができるので、効率的にプログラムを変換することが可能となる。
【００２４】
また、前記コピー句生成部は、前記入力プログラム中の、前記ファイル定義体を用いてデータファイルを定義する部分が、項目名に文字を付加してデータファイルを定義していない場合には、前記作成した新たな項目名と前記項目属性とを用いてデータファイルを定義する命令であるコピー句を生成し、前記入力プログラム中の、前記ファイル定義体を用いてデータファイルを定義する部分が、項目名に文字を付加してデータファイルを定義している場合には、前記ファイル定義体に格納された項目名と前記項目属性とを用いてデータファイルを定義する命令であるコピー句を生成し、前記プログラム変換部は、前記入力プログラム中の、前記ファイル定義体を用いてデータファイルを定義する部分が、項目名に文字を付加してデータファイルを定義している場合には、当該部分を前記コピー句を複写する命令と、複写した前記コピー句から前記所定の文字を置換する命令とを用いてデータファイルを定義するように修正することにより、前記入力プログラムを前記目的プログラムに変換することが好ましい。
【００２５】
これにより、入力プログラムの中に、文字を付加してデータファイルを定義する場合と、文字を付加しないでデータファイルを定義する場合とが、混在しているときでも、自動的に目的プログラムを生成することができるので、効率的にプログラムを変換することが可能となる。
【００２６】
また、前記コピー句生成部は、前記入力プログラムにおいて前記ファイル定義体に格納された項目名に文字を付加してデータファイルを定義している場合、文字を付加する方向を決定する命令から文字の付加方向を判定する付加方向判定部を有し、前記付加方向判定部において判定された方向から前記所定の文字と前記区切り文字とを付加した項目名を作成することが好ましい。
【００２７】
これにより、入力プログラムの中に、前方から文字を付加してデータファイルを定義する場合と、後方から文字を付加してデータファイルを定義する場合とが、混在しているときでも、自動的に目的プログラムを生成することができるので、効率的にプログラムを変換することが可能となる。
【００２８】
また、本発明に係るプログラム変換方法は、第１高級プログラム言語で記述された入力プログラムを、第２高級プログラム言語で記述された目的プログラムへ変換するプログラム変換方法であって、データファイルを構成するデータ項目の項目名と項目属性とをデータ項目ごとに格納したファイル定義体に基づいて、前記ファイル定義体に格納された項目名に、所定の文字と区切り文字とを付加した項目名を作成し、作成した項目名と前記項目属性とを用いて、データファイルを定義する命令であるコピー句を生成するコピー句生成ステップと、前記ファイル定義体に格納された項目名と項目属性とに基づいて、リレーショナルデータベースマネージメントシステムにおいてテーブルを作成するための命令であるテーブル定義を生成するテーブル定義生成ステップと、前記入力プログラムの前記ファイル定義体を用いてデータファイルを定義する部分を、前記コピー句を複写する命令と、複写した前記コピー句から前記所定の文字を置換する命令とを用いてデータファイルを定義するように修正することにより、前記入力プログラムを前記目的プログラムに変換するプログラム変換ステップとを含むことを特徴とする。
【００２９】
これにより、プログラム変換装置に含まれる機能を、汎用的なコンピュータで実行可能なプログラムとして実現することが可能となる。
【００３０】
なお、本発明は、このようなプログラム変換装置及びプログラム変換方法として実現することができるだけでなく、このようなプログラム変換方法に含まれる特徴的なステップをコンピュータに実行させるプログラムとして実現したりすることもできる。そして、そのようなプログラムは、ＣＤ−ＲＯＭ（Compact Disc-Read Only Memory）等の記録媒体、インターネット等の通信ネットワークを介して流通させることができる。
【発明の効果】
【００３１】
本発明によると、レガシーマイグレーションにおけるプログラムの変換、特に、オフコン等を提供するベンダーが独自に開発した拡張機能を利用してデータファイルが定義されている場合のプログラムの変換を効率的に行うことが可能となる。
【発明を実施するための最良の形態】
【００３２】
（実施の形態１）
以下、本発明の実施の形態１に係るプログラム変換装置１００について、図面を用いて詳細に説明する。
【００３３】
図１は、本発明の実施の形態１に係るプログラム変換装置１００の特徴的な機能構成を示すブロック図である。図１に示すように、プログラム変換装置１００は、入力部１０１、記憶部１０２、コピー句生成部１０３、テーブル定義生成部１０４、プログラム変換部１０５、及び出力部１０６を備える。
【００３４】
入力部１０１は、キーボード、マウス等からなり、ユーザの入力を受け付け、受け付けた入力結果をコピー句生成部１０３等に通知する。
【００３５】
記憶部１０２は、例えばハードディスク等からなり、データファイルを構成するデータ項目の項目名と項目属性とをデータ項目ごとに格納したファイル定義体２００と、入力プログラム３００とを記憶している。ここで、項目属性とは、データ項目ごとに格納されるデータの型、桁数等をいう。
【００３６】
コピー句生成部１０３は、ＣＰＵ、メモリ等からなる処理部であり、ファイル定義体２００に基づいてコピー句４００を生成する。
【００３７】
具体的には、コピー句生成部１０３は、ファイル定義体２００に格納された項目名に、所定の文字と区切り文字とを付加した新たな項目名を作成する。そして、コピー句生成部１０３は、作成した新たな項目名とファイル定義体２００に格納された項目属性とを用いて、データファイルを定義する命令であるコピー句を生成する。
【００３８】
なお、コピー句とは、ソースコードとは別に、予め作成しておいたテキストデータファイルのことをいう。ソースコードをコンパイルする時に、ソースコード中の「ＣＯＰＹ」命令に従って、コピー句に記述された内容がソースコードの中へ複写される。
【００３９】
テーブル定義生成部１０４は、ＣＰＵ、メモリ等からなる処理部であり、ファイル定義体２００に格納された項目名と項目属性とに基づいて、リレーショナルデータベースマネージメントシステム（Relational Database Management System：ＲＤＢＭＳ）においてテーブルを作成するための命令文であるテーブル定義５００を生成する。
【００４０】
また、テーブル定義生成部１０４は、ファイル定義体２００に格納された項目属性として反復数が設定されている場合、反復数に設定された数量だけ同一の項目属性を有するデータ項目が作成されるようにテーブル定義５００を生成する。
【００４１】
プログラム変換部１０５は、ＣＰＵ、メモリ等からなる処理部であり、入力プログラム３００中の、ファイル定義体２００を用いてデータファイルを定義する部分を、コピー句４００を複写する命令と、複写したコピー句４００から所定の文字を置換する命令とを用いてデータファイルを定義するように、入力プログラム３００を目的プログラム６００に変換する。
【００４２】
例えば、ファイル定義体２００の中に定義された項目名の１つが「ＡＢＣ」である場合、入力プログラム３００において、文字「ＹＹＹ」と区切り文字「−」を付加した項目名「ＹＹＹ−ＡＢＣ」となるように、データファイルのデータ構造を定義していたとする。
【００４３】
この場合、プログラム変換部１０５は、コピー句４００を複写するとともに、コピー句４００に記載の項目名「ＸＸＸ−ＡＢＣ」に含まれる所定の文字「ＸＸＸ」を文字「ＹＹＹ」に置換するように、入力プログラム３００を変換する。
【００４４】
変換後の目的プログラム６００には、入力プログラム３００に含まれていた文字「ＹＹＹ」を付加する命令が残存している。
【００４５】
その結果、目的プログラム６００は、項目名「ＸＸＸ−ＡＢＣ」に含まれる文字「ＸＸＸ」を、文字「ＹＹＹ」に置換することにより、入力プログラム３００と同じ項目名「ＹＹＹ−ＡＢＣ」となるように、データファイルのデータ構造を定義することができる。
【００４６】
出力部１０６は、コピー句４００、テーブル定義５００及び目的プログラム６００を、記録媒体、ディスプレー等に出力する。
【００４７】
図２は、記憶部１０２に格納されるファイル定義体２００の一例を示す図である。図に示すように、ファイル定義体２００には、項目名２０１、型２０２、桁数２０３、反復数２０４、及び項目順位２０５が含まれる。
【００４８】
項目名２０１は、データ項目の名称を示す。
型２０２は、データの型を示す。例えば、型２０２は、数値型（Ｕ）、英数字型（Ｘ）等を示す。桁数２０３は、各データ項目に格納するデータの桁数を示す。
【００４９】
反復数２０４は、同じ項目属性のデータ項目を繰り返し定義するための回数を示す。
項目順位２０５は、データ項目をグループ化する項目（集団項目）の項目名を示す。見出し２０６は、データ項目の説明を示す。
【００５０】
例えば、図２に示すファイル定義体２００では、項目名２０１が「ＨＩＮＣＯＤ」のデータ項目は、型２０２が「Ｕ（数値型）」であり、桁数２０３が「６桁」であり、項目順位２０５が「ＫＥＹ」であり、見出し２０６が「製品コード」であることが示されている。
【００５１】
なお、項目名２０１が「ＫＥＹ」のデータ項目は、集団項目を示す。集団項目は、型２０２、桁数２０３等のデータが格納されない。
【００５２】
図３は、記憶部１０２に格納される入力プログラム３００の一例を示す図である。
図３に示す入力プログラム３００は、ＣＯＢＯＬを用いて記述されている。図３に示すように、入力プログラム３００は、見出し部３０１（IDENTIFICATION DIVISION.）、環境部３０２（ENVIRONMENT DIVISION.）、データ部３０３（DATA DIVISION.）及び手続き部３０４（PROCEDURE DIVISION.）により構成される。
【００５３】
見出し部３０１には、プログラム識別名、作成者、作成日等が記述される。
環境部３０２には、プログラムが実行されるコンピュータの環境が記述される。
【００５４】
データ部３０３には、プログラムで使用する変数及びデータ並びにその型が記述される。プログラムで使用する変数及びデータファイルのすべては、データ部３０３において定義されなければならない。
【００５５】
手続き部３０４には、実行されるプログラムのうち、実際の処理部分のコードが記述される。以下、データ部３０３の記述内容について、詳細に説明する。
【００５６】
まず、行３１１は、データファイルのデータ構造を定義するセクションの始まりを明示する。
【００５７】
次に、行３１２は、以下の行（行３１３及び行３１４）においてデータ構造を定義するデータファイルの名称「ＫＡＫＭＳＴ」を明示する。
【００５８】
続いて、行３１３は、「ＣＯＰＹ」命令により、原文名「ＫＡＫＴＡＮＰＦ」で特定されるファイル定義体２００を呼び出すことを命令する。
【００５９】
そして、行３１４は、行３１３によるファイル定義体２００の呼び出しと同時に、ファイル定義体２００に含まれる項目名２０１の文字列の前方（左側）に文字「ＫＡＫ−」を付加することを命令する。
【００６０】
このように、行３１２〜行３１４の命令により、データファイル「ＫＡＫＭＳＴ」のデータ構造が、ファイル定義体２００に基づいて定義される。
【００６１】
次に、行３１５は、以下の行（行３１６及び行３１７）においてデータ構造を定義するデータファイルの名称「ＭＥＩＭＳＴ」を明示する。
【００６２】
続いて、行３１２と同様に、行３１６は、「ＣＯＰＹ」命令により、原文名「ＫＡＫＴＡＮＰＦ」で特定されるファイル定義体２００を呼び出すことを命令する。
【００６３】
そして、行３１７は、行３１６によるファイル定義体２００の呼び出しと同時に、ファイル定義体２００に含まれる項目名２０１の文字列の前方（左側）に文字「ＭＥＩ−」を付加することを命令する。
【００６４】
このように、入力プログラム３００は、項目名２０１に付加する文字を変更することにより、同一のファイル定義体２００を用いて、複数のデータファイル（ここでは、「ＫＡＫＭＳＴ」と「ＭＥＩＭＳＴ」）のデータ構造を定義することができる。
【００６５】
なお、行３１３及び行３１６に記述された「ＸＦＤＬＩＢ」は、登録集を特定するための登録集名である。登録集とは、原文名（ここでは、「ＫＡＫＴＡＮＰＦ」）とそれに対応する実体（例えば、コピー句が保存されているパス）との対応関係を定義したものである。なお、本実施の形態において、登録集名「ＸＦＤＬＩＢ」で特定される登録集は、ファイル定義体との対応関係を定義した登録集を表す。したがって、行３１３及び行３１６の「ＣＯＰＹ」命令は、ファイル定義体２００を呼び出す命令となる。
【００６６】
また、行３１４及び行３１７に記述された「ＪＯＩＮＩＮＧ」及び「ＰＲＥＦＩＸ」は、ファイル定義体２００に含まれる項目名２０１の文字列の前方（左側）へ、「ＪＯＩＮＩＮＧ」の後ろに記述された文字（ここでは、「ＫＡＫ」と「ＭＥＩ」）と区切り文字「−」とを付加することを命令する命令語である。
【００６７】
図４は、コピー句生成部１０３が生成するコピー句４００の一例を示す図である。
このコピー句４００は、目的プログラム６００に記述された「ＣＯＰＹ」命令により、目的プログラム６００の中に複写される。以下に、コピー句４００の内容について詳述する。
【００６８】
コピー句４００の行の始めに記述される番号「０１」、「０２」及び「０３」は、階層番号を表す。階層番号が大きい行に記述されたデータ項目は、階層番号が小さい上方の行に記述されたデータ項目に属することを示す。つまり、階層番号が大きい行のデータ項目は、階層番号が小さい行のデータ項目を含む集団項目である。
【００６９】
行４０１は、項目名が「ＸＸＸ−ＨＩＮＣＯＤ」であり、型が「数値型（９）」であり、桁数が「６桁」であるデータ項目を示す。
【００７０】
また、行４０２は、項目名（グループ名）が「ＸＸＸ−ＴＡＮＴＢＬ」である集団項目に属するデータ項目を、２回繰り返すことを示す。すなわち、行４０３及び行４０４に記述されるデータ項目「ＸＸＸ−ＫＧＴＡＮＫ」及び「ＸＸＸ−ＫＧＧＥＮＫ」が、２回繰り返される。
【００７１】
図５は、テーブル定義生成部１０４が生成するテーブル定義５００の一例を示す図である。
【００７２】
このテーブル定義５００は、ＳＱＬを用いて記述されている。したがって、このテーブル定義５００を、ＲＤＢＭＳにおいて実行することにより、テーブル定義５００に記述されたデータ構造のテーブルが作成される。以下に、テーブル定義５００の内容について述べる。
【００７３】
まず、行５０１は、「ＫＡＫＴＡＮＰＦ」というテーブルを作成することを命令する。そして、行５０１に記載の括弧から最終行の括弧までの間の行において、テーブル「ＫＡＫＴＡＮＰＦ」の項目ごとのデータ構造が定義される。
【００７４】
例えば、行５０２には、項目名が「ＨＩＮＣＯＤ＿ＵＮＵＭ」のデータ項目が、整数部が６桁の数値型「ＮＵＭＢＥＲ」であり、ＮＵＬＬデータ（長さ０の空文字列）を許さないことが記述されている。
【００７５】
行５０３〜行５０６は、ファイル定義体２００の反復数２０４が設定されている場合のデータ項目に対応する。
【００７６】
例えば、ファイル定義体２００において、項目名「ＫＧＴＡＮＫ」の反復数２０４に「２」が設定されている場合、行５０３及び行５０４が、項目名「ＫＧＴＡＮＫ」に対応する項目となる。
【００７７】
図６は、プログラム変換部１０５が入力プログラム３００を変換することにより生成される目的プログラム６００の一例を示す図である。
【００７８】
図６に示す目的プログラム６００は、図３に示した入力プログラムと同様に、見出し部６０１（IDENTIFICATION DIVISION.）、環境部６０２（ENVIRONMENT DIVISION.）、データ部６０３（DATA DIVISION.）及び手続き部６０４（PROCEDURE DIVISION.）により構成される。
【００７９】
そして、図６に示す目的プログラム６００は、データ部６０３の下線を引いた部分が、図３に示した入力プログラム３００と異なる。つまり、目的プログラム６００に含まれる見出し部６０１、環境部６０２及び手続き部６０４は、入力プログラム３００に含まれる見出し部３０１、環境部３０２及び手続き部３０４と同一である。以下に、データ部６０３について、詳細に説明する。
【００８０】
行６１１及び行６１２は、入力プログラム３００の行３１１及び行３１２と同様であるので説明を省略する。
【００８１】
行６１３は、原文名「ＫＡＫＴＡＮＰＦ」で特定されるコピー句４００を複写するように命令する。ここで、登録集名「ＦＤＬＩＢ」は、原文名「ＫＡＫＴＡＮＰＦ」に対応するコピー句４００が定義された登録集を特定する名称である。
【００８２】
次に、行６１４は、上述の行６１３の命令と同時に、コピー句４００に含まれる文字「ＸＸＸ」を置換（「ＤＩＳＪＯＩＮＩＮＧ」）することを命令する。
【００８３】
そして、行６１５は、上述の行６１３及び行６１４の命令と同時に、行６１４で置換される文字「ＸＸＸ」が含まれる単語に対して、前方（左側）から、文字「ＫＡＫ」を付加することを命令する。
【００８４】
このように、行６１３〜行６１５の命令により、コピー句４００で定義された項目名に含まれる文字「ＸＸＸ」が文字「ＫＡＫ」に置き換わるように、コピー句４００の内容が目的プログラム６００へ複写される。
【００８５】
行６１６〜行６１７は、上記と同様に、原文名「ＫＡＫＴＡＮＰＦ」で特定されるコピー句４００を、文字「ＸＸＸ」が文字「ＭＥＩ」に置き換わるように、複写することを命令する。
【００８６】
このように、特定の文字が付加されていた単語において、当該特定の文字を新たな文字に置換することにより、同一のコピー句４００を用いて、複数のデータファイル（ここでは、「ＫＡＫＭＳＴ」と「ＭＥＩＭＳＴ」）のデータ構造を定義することができる。
【００８７】
次に、以上のように構成されたプログラム変換装置１００の動作について説明する。
図７は、プログラム変換装置が実行するプログラムの変換に関する処理の流れを示すフローチャートである。
【００８８】
まず、コピー句生成部１０３は、ファイル定義体２００等に基づいて、コピー句４００を生成する（ステップＳ７０１）。なお、本処理の詳細は、図８において説明する。
【００８９】
次に、テーブル定義生成部１０４は、ファイル定義体２００に基づいて、テーブル定義５００を生成する（ステップＳ７０２）。具体的には、テーブル定義生成部１０４は、ファイル定義体２００に含まれる項目名２０１、型２０２、桁数２０３等に対応するデータ構造となるように、テーブル定義５００を生成する。なお、本処理の詳細は、図９において説明する。
【００９０】
次に、プログラム変換部１０５は、ファイル定義体２００を用いてデータファイルを定義する入力プログラム３００を、コピー句４００を複写する命令と、複写したコピー句４００から所定の文字を置換する命令とを用いてデータファイルを定義する目的プログラム６００へ変換する（ステップＳ７０３）。なお、本処理の詳細は、図１０において説明する。
【００９１】
最後に、出力部１０６は、コピー句生成部１０３、テーブル定義生成部１０４及びプログラム変換部が生成したコピー句４００、テーブル定義５００及び目的プログラム６００を、記録媒体等へ出力する（ステップＳ７０４）。
【００９２】
なお、本実施の形態では、コピー句４００、テーブル定義５００及び目的プログラム６００が、図７に示すような一連の処理で生成される事例について説明するが、本発明が適用されるプログラム変換装置は、このようなプログラム変換装置に限定されるものではない。例えば、入力部１０１からの命令に基づいて、個別に、コピー句４００、テーブル定義５００及び目的プログラム６００を生成可能なプログラム変換装置１００でもよい。
【００９３】
また、プログラム変換装置は、コピー句４００の生成より先に、テーブル定義５００の生成を行ってもよい。すなわち、コピー句４００、テーブル定義５００及び目的プログラム６００は、どのような順番で生成されてもよい。
【００９４】
図８は、図７に示したステップＳ７０１の詳細な処理の流れを示すフローチャートである。つまり、図８は、コピー句生成部１０３がコピー句４００を生成する処理の詳細なフローチャートである。
【００９５】
まず、コピー句生成部１０３は、記憶部１０２に格納されたファイル定義体２００を取得する（ステップＳ８０１）。
【００９６】
続いて、コピー句生成部１０３は、取得したファイル定義体２００の項目名２０１に、所定の文字と区切り文字とを付加した項目名を作成する（ステップＳ８０２）。例えば、所定の文字を「ＸＸＸ」とし、区切り文字を「−」とした場合、コピー句生成部１０３は、ファイル定義体２００に含まれる項目名「ＨＩＮＣＯＤ」に文字「ＸＸＸ−」を付加した項目名「ＸＸＸ−ＨＩＮＣＯＤ」を作成する。
【００９７】
次に、コピー句生成部１０３は、ステップＳ８０２で作成した項目名と、ファイル定義体２００に含まれる型２０２、桁数２０３、反復数２０４等とを用いて、コピー句４００を生成する（ステップＳ８０３）。例えば、図２及び図４に示すように、コピー句生成部１０３は、型２０２においては、ファイル定義体２００の「Ｕ」は、コピー句４００では「９」となるように、コピー句４００を生成する。
【００９８】
以上のように、コピー句生成部１０３は、ファイル定義体２００に基づいて、コピー句４００を生成する。
【００９９】
なお、記憶部１０２に複数のファイル定義体が格納されている場合は、プログラム変換装置１００は、ファイル定義体ごとに図８に示した処理を繰り返すようにしてもよいし、作業者が入力部１０１で選択したファイル定義体についてのみ図８に示した処理を実行するようにしてもよい。
【０１００】
図９は、図７に示したステップＳ７０２の詳細な処理の流れを示すフローチャートである。つまり、図９は、テーブル定義生成部１０４がテーブル定義５００を生成する処理の詳細なフローチャートである。
【０１０１】
まず、テーブル定義生成部１０４は、記憶部１０２に格納されたファイル定義体２００を取得する（ステップＳ９０１）。
【０１０２】
次に、テーブル定義生成部１０４は、取得したファイル定義体２００のレコードごとに、以下のステップＳ９０３〜Ｓ９０８の処理を繰り返す（ステップＳ９０２）。
【０１０３】
次に、テーブル定義生成部１０４は、レコードを選択し、選択したレコードが集団項目を定義しているのか否かを判定する（ステップＳ９０３）。
【０１０４】
ここで、当該レコードが集団項目を定義している場合（ステップＳ９０３のＹｅｓ）、テーブル定義生成部１０４は、次のレコードに進み処理を繰り返す（ステップＳ９０９）。例えば、図２に示したファイル定義体２００の場合、テーブル定義生成部１０４は、項目名２０１が「ＫＥＹ」であるレコードが集団項目を定義していると判定し、次のレコードへ処理を進める。
【０１０５】
一方、当該レコードが集団項目を定義していない場合（ステップＳ９０３のＮｏ）、テーブル定義生成部１０４は、反復数２０４が設定されているか否かを判定する（ステップＳ９０４）。例えば、図２に示したファイル定義体２００の場合、項目名２０１が「ＨＩＮＣＯＤ」であるレコードは、集団項目を定義していない、つまり、単独項目を定義している。したがって、テーブル定義生成部１０４は、反復数２０４が設定されているか否かの判定処理に進む。
【０１０６】
ここで、当該レコードにおいて、反復数２０４が設定されていない場合（ステップＳ９０４のＮｏ）、テーブル定義５００に当該レコードの項目を追加する（ステップＳ９０５）。例えば、テーブル定義生成部１０４は、図２に示したファイル定義体２００の項目名２０１「ＨＩＮＣＯＤ」、型２０２「Ｕ」及び桁数２０３「６」のレコードが、図５に示すような項目名「ＨＩＮＣＯＤ＿ＵＮＵＭ」、型「ＮＵＭＢＥＲ」、桁数「（０６，００）」の項目となるように、テーブル定義５００に追加する。
【０１０７】
一方、当該レコードにおいて、反復数２０４が設定されている場合（ステップＳ９０４のＹｅｓ）、テーブル定義生成部１０４は、設定された反復数の回数だけ、テーブル定義５００に当該レコードの項目を追加する処理を繰り返す（ステップＳ９０６、ステップＳ９０７）。例えば、図２に示したファイル定義体２００の項目名２０１が「ＫＧＴＡＮＫ」の項目の場合、テーブル定義生成部１０４は、１回目の処理で「ＫＧＴＡＮＫ００１＿ＵＤＥＣ」の項目をテーブル定義５００に追加し、２回目の処理で「ＫＧＴＡＮＫ００２＿ＵＤＥＣ」の項目をテーブル定義５００に追加する。
【０１０８】
このように、テーブル定義生成部１０４は、反復数２０４に設定された回数だけ処理の繰り返す（ステップＳ９０８）。その結果、反復数２０４に設定された数に応じて、テーブルに項目を作成するための命令が作成される（例えば、図５の行５０３〜５０６）。
【０１０９】
そして、テーブル定義生成部１０４は、まだ上記の処理（ステップＳ９０３〜Ｓ９０８）が実行されていないレコードがある場合は、再度ステップＳ９０２の処理へ進む。また、テーブル定義生成部１０４は、まだ上記の処理（ステップＳ９０３〜Ｓ９０８）が実行されていないレコードがない場合は、図７のステップＳ７０３の処理へ進む。
【０１１０】
以上のように、テーブル定義生成部１０４は、ファイル定義体２００に基づいて、テーブル定義５００を生成する。
【０１１１】
なお、記憶部１０２に複数のファイル定義体が格納されている場合は、プログラム変換装置１００は、ファイル定義体ごとに図９に示した処理を繰り返すようにしてもよいし、作業者が入力部１０１で選択したファイル定義体についてのみ図９に示した処理を実行するようにしてもよい。
【０１１２】
図１０は、図７に示したステップＳ７０３の詳細な処理の流れを示すフローチャートである。つまり、図１０は、プログラム変換部１０５が目的プログラム６００を生成する処理の詳細なフローチャートである。
【０１１３】
まず、プログラム変換部１０５は、記憶部１０２に格納された入力プログラム３００を取得する（ステップＳ１００１）。
【０１１４】
次に、プログラム変換部１０５は、取得した入力プログラム３００のデータ部３０３の中で、ファイル定義体２００を呼び出す命令（「ＣＯＰＹ」命令）を特定する（ステップＳ１００２）。
【０１１５】
次に、プログラム変換部１０５は、特定した命令の登録集名を変更する（ステップＳ１００３）。例えば、図３及び図６に示したように、プログラム変換部１０５は、登録集名を「ＸＦＤＬＩＢ」から「ＦＤＬＩＢ」に変換する。
【０１１６】
これにより、ファイル定義体２００を呼び出す命令が、コピー句４００を複写する命令に変換される。
【０１１７】
次に、プログラム変換部１０５は、コピー句４００を生成する際に付加した所定の文字を置換する命令を追加する（ステップＳ１００４）。例えば、図６に示すように、「ＤＩＳＪＯＩＮＩＮＧ  ＸＸＸ」の命令を追加する。
【０１１８】
このように、コピー句４００を複写する場合に、単独では実行できない「ＪＯＩＮＩＮＧ」命令を、「ＤＩＳＪＯＩＮＩＮＧ」命令と同時に実行することにより、目的プログラム６００は、文字「ＸＸＸ」を、文字「ＫＡＫ」等に置換するように命令することが可能となる。
【０１１９】
すなわち、プログラム変換部１０５は、入力プログラム３００のファイル定義体２００を呼び出してデータファイルを定義する部分を、コピー句４００を複写してデータファイルを定義することが可能なように、入力プログラム３００を目的プログラム６００へ変換する。
【０１２０】
以上のように、本実施の形態のプログラム変換装置１００によれば、ファイル定義体２００を利用してデータファイルを定義するプログラムを、コピー句４００を利用してデータファイルを定義するプログラム、つまり、オープンプラットフォームにおいて実行可能なプログラムに変換することができる。すなわち、プログラム変換装置１００は、ベンダー独自の拡張命令が加えられた高級言語で記述されたプログラムから、オープンプラットフォームにおいて実行可能な汎用的な高級言語で記述されたプログラムに変換することができる。
【０１２１】
また、本実施の形態のプログラム変換装置１００は、入力プログラム３００のデータ部３０３のみを自動的に変換する。つまり、プログラム変換装置１００は、比較的記述量の多い手続き部を変換する必要がない。したがって、本実施の形態のプログラム変換装置１００は、プログラムの変換量を少なくすることができる。つまり、本実施の形態のプログラム変換装置１００は、プログラム変換に要する時間と、プログラム変換時に発生する変換ミスとを、低減することを可能とする。
【０１２２】
さらに、本実施の形態のプログラム変換装置１００は、プログラム変換とともに、ＲＤＢＭＳにおいてテーブルを作成することが可能なテーブル定義５００を生成することができる。このテーブル定義５００により作成されるテーブルと、データを入出力する命令をＳＱＬ文に変換する市販プログラムとを利用すれば、目的プログラム６００は、手続き部を修正することなく、ＲＤＢＭＳにアクセスすることが可能となる。つまり、本実施の形態のプログラム変換装置１００は、ネットワーク型のデータベースにアクセスする入力プログラムを、リレーショナルデータベースにアクセスする目的プログラムへ、効率的に変換することを可能とする。
【０１２３】
さらに、具体的に本実施の形態のプログラム変換装置１００の効果を説明するために、図２３に示した従来の変換方法により変換されたシステムと、本実施の形態のプログラム変換装置１００により変換されたシステムとを比較して説明する。
【０１２４】
図１１は、本実施の形態に係るプログラム変換装置１００によりプログラム変換した場合の、変換後のシステムを示す概念図である。具体的には、図１１に示す変換後システム３０００は、図２２に示したレガシーシステム５０００を、プログラム変換装置１００により変換したシステムである。
【０１２５】
図１１に示すように、変換後システム３０００のプログラム３００１は、「ＤＩＳＪＯＩＮＩＮＧ」命令が加えられ、登録集名が「ＦＤＬＩＢ」に変更されただけである。すなわち、図２３に示した従来の変換方法により変換されたプログラム５５０１と比べて変換量が少ない。したがって、変換に必要な作業量、変換時に発生する変換ミス等を削減することが可能となる。
【０１２６】
また、変換後システム３０００のコピー句３００２は、レガシーシステム５０００のファイル定義体５００３と１対１で対応するので、比較的容易に生成することができる。
【０１２７】
（実施の形態２）
以下、本発明の実施の形態２に係るプログラム変換装置１０００ついて、図面を用いて詳細に説明する。
【０１２８】
図１２は、本実施の形態のプログラム変換装置１０００の特徴的な機能構成を示すブロック図である。なお、実施の形態１と同じ構成部に関しては同一符号にて示し説明を省略する。
【０１２９】
また、本実施の形態のプログラム変換装置１０００は、コピー句生成部１００３及びプログラム変換部１００５の持つ機能が実施の形態１のプログラム変換装置１００とは一部異なっているが、その他の構成部及び機能等は実施の形態１のプログラム変換装置１００と同じである。なお、説明の便宜のため、本実施の形態のプログラム変換装置１０００では、実施の形態１のプログラム変換装置１００と比べて、入力プログラム１３００及び目的プログラム１６００が変更されている。
【０１３０】
図１２に示すコピー句生成部１００３は、入力プログラム１３００において、ファイル定義体２００を用いてデータファイルを定義する部分が、項目名に文字を付加してデータファイルを定義している場合には、ファイル定義体２００に格納された項目名に、所定の文字と区切り文字とを付加した新たな項目名を作成し、作成した新たな項目名と項目属性とを用いて、データファイルを定義する命令であるコピー句を生成する。一方、入力プログラム１３００において、ファイル定義体２００を用いてデータファイルを定義する部分が、項目名に文字を付加してデータファイルを定義していない場合には、コピー句生成部１００３は、ファイル定義体２００に格納された項目名と同じ項目名と項目属性とを用いて、データファイルを定義する命令であるコピー句を生成する。
【０１３１】
図１２に示すプログラム変換部１００５は、入力プログラム１３００において、ファイル定義体２００を用いてデータファイルを定義する部分が、項目名に文字を付加してデータファイルを定義している場合には、コピー句１４００を複写する命令と、複写したコピー句１４００から所定の文字を置換する命令とを用いてデータファイルを定義するように当該部分を修正することにより、入力プログラム１３００を目的プログラム１６００に変換する。
【０１３２】
図１３は、記憶部１０２に格納される入力プログラム１３００の一例を示す図である。
図に示すように、入力プログラム１３００は、データファイル「ＫＡＫＭＳＴ」のデータファイル定義において、項目名に文字を付加するように命令していない。すなわち、行１３０１及び行１３０２は、ファイル定義体２００に定義された項目名と同一の項目名を用いて、データファイルのデータ構造を定義することを命令している。一方、データファイル「ＭＥＩＭＳＴ」のデータファイル定義では、入力プログラム１３００は、項目名に文字を付加するように命令している。すなわち、行１３０３、行１３０４及び行１３０５は、「ＫＡＫＴＡＮＰＦ２」に対応するファイル定義体に定義された項目名に対して「ＭＥＩ−」を付加した項目名を用いて、データファイルのデータ構造を定義することを命令している。
【０１３３】
図１４Ａは、コピー句生成部１００３が生成するコピー句１４００の一例を示す図である。
【０１３４】
図に示すように、「ＫＡＫＴＡＮＰＦ」に対応するコピー句１４００において、項目名は、図２に示すファイル定義体２００に格納された項目名と同じ項目名である。なお、「ＫＡＫＴＡＮＰＦ２」に対応するコピー句については、実施の形態１において示したコピー句４００と同様であるので、図示を省略する。
【０１３５】
図１４Ｂは、プログラム変換部１００５が入力プログラム１３００を変換することにより生成される目的プログラム１６００の一例を示す図である。
【０１３６】
図に示すように、目的プログラム１６００のデータファイル「ＫＡＫＭＳＴ」のデータファイル定義においては、図６に示した行６１４と異なり、所定の文字をコピー句４００の文字列から置換する命令（「ＤＩＳＪＯＩＮＩＮＧ」命令）が付加されない。
【０１３７】
次に、以上のように構成されたプログラム変換装置１０００の動作について説明する。
本実施の形態のプログラム変換装置１０００は、実施の形態１のプログラム変換装置１００と同様に、図７に示した処理を実行する。
【０１３８】
図１５Ａは、図７に示したステップＳ７０１の詳細な処理の流れを示すフローチャートである。つまり、図１５Ａは、コピー句生成部１００３がコピー句１４００を生成する処理の詳細なフローチャートである。
【０１３９】
まず、コピー句生成部１００３は、記憶部１０２に格納されたファイル定義体２００を取得する（ステップＳ１５０１）。
【０１４０】
次に、コピー句生成部１００３は、ファイル定義体２００が利用されているデータファイル定義において、「ＪＯＩＮＩＮＧ」命令が存在するか否かを判定する（ステップＳ１５０２）。
【０１４１】
ここで、「ＪＯＩＮＩＮＧ」命令が存在する場合（ステップＳ１５０２のＹｅｓ）、コピー句生成部１００３は、ファイル定義体の項目名に所定の文字を追加した項目名を作成する（ステップＳ１５０３）。一方、「ＪＯＩＮＩＮＧ」命令が存在しない場合（ステップＳ１５０２のＮｏ）、コピー句生成部１００３は、ファイル定義体の項目名と同じ項目名を作成する（ステップＳ１５０４）。
【０１４２】
次に、コピー句生成部１００３は、ステップＳ１５０３又はステップＳ１５０４で作成された項目名と、ファイル定義体２００に含まれる型２０２、桁数２０３、反復数２０４等とを用いて、コピー句１４００を生成する（ステップＳ１５０５）。
【０１４３】
以上のように、コピー句生成部１０３は、ファイル定義体２００に基づいて、コピー句１４００を生成する。
【０１４４】
図１５Ｂは、図７に示したステップＳ７０３の詳細な処理の流れを示すフローチャートである。つまり、図１５Ｂは、プログラム変換部１００５が目的プログラム１６００を生成する処理の詳細なフローチャートである。
【０１４５】
ステップＳ１４０１〜Ｓ１４０３の処理は、図１０に示したプログラム変換装置１００の処理と同様であるので、説明を省略する。
【０１４６】
ステップＳ１４０３の処理に続いて、プログラム変換部１００５は、ステップＳ１４０２において特定した「ＣＯＰＹ」命令に、「ＪＯＩＮＩＮＧ」命令が含まれているか否かを判定する（ステップＳ１４０４）。
【０１４７】
ここで、「ＣＯＰＹ」命令に「ＪＯＩＮＩＮＧ」命令が含まれている場合（ステップＳ１４０４のＹｅｓ）、プログラム変換部１００５は、コピー句４００を生成する際に付加した所定の文字を置換する命令である「ＤＩＳＪＯＩＮＩＮＧ」命令を追加する（ステップＳ１４０５）。
【０１４８】
一方、「ＣＯＰＹ」命令に「ＪＯＩＮＩＮＧ」命令が含まれていない場合（ステップＳ１４０５のＮｏ）、そのままステップＳ７０４の処理へ進む。
【０１４９】
以上のように、本実施の形態のプログラム変換装置１０００は、ファイル定義体２００を用いてデータファイルを定義する入力プログラム１３００において、項目名に文字を付加する場合と項目名に文字を付加しない場合とが混在している場合でも、自動的に目的プログラム１６００を生成することが可能となる。つまり、本実施の形態のプログラム変換装置１０００は、作業者が手入力により作業する必要がないので、プログラム変換に要する時間及び作業ミスを低減することが可能となる。
【０１５０】
なお、本実施の形態では、入力プログラム１３００において、ファイル定義体２００を用いてデータファイルを定義する部分が項目名に文字を付加してデータファイルを定義していない場合には、コピー句生成部１００３は、ファイル定義体２００に格納された項目名と同じ項目名と項目属性とを用いて、データファイルを定義する命令であるコピー句を生成していたが、本発明が適用されるプログラム変換装置は、このようなプログラム変換装置に限定されるものではない。
【０１５１】
例えば、入力プログラム１３００において、ファイル定義体２００を用いてデータファイルを定義する部分が項目名に文字を付加してデータファイルを定義していない場合であっても、コピー句生成部１００３は、ファイル定義体２００に格納された項目名に、所定の文字と区切り文字とを付加した新たな項目名を作成し、作成した新たな項目名と項目属性とを用いて、データファイルを定義する命令であるコピー句を生成してもよい。このとき、プログラム変換部１００５は、図１６に示すように、入力プログラムにおいて、ファイル定義体を用いてデータファイルを定義する部分が項目名に文字を付加してデータファイルを定義していない場合には、所定の文字と区切り文字とを含まない項目名へ項目名ごとに置換する命令を用いてデータファイルを定義するように修正することにより、入力プログラムを目的プログラムに変換する。
【０１５２】
また、例えば、入力プログラム１３００において、同一のファイル定義体２００を用いてデータファイルを定義する部分が複数存在し、かつ、当該部分において、項目名に文字を付加してデータファイルを定義している場合と項目名に文字を付加してデータファイルを定義していない場合とが混在しているときのみ、プログラム変換部１００５は、図１６に示すように目的プログラムを生成するようにしてもよい。
【０１５３】
（実施の形態３）
以下、本発明の実施の形態３に係るプログラム変換装置２０００について、図面を用いて詳細に説明する。
【０１５４】
図１７は、本実施の形態のプログラム変換装置２０００の特徴的な機能構成を示すブロック図である。なお、実施の形態１のプログラム変換装置１００と同じ構成部に関しては同一符号にて示し説明を省略する。
【０１５５】
また、本実施の形態のプログラム変換装置２０００は、コピー句生成部２００３が付加方向判定部２００７を有する点が実施の形態１のプログラム変換装置１００とは異なっているが、その他の構成部は実施の形態１のプログラム変換装置１００と同じである。なお説明の便宜のため、本実施の形態のプログラム変換装置２０００には、実施の形態１のプログラム変換装置１００と比べて、ファイル定義体２２００及びコピー句２４００が追加され、入力プログラム２３００が変更されている。
【０１５６】
コピー句生成部２００３は、付加方向判定部２００７を有する。そして、コピー句生成部２００３は、付加方向判定部２００７において判定された方向から所定の文字と区切り文字とを付加した項目名を作成し、作成した項目名と項目属性とを用いてデータファイルを定義するコピー句を生成する。
【０１５７】
付加方向判定部２００７は、入力プログラム２３００において、ファイル定義体２００に格納された項目名に文字を付加してデータファイルを定義している場合、文字を付加する方向を決定する命令から文字の付加方向を判定する。
【０１５８】
図１８は、記憶部１０２に格納されるファイル定義体２２００の一例を示す図である。
図１８に示すファイル定義体２２００は、図２に示すファイル定義体２００と比べて、格納されているデータの内容が異なる。例えば、図１８に示すファイル定義体２２００では、項目名２２０１が「ＭＥＩＣＯＤ」のデータ項目は、型２２０２が「Ｕ（数値型）」であり、桁数２２０３が「６桁」であり、項目順位２２０５が「ＫＥＹ」であり、見出し２２０６が「名称コード」であることが示されている。
【０１５９】
図１９は、記憶部１０２に格納される入力プログラム２３００の一例を示す図である。
図に示すように、入力プログラム２３００は、データファイル「ＫＡＫＭＳＴ」のデータファイル定義において、項目名に文字を前方から付加するようにデータファイルを定義する。
【０１６０】
すなわち、行２３１１は、前方から文字を付加する命令「ＰＲＥＦＩＸ」により、「ＫＡＫＴＡＮＰＦ」で特定されるファイル定義体２００に定義された項目名に、文字「ＫＡＫ」を前方から付加して、データファイルのデータ構造を定義することを命令する。
【０１６１】
また、入力プログラム２３００は、「ＭＥＩＭＳＴ」のデータファイル定義において、項目名に文字を後方から付加するように、データファイルを定義する。
【０１６２】
すなわち、行２３１２は、後方から文字を付加する命令「ＳＵＦＦＩＸ」により、「ＭＥＩＳＹＯＳＦ」で特定されるファイル定義体２２００に定義された項目名に、文字「ＭＥＩ」を後方から付加して、データファイルのデータ構造を定義することを命令する。
【０１６３】
図２０は、コピー句生成部２００３が生成するコピー句２４００の一例を示す図である。
【０１６４】
図２０に示すように、コピー句２４００は、図４に示したコピー句４００と、項目名に対して、所定の文字と区切り文字が付加されている方向が異なる。つまり、図２０に示すコピー句２４００には、ファイル定義体２２００に格納された項目名に対して、後方から区切り文字「−」と所定の文字「ＸＸＸ」とが付加されている。
【０１６５】
次に、以上のように構成されたプログラム変換装置２０００の動作について説明する。
本実施の形態のプログラム変換装置２０００は、実施の形態１のプログラム変換装置１００と同様に、図７に示した処理を実行する。
【０１６６】
図２１は、図７に示したステップＳ７０１の詳細な処理の流れを示すフローチャートである。つまり、図２１は、コピー句生成部２００３がコピー句２４００を生成する処理の詳細なフローチャートである。
【０１６７】
ステップＳ１９０１及びステップＳ１９０２の処理は、図８に示したステップＳ８０１及びステップＳ８０２の処理と同様であるので、説明を省略する。
【０１６８】
ステップＳ１９０２の処理に続いて、コピー句生成部２００３は、ステップＳ１９０２において抽出した「ＣＯＰＹ」命令に含まれる、文字の付加する方向を決定する命令（付加方向命令）が、後方から付加することを意味する「ＳＵＦＦＩＸ」であるか否かを判定する（ステップＳ１９０３）。
【０１６９】
ここで、付加方向命令が「ＳＵＦＩＩＸ」でない場合（ステップＳ１９０３のＮｏ）、コピー句生成部２００３は、ステップＳ１９０１において取得したファイル定義体２００の項目名２０１に、所定の文字と区切り文字とを前方から付加した項目名を作成する（ステップＳ１９０４）。例えば、所定の文字を「ＸＸＸ」とし、区切り文字を「−」とした場合、コピー句生成部２００３は、ファイル定義体２００に含まれる項目名「ＨＩＮＣＯＤ」に文字「ＸＸＸ−」を付加した項目名「ＸＸＸ−ＨＩＮＣＯＤ」を作成する。
【０１７０】
一方、付加方向命令が「ＳＵＦＩＩＸ」である場合（ステップＳ１９０３のＹｅｓ）、コピー句生成部２００３は、ステップＳ１９０１において取得したファイル定義体２２００の項目名２１０１に、所定の文字と区切り文字とを後方から付加した項目名を作成する（ステップＳ１９０５）。例えば、所定の文字を「ＸＸＸ」とし、区切り文字を「−」とした場合、コピー句生成部２００３は、ファイル定義体２２００に含まれる項目名「ＭＥＩＣＯＤ」に文字「−ＸＸＸ」を付加した項目名「ＭＥＩＣＯＤ−ＸＸＸ」を作成する。
【０１７１】
次に、コピー句生成部２００３は、ステップＳ１９０４又はＳ１９０５において作成した項目名と、ファイル定義体２００又は２２００とを用いて、コピー句２４００を生成する（ステップＳ１９０６）。
【０１７２】
以上のように、本実施の形態のプログラム変換装置２０００は、ファイル定義体２００又は２２００を用いてデータファイルを定義する入力プログラム２３００において、項目名に文字を付加する方向が混在している場合でも、自動的に目的プログラム６００を生成することが可能となる。つまり、本実施の形態のプログラム変換装置２０００は、作業者の手入力による作業を介さずに、短時間で、変換ミスの少ない目的プログラム６００を効率的に生成することが可能となる。
【０１７３】
以上、本発明に係るプログラム変換装置について、実施の形態に基づいて説明したが、本発明は、この実施の形態に限定されるものではない。本発明の趣旨を逸脱しない限り、当業者が思いつく各種変形を本実施の形態に施したものや、異なる実施の形態における構成要素を組み合わせて構築される形態も、本発明の範囲内に含まれる。
【０１７４】
例えば、移行先のオープンプラットフォームにおいて、「ＪＯＩＮＩＮＧ」及び「ＤＩＳＪＯＩＮＩＮＧ」命令が実行できない場合には、指定した文字を置換する命令である「ＲＥＰＬＡＣＩＮＧ」命令を用いてもよい。
【０１７５】
また、上記実施の形態のコピー句生成部は、所定の文字として「ＸＸＸ」を利用していたが、「ＸＸＸ」でない文字を利用してもよい。データ項目を定義する文字列と重複しない文字列であれば、どのような文字であってもよい。
【産業上の利用可能性】
【０１７６】
本発明は、オフコン等において稼動するレガシーシステムを、オープンプラットフォームへ移行するためのプログラム変換装置、プログラム等として、例えば、オフコン、パソコン等で実行可能なプログラムとして、利用可能である。
【図面の簡単な説明】
【０１７７】
【図１】本発明の実施の形態１に係るプログラム変換装置の特徴的な機能構成を示すブロック図である。
【図２】記憶部に格納されるファイル定義体の一例を示す図である。
【図３】記憶部に格納される入力プログラムの一例を示す図である。
【図４】コピー句生成部が生成するコピー句の一例を示す図である。
【図５】テーブル定義生成部が生成するテーブル定義の一例を示す図である。
【図６】プログラム変換部が入力プログラムを変換することにより生成される目的プログラムの一例を示す図である。
【図７】プログラム変換装置が実行するプログラムの変換に関する処理の流れを示すフローチャートである。
【図８】図７に示したステップＳ７０１の詳細な処理の流れを示すフローチャートである。
【図９】図７に示したステップＳ７０２の詳細な処理の流れを示すフローチャートである。
【図１０】図７に示したステップＳ７０３の詳細な処理の流れを示すフローチャートである。
【図１１】本発明の実施の形態１に係るプログラム変換装置によりプログラム変換した場合の、変換後のシステムを示す概念図である。
【図１２】本発明の実施の形態２に係るプログラム変換装置の特徴的な機能構成を示すブロック図である。
【図１３】記憶部に格納される入力プログラムの一例を示す図である。
【図１４Ａ】コピー句生成部が生成するコピー句の一例を示す図である。
【図１４Ｂ】プログラム変換部が入力プログラムを変換することにより生成される目的プログラムの一例を示す図である。
【図１５Ａ】図７に示したステップＳ７０１の詳細な処理の流れを示すフローチャートである。
【図１５Ｂ】図７に示したステップＳ７０３の詳細な処理の流れを示すフローチャートである。
【図１６】項目名ごとに置換する命令が用いられた場合の目的プログラムの一例を示す図である。
【図１７】本発明の実施の形態３に係るプログラム変換装置の特徴的な機能構成を示すブロック図である。
【図１８】記憶部に格納されるファイル定義体の一例を示す図である。
【図１９】記憶部に格納される入力プログラムの一例を示す図である。
【図２０】コピー句生成部が生成するコピー句の一例を示す図である。
【図２１】図７に示したステップＳ７０１の詳細な処理の流れを示すフローチャートである。
【図２２】従来のレガシーシステムを示す概念図である。
【図２３】従来の方法によりプログラム変換した場合の、変換後のシステムを示す概念図である。
【符号の説明】
【０１７８】
１００、１０００、２０００  プログラム変換装置
１０１  入力部
１０２  記憶部
１０３、１００３、２００３  コピー句生成部
１０４  テーブル定義生成部
１０５、１００５  プログラム変換部
１０６  出力部
２００、２２００  ファイル定義体
３００、１３００、２３００  入力プログラム
３０１、６０１  見出し部
３０２、６０２  環境部
３０３、６０３  データ部
３０４、６０４  手続き部
４００、１４００、２４００  コピー句
５００  テーブル定義
６００、１６００  目的プログラム
２００７  付加方向判定部
【図１】
2010134487.tif 000003
【図２】
2010134487.tif 000004
【図３】
2010134487.tif 000005
【図４】
2010134487.tif 000006
【図５】
2010134487.tif 000007
【図６】
2010134487.tif 000008
【図７】
2010134487.tif 000009
【図８】
2010134487.tif 000010
【図９】
2010134487.tif 000011
【図１０】
2010134487.tif 000012
【図１１】
2010134487.tif 000013
【図１２】
2010134487.tif 000014
【図１３】
2010134487.tif 000015
【図１４Ａ】
2010134487.tif 000016
【図１４Ｂ】
2010134487.tif 000017
【図１５Ａ】
2010134487.tif 000018
【図１５Ｂ】
2010134487.tif 000019
【図１６】
2010134487.tif 000020
【図１７】
2010134487.tif 000021
【図１８】
2010134487.tif 000022
【図１９】
2010134487.tif 000023
【図２０】
2010134487.tif 000024
【図２１】
2010134487.tif 000025
【図２２】
2010134487.tif 000026
【図２３】
2010134487.tif 000027
【手続補正書】
【提出日】平成20年11月4日(2008.11.4)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
ファイル定義体を用いてデータファイルを定義する入力プログラムを、ファイル定義体を用いずにデータファイルを定義する目的プログラムへ変換するプログラム変換装置であって、
前記入力プログラム及び前記目的プログラムは、ＣＯＢＯＬで記述され、
前記データファイルは、一以上のデータ項目を有する一以上のレコードにより構成され、
前記ファイル定義体には、前記データ項目の項目名と項目属性とが前記データ項目ごとに格納され、
前記入力プログラムは、一つの前記ファイル定義体を用いて、項目属性が同じで項目名だけが互いに異なるデータ構造を有する複数のデータファイルをそれぞれ定義する複数の第一命令を含み、
前記複数の第一命令のそれぞれは、前記ファイル定義体に格納されたすべてのデータ項目の項目名に対して、一文字以上の同一の第一所定文字列と予め定められた同一の区切り文字とを付加する付加命令を用いて、前記データファイルを定義する命令であり、
前記第一所定文字列は、前記複数の第一命令のそれぞれで互いに異なる文字列であり、
前記目的プログラムに用いられるＣＯＢＯＬは、前記付加命令を解釈することができないＣＯＢＯＬであり、
前記プログラム変換装置は、
前記ファイル定義体と前記入力プログラムとを記憶している記憶部と、
前記記憶部に記憶された前記ファイル定義体を参照することにより、前記目的プログラムがコンパイルされる際に前記目的プログラム中に複写されるテキストファイルであるコピー句を生成するコピー句生成部と、
前記記憶部に記憶された前記入力プログラムを読み出し、読み出した入力プログラムに含まれる前記複数の第一命令を特定し、特定した前記複数の第一命令のそれぞれを、同一の前記コピー句を用いて前記複数のデータファイルをそれぞれ定義する第二命令に書き換えることにより、前記入力プログラムを前記目的プログラムに変換するプログラム変換部とを備え、
前記コピー句生成部は、前記ファイル定義体に格納されたすべてのデータ項目の項目名に対して一文字以上の同一の第二所定文字列と同一の前記区切り文字とを付加した新たな項目名を作成し、作成した新たな項目名と前記ファイル定義体に格納された項目属性とからなるデータ構造を定義する命令を生成することにより、前記コピー句を生成し、
前記プログラム変換部は、前記コピー句に含まれる前記第二所定文字列を前記第一所定文字列に置換する置換命令を前記第一命令に追加することにより、前記第一命令のそれぞれを前記第二命令に書き換え、
前記第二所定文字列は、前記ファイル定義体に格納されたいずれの項目名にも含まれない文字列である
ことを特徴とするプログラム変換装置。
【請求項２】
前記付加命令は、前記ファイル定義体に格納された項目名の前方である左端に文字を付加するのか、又は、後方である右端に文字を付加するのかを決定する方向決定命令を含み、
前記コピー句生成部は、前記記憶部に記憶された入力プログラムを参照することにより、前記方向決定命令を特定し、特定した前記方向決定命令が示す方向と同一の方向から前記第二所定文字列と前記区切り文字とを付加した前記新たな項目名を作成する
ことを特徴とする請求項１に記載のプログラム変換装置。
【請求項３】
ファイル定義体を用いてデータファイルを定義する入力プログラムを、ファイル定義体を用いずにデータファイルを定義する目的プログラムへ変換するプログラム変換方法であって、
前記入力プログラム及び前記目的プログラムは、ＣＯＢＯＬで記述され、
前記データファイルは、一以上のデータ項目を有する一以上のレコードにより構成され、
前記ファイル定義体には、前記データ項目の項目名と項目属性とが前記データ項目ごとに格納され、
前記入力プログラムは、一つの前記ファイル定義体を用いて、項目属性が同じで項目名だけが互いに異なるデータ構造を有する複数のデータファイルをそれぞれ定義する複数の第一命令を含み、
前記複数の第一命令のそれぞれは、前記ファイル定義体に格納されたすべてのデータ項目の項目名に対して、一文字以上の同一の第一所定文字列と予め定められた同一の区切り文字とを付加する付加命令を用いて、前記データファイルを定義する命令であり、
前記第一所定文字列は、前記複数の第一命令のそれぞれで互いに異なる文字列であり、
前記目的プログラムに用いられるＣＯＢＯＬは、前記付加命令を解釈することができないＣＯＢＯＬであり、
前記コンピュータは、
前記ファイル定義体と前記入力プログラムとを記憶している記憶部を備え、
前記プログラム変換方法は、
前記コンピュータが、前記記憶部に記憶された前記ファイル定義体を参照することにより、前記目的プログラムがコンパイルされる際に前記目的プログラム中に複写されるテキストファイルであるコピー句を生成するコピー句生成ステップと、
前記コンピュータが、前記記憶部に記憶された前記入力プログラムを読み出し、読み出した入力プログラムに含まれる前記複数の第一命令を特定し、特定した前記複数の第一命令のそれぞれを、同一の前記コピー句を用いて前記複数のデータファイルをそれぞれ定義する第二命令に書き換えることにより、前記入力プログラムを前記目的プログラムに変換するプログラム変換ステップとを含み、
前記コピー句生成ステップでは、前記コンピュータが、前記ファイル定義体に格納されたすべてのデータ項目の項目名に対して一文字以上の同一の第二所定文字列と同一の前記区切り文字とを付加した新たな項目名を作成し、作成した新たな項目名と前記ファイル定義体に格納された項目属性とからなるデータ構造を定義する命令を生成することにより、前記コピー句を生成し、
前記プログラム変換ステップでは、前記コンピュータが、前記コピー句に含まれる前記第二所定文字列を前記第一所定文字列に置換する置換命令を前記第一命令に追加することにより、前記第一命令のそれぞれを前記第二命令に書き換え、
前記第二所定文字列は、前記ファイル定義体に格納されたいずれの項目名にも含まれない文字列である
ことを特徴とするプログラム変換方法。
【請求項４】
ファイル定義体を用いてデータファイルを定義する入力プログラムを、ファイル定義体を用いずにデータファイルを定義する目的プログラムへ変換するコンピュータ実行可能な変換プログラムであって、
前記入力プログラム及び前記目的プログラムは、ＣＯＢＯＬで記述され、
前記データファイルは、一以上のデータ項目を有する一以上のレコードにより構成され、
前記ファイル定義体には、前記データ項目の項目名と項目属性とが前記データ項目ごとに格納され、
前記入力プログラムは、一つの前記ファイル定義体を用いて、項目属性が同じで項目名だけが互いに異なるデータ構造を有する複数のデータファイルをそれぞれ定義する複数の第一命令を含み、
前記複数の第一命令のそれぞれは、前記ファイル定義体に格納されたすべてのデータ項目の項目名に対して、一文字以上の同一の第一所定文字列と予め定められた同一の区切り文字とを付加する付加命令を用いて、前記データファイルを定義する命令であり、
前記第一所定文字列は、前記複数の第一命令のそれぞれで互いに異なる文字列であり、
前記目的プログラムに用いられるＣＯＢＯＬは、前記付加命令を解釈することができないＣＯＢＯＬであり、
前記コンピュータは、
前記ファイル定義体と前記入力プログラムとを記憶している記憶部を備え、
前記変換プログラムは、
前記記憶部に記憶された前記ファイル定義体を参照することにより、前記目的プログラムがコンパイルされる際に前記目的プログラム中に複写されるテキストファイルであるコピー句を生成するコピー句生成ステップと、
前記記憶部に記憶された前記入力プログラムを読み出し、読み出した入力プログラムに含まれる前記複数の第一命令を特定し、特定した前記複数の第一命令のそれぞれを、同一の前記コピー句を用いて前記複数のデータファイルをそれぞれ定義する第二命令に書き換えることにより、前記入力プログラムを前記目的プログラムに変換するプログラム変換ステップとをコンピュータに実行させ、
前記コピー句生成ステップでは、前記ファイル定義体に格納されたすべてのデータ項目の項目名に対して一文字以上の同一の第二所定文字列と同一の前記区切り文字とを付加した新たな項目名を作成し、作成した新たな項目名と前記ファイル定義体に格納された項目属性とからなるデータ構造を定義する命令を生成することにより、前記コピー句を生成し、
前記プログラム変換ステップでは、前記コピー句に含まれる前記第二所定文字列を前記第一所定文字列に置換する置換命令を前記第一命令に追加することにより、前記第一命令のそれぞれを前記第二命令に書き換え、
前記第二所定文字列は、前記ファイル定義体に格納されたいずれの項目名にも含まれない文字列である
ことを特徴とする変換プログラム。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】００１８
【補正方法】変更
【補正の内容】
【００１８】
上記目的を達成するために、本発明に係るプログラム変換装置は、ファイル定義体を用いてデータファイルを定義する入力プログラムを、ファイル定義体を用いずにデータファイルを定義する目的プログラムへ変換するプログラム変換装置であって、前記入力プログラム及び前記目的プログラムは、ＣＯＢＯＬで記述され、前記データファイルは、一以上のデータ項目を有する一以上のレコードにより構成され、前記ファイル定義体には、前記データ項目の項目名と項目属性とが前記データ項目ごとに格納され、前記入力プログラムは、一つの前記ファイル定義体を用いて、項目属性が同じで項目名だけが互いに異なるデータ構造を有する複数のデータファイルをそれぞれ定義する複数の第一命令を含み、前記複数の第一命令のそれぞれは、前記ファイル定義体に格納されたすべてのデータ項目の項目名に対して、一文字以上の同一の第一所定文字列と予め定められた同一の区切り文字とを付加する付加命令を用いて、前記データファイルを定義する命令であり、前記第一所定文字列は、前記複数の第一命令のそれぞれで互いに異なる文字列であり、前記目的プログラムに用いられるＣＯＢＯＬは、前記付加命令を解釈することができないＣＯＢＯＬであり、前記プログラム変換装置は、前記ファイル定義体と前記入力プログラムとを記憶している記憶部と、前記記憶部に記憶された前記ファイル定義体を参照することにより、前記目的プログラムがコンパイルされる際に前記目的プログラム中に複写されるテキストファイルであるコピー句を生成するコピー句生成部と、前記記憶部に記憶された前記入力プログラムを読み出し、読み出した入力プログラムに含まれる前記複数の第一命令を特定し、特定した前記複数の第一命令のそれぞれを、同一の前記コピー句を用いて前記複数のデータファイルをそれぞれ定義する第二命令に書き換えることにより、前記入力プログラムを前記目的プログラムに変換するプログラム変換部とを備え、前記コピー句生成部は、前記ファイル定義体に格納されたすべてのデータ項目の項目名に対して一文字以上の同一の第二所定文字列と同一の前記区切り文字とを付加した新たな項目名を作成し、作成した新たな項目名と前記ファイル定義体に格納された項目属性とからなるデータ構造を定義する命令を生成することにより、前記コピー句を生成し、前記プログラム変換部は、前記コピー句に含まれる前記第二所定文字列を前記第一所定文字列に置換する置換命令を前記第一命令に追加することにより、前記第一命令のそれぞれを前記第二命令に書き換え、前記第二所定文字列は、前記ファイル定義体に格納されたいずれの項目名にも含まれない文字列であることを特徴とする。
つまり、本発明に係るプログラム変換装置は、第１高級プログラム言語で記述された入力プログラムを、第２高級プログラム言語で記述された目的プログラムへ変換するプログラム変換装置であって、データファイルを構成するデータ項目の項目名と項目属性とをデータ項目ごとに格納したファイル定義体と、前記入力プログラムとを記憶している記憶部と、前記ファイル定義体に格納された項目名に、所定の文字と区切り文字とを付加した新たな項目名を作成し、作成した新たな項目名と前記項目属性とを用いて、データファイルを定義する命令であるコピー句を生成するコピー句生成部と、前記ファイル定義体に格納された項目名と項目属性とを用いて、リレーショナルデータベースマネージメントシステムにおいてテーブルを作成するための命令であるテーブル定義を生成するテーブル定義生成部と、前記入力プログラム中の、前記ファイル定義体を用いてデータファイルを定義する部分を、前記コピー句を複写する命令と、複写した前記コピー句から前記所定の文字を置換する命令とを用いてデータファイルを定義するように修正することにより、前記入力プログラムを前記目的プログラムに変換するプログラム変換部とを備えることを特徴とする。
【手続補正書】
【提出日】平成21年1月7日(2009.1.7)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
ファイル定義体を用いてデータファイルを定義する入力プログラムを、ファイル定義体を用いずにデータファイルを定義する目的プログラムへ変換するプログラム変換装置であって、
前記入力プログラム及び前記目的プログラムは、ＣＯＢＯＬで記述され、
前記データファイルは、一以上のデータ項目を有する一以上のレコードにより構成され、
前記ファイル定義体には、前記データ項目の項目名と項目属性とが前記データ項目ごとに格納され、
前記入力プログラムは、一つの前記ファイル定義体を用いて、項目属性が同じで項目名だけが互いに異なるデータ構造を有する複数のデータファイルをそれぞれ定義する複数の第一命令を含み、
前記複数の第一命令のそれぞれは、前記ファイル定義体に格納されたすべてのデータ項目の項目名に対して、一文字以上の同一の第一所定文字列と予め定められた同一の区切り文字とを付加する付加命令を用いて、前記データファイルを定義する命令であり、
前記第一所定文字列は、前記複数の第一命令のそれぞれで互いに異なる文字列であり、
前記目的プログラムに用いられるＣＯＢＯＬは、前記付加命令を解釈することができないＣＯＢＯＬであり、
前記プログラム変換装置は、
前記ファイル定義体と前記入力プログラムとを記憶している記憶部と、
前記記憶部に記憶された前記ファイル定義体を参照することにより、前記目的プログラムがコンパイルされる際に前記目的プログラム中に複写されるテキストファイルであるコピー句を生成するコピー句生成部と、
前記記憶部に記憶された前記入力プログラムを読み出し、読み出した入力プログラムに含まれる前記複数の第一命令を特定し、特定した前記複数の第一命令のそれぞれを、前記複数のデータファイルのそれぞれを定義する第二命令に書き換えることにより、前記入力プログラムを前記目的プログラムに変換するプログラム変換部と、
前記コピー句生成部により生成されたコピー句と、前記プログラム変換部により変換された目的プログラムとを出力する出力部とを備え、
前記コピー句生成部は、前記ファイル定義体に格納されたすべてのデータ項目の項目名に対して一文字以上の同一の第二所定文字列と同一の前記区切り文字とを付加した新たな項目名を作成し、作成した新たな項目名と前記ファイル定義体に格納された項目属性とからなるデータ構造を定義する命令を生成することにより、前記コピー句を生成し、
前記プログラム変換部は、前記コピー句に含まれる前記第二所定文字列を前記第一所定文字列に置換する置換命令を前記第一命令に追加することにより、前記第一命令のそれぞれを前記第二命令に書き換え、
前記第二命令は、前記目的プログラムがコンパイルされる際に同一の前記コピー句を前記目的プログラム中の当該第二命令が記載された箇所に複写することにより前記複数のデータファイルのそれぞれを定義する命令であり、
前記第二所定文字列は、前記ファイル定義体に格納されたいずれの項目名にも含まれない文字列である
ことを特徴とするプログラム変換装置。
【請求項２】
前記付加命令は、前記ファイル定義体に格納された項目名の前方である左端に文字を付加するのか、又は、後方である右端に文字を付加するのかを決定する方向決定命令を含み、
前記コピー句生成部は、前記記憶部に記憶された入力プログラムを参照することにより、前記方向決定命令を特定し、特定した前記方向決定命令が示す方向と同一の方向から前記第二所定文字列と前記区切り文字とを付加した前記新たな項目名を作成する
ことを特徴とする請求項１に記載のプログラム変換装置。
【請求項３】
ファイル定義体を用いてデータファイルを定義する入力プログラムを、ファイル定義体を用いずにデータファイルを定義する目的プログラムへコンピュータが変換するプログラム変換方法であって、
前記入力プログラム及び前記目的プログラムは、ＣＯＢＯＬで記述され、
前記データファイルは、一以上のデータ項目を有する一以上のレコードにより構成され、
前記ファイル定義体には、前記データ項目の項目名と項目属性とが前記データ項目ごとに格納され、
前記入力プログラムは、一つの前記ファイル定義体を用いて、項目属性が同じで項目名だけが互いに異なるデータ構造を有する複数のデータファイルをそれぞれ定義する複数の第一命令を含み、
前記複数の第一命令のそれぞれは、前記ファイル定義体に格納されたすべてのデータ項目の項目名に対して、一文字以上の同一の第一所定文字列と予め定められた同一の区切り文字とを付加する付加命令を用いて、前記データファイルを定義する命令であり、
前記第一所定文字列は、前記複数の第一命令のそれぞれで互いに異なる文字列であり、
前記目的プログラムに用いられるＣＯＢＯＬは、前記付加命令を解釈することができないＣＯＢＯＬであり、
前記コンピュータは、
前記ファイル定義体と前記入力プログラムとを記憶している記憶部を備え、
前記プログラム変換方法は、
前記コンピュータが、前記記憶部に記憶された前記ファイル定義体を参照することにより、前記目的プログラムがコンパイルされる際に前記目的プログラム中に複写されるテキストファイルであるコピー句を生成するコピー句生成ステップと、
前記コンピュータが、前記記憶部に記憶された前記入力プログラムを読み出し、読み出した入力プログラムに含まれる前記複数の第一命令を特定し、特定した前記複数の第一命令のそれぞれを、前記複数のデータファイルのそれぞれを定義する第二命令に書き換えることにより、前記入力プログラムを前記目的プログラムに変換するプログラム変換ステップと、
前記コピー句生成ステップにおいて生成されたコピー句と、前記プログラム変換ステップにおいて変換された目的プログラムとを出力する出力ステップとを含み、
前記コピー句生成ステップでは、前記コンピュータが、前記ファイル定義体に格納されたすべてのデータ項目の項目名に対して一文字以上の同一の第二所定文字列と同一の前記区切り文字とを付加した新たな項目名を作成し、作成した新たな項目名と前記ファイル定義体に格納された項目属性とからなるデータ構造を定義する命令を生成することにより、前記コピー句を生成し、
前記プログラム変換ステップでは、前記コンピュータが、前記コピー句に含まれる前記第二所定文字列を前記第一所定文字列に置換する置換命令を前記第一命令に追加することにより、前記第一命令のそれぞれを前記第二命令に書き換え、
前記第二命令は、前記目的プログラムがコンパイルされる際に同一の前記コピー句を前記目的プログラム中の当該第二命令が記載された箇所に複写することにより前記複数のデータファイルのそれぞれを定義する命令であり、
前記第二所定文字列は、前記ファイル定義体に格納されたいずれの項目名にも含まれない文字列である
ことを特徴とするプログラム変換方法。
【請求項４】
ファイル定義体を用いてデータファイルを定義する入力プログラムを、ファイル定義体を用いずにデータファイルを定義する目的プログラムへ変換するコンピュータ実行可能な変換プログラムであって、
前記入力プログラム及び前記目的プログラムは、ＣＯＢＯＬで記述され、
前記データファイルは、一以上のデータ項目を有する一以上のレコードにより構成され、
前記ファイル定義体には、前記データ項目の項目名と項目属性とが前記データ項目ごとに格納され、
前記入力プログラムは、一つの前記ファイル定義体を用いて、項目属性が同じで項目名だけが互いに異なるデータ構造を有する複数のデータファイルをそれぞれ定義する複数の第一命令を含み、
前記複数の第一命令のそれぞれは、前記ファイル定義体に格納されたすべてのデータ項目の項目名に対して、一文字以上の同一の第一所定文字列と予め定められた同一の区切り文字とを付加する付加命令を用いて、前記データファイルを定義する命令であり、
前記第一所定文字列は、前記複数の第一命令のそれぞれで互いに異なる文字列であり、
前記目的プログラムに用いられるＣＯＢＯＬは、前記付加命令を解釈することができないＣＯＢＯＬであり、
前記コンピュータは、
前記ファイル定義体と前記入力プログラムとを記憶している記憶部を備え、
前記変換プログラムは、
前記記憶部に記憶された前記ファイル定義体を参照することにより、前記目的プログラムがコンパイルされる際に前記目的プログラム中に複写されるテキストファイルであるコピー句を生成するコピー句生成ステップと、
前記記憶部に記憶された前記入力プログラムを読み出し、読み出した入力プログラムに含まれる前記複数の第一命令を特定し、特定した前記複数の第一命令のそれぞれを、前記複数のデータファイルのそれぞれを定義する第二命令に書き換えることにより、前記入力プログラムを前記目的プログラムに変換するプログラム変換ステップと、
前記コピー句生成ステップにおいて生成されたコピー句と、前記プログラム変換ステップにおいて変換された目的プログラムとを出力する出力ステップとをコンピュータに実行させ、
前記コピー句生成ステップでは、前記ファイル定義体に格納されたすべてのデータ項目の項目名に対して一文字以上の同一の第二所定文字列と同一の前記区切り文字とを付加した新たな項目名を作成し、作成した新たな項目名と前記ファイル定義体に格納された項目属性とからなるデータ構造を定義する命令を生成することにより、前記コピー句を生成し、
前記プログラム変換ステップでは、前記コピー句に含まれる前記第二所定文字列を前記第一所定文字列に置換する置換命令を前記第一命令に追加することにより、前記第一命令のそれぞれを前記第二命令に書き換え、
前記第二命令は、前記目的プログラムがコンパイルされる際に同一の前記コピー句を前記目的プログラム中の当該第二命令が記載された箇所に複写することにより前記複数のデータファイルのそれぞれを定義する命令であり、
前記第二所定文字列は、前記ファイル定義体に格納されたいずれの項目名にも含まれない文字列である
ことを特徴とする変換プログラム。
【手続補正書】
【提出日】平成21年6月11日(2009.6.11)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
第１ＣＯＢＯＬで記述された入力ソースプログラムを、第２ＣＯＢＯＬで記述された出力ソースプログラムへ変換するコンピュータ実行可能なプログラムであって、
前記第１ＣＯＢＯＬは、データファイルのデータ構造を定義するファイル定義句において、ファイル定義体に格納された項目名及び項目属性によって特定されるデータ構造を前記ファイル定義体を用いて定義する命令である第１「ＣＯＰＹ」命令とともに、前記項目名に付加文字列及び区切り文字を付加する命令である「ＪＯＩＮＩＮＧ」命令を用いることにより、前記ファイル定義体に格納された項目名に付加文字列及び区切り文字が付加された付加項目名と前記ファイル定義体に格納された項目属性とによって特定されるデータ構造を定義することが可能な言語であり、
前記第２ＣＯＢＯＬは、前記ファイル定義句において、前記第１「ＣＯＰＹ」命令とともに前記「ＪＯＩＮＩＮＧ」命令のみを用いることが不可能な言語であり、
前記コンピュータは、
データファイルのデータ構造を特定するための項目名及び項目属性が格納された前記ファイル定義体と前記入力ソースプログラムとを記憶している記憶部を備え、
前記プログラムは、
前記記憶部に記憶されたファイル定義体に格納された項目名及び項目属性を読み出し、読み出した項目名と、当該項目名と重複しない文字列であるダミー文字列及び区切り文字とからなるダミー項目名を生成し、生成したダミー項目名と読み出した項目属性とによって特定されるデータ構造を定義するソースプログラムをコピー句として生成するコピー句生成ステップと、
前記記憶部に記憶された入力ソースプログラムを読み出し、読み出した入力ソースプログラムに含まれるファイル定義句において、前記第１「ＣＯＰＹ」命令を、前記コピー句をソースプログラムの一部として取り込む命令である第２「ＣＯＰＹ」命令に変換し、かつ、前記「ＪＯＩＮＩＮＧ」命令とともに用いることにより前記ダミー文字列を前記付加文字列に置換する命令となる「ＤＩＳＪＯＩＮＩＮＧ」命令を前記第２「ＣＯＰＹ」命令と前記「ＪＯＩＮＩＮＧ」命令との間に挿入することにより、前記出力ソースプログラムを生成するプログラム変換ステップと、
前記コピー句生成ステップにおいて生成された前記コピー句と、前記プログラム変換ステップにおいて生成された前記出力ソースプログラムとを出力する出力ステップとを前記コンピュータに実行させる
プログラム。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】０００１
【補正方法】変更
【補正の内容】
【０００１】
本発明は、第１高級プログラム言語である第１ＣＯＢＯＬで記述された入力ソースプログラム（以下、入力プログラムという。）を、第２高級プログラム言語である第２ＣＯＢＯＬで記述された出力ソースプログラム（以下、目的プログラムという。）へ変換するプログラムに関する。
【手続補正４】
【補正対象書類名】明細書
【補正対象項目名】０００４
【補正方法】変更
【補正の内容】
【０００４】
一般的に、レガシーシステムでは、ＯＳを提供するベンダーが独自に開発した拡張命令を有する高級言語を用いて、システムが構築されていることが多い。一方、オープンプラットフォームで構築されるシステムでは、ベンダーが独自に開発した拡張命令は利用できない。したがって、レガシーマイグレーションでは、ベンダーが独自に開発した拡張命令を、オープンプラットフォームにおいて利用可能な命令に変換することが必要となる。
具体的には、ファイル定義句において、ＣＯＰＹ命令とともにＪＯＩＮＩＮＧ命令のみを用いることができる第１ＣＯＢＯＬを用いて構築されたレガシーシステムの場合、ＣＯＰＹ命令とともにＪＯＩＮＩＮＧ命令のみを用いることができない第２ＣＯＢＯＬで利用可能な命令に変換することが必要となる。
【手続補正５】
【補正対象書類名】明細書
【補正対象項目名】０００９
【補正方法】変更
【補正の内容】
【０００９】
例えば、レガシーシステムにおいて、項目名、属性等を含むデータ構造をテーブル形式
で格納するファイル定義体を利用してデータファイルを定義しているプログラムがあったとする。このようなファイル定義体を利用するための命令は、オフコン等を提供するベンダー独自の拡張命令である。したがって、レガシーシステムのプログラムにおいて、ファイル定義体を利用するための命令とファイル定義体とを、オープンプラットフォームにおいて利用可能な命令とデータファイルの定義とに変換する必要がある。以下に、ファイル定義句において、ＣＯＰＹ命令とともにＪＯＩＮＩＮＧ命令のみを用いることができる第１ＣＯＢＯＬから、ＣＯＰＹ命令とともにＪＯＩＮＩＮＧ命令のみを用いることができない第２ＣＯＢＯＬに変換する、従来のプログラム変換の具体例について、図面を用いて説明する。
【手続補正６】
【補正対象書類名】明細書
【補正対象項目名】００１７
【補正方法】変更
【補正の内容】
【００１７】
そこで、本発明は、上記課題を解決するものであって、レガシーシステムのプログラムにおいて、オフコン等を提供するベンダーが独自に開発した拡張機能を利用してデータファイルが定義されている場合、レガシーシステムをオープンプラットフォームへ移管するためのプログラム変換を効率的に実行することができる装置、プログラム等を提供することを目的とする。
特に、ファイル定義句において、ＣＯＰＹ命令とともにＪＯＩＮＩＮＧ命令のみを用いることができる第１ＣＯＢＯＬで記述されたソースプログラムから、ＣＯＰＹ命令とともにＪＯＩＮＩＮＧ命令のみを用いることができない第２ＣＯＢＯＬで記述されたソースプログラムに変換する場合に、プログラム変換を効率的に実行することができるプログラムを提供することを目的とする。
【手続補正７】
【補正対象書類名】明細書
【補正対象項目名】００１８
【補正方法】変更
【補正の内容】
【００１８】
上記目的を達成するために、本発明に係るプログラムは、第１ＣＯＢＯＬで記述された入力ソースプログラムを、第２ＣＯＢＯＬで記述された出力ソースプログラムへ変換するコンピュータ実行可能なプログラムであって、前記第１ＣＯＢＯＬは、データファイルのデータ構造を定義するファイル定義句において、ファイル定義体に格納された項目名及び項目属性によって特定されるデータ構造を前記ファイル定義体を用いて定義する命令である第１「ＣＯＰＹ」命令とともに、前記項目名に付加文字列及び区切り文字を付加する命令である「ＪＯＩＮＩＮＧ」命令を用いることにより、前記ファイル定義体に格納された項目名に付加文字列及び区切り文字が付加された付加項目名と前記ファイル定義体に格納された項目属性とによって特定されるデータ構造を定義することが可能な言語であり、前記第２ＣＯＢＯＬは、前記ファイル定義句において、前記第１「ＣＯＰＹ」命令とともに前記「ＪＯＩＮＩＮＧ」命令のみを用いることが不可能な言語であり、前記コンピュータは、データファイルのデータ構造を特定するための項目名及び項目属性が格納された前記ファイル定義体と前記入力ソースプログラムとを記憶している記憶部を備え、前記プログラムは、前記記憶部に記憶されたファイル定義体に格納された項目名及び項目属性を読み出し、読み出した項目名とダミー文字列及び区切り文字とからなるダミー項目名を生成し、生成したダミー項目名と読み出した項目属性とによって特定されるデータ構造を定義するソースプログラムをコピー句として生成するコピー句生成ステップと、前記記憶部に記憶された入力ソースプログラムを読み出し、読み出した入力ソースプログラムに含まれるファイル定義句において、前記第１「ＣＯＰＹ」命令を、前記コピー句をソースプログラムの一部として取り込む命令である第２「ＣＯＰＹ」命令に変換し、かつ、前記「ＪＯＩＮＩＮＧ」命令とともに用いることにより前記ダミー文字列を前記付加文字列に置換する命令となる「ＤＩＳＪＯＩＮＩＮＧ」命令を前記第２「ＣＯＰＹ」命令と前記「ＪＯＩＮＩＮＧ」命令との間に挿入することにより、前記出力ソースプログラムを生成するプログラム変換ステップと、前記コピー句生成ステップにおいて生成された前記コピー句と、前記プログラム変換ステップにおいて生成された前記出力ソースプログラムとを出力する出力ステップとを前記コンピュータに実行させる。
また、上記目的を達成するために、本発明に係るプログラム変換装置は、ファイル定義体を用いてデータファイルを定義する入力プログラムを、ファイル定義体を用いずにデータファイルを定義する目的プログラムへ変換するプログラム変換装置であって、前記入力プログラム及び前記目的プログラムは、ＣＯＢＯＬで記述され、前記データファイルは、一以上のデータ項目を有する一以上のレコードにより構成され、前記ファイル定義体には、前記データ項目の項目名と項目属性とが前記データ項目ごとに格納され、前記入力プログラムは、一つの前記ファイル定義体を用いて、項目属性が同じで項目名だけが互いに異なるデータ構造を有する複数のデータファイルをそれぞれ定義する複数の第一命令を含み、前記複数の第一命令のそれぞれは、前記ファイル定義体に格納されたすべてのデータ項目の項目名に対して、一文字以上の同一の第一所定文字列と予め定められた同一の区切り文字とを付加する付加命令を用いて、前記データファイルを定義する命令であり、前記第一所定文字列は、前記複数の第一命令のそれぞれで互いに異なる文字列であり、前記目的プログラムに用いられるＣＯＢＯＬは、前記付加命令を解釈することができないＣＯＢＯＬであり、前記プログラム変換装置は、前記ファイル定義体と前記入力プログラムとを記憶している記憶部と、前記記憶部に記憶された前記ファイル定義体を参照することにより、前記目的プログラムがコンパイルされる際に前記目的プログラム中に複写されるテキストファイルであるコピー句を生成するコピー句生成部と、前記記憶部に記憶された前記入力プログラムを読み出し、読み出した入力プログラムに含まれる前記複数の第一命令を特定し、特定した前記複数の第一命令のそれぞれを、同一の前記コピー句を用いて前記複数のデータファイルをそれぞれ定義する第二命令に書き換えることにより、前記入力プログラムを前記目的プログラムに変換するプログラム変換部とを備え、前記コピー句生成部は、前記ファイル定義体に格納されたすべてのデータ項目の項目名に対して一文字以上の同一の第二所定文字列と同一の前記区切り文字とを付加した新たな項目名を作成し、作成した新たな項目名と前記ファイル定義体に格納された項目属性とからなるデータ構造を定義する命令を生成することにより、前記コピー句を生成し、前記プログラム変換部は、前記コピー句に含まれる前記第二所定文字列を前記第一所定文字列に置換する置換命令を前記第一命令に追加することにより、前記第一命令のそれぞれを前記第二命令に書き換え、前記第二所定文字列は、前記ファイル定義体に格納されたいずれの項目名にも含まれない文字列であることを特徴とする。
つまり、本発明に係るプログラム変換装置は、第１高級プログラム言語で記述された入力プログラムを、第２高級プログラム言語で記述された目的プログラムへ変換するプログラム変換装置であって、データファイルを構成するデータ項目の項目名と項目属性とをデータ項目ごとに格納したファイル定義体と、前記入力プログラムとを記憶している記憶部と、前記ファイル定義体に格納された項目名に、所定の文字と区切り文字とを付加した新たな項目名を作成し、作成した新たな項目名と前記項目属性とを用いて、データファイルを定義する命令であるコピー句を生成するコピー句生成部と、前記ファイル定義体に格納された項目名と項目属性とを用いて、リレーショナルデータベースマネージメントシステムにおいてテーブルを作成するための命令であるテーブル定義を生成するテーブル定義生成部と、前記入力プログラム中の、前記ファイル定義体を用いてデータファイルを定義する部分を、前記コピー句を複写する命令と、複写した前記コピー句から前記所定の文字を置換する命令とを用いてデータファイルを定義するように修正することにより、前記入力プログラムを前記目的プログラムに変換するプログラム変換部とを備えることを特徴とする。
【手続補正８】
【補正対象書類名】明細書
【補正対象項目名】００３８
【補正方法】変更
【補正の内容】
【００３８】
なお、コピー句とは、ソースコードとは別に、予め作成しておいたテキストデータファイルのことをいう。ソースコードがコンパイルされる時に、ソースコード中の「ＣＯＰＹ」命令に従って、コピー句に記述された内容がソースコードの中へ複写される。つまり、コピー句は、ソースプログラム中の「ＣＯＰＹ」命令が記載された位置に、ソースプログラムの一部として取り込まれる文字列である。
【手続補正書】
【提出日】平成21年7月21日(2009.7.21)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
第１ＣＯＢＯＬで記述された入力ソースプログラムを、第２ＣＯＢＯＬで記述された出力ソースプログラムへ変換するコンピュータ実行可能なプログラムであって、
前記第１ＣＯＢＯＬは、データファイルのデータ構造を定義するファイル節において、ファイル定義体に格納された項目名及び項目属性によって特定されるデータ構造を前記ファイル定義体を用いて定義する命令である第１「ＣＯＰＹ」命令とともに、前記項目名に付加文字列及び区切り文字を付加する命令である「ＪＯＩＮＩＮＧ」命令を用いることにより、前記ファイル定義体に格納された項目名に付加文字列及び区切り文字が付加された付加項目名と前記ファイル定義体に格納された項目属性とによって特定されるデータ構造を定義することが可能な言語であり、
前記第２ＣＯＢＯＬは、前記ファイル節において、前記第１「ＣＯＰＹ」命令とともに前記「ＪＯＩＮＩＮＧ」命令のみを用いることが不可能な言語であり、
前記コンピュータは、
データファイルのデータ構造を特定するための項目名及び項目属性が格納された前記ファイル定義体と前記入力ソースプログラムとを記憶している記憶部を備え、
前記プログラムは、
前記記憶部に記憶されたファイル定義体に格納された項目名及び項目属性を読み出し、読み出した項目名と、当該項目名と重複しない文字列であるダミー文字列及び区切り文字とからなるダミー項目名を生成し、生成したダミー項目名と読み出した項目属性とによって特定されるデータ構造を定義するテキストデータであって、ソースプログラムの一部として取り込まれるためのテキストデータであるコピー句を生成するコピー句生成ステップと、
前記記憶部に記憶された入力ソースプログラムを読み出し、読み出した入力ソースプログラムに含まれるファイル節において、前記第１「ＣＯＰＹ」命令を、前記コピー句をソースプログラムの一部として取り込む命令である第２「ＣＯＰＹ」命令に変換し、かつ、前記「ＪＯＩＮＩＮＧ」命令とともに用いることにより前記ダミー文字列を前記付加文字列に置換する命令となる「ＤＩＳＪＯＩＮＩＮＧ」命令を前記第２「ＣＯＰＹ」命令と前記「ＪＯＩＮＩＮＧ」命令との間に挿入することにより、前記出力ソースプログラムを生成するプログラム変換ステップと、
前記コピー句生成ステップにおいて生成された前記コピー句と、前記プログラム変換ステップにおいて生成された前記出力ソースプログラムとを出力する出力ステップとを前記コンピュータに実行させる
プログラム。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】０００４
【補正方法】変更
【補正の内容】
【０００４】
一般的に、レガシーシステムでは、ＯＳを提供するベンダーが独自に開発した拡張命令を有する高級言語を用いて、システムが構築されていることが多い。一方、オープンプラットフォームで構築されるシステムでは、ベンダーが独自に開発した拡張命令は利用できない。したがって、レガシーマイグレーションでは、ベンダーが独自に開発した拡張命令を、オープンプラットフォームにおいて利用可能な命令に変換することが必要となる。
具体的には、ファイル節において、ＣＯＰＹ命令とともにＪＯＩＮＩＮＧ命令のみを用いることができる第１ＣＯＢＯＬを用いて構築されたレガシーシステムの場合、ＣＯＰＹ命令とともにＪＯＩＮＩＮＧ命令のみを用いることができない第２ＣＯＢＯＬで利用可能な命令に変換することが必要となる。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】０００９
【補正方法】変更
【補正の内容】
【０００９】
例えば、レガシーシステムにおいて、項目名、属性等を含むデータ構造をテーブル形式で格納するファイル定義体を利用してデータファイルを定義しているプログラムがあったとする。このようなファイル定義体を利用するための命令は、オフコン等を提供するベンダー独自の拡張命令である。したがって、レガシーシステムのプログラムにおいて、ファイル定義体を利用するための命令とファイル定義体とを、オープンプラットフォームにおいて利用可能な命令とデータファイルの定義とに変換する必要がある。以下に、ファイル節において、ＣＯＰＹ命令とともにＪＯＩＮＩＮＧ命令のみを用いることができる第１ＣＯＢＯＬから、ＣＯＰＹ命令とともにＪＯＩＮＩＮＧ命令のみを用いることができない第２ＣＯＢＯＬに変換する、従来のプログラム変換の具体例について、図面を用いて説明する。
【手続補正４】
【補正対象書類名】明細書
【補正対象項目名】００１７
【補正方法】変更
【補正の内容】
【００１７】
そこで、本発明は、上記課題を解決するものであって、レガシーシステムのプログラムにおいて、オフコン等を提供するベンダーが独自に開発した拡張機能を利用してデータファイルが定義されている場合、レガシーシステムをオープンプラットフォームへ移管するためのプログラム変換を効率的に実行することができる装置、プログラム等を提供することを目的とする。
特に、ファイル節において、ＣＯＰＹ命令とともにＪＯＩＮＩＮＧ命令のみを用いることができる第１ＣＯＢＯＬで記述されたソースプログラムから、ＣＯＰＹ命令とともにＪＯＩＮＩＮＧ命令のみを用いることができない第２ＣＯＢＯＬで記述されたソースプログラムに変換する場合に、プログラム変換を効率的に実行することができるプログラムを提供することを目的とする。
【手続補正５】
【補正対象書類名】明細書
【補正対象項目名】００１８
【補正方法】変更
【補正の内容】
【００１８】
上記目的を達成するために、本発明に係るプログラムは、第１ＣＯＢＯＬで記述された入力ソースプログラムを、第２ＣＯＢＯＬで記述された出力ソースプログラムへ変換するコンピュータ実行可能なプログラムであって、前記第１ＣＯＢＯＬは、データファイルのデータ構造を定義するファイル節において、ファイル定義体に格納された項目名及び項目属性によって特定されるデータ構造を前記ファイル定義体を用いて定義する命令である第１「ＣＯＰＹ」命令とともに、前記項目名に付加文字列及び区切り文字を付加する命令である「ＪＯＩＮＩＮＧ」命令を用いることにより、前記ファイル定義体に格納された項目名に付加文字列及び区切り文字が付加された付加項目名と前記ファイル定義体に格納された項目属性とによって特定されるデータ構造を定義することが可能な言語であり、前記第２ＣＯＢＯＬは、前記ファイル節において、前記第１「ＣＯＰＹ」命令とともに前記「ＪＯＩＮＩＮＧ」命令のみを用いることが不可能な言語であり、前記コンピュータは、データファイルのデータ構造を特定するための項目名及び項目属性が格納された前記ファイル定義体と前記入力ソースプログラムとを記憶している記憶部を備え、前記プログラムは、前記記憶部に記憶されたファイル定義体に格納された項目名及び項目属性を読み出し、読み出した項目名とダミー文字列及び区切り文字とからなるダミー項目名を生成し、生成したダミー項目名と読み出した項目属性とによって特定されるデータ構造を定義するテキストデータであって、ソースプログラムの一部として取り込まれるためのテキストデータであるコピー句を生成するコピー句生成ステップと、前記記憶部に記憶された入力ソースプログラムを読み出し、読み出した入力ソースプログラムに含まれるファイル節において、前記第１「ＣＯＰＹ」命令を、前記コピー句をソースプログラムの一部として取り込む命令である第２「ＣＯＰＹ」命令に変換し、かつ、前記「ＪＯＩＮＩＮＧ」命令とともに用いることにより前記ダミー文字列を前記付加文字列に置換する命令となる「ＤＩＳＪＯＩＮＩＮＧ」命令を前記第２「ＣＯＰＹ」命令と前記「ＪＯＩＮＩＮＧ」命令との間に挿入することにより、前記出力ソースプログラムを生成するプログラム変換ステップと、前記コピー句生成ステップにおいて生成された前記コピー句と、前記プログラム変換ステップにおいて生成された前記出力ソースプログラムとを出力する出力ステップとを前記コンピュータに実行させる。
また、上記目的を達成するために、本発明に係るプログラム変換装置は、ファイル定義体を用いてデータファイルを定義する入力プログラムを、ファイル定義体を用いずにデータファイルを定義する目的プログラムへ変換するプログラム変換装置であって、前記入力プログラム及び前記目的プログラムは、ＣＯＢＯＬで記述され、前記データファイルは、一以上のデータ項目を有する一以上のレコードにより構成され、前記ファイル定義体には、前記データ項目の項目名と項目属性とが前記データ項目ごとに格納され、前記入力プログラムは、一つの前記ファイル定義体を用いて、項目属性が同じで項目名だけが互いに異なるデータ構造を有する複数のデータファイルをそれぞれ定義する複数の第一命令を含み、前記複数の第一命令のそれぞれは、前記ファイル定義体に格納されたすべてのデータ項目の項目名に対して、一文字以上の同一の第一所定文字列と予め定められた同一の区切り文字とを付加する付加命令を用いて、前記データファイルを定義する命令であり、前記第一所定文字列は、前記複数の第一命令のそれぞれで互いに異なる文字列であり、前記目的プログラムに用いられるＣＯＢＯＬは、前記付加命令を解釈することができないＣＯＢＯＬであり、前記プログラム変換装置は、前記ファイル定義体と前記入力プログラムとを記憶している記憶部と、前記記憶部に記憶された前記ファイル定義体を参照することにより、前記目的プログラムがコンパイルされる際に前記目的プログラム中に複写されるテキストファイルであるコピー句を生成するコピー句生成部と、前記記憶部に記憶された前記入力プログラムを読み出し、読み出した入力プログラムに含まれる前記複数の第一命令を特定し、特定した前記複数の第一命令のそれぞれを、同一の前記コピー句を用いて前記複数のデータファイルをそれぞれ定義する第二命令に書き換えることにより、前記入力プログラムを前記目的プログラムに変換するプログラム変換部とを備え、前記コピー句生成部は、前記ファイル定義体に格納されたすべてのデータ項目の項目名に対して一文字以上の同一の第二所定文字列と同一の前記区切り文字とを付加した新たな項目名を作成し、作成した新たな項目名と前記ファイル定義体に格納された項目属性とからなるデータ構造を定義する命令を生成することにより、前記コピー句を生成し、前記プログラム変換部は、前記コピー句に含まれる前記第二所定文字列を前記第一所定文字列に置換する置換命令を前記第一命令に追加することにより、前記第一命令のそれぞれを前記第二命令に書き換え、前記第二所定文字列は、前記ファイル定義体に格納されたいずれの項目名にも含まれない文字列であることを特徴とする。
つまり、本発明に係るプログラム変換装置は、第１高級プログラム言語で記述された入力プログラムを、第２高級プログラム言語で記述された目的プログラムへ変換するプログラム変換装置であって、データファイルを構成するデータ項目の項目名と項目属性とをデータ項目ごとに格納したファイル定義体と、前記入力プログラムとを記憶している記憶部と、前記ファイル定義体に格納された項目名に、所定の文字と区切り文字とを付加した新たな項目名を作成し、作成した新たな項目名と前記項目属性とを用いて、データファイルを定義する命令であるコピー句を生成するコピー句生成部と、前記ファイル定義体に格納された項目名と項目属性とを用いて、リレーショナルデータベースマネージメントシステムにおいてテーブルを作成するための命令であるテーブル定義を生成するテーブル定義生成部と、前記入力プログラム中の、前記ファイル定義体を用いてデータファイルを定義する部分を、前記コピー句を複写する命令と、複写した前記コピー句から前記所定の文字を置換する命令とを用いてデータファイルを定義するように修正することにより、前記入力プログラムを前記目的プログラムに変換するプログラム変換部とを備えることを特徴とする。
【手続補正書】
【提出日】平成21年9月24日(2009.9.24)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
第１ＣＯＢＯＬで記述された入力ソースプログラムを、第２ＣＯＢＯＬで記述された出力ソースプログラムへ変換するコンピュータ実行可能なプログラムであって、
前記第１ＣＯＢＯＬは、データファイルのデータ構造を定義するファイル節において、ファイル定義体を呼び出す命令である第１「ＣＯＰＹ」命令とともに、前記項目名に付加文字列及び区切り文字を付加する命令である「ＪＯＩＮＩＮＧ」命令を用いることにより、前記ファイル定義体に格納された項目名に付加文字列及び区切り文字が付加された付加項目名と前記ファイル定義体に格納された項目属性とによって特定されるデータ構造を定義することが可能な言語であり、
前記第２ＣＯＢＯＬは、前記ファイル節において、前記第１「ＣＯＰＹ」命令とともに前記「ＪＯＩＮＩＮＧ」命令のみを用いることが不可能な言語であり、
前記入力ソースプログラムには、第１「ＣＯＰＹ」命令と、当該第１「ＣＯＰＹ」命令に続いて記載された「ＪＯＩＮＩＮＧ」命令とが含まれ、
前記コンピュータは、
データファイルのデータ構造を特定するための項目名及び項目属性が格納されたファイル定義体と前記入力ソースプログラムとを記憶している記憶部を備え、
前記プログラムは、
前記記憶部に記憶されたファイル定義体に格納された項目名及び項目属性を読み出し、読み出した項目名と、当該項目名と重複しない文字列であるダミー文字列及び区切り文字とからなるダミー項目名を生成し、生成したダミー項目名と読み出した項目属性とによって特定されるデータ構造を定義するテキストデータであって、ソースプログラムの一部として取り込まれるためのテキストデータであるコピー句を生成するコピー句生成ステップと、
前記記憶部に記憶された入力ソースプログラムを読み出し、読み出した入力ソースプログラムに含まれるファイル節における前記第１「ＣＯＰＹ」命令を特定し、特定した前記第１「ＣＯＰＹ」命令の登録集名を当該登録集名とは異なる登録集名に変更することにより、前記第１「ＣＯＰＹ」命令を、前記コピー句をソースプログラムの一部として取り込む命令である第２「ＣＯＰＹ」命令に変換し、かつ、前記「ＪＯＩＮＩＮＧ」命令とともに用いることにより前記ダミー文字列を前記付加文字列に置換する命令となる「ＤＩＳＪＯＩＮＩＮＧ」命令を前記第２「ＣＯＰＹ」命令と前記「ＪＯＩＮＩＮＧ」命令との間に挿入することにより、前記出力ソースプログラムを生成するプログラム変換ステップと、
前記コピー句生成ステップにおいて生成された前記コピー句と、前記プログラム変換ステップにおいて生成された前記出力ソースプログラムとを出力する出力ステップとを前記コンピュータに実行させる
プログラム。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】００１８
【補正方法】変更
【補正の内容】
【００１８】
上記目的を達成するために、本発明に係るプログラムは、第１ＣＯＢＯＬで記述された入力ソースプログラムを、第２ＣＯＢＯＬで記述された出力ソースプログラムへ変換するコンピュータ実行可能なプログラムであって、前記第１ＣＯＢＯＬは、データファイルのデータ構造を定義するファイル節において、ファイル定義体を呼び出す命令である第１「ＣＯＰＹ」命令とともに、前記項目名に付加文字列及び区切り文字を付加する命令である「ＪＯＩＮＩＮＧ」命令を用いることにより、前記ファイル定義体に格納された項目名に付加文字列及び区切り文字が付加された付加項目名と前記ファイル定義体に格納された項目属性とによって特定されるデータ構造を定義することが可能な言語であり、前記第２ＣＯＢＯＬは、前記ファイル節において、前記第１「ＣＯＰＹ」命令とともに前記「ＪＯＩＮＩＮＧ」命令のみを用いることが不可能な言語であり、前記入力ソースプログラムには、第１「ＣＯＰＹ」命令と、当該第１「ＣＯＰＹ」命令に続いて記載された「ＪＯＩＮＩＮＧ」命令とが含まれ、前記コンピュータは、データファイルのデータ構造を特定するための項目名及び項目属性が格納されたファイル定義体と前記入力ソースプログラムとを記憶している記憶部を備え、前記プログラムは、前記記憶部に記憶されたファイル定義体に格納された項目名及び項目属性を読み出し、読み出した項目名とダミー文字列及び区切り文字とからなるダミー項目名を生成し、生成したダミー項目名と読み出した項目属性とによって特定されるデータ構造を定義するテキストデータであって、ソースプログラムの一部として取り込まれるためのテキストデータであるコピー句を生成するコピー句生成ステップと、前記記憶部に記憶された入力ソースプログラムを読み出し、読み出した入力ソースプログラムに含まれるファイル節における前記第１「ＣＯＰＹ」命令を特定し、特定した前記第１「ＣＯＰＹ」命令の登録集名を当該登録集名とは異なる登録集名に変更することにより、前記第１「ＣＯＰＹ」命令を、前記コピー句をソースプログラムの一部として取り込む命令である第２「ＣＯＰＹ」命令に変換し、かつ、前記「ＪＯＩＮＩＮＧ」命令とともに用いることにより前記ダミー文字列を前記付加文字列に置換する命令となる「ＤＩＳＪＯＩＮＩＮＧ」命令を前記第２「ＣＯＰＹ」命令と前記「ＪＯＩＮＩＮＧ」命令との間に挿入することにより、前記出力ソースプログラムを生成するプログラム変換ステップと、前記コピー句生成ステップにおいて生成された前記コピー句と、前記プログラム変換ステップにおいて生成された前記出力ソースプログラムとを出力する出力ステップとを前記コンピュータに実行させる。
また、上記目的を達成するために、本発明に係るプログラム変換装置は、ファイル定義体を用いてデータファイルを定義する入力プログラムを、ファイル定義体を用いずにデータファイルを定義する目的プログラムへ変換するプログラム変換装置であって、前記入力プログラム及び前記目的プログラムは、ＣＯＢＯＬで記述され、前記データファイルは、一以上のデータ項目を有する一以上のレコードにより構成され、前記ファイル定義体には、前記データ項目の項目名と項目属性とが前記データ項目ごとに格納され、前記入力プログラムは、一つの前記ファイル定義体を用いて、項目属性が同じで項目名だけが互いに異なるデータ構造を有する複数のデータファイルをそれぞれ定義する複数の第一命令を含み、前記複数の第一命令のそれぞれは、前記ファイル定義体に格納されたすべてのデータ項目の項目名に対して、一文字以上の同一の第一所定文字列と予め定められた同一の区切り文字とを付加する付加命令を用いて、前記データファイルを定義する命令であり、前記第一所定文字列は、前記複数の第一命令のそれぞれで互いに異なる文字列であり、前記目的プログラムに用いられるＣＯＢＯＬは、前記付加命令を解釈することができないＣＯＢＯＬであり、前記プログラム変換装置は、前記ファイル定義体と前記入力プログラムとを記憶している記憶部と、前記記憶部に記憶された前記ファイル定義体を参照することにより、前記目的プログラムがコンパイルされる際に前記目的プログラム中に複写されるテキストファイルであるコピー句を生成するコピー句生成部と、前記記憶部に記憶された前記入力プログラムを読み出し、読み出した入力プログラムに含まれる前記複数の第一命令を特定し、特定した前記複数の第一命令のそれぞれを、同一の前記コピー句を用いて前記複数のデータファイルをそれぞれ定義する第二命令に書き換えることにより、前記入力プログラムを前記目的プログラムに変換するプログラム変換部とを備え、前記コピー句生成部は、前記ファイル定義体に格納されたすべてのデータ項目の項目名に対して一文字以上の同一の第二所定文字列と同一の前記区切り文字とを付加した新たな項目名を作成し、作成した新たな項目名と前記ファイル定義体に格納された項目属性とからなるデータ構造を定義する命令を生成することにより、前記コピー句を生成し、前記プログラム変換部は、前記コピー句に含まれる前記第二所定文字列を前記第一所定文字列に置換する置換命令を前記第一命令に追加することにより、前記第一命令のそれぞれを前記第二命令に書き換え、前記第二所定文字列は、前記ファイル定義体に格納されたいずれの項目名にも含まれない文字列であることを特徴とする。
つまり、本発明に係るプログラム変換装置は、第１高級プログラム言語で記述された入力プログラムを、第２高級プログラム言語で記述された目的プログラムへ変換するプログラム変換装置であって、データファイルを構成するデータ項目の項目名と項目属性とをデータ項目ごとに格納したファイル定義体と、前記入力プログラムとを記憶している記憶部と、前記ファイル定義体に格納された項目名に、所定の文字と区切り文字とを付加した新たな項目名を作成し、作成した新たな項目名と前記項目属性とを用いて、データファイルを定義する命令であるコピー句を生成するコピー句生成部と、前記ファイル定義体に格納された項目名と項目属性とを用いて、リレーショナルデータベースマネージメントシステムにおいてテーブルを作成するための命令であるテーブル定義を生成するテーブル定義生成部と、前記入力プログラム中の、前記ファイル定義体を用いてデータファイルを定義する部分を、前記コピー句を複写する命令と、複写した前記コピー句から前記所定の文字を置換する命令とを用いてデータファイルを定義するように修正することにより、前記入力プログラムを前記目的プログラムに変換するプログラム変換部とを備えることを特徴とする。
【手続補正書】
【提出日】平成21年10月7日(2009.10.7)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
第１ＣＯＢＯＬで記述された入力ソースプログラムを、第２ＣＯＢＯＬで記述された出力ソースプログラムへ変換するコンピュータ実行可能なプログラムであって、
前記第１ＣＯＢＯＬは、データファイルのデータ構造を定義するファイル節において、ファイル定義体を呼び出す命令である第１「ＣＯＰＹ」命令とともに、前記項目名に付加文字列及び区切り文字を付加する命令である「ＪＯＩＮＩＮＧ」命令を用いることにより、前記ファイル定義体に格納された項目名に付加文字列及び区切り文字が付加された付加項目名と前記ファイル定義体に格納された項目属性とによって特定されるデータ構造を定義することが可能な言語であり、
前記第２ＣＯＢＯＬは、前記ファイル節において、前記第１「ＣＯＰＹ」命令とともに前記「ＪＯＩＮＩＮＧ」命令のみを用いることが不可能な言語であり、
前記入力ソースプログラムには、第１「ＣＯＰＹ」命令と、当該第１「ＣＯＰＹ」命令に続いて記載された「ＪＯＩＮＩＮＧ」命令とが含まれ、
前記コンピュータは、
データファイルのデータ構造を特定するための項目名及び項目属性が格納されたファイル定義体と前記入力ソースプログラムとを記憶している記憶部を備え、
前記プログラムは、
前記記憶部に記憶されたファイル定義体に格納された項目名及び項目属性を読み出し、読み出した項目名と、当該項目名と重複しない文字列であるダミー文字列及び区切り文字とからなるダミー項目名を生成し、生成したダミー項目名と読み出した項目属性とによって特定されるデータ構造を定義するテキストデータであって、ソースプログラムの一部として取り込まれるためのテキストデータであるコピー句を生成するコピー句生成ステップと、
前記記憶部に記憶された入力ソースプログラムを読み出し、読み出した入力ソースプログラムに含まれるファイル節における前記第１「ＣＯＰＹ」命令を特定し、特定した前記第１「ＣＯＰＹ」命令によって呼び出されるファイル定義体が定義された登録集を特定するための登録集名を、変換後の命令によって取り込まれるコピー句が定義された登録集を特定するための登録集名に変更することにより、前記第１「ＣＯＰＹ」命令を、前記コピー句をソースプログラムの一部として取り込む命令である第２「ＣＯＰＹ」命令に変換し、かつ、前記「ＪＯＩＮＩＮＧ」命令とともに用いることにより前記ダミー文字列を前記付加文字列に置換する命令となる「ＤＩＳＪＯＩＮＩＮＧ」命令を前記第２「ＣＯＰＹ」命令と前記「ＪＯＩＮＩＮＧ」命令との間に挿入することにより、前記出力ソースプログラムを生成するプログラム変換ステップと、
前記コピー句生成ステップにおいて生成された前記コピー句と、前記プログラム変換ステップにおいて生成された前記出力ソースプログラムとを出力する出力ステップとを前記コンピュータに実行させる
プログラム。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】００１８
【補正方法】変更
【補正の内容】
【００１８】
上記目的を達成するために、本発明に係るプログラムは、第１ＣＯＢＯＬで記述された入力ソースプログラムを、第２ＣＯＢＯＬで記述された出力ソースプログラムへ変換するコンピュータ実行可能なプログラムであって、前記第１ＣＯＢＯＬは、データファイルのデータ構造を定義するファイル節において、ファイル定義体を呼び出す命令である第１「ＣＯＰＹ」命令とともに、前記項目名に付加文字列及び区切り文字を付加する命令である「ＪＯＩＮＩＮＧ」命令を用いることにより、前記ファイル定義体に格納された項目名に付加文字列及び区切り文字が付加された付加項目名と前記ファイル定義体に格納された項目属性とによって特定されるデータ構造を定義することが可能な言語であり、前記第２ＣＯＢＯＬは、前記ファイル節において、前記第１「ＣＯＰＹ」命令とともに前記「ＪＯＩＮＩＮＧ」命令のみを用いることが不可能な言語であり、前記入力ソースプログラムには、第１「ＣＯＰＹ」命令と、当該第１「ＣＯＰＹ」命令に続いて記載された「ＪＯＩＮＩＮＧ」命令とが含まれ、前記コンピュータは、データファイルのデータ構造を特定するための項目名及び項目属性が格納されたファイル定義体と前記入力ソースプログラムとを記憶している記憶部を備え、前記プログラムは、前記記憶部に記憶されたファイル定義体に格納された項目名及び項目属性を読み出し、読み出した項目名とダミー文字列及び区切り文字とからなるダミー項目名を生成し、生成したダミー項目名と読み出した項目属性とによって特定されるデータ構造を定義するテキストデータであって、ソースプログラムの一部として取り込まれるためのテキストデータであるコピー句を生成するコピー句生成ステップと、前記記憶部に記憶された入力ソースプログラムを読み出し、読み出した入力ソースプログラムに含まれるファイル節における前記第１「ＣＯＰＹ」命令を特定し、特定した前記第１「ＣＯＰＹ」命令によって呼び出されるファイル定義体が定義された登録集を特定するための登録集名を、変換後の命令によって取り込まれるコピー句が定義された登録集を特定するための登録集名に変更することにより、前記第１「ＣＯＰＹ」命令を、前記コピー句をソースプログラムの一部として取り込む命令である第２「ＣＯＰＹ」命令に変換し、かつ、前記「ＪＯＩＮＩＮＧ」命令とともに用いることにより前記ダミー文字列を前記付加文字列に置換する命令となる「ＤＩＳＪＯＩＮＩＮＧ」命令を前記第２「ＣＯＰＹ」命令と前記「ＪＯＩＮＩＮＧ」命令との間に挿入することにより、前記出力ソースプログラムを生成するプログラム変換ステップと、前記コピー句生成ステップにおいて生成された前記コピー句と、前記プログラム変換ステップにおいて生成された前記出力ソースプログラムとを出力する出力ステップとを前記コンピュータに実行させる。
また、上記目的を達成するために、本発明に係るプログラム変換装置は、ファイル定義体を用いてデータファイルを定義する入力プログラムを、ファイル定義体を用いずにデータファイルを定義する目的プログラムへ変換するプログラム変換装置であって、前記入力プログラム及び前記目的プログラムは、ＣＯＢＯＬで記述され、前記データファイルは、一以上のデータ項目を有する一以上のレコードにより構成され、前記ファイル定義体には、前記データ項目の項目名と項目属性とが前記データ項目ごとに格納され、前記入力プログラムは、一つの前記ファイル定義体を用いて、項目属性が同じで項目名だけが互いに異
なるデータ構造を有する複数のデータファイルをそれぞれ定義する複数の第一命令を含み、前記複数の第一命令のそれぞれは、前記ファイル定義体に格納されたすべてのデータ項目の項目名に対して、一文字以上の同一の第一所定文字列と予め定められた同一の区切り文字とを付加する付加命令を用いて、前記データファイルを定義する命令であり、前記第一所定文字列は、前記複数の第一命令のそれぞれで互いに異なる文字列であり、前記目的プログラムに用いられるＣＯＢＯＬは、前記付加命令を解釈することができないＣＯＢＯＬであり、前記プログラム変換装置は、前記ファイル定義体と前記入力プログラムとを記憶している記憶部と、前記記憶部に記憶された前記ファイル定義体を参照することにより、前記目的プログラムがコンパイルされる際に前記目的プログラム中に複写されるテキストファイルであるコピー句を生成するコピー句生成部と、前記記憶部に記憶された前記入力プログラムを読み出し、読み出した入力プログラムに含まれる前記複数の第一命令を特定し、特定した前記複数の第一命令のそれぞれを、同一の前記コピー句を用いて前記複数のデータファイルをそれぞれ定義する第二命令に書き換えることにより、前記入力プログラムを前記目的プログラムに変換するプログラム変換部とを備え、前記コピー句生成部は、前記ファイル定義体に格納されたすべてのデータ項目の項目名に対して一文字以上の同一の第二所定文字列と同一の前記区切り文字とを付加した新たな項目名を作成し、作成した新たな項目名と前記ファイル定義体に格納された項目属性とからなるデータ構造を定義する命令を生成することにより、前記コピー句を生成し、前記プログラム変換部は、前記コピー句に含まれる前記第二所定文字列を前記第一所定文字列に置換する置換命令を前記第一命令に追加することにより、前記第一命令のそれぞれを前記第二命令に書き換え、前記第二所定文字列は、前記ファイル定義体に格納されたいずれの項目名にも含まれない文字列であることを特徴とする。
つまり、本発明に係るプログラム変換装置は、第１高級プログラム言語で記述された入力プログラムを、第２高級プログラム言語で記述された目的プログラムへ変換するプログラム変換装置であって、データファイルを構成するデータ項目の項目名と項目属性とをデータ項目ごとに格納したファイル定義体と、前記入力プログラムとを記憶している記憶部と、前記ファイル定義体に格納された項目名に、所定の文字と区切り文字とを付加した新たな項目名を作成し、作成した新たな項目名と前記項目属性とを用いて、データファイルを定義する命令であるコピー句を生成するコピー句生成部と、前記ファイル定義体に格納された項目名と項目属性とを用いて、リレーショナルデータベースマネージメントシステムにおいてテーブルを作成するための命令であるテーブル定義を生成するテーブル定義生成部と、前記入力プログラム中の、前記ファイル定義体を用いてデータファイルを定義する部分を、前記コピー句を複写する命令と、複写した前記コピー句から前記所定の文字を置換する命令とを用いてデータファイルを定義するように修正することにより、前記入力プログラムを前記目的プログラムに変換するプログラム変換部とを備えることを特徴とする。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】０１１５
【補正方法】変更
【補正の内容】
【０１１５】
次に、プログラム変換部１０５は、特定した命令によって呼び出されるファイル定義体が定義された登録集を特定するための登録集名を、変換後の命令によって取り込まれるコピー句が定義された登録集を特定するための登録集名に変更する（ステップＳ１００３）。例えば、図３及び図６に示したように、プログラム変換部１０５は、登録集名を「ＸＦＤＬＩＢ」から「ＦＤＬＩＢ」に変換する。