JP4405571B1 - プログラム - Google Patents

プログラム Download PDF

Info

Publication number
JP4405571B1
JP4405571B1 JP2008218741A JP2008218741A JP4405571B1 JP 4405571 B1 JP4405571 B1 JP 4405571B1 JP 2008218741 A JP2008218741 A JP 2008218741A JP 2008218741 A JP2008218741 A JP 2008218741A JP 4405571 B1 JP4405571 B1 JP 4405571B1
Authority
JP
Japan
Prior art keywords
program
instruction
copy
file
item
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2008218741A
Other languages
English (en)
Other versions
JP2010134487A (ja
Inventor
光宏 澤田
Original Assignee
有限会社テクノ工房
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 有限会社テクノ工房 filed Critical 有限会社テクノ工房
Priority to JP2008218741A priority Critical patent/JP4405571B1/ja
Application granted granted Critical
Publication of JP4405571B1 publication Critical patent/JP4405571B1/ja
Publication of JP2010134487A publication Critical patent/JP2010134487A/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Abstract

【課題】レガシーシステムのプログラムを効率的に変換する装置等を提供する。
【解決手段】プログラム変換装置100であって、ファイル定義体200と入力プログラム300とを記憶している記憶部102と、ファイル定義体200に格納された項目名に、所定の文字と区切り文字とを付加した項目名を作成し、作成した項目名と項目属性とを用いてデータファイルを定義するコピー句400を生成するコピー句生成部103と、ファイル定義体200に基づいて、テーブル定義500を生成するテーブル定義生成部104と、入力プログラム300のファイル定義体200を用いてデータファイルを定義する部分を、コピー句400を複写する命令と、複写したコピー句400から所定の文字を置換する命令とを用いてデータファイルを定義するように変換するプログラム変換部105とを備える。
【選択図】図1

Description

本発明は、第1高級プログラム言語である第1COBOLで記述された入力ソースプログラム(以下、入力プログラムという。)を、第2高級プログラム言語である第2COBOLで記述された出力ソースプログラム(以下、目的プログラムという。)へ変換するプログラムに関する。
メインフレーム、オフィスコンピュータ(以下、単にオフコンという。)等のベンダー独自のOS(Operating System)が搭載されたコンピュータにおいて、過去に多くの情報処理システム(レガシーシステム)が構築されている。一般的に、これらのレガシーシステムは、リース料、保守料等の運用コストが高く、拡張性が低い。
そこで、近年、運用コストの低減、拡張性の向上等を目的として、レガシーシステムを、Windows(登録商標)、UNIX(登録商標)、Linux(登録商標)等のOSが搭載されたコンピュータ(オープンプラットフォーム)に移行すること(レガシーマイグレーション)が多く行われている。
一般的に、レガシーシステムでは、OSを提供するベンダーが独自に開発した拡張命令を有する高級言語を用いて、システムが構築されていることが多い。一方、オープンプラットフォームで構築されるシステムでは、ベンダーが独自に開発した拡張命令は利用できない。したがって、レガシーマイグレーションでは、ベンダーが独自に開発した拡張命令を、オープンプラットフォームにおいて利用可能な命令に変換することが必要となる。
具体的には、ファイル節において、COPY命令とともにJOINING命令のみを用いることができる第1COBOLを用いて構築されたレガシーシステムの場合、COPY命令とともにJOINING命令のみを用いることができない第2COBOLで利用可能な命令に変換することが必要となる。
また、レガシーシステムでは、プログラムがアクセスするデータベースとして、ネットワーク型のデータベースが利用されていることが多い。一方、オープンプラットフォームで構築されるシステムでは、リレーショナル型のデータベースが利用されることが多い。したがって、レガシーマイグレーションでは、データベースの変更に伴うプログラムの変換が必要となる。
そこで、従来、レガシーマイグレーションにおけるプログラムの変換を効率的に行うための種々の方法が提案されている(例えば、特許文献1)。特許文献1に記載のプログラム変換方法は、COBOL(Common Business Oriented Language)を用いて記述されたレガシーシステムのプログラムにおいて、「REDEFINES句」を用いて定義されているデータファイルのデータ項目を、「RAW型」のデータ項目へ変換することにより、効率的にプログラムを変換することを可能とする。
特開2001−117764号公報
しかしながら、上記特許文献1には、レガシーシステムに特有のデータ項目を、リレーショナルデータベースで利用可能なデータ項目に変換する方法は記述されているが、他のデータ項目を含めたデータファイルの定義をどのように移行するかについては、明確に記述されていない。
レガシーシステムのプログラムにおいて、オフコン等を提供するベンダーが独自に開発した拡張命令を利用してデータファイルが定義されている場合、短時間で、効率よくプログラムを変換することが難しい。
例えば、レガシーシステムにおいて、項目名、属性等を含むデータ構造をテーブル形式で格納するファイル定義体を利用してデータファイルを定義しているプログラムがあったとする。このようなファイル定義体を利用するための命令は、オフコン等を提供するベンダー独自の拡張命令である。したがって、レガシーシステムのプログラムにおいて、ファイル定義体を利用するための命令とファイル定義体とを、オープンプラットフォームにおいて利用可能な命令とデータファイルの定義とに変換する必要がある。以下に、ファイル節において、COPY命令とともにJOINING命令のみを用いることができる第1COBOLから、COPY命令とともにJOINING命令のみを用いることができない第2COBOLに変換する、従来のプログラム変換の具体例について、図面を用いて説明する。
図22は、レガシーシステム5000を示す概念図である。図22に示すように、レガシーシステム5000は、顧客マスタ5001、業者マスタ5002、ファイル定義体5003及びプログラム5004で構成される。
顧客マスタ5001及び業者マスタ5002は、顧客及び業者の名称等を保持するデータファイルである。顧客マスタ5001及び業者マスタ5002が有する複数のデータ項目は、項目名の一部が異なるが、型、桁数等の項目属性は同一となっている。
ファイル定義体5003は、顧客マスタ5001及び業者マスタ5002の項目名及び項目属性を定義するためのデータテーブルである。ファイル定義体5003は、顧客マスタ5001及び業者マスタ5002の項目名の共通する部分と項目属性とを格納する。
プログラム5004は、顧客マスタ5001及び業者マスタ5002にアクセスするプログラムである。プログラム5004は、顧客マスタ5001及び業者マスタ5002へアクセスするために、プログラム5004内に、顧客マスタ5001及び業者マスタ5002の項目名、型、桁数等をデータ項目ごとに定義する必要がある。そこで、プログラム5004は、ファイル定義体5003を呼び出す命令(COPY)と、文字を付加する命令(JOINING)により、項目名、型、桁数等を定義する。つまり、レガシーシステム5000のプログラム5004では、1つのファイル定義体5003を用いて、項目名の一部が異なる複数のデータファイルを容易に定義することが可能である。
図23は、図22のレガシーシステムを、従来の方法によりプログラム変換した場合の、変換後のシステムを示す概念図である。図23に示すように、変換後システム5500は、顧客マスタ5001、業者マスタ5002、プログラム5501で構成される。
変換後システム5500では、ベンダー独自の拡張命令を必要とするファイル定義体を利用することができない。したがって、プログラム5501は、プログラム内にデータ項目の定義命令を直接記述することにより、データファイルを定義する。つまり、プログラム5501では、顧客マスタ5001、業者マスタ5002ごとに、データ項目の項目名と項目属性とを定義する。
このように、従来の方法では、項目属性が共通する複数のデータファイルを定義する場合に、それぞれで項目属性を定義するように変換する必要がある。つまり、プログラムの変換箇所が多く、自動化するのが難しい。このような場合に、作業者が、手入力により個々にプログラムを修正していたのでは、作業時間がかかる上、修正ミスも多くなってしまう。さらに、変換後のプログラムの保守性も悪くなる。
そこで、本発明は、上記課題を解決するものであって、レガシーシステムのプログラムにおいて、オフコン等を提供するベンダーが独自に開発した拡張機能を利用してデータファイルが定義されている場合、レガシーシステムをオープンプラットフォームへ移管するためのプログラム変換を効率的に実行することができる装置、プログラム等を提供することを目的とする。
特に、ファイル節において、COPY命令とともにJOINING命令のみを用いることができる第1COBOLで記述されたソースプログラムから、COPY命令とともにJOINING命令のみを用いることができない第2COBOLで記述されたソースプログラムに変換する場合に、プログラム変換を効率的に実行することができるプログラムを提供することを目的とする。
上記目的を達成するために、本発明に係るプログラムは、第1COBOLで記述された入力ソースプログラムを、第2COBOLで記述された出力ソースプログラムへ変換するコンピュータ実行可能なプログラムであって、前記第1COBOLは、データファイルのデータ構造を定義するファイル節において、ファイル定義体を呼び出す命令である第1「COPY」命令とともに、前記項目名に付加文字列及び区切り文字を付加する命令である「JOINING」命令を用いることにより、前記ファイル定義体に格納された項目名に付加文字列及び区切り文字が付加された付加項目名と前記ファイル定義体に格納された項目属性とによって特定されるデータ構造を定義することが可能な言語であり、前記第2COBOLは、前記ファイル節において、前記第1「COPY」命令とともに前記「JOINING」命令のみを用いることが不可能な言語であり、前記入力ソースプログラムには、第1「COPY」命令と、当該第1「COPY」命令に続いて記載された「JOINING」命令とが含まれ、前記コンピュータは、データファイルのデータ構造を特定するための項目名及び項目属性が格納されたファイル定義体と前記入力ソースプログラムとを記憶している記憶部を備え、前記プログラムは、前記記憶部に記憶されたファイル定義体に格納された項目名及び項目属性を読み出し、読み出した項目名とダミー文字列及び区切り文字とからなるダミー項目名を生成し、生成したダミー項目名と読み出した項目属性とによって特定されるデータ構造を定義するテキストデータであって、ソースプログラムの一部として取り込まれるためのテキストデータであるコピー句を生成するコピー句生成ステップと、前記記憶部に記憶された入力ソースプログラムを読み出し、読み出した入力ソースプログラムに含まれるファイル節における前記第1「COPY」命令を特定し、特定した前記第1「COPY」命令によって呼び出されるファイル定義体が定義された登録集を特定するための登録集名を、変換後の命令によって取り込まれるコピー句が定義された登録集を特定するための登録集名に変更することにより、前記第1「COPY」命令を、前記コピー句をソースプログラムの一部として取り込む命令である第2「COPY」命令に変換し、かつ、前記「JOINING」命令とともに用いることにより前記ダミー文字列を前記付加文字列に置換する命令となる「DISJOINING」命令を前記第2「COPY」命令と前記「JOINING」命令との間に挿入することにより、前記出力ソースプログラムを生成するプログラム変換ステップと、前記コピー句生成ステップにおいて生成された前記コピー句と、前記プログラム変換ステップにおいて生成された前記出力ソースプログラムとを出力する出力ステップとを前記コンピュータに実行させる。
また、上記目的を達成するために、本発明に係るプログラム変換装置は、ファイル定義体を用いてデータファイルを定義する入力プログラムを、ファイル定義体を用いずにデータファイルを定義する目的プログラムへ変換するプログラム変換装置であって、前記入力プログラム及び前記目的プログラムは、COBOLで記述され、前記データファイルは、一以上のデータ項目を有する一以上のレコードにより構成され、前記ファイル定義体には、前記データ項目の項目名と項目属性とが前記データ項目ごとに格納され、前記入力プログラムは、一つの前記ファイル定義体を用いて、項目属性が同じで項目名だけが互いに異
なるデータ構造を有する複数のデータファイルをそれぞれ定義する複数の第一命令を含み、前記複数の第一命令のそれぞれは、前記ファイル定義体に格納されたすべてのデータ項目の項目名に対して、一文字以上の同一の第一所定文字列と予め定められた同一の区切り文字とを付加する付加命令を用いて、前記データファイルを定義する命令であり、前記第一所定文字列は、前記複数の第一命令のそれぞれで互いに異なる文字列であり、前記目的プログラムに用いられるCOBOLは、前記付加命令を解釈することができないCOBOLであり、前記プログラム変換装置は、前記ファイル定義体と前記入力プログラムとを記憶している記憶部と、前記記憶部に記憶された前記ファイル定義体を参照することにより、前記目的プログラムがコンパイルされる際に前記目的プログラム中に複写されるテキストファイルであるコピー句を生成するコピー句生成部と、前記記憶部に記憶された前記入力プログラムを読み出し、読み出した入力プログラムに含まれる前記複数の第一命令を特定し、特定した前記複数の第一命令のそれぞれを、同一の前記コピー句を用いて前記複数のデータファイルをそれぞれ定義する第二命令に書き換えることにより、前記入力プログラムを前記目的プログラムに変換するプログラム変換部とを備え、前記コピー句生成部は、前記ファイル定義体に格納されたすべてのデータ項目の項目名に対して一文字以上の同一の第二所定文字列と同一の前記区切り文字とを付加した新たな項目名を作成し、作成した新たな項目名と前記ファイル定義体に格納された項目属性とからなるデータ構造を定義する命令を生成することにより、前記コピー句を生成し、前記プログラム変換部は、前記コピー句に含まれる前記第二所定文字列を前記第一所定文字列に置換する置換命令を前記第一命令に追加することにより、前記第一命令のそれぞれを前記第二命令に書き換え、前記第二所定文字列は、前記ファイル定義体に格納されたいずれの項目名にも含まれない文字列であることを特徴とする。
つまり、本発明に係るプログラム変換装置は、第1高級プログラム言語で記述された入力プログラムを、第2高級プログラム言語で記述された目的プログラムへ変換するプログラム変換装置であって、データファイルを構成するデータ項目の項目名と項目属性とをデータ項目ごとに格納したファイル定義体と、前記入力プログラムとを記憶している記憶部と、前記ファイル定義体に格納された項目名に、所定の文字と区切り文字とを付加した新たな項目名を作成し、作成した新たな項目名と前記項目属性とを用いて、データファイルを定義する命令であるコピー句を生成するコピー句生成部と、前記ファイル定義体に格納された項目名と項目属性とを用いて、リレーショナルデータベースマネージメントシステムにおいてテーブルを作成するための命令であるテーブル定義を生成するテーブル定義生成部と、前記入力プログラム中の、前記ファイル定義体を用いてデータファイルを定義する部分を、前記コピー句を複写する命令と、複写した前記コピー句から前記所定の文字を置換する命令とを用いてデータファイルを定義するように修正することにより、前記入力プログラムを前記目的プログラムに変換するプログラム変換部とを備えることを特徴とする。
これにより、ファイル定義体を用いてデータファイルを定義する入力プログラムを、コピー句を用いてデータファイルを定義する目的プログラム、つまり、オープンプラットフォームで実行可能な目的プログラムに自動的に変換することができる。よって、プログラム変換に要する時間並びに作業量及び作業ミスを低減し、効率的にプログラムを変換することが可能となる。さらに、目的プログラムにおいて、コピー句を利用した項目属性が同一のデータファイルの定義を一括管理できるので、目的プログラムの保守性を高めることができる。
さらに、入力プログラムの手続き部(データの入出力等を行う処理が記述された部分)を変換する必要がないので、プログラムの変換量を少なくすることができる。つまり、プログラム変換に要する時間並びに作業量及び作業ミスを低減し、効率的にプログラムを変換することが可能となる。
さらに、プログラム変換装置は、プログラムの変換と合わせて、テーブル定義を生成する。したがって、目的プログラム内のデータを入出力する命令をSQL文に変換する市販プログラム等を利用することにより、目的プログラムは、データファイルにデータを入出力する処理部分等を修正することなく、リレーショナルデータベースにアクセスすることが可能となる。
また、前記テーブル定義生成部は、前記ファイル定義体に格納された項目属性として反復数が設定されている場合、前記反復数に設定された数量だけ同一の項目属性を有するデータ項目が作成されるようにテーブル定義を生成することが好ましい。
これにより、ファイル定義体に反復数が設定されている場合であっても、自動的にデータファイル定義を生成することができるので、効率的にプログラムを変換することが可能となる。
また、前記コピー句生成部は、前記入力プログラム中の、前記ファイル定義体を用いてデータファイルを定義する部分が、項目名に文字を付加してデータファイルを定義していない場合には、前記作成した新たな項目名と前記項目属性とを用いてデータファイルを定義する命令であるコピー句を生成し、前記入力プログラム中の、前記ファイル定義体を用いてデータファイルを定義する部分が、項目名に文字を付加してデータファイルを定義している場合には、前記ファイル定義体に格納された項目名と前記項目属性とを用いてデータファイルを定義する命令であるコピー句を生成し、前記プログラム変換部は、前記入力プログラム中の、前記ファイル定義体を用いてデータファイルを定義する部分が、項目名に文字を付加してデータファイルを定義している場合には、当該部分を前記コピー句を複写する命令と、複写した前記コピー句から前記所定の文字を置換する命令とを用いてデータファイルを定義するように修正することにより、前記入力プログラムを前記目的プログラムに変換することが好ましい。
これにより、入力プログラムの中に、文字を付加してデータファイルを定義する場合と、文字を付加しないでデータファイルを定義する場合とが、混在しているときでも、自動的に目的プログラムを生成することができるので、効率的にプログラムを変換することが可能となる。
また、前記コピー句生成部は、前記入力プログラムにおいて前記ファイル定義体に格納された項目名に文字を付加してデータファイルを定義している場合、文字を付加する方向を決定する命令から文字の付加方向を判定する付加方向判定部を有し、前記付加方向判定部において判定された方向から前記所定の文字と前記区切り文字とを付加した項目名を作成することが好ましい。
これにより、入力プログラムの中に、前方から文字を付加してデータファイルを定義する場合と、後方から文字を付加してデータファイルを定義する場合とが、混在しているときでも、自動的に目的プログラムを生成することができるので、効率的にプログラムを変換することが可能となる。
また、本発明に係るプログラム変換方法は、第1高級プログラム言語で記述された入力プログラムを、第2高級プログラム言語で記述された目的プログラムへ変換するプログラム変換方法であって、データファイルを構成するデータ項目の項目名と項目属性とをデータ項目ごとに格納したファイル定義体に基づいて、前記ファイル定義体に格納された項目名に、所定の文字と区切り文字とを付加した項目名を作成し、作成した項目名と前記項目属性とを用いて、データファイルを定義する命令であるコピー句を生成するコピー句生成ステップと、前記ファイル定義体に格納された項目名と項目属性とに基づいて、リレーショナルデータベースマネージメントシステムにおいてテーブルを作成するための命令であるテーブル定義を生成するテーブル定義生成ステップと、前記入力プログラムの前記ファイル定義体を用いてデータファイルを定義する部分を、前記コピー句を複写する命令と、複写した前記コピー句から前記所定の文字を置換する命令とを用いてデータファイルを定義するように修正することにより、前記入力プログラムを前記目的プログラムに変換するプログラム変換ステップとを含むことを特徴とする。
これにより、プログラム変換装置に含まれる機能を、汎用的なコンピュータで実行可能なプログラムとして実現することが可能となる。
なお、本発明は、このようなプログラム変換装置及びプログラム変換方法として実現することができるだけでなく、このようなプログラム変換方法に含まれる特徴的なステップをコンピュータに実行させるプログラムとして実現したりすることもできる。そして、そのようなプログラムは、CD−ROM(Compact Disc-Read Only Memory)等の記録媒体、インターネット等の通信ネットワークを介して流通させることができる。
本発明によると、レガシーマイグレーションにおけるプログラムの変換、特に、オフコン等を提供するベンダーが独自に開発した拡張機能を利用してデータファイルが定義されている場合のプログラムの変換を効率的に行うことが可能となる。
(実施の形態1)
以下、本発明の実施の形態1に係るプログラム変換装置100について、図面を用いて詳細に説明する。
図1は、本発明の実施の形態1に係るプログラム変換装置100の特徴的な機能構成を示すブロック図である。図1に示すように、プログラム変換装置100は、入力部101、記憶部102、コピー句生成部103、テーブル定義生成部104、プログラム変換部105、及び出力部106を備える。
入力部101は、キーボード、マウス等からなり、ユーザの入力を受け付け、受け付けた入力結果をコピー句生成部103等に通知する。
記憶部102は、例えばハードディスク等からなり、データファイルを構成するデータ項目の項目名と項目属性とをデータ項目ごとに格納したファイル定義体200と、入力プログラム300とを記憶している。ここで、項目属性とは、データ項目ごとに格納されるデータの型、桁数等をいう。
コピー句生成部103は、CPU、メモリ等からなる処理部であり、ファイル定義体200に基づいてコピー句400を生成する。
具体的には、コピー句生成部103は、ファイル定義体200に格納された項目名に、所定の文字と区切り文字とを付加した新たな項目名を作成する。そして、コピー句生成部103は、作成した新たな項目名とファイル定義体200に格納された項目属性とを用いて、データファイルを定義する命令であるコピー句を生成する。
なお、コピー句とは、ソースコードとは別に、予め作成しておいたテキストデータファイルのことをいう。ソースコードコンパイルされる時に、ソースコード中の「COPY」命令に従って、コピー句に記述された内容がソースコードの中へ複写される。つまり、コピー句は、ソースプログラム中の「COPY」命令が記載された位置に、ソースプログラムの一部として取り込まれる文字列である。
テーブル定義生成部104は、CPU、メモリ等からなる処理部であり、ファイル定義体200に格納された項目名と項目属性とに基づいて、リレーショナルデータベースマネージメントシステム(Relational Database Management System:RDBMS)においてテーブルを作成するための命令文であるテーブル定義500を生成する。
また、テーブル定義生成部104は、ファイル定義体200に格納された項目属性として反復数が設定されている場合、反復数に設定された数量だけ同一の項目属性を有するデータ項目が作成されるようにテーブル定義500を生成する。
プログラム変換部105は、CPU、メモリ等からなる処理部であり、入力プログラム300中の、ファイル定義体200を用いてデータファイルを定義する部分を、コピー句400を複写する命令と、複写したコピー句400から所定の文字を置換する命令とを用いてデータファイルを定義するように、入力プログラム300を目的プログラム600に変換する。
例えば、ファイル定義体200の中に定義された項目名の1つが「ABC」である場合、入力プログラム300において、文字「YYY」と区切り文字「−」を付加した項目名「YYY−ABC」となるように、データファイルのデータ構造を定義していたとする。
この場合、プログラム変換部105は、コピー句400を複写するとともに、コピー句400に記載の項目名「XXX−ABC」に含まれる所定の文字「XXX」を文字「YYY」に置換するように、入力プログラム300を変換する。
変換後の目的プログラム600には、入力プログラム300に含まれていた文字「YYY」を付加する命令が残存している。
その結果、目的プログラム600は、項目名「XXX−ABC」に含まれる文字「XXX」を、文字「YYY」に置換することにより、入力プログラム300と同じ項目名「YYY−ABC」となるように、データファイルのデータ構造を定義することができる。
出力部106は、コピー句400、テーブル定義500及び目的プログラム600を、記録媒体、ディスプレー等に出力する。
図2は、記憶部102に格納されるファイル定義体200の一例を示す図である。図に示すように、ファイル定義体200には、項目名201、型202、桁数203、反復数204、及び項目順位205が含まれる。
項目名201は、データ項目の名称を示す。
型202は、データの型を示す。例えば、型202は、数値型(U)、英数字型(X)等を示す。桁数203は、各データ項目に格納するデータの桁数を示す。
反復数204は、同じ項目属性のデータ項目を繰り返し定義するための回数を示す。
項目順位205は、データ項目をグループ化する項目(集団項目)の項目名を示す。見出し206は、データ項目の説明を示す。
例えば、図2に示すファイル定義体200では、項目名201が「HINCOD」のデータ項目は、型202が「U(数値型)」であり、桁数203が「6桁」であり、項目順位205が「KEY」であり、見出し206が「製品コード」であることが示されている。
なお、項目名201が「KEY」のデータ項目は、集団項目を示す。集団項目は、型202、桁数203等のデータが格納されない。
図3は、記憶部102に格納される入力プログラム300の一例を示す図である。
図3に示す入力プログラム300は、COBOLを用いて記述されている。図3に示すように、入力プログラム300は、見出し部301(IDENTIFICATION DIVISION.)、環境部302(ENVIRONMENT DIVISION.)、データ部303(DATA DIVISION.)及び手続き部304(PROCEDURE DIVISION.)により構成される。
見出し部301には、プログラム識別名、作成者、作成日等が記述される。
環境部302には、プログラムが実行されるコンピュータの環境が記述される。
データ部303には、プログラムで使用する変数及びデータ並びにその型が記述される。プログラムで使用する変数及びデータファイルのすべては、データ部303において定義されなければならない。
手続き部304には、実行されるプログラムのうち、実際の処理部分のコードが記述される。以下、データ部303の記述内容について、詳細に説明する。
まず、行311は、データファイルのデータ構造を定義するセクションの始まりを明示する。
次に、行312は、以下の行(行313及び行314)においてデータ構造を定義するデータファイルの名称「KAKMST」を明示する。
続いて、行313は、「COPY」命令により、原文名「KAKTANPF」で特定されるファイル定義体200を呼び出すことを命令する。
そして、行314は、行313によるファイル定義体200の呼び出しと同時に、ファイル定義体200に含まれる項目名201の文字列の前方(左側)に文字「KAK−」を付加することを命令する。
このように、行312〜行314の命令により、データファイル「KAKMST」のデータ構造が、ファイル定義体200に基づいて定義される。
次に、行315は、以下の行(行316及び行317)においてデータ構造を定義するデータファイルの名称「MEIMST」を明示する。
続いて、行312と同様に、行316は、「COPY」命令により、原文名「KAKTANPF」で特定されるファイル定義体200を呼び出すことを命令する。
そして、行317は、行316によるファイル定義体200の呼び出しと同時に、ファイル定義体200に含まれる項目名201の文字列の前方(左側)に文字「MEI−」を付加することを命令する。
このように、入力プログラム300は、項目名201に付加する文字を変更することにより、同一のファイル定義体200を用いて、複数のデータファイル(ここでは、「KAKMST」と「MEIMST」)のデータ構造を定義することができる。
なお、行313及び行316に記述された「XFDLIB」は、登録集を特定するための登録集名である。登録集とは、原文名(ここでは、「KAKTANPF」)とそれに対応する実体(例えば、コピー句が保存されているパス)との対応関係を定義したものである。なお、本実施の形態において、登録集名「XFDLIB」で特定される登録集は、ファイル定義体との対応関係を定義した登録集を表す。したがって、行313及び行316の「COPY」命令は、ファイル定義体200を呼び出す命令となる。
また、行314及び行317に記述された「JOINING」及び「PREFIX」は、ファイル定義体200に含まれる項目名201の文字列の前方(左側)へ、「JOINING」の後ろに記述された文字(ここでは、「KAK」と「MEI」)と区切り文字「−」とを付加することを命令する命令語である。
図4は、コピー句生成部103が生成するコピー句400の一例を示す図である。
このコピー句400は、目的プログラム600に記述された「COPY」命令により、目的プログラム600の中に複写される。以下に、コピー句400の内容について詳述する。
コピー句400の行の始めに記述される番号「01」、「02」及び「03」は、階層番号を表す。階層番号が大きい行に記述されたデータ項目は、階層番号が小さい上方の行に記述されたデータ項目に属することを示す。つまり、階層番号が大きい行のデータ項目は、階層番号が小さい行のデータ項目を含む集団項目である。
行401は、項目名が「XXX−HINCOD」であり、型が「数値型(9)」であり、桁数が「6桁」であるデータ項目を示す。
また、行402は、項目名(グループ名)が「XXX−TANTBL」である集団項目に属するデータ項目を、2回繰り返すことを示す。すなわち、行403及び行404に記述されるデータ項目「XXX−KGTANK」及び「XXX−KGGENK」が、2回繰り返される。
図5は、テーブル定義生成部104が生成するテーブル定義500の一例を示す図である。
このテーブル定義500は、SQLを用いて記述されている。したがって、このテーブル定義500を、RDBMSにおいて実行することにより、テーブル定義500に記述されたデータ構造のテーブルが作成される。以下に、テーブル定義500の内容について述べる。
まず、行501は、「KAKTANPF」というテーブルを作成することを命令する。そして、行501に記載の括弧から最終行の括弧までの間の行において、テーブル「KAKTANPF」の項目ごとのデータ構造が定義される。
例えば、行502には、項目名が「HINCOD_UNUM」のデータ項目が、整数部が6桁の数値型「NUMBER」であり、NULLデータ(長さ0の空文字列)を許さないことが記述されている。
行503〜行506は、ファイル定義体200の反復数204が設定されている場合のデータ項目に対応する。
例えば、ファイル定義体200において、項目名「KGTANK」の反復数204に「2」が設定されている場合、行503及び行504が、項目名「KGTANK」に対応する項目となる。
図6は、プログラム変換部105が入力プログラム300を変換することにより生成される目的プログラム600の一例を示す図である。
図6に示す目的プログラム600は、図3に示した入力プログラムと同様に、見出し部601(IDENTIFICATION DIVISION.)、環境部602(ENVIRONMENT DIVISION.)、データ部603(DATA DIVISION.)及び手続き部604(PROCEDURE DIVISION.)により構成される。
そして、図6に示す目的プログラム600は、データ部603の下線を引いた部分が、図3に示した入力プログラム300と異なる。つまり、目的プログラム600に含まれる見出し部601、環境部602及び手続き部604は、入力プログラム300に含まれる見出し部301、環境部302及び手続き部304と同一である。以下に、データ部603について、詳細に説明する。
行611及び行612は、入力プログラム300の行311及び行312と同様であるので説明を省略する。
行613は、原文名「KAKTANPF」で特定されるコピー句400を複写するように命令する。ここで、登録集名「FDLIB」は、原文名「KAKTANPF」に対応するコピー句400が定義された登録集を特定する名称である。
次に、行614は、上述の行613の命令と同時に、コピー句400に含まれる文字「XXX」を置換(「DISJOINING」)することを命令する。
そして、行615は、上述の行613及び行614の命令と同時に、行614で置換される文字「XXX」が含まれる単語に対して、前方(左側)から、文字「KAK」を付加することを命令する。
このように、行613〜行615の命令により、コピー句400で定義された項目名に含まれる文字「XXX」が文字「KAK」に置き換わるように、コピー句400の内容が目的プログラム600へ複写される。
行616〜行617は、上記と同様に、原文名「KAKTANPF」で特定されるコピー句400を、文字「XXX」が文字「MEI」に置き換わるように、複写することを命令する。
このように、特定の文字が付加されていた単語において、当該特定の文字を新たな文字に置換することにより、同一のコピー句400を用いて、複数のデータファイル(ここでは、「KAKMST」と「MEIMST」)のデータ構造を定義することができる。
次に、以上のように構成されたプログラム変換装置100の動作について説明する。
図7は、プログラム変換装置が実行するプログラムの変換に関する処理の流れを示すフローチャートである。
まず、コピー句生成部103は、ファイル定義体200等に基づいて、コピー句400を生成する(ステップS701)。なお、本処理の詳細は、図8において説明する。
次に、テーブル定義生成部104は、ファイル定義体200に基づいて、テーブル定義500を生成する(ステップS702)。具体的には、テーブル定義生成部104は、ファイル定義体200に含まれる項目名201、型202、桁数203等に対応するデータ構造となるように、テーブル定義500を生成する。なお、本処理の詳細は、図9において説明する。
次に、プログラム変換部105は、ファイル定義体200を用いてデータファイルを定義する入力プログラム300を、コピー句400を複写する命令と、複写したコピー句400から所定の文字を置換する命令とを用いてデータファイルを定義する目的プログラム600へ変換する(ステップS703)。なお、本処理の詳細は、図10において説明する。
最後に、出力部106は、コピー句生成部103、テーブル定義生成部104及びプログラム変換部が生成したコピー句400、テーブル定義500及び目的プログラム600を、記録媒体等へ出力する(ステップS704)。
なお、本実施の形態では、コピー句400、テーブル定義500及び目的プログラム600が、図7に示すような一連の処理で生成される事例について説明するが、本発明が適用されるプログラム変換装置は、このようなプログラム変換装置に限定されるものではない。例えば、入力部101からの命令に基づいて、個別に、コピー句400、テーブル定義500及び目的プログラム600を生成可能なプログラム変換装置100でもよい。
また、プログラム変換装置は、コピー句400の生成より先に、テーブル定義500の生成を行ってもよい。すなわち、コピー句400、テーブル定義500及び目的プログラム600は、どのような順番で生成されてもよい。
図8は、図7に示したステップS701の詳細な処理の流れを示すフローチャートである。つまり、図8は、コピー句生成部103がコピー句400を生成する処理の詳細なフローチャートである。
まず、コピー句生成部103は、記憶部102に格納されたファイル定義体200を取得する(ステップS801)。
続いて、コピー句生成部103は、取得したファイル定義体200の項目名201に、所定の文字と区切り文字とを付加した項目名を作成する(ステップS802)。例えば、所定の文字を「XXX」とし、区切り文字を「−」とした場合、コピー句生成部103は、ファイル定義体200に含まれる項目名「HINCOD」に文字「XXX−」を付加した項目名「XXX−HINCOD」を作成する。
次に、コピー句生成部103は、ステップS802で作成した項目名と、ファイル定義体200に含まれる型202、桁数203、反復数204等とを用いて、コピー句400を生成する(ステップS803)。例えば、図2及び図4に示すように、コピー句生成部103は、型202においては、ファイル定義体200の「U」は、コピー句400では「9」となるように、コピー句400を生成する。
以上のように、コピー句生成部103は、ファイル定義体200に基づいて、コピー句400を生成する。
なお、記憶部102に複数のファイル定義体が格納されている場合は、プログラム変換装置100は、ファイル定義体ごとに図8に示した処理を繰り返すようにしてもよいし、作業者が入力部101で選択したファイル定義体についてのみ図8に示した処理を実行するようにしてもよい。
図9は、図7に示したステップS702の詳細な処理の流れを示すフローチャートである。つまり、図9は、テーブル定義生成部104がテーブル定義500を生成する処理の詳細なフローチャートである。
まず、テーブル定義生成部104は、記憶部102に格納されたファイル定義体200を取得する(ステップS901)。
次に、テーブル定義生成部104は、取得したファイル定義体200のレコードごとに、以下のステップS903〜S908の処理を繰り返す(ステップS902)。
次に、テーブル定義生成部104は、レコードを選択し、選択したレコードが集団項目を定義しているのか否かを判定する(ステップS903)。
ここで、当該レコードが集団項目を定義している場合(ステップS903のYes)、テーブル定義生成部104は、次のレコードに進み処理を繰り返す(ステップS909)。例えば、図2に示したファイル定義体200の場合、テーブル定義生成部104は、項目名201が「KEY」であるレコードが集団項目を定義していると判定し、次のレコードへ処理を進める。
一方、当該レコードが集団項目を定義していない場合(ステップS903のNo)、テーブル定義生成部104は、反復数204が設定されているか否かを判定する(ステップS904)。例えば、図2に示したファイル定義体200の場合、項目名201が「HINCOD」であるレコードは、集団項目を定義していない、つまり、単独項目を定義している。したがって、テーブル定義生成部104は、反復数204が設定されているか否かの判定処理に進む。
ここで、当該レコードにおいて、反復数204が設定されていない場合(ステップS904のNo)、テーブル定義500に当該レコードの項目を追加する(ステップS905)。例えば、テーブル定義生成部104は、図2に示したファイル定義体200の項目名201「HINCOD」、型202「U」及び桁数203「6」のレコードが、図5に示すような項目名「HINCOD_UNUM」、型「NUMBER」、桁数「(06,00)」の項目となるように、テーブル定義500に追加する。
一方、当該レコードにおいて、反復数204が設定されている場合(ステップS904のYes)、テーブル定義生成部104は、設定された反復数の回数だけ、テーブル定義500に当該レコードの項目を追加する処理を繰り返す(ステップS906、ステップS907)。例えば、図2に示したファイル定義体200の項目名201が「KGTANK」の項目の場合、テーブル定義生成部104は、1回目の処理で「KGTANK001_UDEC」の項目をテーブル定義500に追加し、2回目の処理で「KGTANK002_UDEC」の項目をテーブル定義500に追加する。
このように、テーブル定義生成部104は、反復数204に設定された回数だけ処理の繰り返す(ステップS908)。その結果、反復数204に設定された数に応じて、テーブルに項目を作成するための命令が作成される(例えば、図5の行503〜506)。
そして、テーブル定義生成部104は、まだ上記の処理(ステップS903〜S908)が実行されていないレコードがある場合は、再度ステップS902の処理へ進む。また、テーブル定義生成部104は、まだ上記の処理(ステップS903〜S908)が実行されていないレコードがない場合は、図7のステップS703の処理へ進む。
以上のように、テーブル定義生成部104は、ファイル定義体200に基づいて、テーブル定義500を生成する。
なお、記憶部102に複数のファイル定義体が格納されている場合は、プログラム変換装置100は、ファイル定義体ごとに図9に示した処理を繰り返すようにしてもよいし、作業者が入力部101で選択したファイル定義体についてのみ図9に示した処理を実行するようにしてもよい。
図10は、図7に示したステップS703の詳細な処理の流れを示すフローチャートである。つまり、図10は、プログラム変換部105が目的プログラム600を生成する処理の詳細なフローチャートである。
まず、プログラム変換部105は、記憶部102に格納された入力プログラム300を取得する(ステップS1001)。
次に、プログラム変換部105は、取得した入力プログラム300のデータ部303の中で、ファイル定義体200を呼び出す命令(「COPY」命令)を特定する(ステップS1002)。
次に、プログラム変換部105は、特定した命令によって呼び出されるファイル定義体が定義された登録集を特定するための登録集名を、変換後の命令によって取り込まれるコピー句が定義された登録集を特定するための登録集名に変更する(ステップS1003)。例えば、図3及び図6に示したように、プログラム変換部105は、登録集名を「XFDLIB」から「FDLIB」に変換する。
これにより、ファイル定義体200を呼び出す命令が、コピー句400を複写する命令に変換される。
次に、プログラム変換部105は、コピー句400を生成する際に付加した所定の文字を置換する命令を追加する(ステップS1004)。例えば、図6に示すように、「DISJOINING XXX」の命令を追加する。
このように、コピー句400を複写する場合に、単独では実行できない「JOINING」命令を、「DISJOINING」命令と同時に実行することにより、目的プログラム600は、文字「XXX」を、文字「KAK」等に置換するように命令することが可能となる。
すなわち、プログラム変換部105は、入力プログラム300のファイル定義体200を呼び出してデータファイルを定義する部分を、コピー句400を複写してデータファイルを定義することが可能なように、入力プログラム300を目的プログラム600へ変換する。
以上のように、本実施の形態のプログラム変換装置100によれば、ファイル定義体200を利用してデータファイルを定義するプログラムを、コピー句400を利用してデータファイルを定義するプログラム、つまり、オープンプラットフォームにおいて実行可能なプログラムに変換することができる。すなわち、プログラム変換装置100は、ベンダー独自の拡張命令が加えられた高級言語で記述されたプログラムから、オープンプラットフォームにおいて実行可能な汎用的な高級言語で記述されたプログラムに変換することができる。
また、本実施の形態のプログラム変換装置100は、入力プログラム300のデータ部303のみを自動的に変換する。つまり、プログラム変換装置100は、比較的記述量の多い手続き部を変換する必要がない。したがって、本実施の形態のプログラム変換装置100は、プログラムの変換量を少なくすることができる。つまり、本実施の形態のプログラム変換装置100は、プログラム変換に要する時間と、プログラム変換時に発生する変換ミスとを、低減することを可能とする。
さらに、本実施の形態のプログラム変換装置100は、プログラム変換とともに、RDBMSにおいてテーブルを作成することが可能なテーブル定義500を生成することができる。このテーブル定義500により作成されるテーブルと、データを入出力する命令をSQL文に変換する市販プログラムとを利用すれば、目的プログラム600は、手続き部を修正することなく、RDBMSにアクセスすることが可能となる。つまり、本実施の形態のプログラム変換装置100は、ネットワーク型のデータベースにアクセスする入力プログラムを、リレーショナルデータベースにアクセスする目的プログラムへ、効率的に変換することを可能とする。
さらに、具体的に本実施の形態のプログラム変換装置100の効果を説明するために、図23に示した従来の変換方法により変換されたシステムと、本実施の形態のプログラム変換装置100により変換されたシステムとを比較して説明する。
図11は、本実施の形態に係るプログラム変換装置100によりプログラム変換した場合の、変換後のシステムを示す概念図である。具体的には、図11に示す変換後システム3000は、図22に示したレガシーシステム5000を、プログラム変換装置100により変換したシステムである。
図11に示すように、変換後システム3000のプログラム3001は、「DISJOINING」命令が加えられ、登録集名が「FDLIB」に変更されただけである。すなわち、図23に示した従来の変換方法により変換されたプログラム5501と比べて変換量が少ない。したがって、変換に必要な作業量、変換時に発生する変換ミス等を削減することが可能となる。
また、変換後システム3000のコピー句3002は、レガシーシステム5000のファイル定義体5003と1対1で対応するので、比較的容易に生成することができる。
(実施の形態2)
以下、本発明の実施の形態2に係るプログラム変換装置1000ついて、図面を用いて詳細に説明する。
図12は、本実施の形態のプログラム変換装置1000の特徴的な機能構成を示すブロック図である。なお、実施の形態1と同じ構成部に関しては同一符号にて示し説明を省略する。
また、本実施の形態のプログラム変換装置1000は、コピー句生成部1003及びプログラム変換部1005の持つ機能が実施の形態1のプログラム変換装置100とは一部異なっているが、その他の構成部及び機能等は実施の形態1のプログラム変換装置100と同じである。なお、説明の便宜のため、本実施の形態のプログラム変換装置1000では、実施の形態1のプログラム変換装置100と比べて、入力プログラム1300及び目的プログラム1600が変更されている。
図12に示すコピー句生成部1003は、入力プログラム1300において、ファイル定義体200を用いてデータファイルを定義する部分が、項目名に文字を付加してデータファイルを定義している場合には、ファイル定義体200に格納された項目名に、所定の文字と区切り文字とを付加した新たな項目名を作成し、作成した新たな項目名と項目属性とを用いて、データファイルを定義する命令であるコピー句を生成する。一方、入力プログラム1300において、ファイル定義体200を用いてデータファイルを定義する部分が、項目名に文字を付加してデータファイルを定義していない場合には、コピー句生成部1003は、ファイル定義体200に格納された項目名と同じ項目名と項目属性とを用いて、データファイルを定義する命令であるコピー句を生成する。
図12に示すプログラム変換部1005は、入力プログラム1300において、ファイル定義体200を用いてデータファイルを定義する部分が、項目名に文字を付加してデータファイルを定義している場合には、コピー句1400を複写する命令と、複写したコピー句1400から所定の文字を置換する命令とを用いてデータファイルを定義するように当該部分を修正することにより、入力プログラム1300を目的プログラム1600に変換する。
図13は、記憶部102に格納される入力プログラム1300の一例を示す図である。
図に示すように、入力プログラム1300は、データファイル「KAKMST」のデータファイル定義において、項目名に文字を付加するように命令していない。すなわち、行1301及び行1302は、ファイル定義体200に定義された項目名と同一の項目名を用いて、データファイルのデータ構造を定義することを命令している。一方、データファイル「MEIMST」のデータファイル定義では、入力プログラム1300は、項目名に文字を付加するように命令している。すなわち、行1303、行1304及び行1305は、「KAKTANPF2」に対応するファイル定義体に定義された項目名に対して「MEI−」を付加した項目名を用いて、データファイルのデータ構造を定義することを命令している。
図14Aは、コピー句生成部1003が生成するコピー句1400の一例を示す図である。
図に示すように、「KAKTANPF」に対応するコピー句1400において、項目名は、図2に示すファイル定義体200に格納された項目名と同じ項目名である。なお、「KAKTANPF2」に対応するコピー句については、実施の形態1において示したコピー句400と同様であるので、図示を省略する。
図14Bは、プログラム変換部1005が入力プログラム1300を変換することにより生成される目的プログラム1600の一例を示す図である。
図に示すように、目的プログラム1600のデータファイル「KAKMST」のデータファイル定義においては、図6に示した行614と異なり、所定の文字をコピー句400の文字列から置換する命令(「DISJOINING」命令)が付加されない。
次に、以上のように構成されたプログラム変換装置1000の動作について説明する。
本実施の形態のプログラム変換装置1000は、実施の形態1のプログラム変換装置100と同様に、図7に示した処理を実行する。
図15Aは、図7に示したステップS701の詳細な処理の流れを示すフローチャートである。つまり、図15Aは、コピー句生成部1003がコピー句1400を生成する処理の詳細なフローチャートである。
まず、コピー句生成部1003は、記憶部102に格納されたファイル定義体200を取得する(ステップS1501)。
次に、コピー句生成部1003は、ファイル定義体200が利用されているデータファイル定義において、「JOINING」命令が存在するか否かを判定する(ステップS1502)。
ここで、「JOINING」命令が存在する場合(ステップS1502のYes)、コピー句生成部1003は、ファイル定義体の項目名に所定の文字を追加した項目名を作成する(ステップS1503)。一方、「JOINING」命令が存在しない場合(ステップS1502のNo)、コピー句生成部1003は、ファイル定義体の項目名と同じ項目名を作成する(ステップS1504)。
次に、コピー句生成部1003は、ステップS1503又はステップS1504で作成された項目名と、ファイル定義体200に含まれる型202、桁数203、反復数204等とを用いて、コピー句1400を生成する(ステップS1505)。
以上のように、コピー句生成部103は、ファイル定義体200に基づいて、コピー句1400を生成する。
図15Bは、図7に示したステップS703の詳細な処理の流れを示すフローチャートである。つまり、図15Bは、プログラム変換部1005が目的プログラム1600を生成する処理の詳細なフローチャートである。
ステップS1401〜S1403の処理は、図10に示したプログラム変換装置100の処理と同様であるので、説明を省略する。
ステップS1403の処理に続いて、プログラム変換部1005は、ステップS1402において特定した「COPY」命令に、「JOINING」命令が含まれているか否かを判定する(ステップS1404)。
ここで、「COPY」命令に「JOINING」命令が含まれている場合(ステップS1404のYes)、プログラム変換部1005は、コピー句400を生成する際に付加した所定の文字を置換する命令である「DISJOINING」命令を追加する(ステップS1405)。
一方、「COPY」命令に「JOINING」命令が含まれていない場合(ステップS1405のNo)、そのままステップS704の処理へ進む。
以上のように、本実施の形態のプログラム変換装置1000は、ファイル定義体200を用いてデータファイルを定義する入力プログラム1300において、項目名に文字を付加する場合と項目名に文字を付加しない場合とが混在している場合でも、自動的に目的プログラム1600を生成することが可能となる。つまり、本実施の形態のプログラム変換装置1000は、作業者が手入力により作業する必要がないので、プログラム変換に要する時間及び作業ミスを低減することが可能となる。
なお、本実施の形態では、入力プログラム1300において、ファイル定義体200を用いてデータファイルを定義する部分が項目名に文字を付加してデータファイルを定義していない場合には、コピー句生成部1003は、ファイル定義体200に格納された項目名と同じ項目名と項目属性とを用いて、データファイルを定義する命令であるコピー句を生成していたが、本発明が適用されるプログラム変換装置は、このようなプログラム変換装置に限定されるものではない。
例えば、入力プログラム1300において、ファイル定義体200を用いてデータファイルを定義する部分が項目名に文字を付加してデータファイルを定義していない場合であっても、コピー句生成部1003は、ファイル定義体200に格納された項目名に、所定の文字と区切り文字とを付加した新たな項目名を作成し、作成した新たな項目名と項目属性とを用いて、データファイルを定義する命令であるコピー句を生成してもよい。このとき、プログラム変換部1005は、図16に示すように、入力プログラムにおいて、ファイル定義体を用いてデータファイルを定義する部分が項目名に文字を付加してデータファイルを定義していない場合には、所定の文字と区切り文字とを含まない項目名へ項目名ごとに置換する命令を用いてデータファイルを定義するように修正することにより、入力プログラムを目的プログラムに変換する。
また、例えば、入力プログラム1300において、同一のファイル定義体200を用いてデータファイルを定義する部分が複数存在し、かつ、当該部分において、項目名に文字を付加してデータファイルを定義している場合と項目名に文字を付加してデータファイルを定義していない場合とが混在しているときのみ、プログラム変換部1005は、図16に示すように目的プログラムを生成するようにしてもよい。
(実施の形態3)
以下、本発明の実施の形態3に係るプログラム変換装置2000について、図面を用いて詳細に説明する。
図17は、本実施の形態のプログラム変換装置2000の特徴的な機能構成を示すブロック図である。なお、実施の形態1のプログラム変換装置100と同じ構成部に関しては同一符号にて示し説明を省略する。
また、本実施の形態のプログラム変換装置2000は、コピー句生成部2003が付加方向判定部2007を有する点が実施の形態1のプログラム変換装置100とは異なっているが、その他の構成部は実施の形態1のプログラム変換装置100と同じである。なお説明の便宜のため、本実施の形態のプログラム変換装置2000には、実施の形態1のプログラム変換装置100と比べて、ファイル定義体2200及びコピー句2400が追加され、入力プログラム2300が変更されている。
コピー句生成部2003は、付加方向判定部2007を有する。そして、コピー句生成部2003は、付加方向判定部2007において判定された方向から所定の文字と区切り文字とを付加した項目名を作成し、作成した項目名と項目属性とを用いてデータファイルを定義するコピー句を生成する。
付加方向判定部2007は、入力プログラム2300において、ファイル定義体200に格納された項目名に文字を付加してデータファイルを定義している場合、文字を付加する方向を決定する命令から文字の付加方向を判定する。
図18は、記憶部102に格納されるファイル定義体2200の一例を示す図である。
図18に示すファイル定義体2200は、図2に示すファイル定義体200と比べて、格納されているデータの内容が異なる。例えば、図18に示すファイル定義体2200では、項目名2201が「MEICOD」のデータ項目は、型2202が「U(数値型)」であり、桁数2203が「6桁」であり、項目順位2205が「KEY」であり、見出し2206が「名称コード」であることが示されている。
図19は、記憶部102に格納される入力プログラム2300の一例を示す図である。
図に示すように、入力プログラム2300は、データファイル「KAKMST」のデータファイル定義において、項目名に文字を前方から付加するようにデータファイルを定義する。
すなわち、行2311は、前方から文字を付加する命令「PREFIX」により、「KAKTANPF」で特定されるファイル定義体200に定義された項目名に、文字「KAK」を前方から付加して、データファイルのデータ構造を定義することを命令する。
また、入力プログラム2300は、「MEIMST」のデータファイル定義において、項目名に文字を後方から付加するように、データファイルを定義する。
すなわち、行2312は、後方から文字を付加する命令「SUFFIX」により、「MEISYOSF」で特定されるファイル定義体2200に定義された項目名に、文字「MEI」を後方から付加して、データファイルのデータ構造を定義することを命令する。
図20は、コピー句生成部2003が生成するコピー句2400の一例を示す図である。
図20に示すように、コピー句2400は、図4に示したコピー句400と、項目名に対して、所定の文字と区切り文字が付加されている方向が異なる。つまり、図20に示すコピー句2400には、ファイル定義体2200に格納された項目名に対して、後方から区切り文字「−」と所定の文字「XXX」とが付加されている。
次に、以上のように構成されたプログラム変換装置2000の動作について説明する。
本実施の形態のプログラム変換装置2000は、実施の形態1のプログラム変換装置100と同様に、図7に示した処理を実行する。
図21は、図7に示したステップS701の詳細な処理の流れを示すフローチャートである。つまり、図21は、コピー句生成部2003がコピー句2400を生成する処理の詳細なフローチャートである。
ステップS1901及びステップS1902の処理は、図8に示したステップS801及びステップS802の処理と同様であるので、説明を省略する。
ステップS1902の処理に続いて、コピー句生成部2003は、ステップS1902において抽出した「COPY」命令に含まれる、文字の付加する方向を決定する命令(付加方向命令)が、後方から付加することを意味する「SUFFIX」であるか否かを判定する(ステップS1903)。
ここで、付加方向命令が「SUFIIX」でない場合(ステップS1903のNo)、コピー句生成部2003は、ステップS1901において取得したファイル定義体200の項目名201に、所定の文字と区切り文字とを前方から付加した項目名を作成する(ステップS1904)。例えば、所定の文字を「XXX」とし、区切り文字を「−」とした場合、コピー句生成部2003は、ファイル定義体200に含まれる項目名「HINCOD」に文字「XXX−」を付加した項目名「XXX−HINCOD」を作成する。
一方、付加方向命令が「SUFIIX」である場合(ステップS1903のYes)、コピー句生成部2003は、ステップS1901において取得したファイル定義体2200の項目名2101に、所定の文字と区切り文字とを後方から付加した項目名を作成する(ステップS1905)。例えば、所定の文字を「XXX」とし、区切り文字を「−」とした場合、コピー句生成部2003は、ファイル定義体2200に含まれる項目名「MEICOD」に文字「−XXX」を付加した項目名「MEICOD−XXX」を作成する。
次に、コピー句生成部2003は、ステップS1904又はS1905において作成した項目名と、ファイル定義体200又は2200とを用いて、コピー句2400を生成する(ステップS1906)。
以上のように、本実施の形態のプログラム変換装置2000は、ファイル定義体200又は2200を用いてデータファイルを定義する入力プログラム2300において、項目名に文字を付加する方向が混在している場合でも、自動的に目的プログラム600を生成することが可能となる。つまり、本実施の形態のプログラム変換装置2000は、作業者の手入力による作業を介さずに、短時間で、変換ミスの少ない目的プログラム600を効率的に生成することが可能となる。
以上、本発明に係るプログラム変換装置について、実施の形態に基づいて説明したが、本発明は、この実施の形態に限定されるものではない。本発明の趣旨を逸脱しない限り、当業者が思いつく各種変形を本実施の形態に施したものや、異なる実施の形態における構成要素を組み合わせて構築される形態も、本発明の範囲内に含まれる。
例えば、移行先のオープンプラットフォームにおいて、「JOINING」及び「DISJOINING」命令が実行できない場合には、指定した文字を置換する命令である「REPLACING」命令を用いてもよい。
また、上記実施の形態のコピー句生成部は、所定の文字として「XXX」を利用していたが、「XXX」でない文字を利用してもよい。データ項目を定義する文字列と重複しない文字列であれば、どのような文字であってもよい。
本発明は、オフコン等において稼動するレガシーシステムを、オープンプラットフォームへ移行するためのプログラム変換装置、プログラム等として、例えば、オフコン、パソコン等で実行可能なプログラムとして、利用可能である。
本発明の実施の形態1に係るプログラム変換装置の特徴的な機能構成を示すブロック図である。 記憶部に格納されるファイル定義体の一例を示す図である。 記憶部に格納される入力プログラムの一例を示す図である。 コピー句生成部が生成するコピー句の一例を示す図である。 テーブル定義生成部が生成するテーブル定義の一例を示す図である。 プログラム変換部が入力プログラムを変換することにより生成される目的プログラムの一例を示す図である。 プログラム変換装置が実行するプログラムの変換に関する処理の流れを示すフローチャートである。 図7に示したステップS701の詳細な処理の流れを示すフローチャートである。 図7に示したステップS702の詳細な処理の流れを示すフローチャートである。 図7に示したステップS703の詳細な処理の流れを示すフローチャートである。 本発明の実施の形態1に係るプログラム変換装置によりプログラム変換した場合の、変換後のシステムを示す概念図である。 本発明の実施の形態2に係るプログラム変換装置の特徴的な機能構成を示すブロック図である。 記憶部に格納される入力プログラムの一例を示す図である。 コピー句生成部が生成するコピー句の一例を示す図である。 プログラム変換部が入力プログラムを変換することにより生成される目的プログラムの一例を示す図である。 図7に示したステップS701の詳細な処理の流れを示すフローチャートである。 図7に示したステップS703の詳細な処理の流れを示すフローチャートである。 項目名ごとに置換する命令が用いられた場合の目的プログラムの一例を示す図である。 本発明の実施の形態3に係るプログラム変換装置の特徴的な機能構成を示すブロック図である。 記憶部に格納されるファイル定義体の一例を示す図である。 記憶部に格納される入力プログラムの一例を示す図である。 コピー句生成部が生成するコピー句の一例を示す図である。 図7に示したステップS701の詳細な処理の流れを示すフローチャートである。 従来のレガシーシステムを示す概念図である。 従来の方法によりプログラム変換した場合の、変換後のシステムを示す概念図である。
符号の説明
100、1000、2000 プログラム変換装置
101 入力部
102 記憶部
103、1003、2003 コピー句生成部
104 テーブル定義生成部
105、1005 プログラム変換部
106 出力部
200、2200 ファイル定義体
300、1300、2300 入力プログラム
301、601 見出し部
302、602 環境部
303、603 データ部
304、604 手続き部
400、1400、2400 コピー句
500 テーブル定義
600、1600 目的プログラム
2007 付加方向判定部

Claims (1)

  1. 第1COBOLで記述された入力ソースプログラムを、第2COBOLで記述された出力ソースプログラムへ変換するコンピュータ実行可能なプログラムであって、
    前記第1COBOLは、データファイルのデータ構造を定義するファイル節において、ファイル定義体を呼び出す命令である第1「COPY」命令とともに、前記項目名に付加文字列及び区切り文字を付加する命令である「JOINING」命令を用いることにより、前記ファイル定義体に格納された項目名に付加文字列及び区切り文字が付加された付加項目名と前記ファイル定義体に格納された項目属性とによって特定されるデータ構造を定義することが可能な言語であり、
    前記第2COBOLは、前記ファイル節において、前記第1「COPY」命令とともに前記「JOINING」命令のみを用いることが不可能な言語であり、
    前記入力ソースプログラムには、第1「COPY」命令と、当該第1「COPY」命令に続いて記載された「JOINING」命令とが含まれ、
    前記コンピュータは、
    データファイルのデータ構造を特定するための項目名及び項目属性が格納されたファイル定義体と前記入力ソースプログラムとを記憶している記憶部を備え、
    前記プログラムは、
    前記記憶部に記憶されたファイル定義体に格納された項目名及び項目属性を読み出し、読み出した項目名と、当該項目名と重複しない文字列であるダミー文字列及び区切り文字とからなるダミー項目名を生成し、生成したダミー項目名と読み出した項目属性とによって特定されるデータ構造を定義するテキストデータであって、ソースプログラムの一部として取り込まれるためのテキストデータであるコピー句を生成するコピー句生成ステップと、
    前記記憶部に記憶された入力ソースプログラムを読み出し、読み出した入力ソースプログラムに含まれるファイル節における前記第1「COPY」命令を特定し、特定した前記第1「COPY」命令によって呼び出されるファイル定義体が定義された登録集を特定するための登録集名を、変換後の命令によって取り込まれるコピー句が定義された登録集を特定するための登録集名に変更することにより、前記第1「COPY」命令を、前記コピー句をソースプログラムの一部として取り込む命令である第2「COPY」命令に変換し、かつ、前記「JOINING」命令とともに用いることにより前記ダミー文字列を前記付加文字列に置換する命令となる「DISJOINING」命令を前記第2「COPY」命令と前記「JOINING」命令との間に挿入することにより、前記出力ソースプログラムを生成するプログラム変換ステップと、
    前記コピー句生成ステップにおいて生成された前記コピー句と、前記プログラム変換ステップにおいて生成された前記出力ソースプログラムとを出力する出力ステップとを前記コンピュータに実行させる
    プログラム。
JP2008218741A 2008-08-27 2008-08-27 プログラム Expired - Fee Related JP4405571B1 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2008218741A JP4405571B1 (ja) 2008-08-27 2008-08-27 プログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2008218741A JP4405571B1 (ja) 2008-08-27 2008-08-27 プログラム

Publications (2)

Publication Number Publication Date
JP4405571B1 true JP4405571B1 (ja) 2010-01-27
JP2010134487A JP2010134487A (ja) 2010-06-17

Family

ID=41706600

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008218741A Expired - Fee Related JP4405571B1 (ja) 2008-08-27 2008-08-27 プログラム

Country Status (1)

Country Link
JP (1) JP4405571B1 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5464673B2 (ja) * 2011-08-23 2014-04-09 Necシステムテクノロジー株式会社 コンパイル支援装置、コンパイル支援方法、及びプログラム
JP6700554B2 (ja) 2016-07-28 2020-05-27 富士通株式会社 分散処理管理方法、分散処理管理プログラム、および分散処理管理装置

Also Published As

Publication number Publication date
JP2010134487A (ja) 2010-06-17

Similar Documents

Publication Publication Date Title
US20070299975A1 (en) Systems and methods for migrating data
US9928283B2 (en) Tracing data through a transformation process using tracer codes
CN112463149B (zh) 一种面向软件定义卫星的可复用代码库构建方法与装置
EP1477915A2 (en) System and method of data modelling
JPH10254689A (ja) クライアント・サーバシステムのアプリケーション構成設計支援方式
Newman et al. A scale-out RDF molecule store for distributed processing of biomedical data
US9244706B2 (en) Command line shell command generation based on schema
JP4405571B1 (ja) プログラム
CN109063059A (zh) 行为日志处理方法、装置及电子设备
Lushbough et al. Life science data analysis workflow development using the bioextract server leveraging the iPlant collaborative cyberinfrastructure
CN116450107A (zh) 低代码平台二次开发软件的方法、装置、电子设备
Meier et al. Traceability enabled by metamodel integration
US20080022258A1 (en) Custom database system and method of building and operating the same
WO2017072872A1 (ja) 業務プログラム生成支援システムおよび業務プログラム生成支援方法
US8631393B2 (en) Custom database system and method of building and operating the same
JP2003303100A (ja) 情報処理システムおよび情報処理システム構築方法並びにこれに用いるプログラム
Ellison et al. Towards Platform Independent Database Modelling in Enterprise Systems
JP2014157384A (ja) 並列化設計支援システム、プログラム、および方法
Würz et al. Migrating monolithic applications to function as a service
WO2021084657A1 (ja) 変換装置、変換方法及びプログラム
Kalkhanda Learning AWK Programming: A fast, and simple cutting-edge utility for text-processing on the Unix-like environment
US11481545B1 (en) Conditional processing of annotated documents for automated document generation
CN117687681B (zh) 一种低代码应用的版本管理方法及系统
JP2012133478A (ja) データベース生成装置およびデータベース生成方法
JP2007034806A (ja) 情報処理装置及びプログラム

Legal Events

Date Code Title Description
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20091104

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20121113

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20121113

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20131113

Year of fee payment: 4

LAPS Cancellation because of no payment of annual fees