(57)【特許請求の範囲】
【請求項１】
リポジトリデータベースに記憶されるデータを読み取って利用するコンピュータからなるリバースエンジニアリング装置において、
リポジトリデータベースは、
装置名称データ、ボリューム名称データ、及びデータセット名称データと、ジョブ名データ、ジョブ内のＳｔｅｐ番号、及びＳｔｅｐ内のＤＤ番号とが関係付けされ記憶されている第１のテーブル記憶手段と、
ジョブ名データ、ジョブ内のＳｔｅｐ番号、及びＳｔｅｐ内のＤＤ番号と、ＤＤ名称データとが関係付けされ記憶されている第２のテーブル記憶手段と、
ジョブ名データ、及びジョブ内のＳｔｅｐ番号と、プログラム名データとが関係付けされ記憶されている第３のテーブル記憶手段と、
プログラム名称データと、ＤＤ名称データと、プログラム中のＤＤが関係する項目の出現開始番号及びプログラム中のＤＤが関係する項目の出現終了番号とが、関係付けされ記憶されている第４のテーブル記憶手段と、
親（呼出側）プログラム名称データと、子（呼出先）プログラム名称データとが関係付けされ記憶されている第５のテーブル記憶手段と、
プログラム名称データと、プログラム中に宣言されている項目の出現順番号と、項目名称データと、レベル番号、属性データ、オフセット値及びバイト数とが関係付けされ記憶されている第６のテーブル記憶手段とを含み、
第１のテーブル記憶手段、第２のテーブル記憶手段、及び第３のテーブル記憶手段は、定義体データの一つであるジョブ制御言語ソースコードの解析処理により生成されており、第４のテーブル記憶手段、第５のテーブル記憶手段、及び第６のテーブル記憶手段は、定義体データの一つであるプログラムソースコードの解析処理により生成されており、
更に、リバースエンジニアリング装置は、
データセットを特定するデータである装置名称データ、ボリューム名称データ、及びデータセット名称データが入力される入力手段と、
第１のテーブル記憶手段を検索して、入力手段から入力された装置名称データ、ボリューム名称データ、及びデータセット名称データから、ジョブ名データ、ジョブ内のＳｔｅｐ番号、及びＳｔｅｐ内のＤＤ番号を導出する第１の導出手段と、
第２のテーブル記憶手段を検索して、第１の導出手段により導出されたジョブ名データ、ジョブ内のＳｔｅｐ番号、及びＳｔｅｐ内のＤＤ番号から、ＤＤ名称データを導出する第２の導出手段と、
第３のテーブル記憶手段を検索して、第１の導出手段により導出されたジョブ名データ、及びジョブ内のＳｔｅｐ番号から、プログラム名データを導出する第３の導出手段と、
第５のテーブル記憶手段を検索して、第３の導出手段により導出されたプログラム名データを親プログラム名称に当て嵌めその配下の子プログラムの子プログラム名称データを抽出する第４の抽出手段と、
第４のテーブル記憶手段を検索して、第３の導出手段により導出されたプログラム名データ若しくは第４の抽出手段により抽出された子プログラム名称データと、第２の導出手段により導出されたＤＤ名称データとから、プログラム中のＤＤが関係する項目の出現開始番号及びプログラム中のＤＤが関係する項目の出現終了番号とを導出する第５の導出手段と、
第６のテーブル記憶手段を検索して、第３の導出手段により導出されたプログラム名データ若しくは第４の抽出手段により抽出された子プログラム名称データと、第５の導出手段により導出されたプログラム中のＤＤが関係する項目の出現開始番号及びプログラム中のＤＤが関係する項目の出現終了番号とから、プログラム中に宣言されている項目の出現順番号と、項目名称データと、レベル番号、属性データ、オフセット値及びバイト数とを取得する第６の取得手段と、
第６の取得手段により取得された、プログラム中に宣言されている項目の出現順番号と、項目名称データと、レベル番号、属性データ、オフセット値及びバイト数から、ファイルレイアウトを編集し出力する編集出力手段とを有し、
データセットを特定するデータである装置名称データ、ボリューム名称データ、及びデータセット名称データが入力手段から入力されれば、当該データセットを入力又は出力するプログラムにおける当該データセットのファイルレイアウトを編集出力手段から出力する、
リバースエンジニアリング装置。
【請求項２】
請求項１に記載のリバースエンジニアリング装置において、データセットを特定するデータである装置名称データ、ボリューム名称データ、及びデータセット名称データとを基にして、
当該プログラムにおける当該データセットのファイルレイアウトを出力する編集出力手段が受け取る、プログラム中に宣言されている項目の出現順番号と、項目名称データと、レベル番号、属性データ、オフセット値及びバイト数を、作成するためのコンピュータプログラム。
【請求項３】
請求項２に記載のコンピュータプログラムを記録する、記録媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、コンピュータを利用して稼動する適用業務システムにおけるデータセットの正確なファイルレイアウトを、該適用業務システムを構成するプログラム毎に把握する、リバースエンジニアリングツールに関する。
【０００２】
【従来の技術】
私企業のみならず中央や地方の行政機関など、様々な企業体において、業務の効率化及びサービスレベル向上のために、膨大な規模のコンピュータシステム（適用業務システム）が多数構築され、稼動している。
【０００３】
それら適用業務システムは、継続して生じる様々なニーズや、企業体を取り巻く状況の変動により、絶えず更新（変更）されることが、求められている。
【０００４】
ところが、特に、古くからコンピュータシステムを所有し維持している企業においては、適用業務システムを構成するプログラムそのものを更新することに、非常に多くの、然も大半の労力が割かれている。プログラムが更新される際には、更なる将来の維持管理作業を円滑に進め得ることを見越して、仕様書を始めとするドキュメントも同期を採って更新されることが一般に強く望まれている。しかし、仕様書（等のドキュメント）の更新が、適用業務システムの更新になかなか追いつかない、というのが多くの企業の現状である。
【０００５】
適用業務システムを更新する際には、略必ず、ファイル（データセット）のレイアウトの更新を伴う。かようにファイルのレイアウトの更新の頻度が高いにも拘らず、その内容が適時にファイルレイアウト仕様書（設計書）に反映されている、とは多くの企業において言い難い。最新の内容に維持されている企業であっても、相当に膨大な維持工数が費やされている。
【０００６】
ファイルレイアウトは、適用業務システムの開発／保守担当者にとっては、作業上不可欠の資料である。しかし、上記のことから、多数の開発／保守担当者の間で、最新のファイルレイアウトを共有することが困難になっている。
【０００７】
【発明が解決しようとする課題】
本発明は、適用業務システムの開発及び保守作業において、実際に存在する実ファイルの最新のファイルレイアウトを、正確に且つ容易に把握する、リバースエンジニアリングツールを提供することを目的とする。
【０００８】
【課題を解決するための手段】
本発明は、上記の目的を達成するために為されたものである。本発明に係る請求項１に記載のリバースエンジニアリング装置は、
リポジトリデータベースに記憶されるデータを読み取って利用するコンピュータからなるリバースエンジニアリング装置である。そのリバースエンジニアリング装置において、
リポジトリデータベースは、
装置名称データ、ボリューム名称データ、及びデータセット名称データと、ジョブ名データ、ジョブ内のＳｔｅｐ番号、及びＳｔｅｐ内のＤＤ番号とが関係付けされ記憶されている第１のテーブル記憶手段と、
ジョブ名データ、ジョブ内のＳｔｅｐ番号、及びＳｔｅｐ内のＤＤ番号と、ＤＤ名称データとが関係付けされ記憶されている第２のテーブル記憶手段と、
ジョブ名データ、及びジョブ内のＳｔｅｐ番号と、プログラム名データとが関係付けされ記憶されている第３のテーブル記憶手段と、
プログラム名称データと、ＤＤ名称データと、プログラム中のＤＤが関係する項目の出現開始番号及びプログラム中のＤＤが関係する項目の出現終了番号とが、関係付けされ記憶されている第４のテーブル記憶手段と、
親（呼出側）プログラム名称データと、子（呼出先）プログラム名称データとが関係付けされ記憶されている第５のテーブル記憶手段と、
プログラム名称データと、プログラム中に宣言されている項目の出現順番号と、項目名称データと、レベル番号、属性データ、オフセット値及びバイト数とが関係付けされ記憶されている第６のテーブル記憶手段とを含み、
第１のテーブル記憶手段、第２のテーブル記憶手段、及び第３のテーブル記憶手段は、定義体データの一つであるジョブ制御言語ソースコードの解析処理により生成されており、第４のテーブル記憶手段、第５のテーブル記憶手段、及び第６のテーブル記憶手段は、定義体データの一つであるプログラムソースコードの解析処理により生成されており、
更に、リバースエンジニアリング装置は、
データセットを特定するデータである装置名称データ、ボリューム名称データ、及びデータセット名称データが入力される入力手段と、
第１のテーブル記憶手段を検索して、入力手段から入力された装置名称データ、ボリューム名称データ、及びデータセット名称データから、ジョブ名データ、ジョブ内のＳｔｅｐ番号、及びＳｔｅｐ内のＤＤ番号を導出する第１の導出手段と、
第２のテーブル記憶手段を検索して、第１の導出手段により導出されたジョブ名データ、ジョブ内のＳｔｅｐ番号、及びＳｔｅｐ内のＤＤ番号から、ＤＤ名称データを導出する第２の導出手段と、
第３のテーブル記憶手段を検索して、第１の導出手段により導出されたジョブ名データ、及びジョブ内のＳｔｅｐ番号から、プログラム名データを導出する第３の導出手段と、
第５のテーブル記憶手段を検索して、第３の導出手段により導出されたプログラム名データを親プログラム名称に当て嵌めその配下の子プログラムの子プログラム名称データを抽出する第４の抽出手段と、
第４のテーブル記憶手段を検索して、第３の導出手段により導出されたプログラム名データ若しくは第４の抽出手段により抽出された子プログラム名称データと、第２の導出手段により導出されたＤＤ名称データとから、プログラム中のＤＤが関係する項目の出現開始番号及びプログラム中のＤＤが関係する項目の出現終了番号とを導出する第５の導出手段と、
第６のテーブル記憶手段を検索して、第３の導出手段により導出されたプログラム名データ若しくは第４の抽出手段により抽出された子プログラム名称データと、第５の導出手段により導出されたプログラム中のＤＤが関係する項目の出現開始番号及びプログラム中のＤＤが関係する項目の出現終了番号とから、プログラム中に宣言されている項目の出現順番号と、項目名称データと、レベル番号、属性データ、オフセット値及びバイト数とを取得する第６の取得手段と、
第６の取得手段により取得された、プログラム中に宣言されている項目の出現順番号と、項目名称データと、レベル番号、属性データ、オフセット値及びバイト数から、ファイルレイアウトを編集し出力する編集出力手段とを有し、
データセットを特定するデータである装置名称データ、ボリューム名称データ、及びデータセット名称データが入力手段から入力されれば、当該データセットを入力又は出力するプログラムにおける当該データセットのファイルレイアウトを編集出力手段から出力する。
【００１０】
本発明に係る請求項２に記載のコンピュータプログラムは、
請求項１に記載のリバースエンジニアリング装置において、データセットを特定するデータである装置名称データ、ボリューム名称データ、及びデータセット名称データとを基にして、
当該プログラムにおける当該データセットのファイルレイアウトを出力する編集出力手段が受け取る、プログラム中に宣言されている項目の出現順番号と、項目名称データと、レベル番号、属性データ、オフセット値及びバイト数を、作成するためのコンピュータプログラムである。
【００１２】
本発明に係る請求項３に記載の記録媒体は、
請求項２に記載のコンピュータプログラムを記録する、記録媒体である。
【００１３】
【発明の実施の形態】
本発明では、適用業務システム開発及び保守における、リバースエンジニアリングにより生成されるリポジトリが利用される。ここで、「リバースエンジニアリング」は、システムの構成要素（ｃｏｍｐｏｎｅｎｔ）とそれらの相互関係を判別し、システムを他の形態に表現し直すか又は高水準のシステム表現を生成することである。更にここでの「リポジトリ」は、適用業務システムでの利用又は操作の対象を記述した情報のデータベースであり、適用業務システムにおいての、データ項目、プログラム、システム資源、及び各種定義体などについてのメタ情報のデータベースである。
【００１４】
本発明における「リバースエンジニアリングにより生成されるリポジトリ」は、公知の技術である。後でも説明するように、該リポジトリは、リレーショナルデータベースモデルに従って構築されるのが好ましい（図４及び図６参照）。
【００１５】
図９は、本発明に係るリポジトリ１４の生成を模式的に示すブロック図である。本発明に係るリポジトリ１４は、サブシステム（適用業務システム）の構成要素である、プログラム２、ＪＣＬ（Ｊｏｂ  Ｃｏｎｔｒｏｌ  Ｌａｎｇｕａｇｅ；ジョブ制御言語）４、ＣＯＰＹ句６、ＤＢ（データベース）定義部８、及び現行管理データ１０などの、各種定義体を元データとする。それらの相互関係を整理し写像する解析処理によって、リポジトリ１４が形成される。
【００１６】
上記の各種定義体は、記録媒体上にてデータセットを構成する。よって、各種定義体のファイル群を入力ファイルとして、上記の解析処理は行なわれる。この解析処理は、パソコン、ワークステーション、メインフレーム等の、コンピュータにおいて実行され得る。解析処理を行なうコンピュータは特に限定されない。
【００１７】
最新の定義体のファイル群を入力ファイルとすれば、適用業務システムの構成要素、それらの相互関係においては、当然ながら、最新のものが写像される。従って、リポジトリを基準にして、システム仕様書、設計書、要件書などのドキュメントを人手を介さず自動的に作出する仕組みを構築すれば、それらドキュメントにおいて確実に最新性が担保され得ることになる。
【００１８】
上記の各種定義体の種類は、特に限定されない。例えば、ソースプログラムに係るプログラミング言語は、ＣＯＢＯＬ、ＦＯＲＴＲＡＮ、ＰＬ／Ｉ、Ｃ言語などでもよい。以下では、プログラミング言語をＣＯＢＯＬとして、且つ処理形態をバッチ処理（を中心）として説明を進める。
【００１９】
≪好適な実施の形態≫
上記リポジトリを利用して、適用業務システムにて入出力されるデータセット（ファイル）の個々のものの、ファイルレイアウトを把握する、リバースエンジニアリングツールの好適な実施形態について説明する。該リバースエンジニアリングツールは、パソコン、ワークステーション、メインフレーム等の、コンピュータにおいて、稼動される。
【００２０】
実際のファイル（以下、実ファイルと言う。）のファイルレイアウトを把握するにおいては、ソースプログラムだけでは不十分であり、ＪＣＬが不可欠となる。プログラム中では、通常、実ファイル名を直接記述せず仮想のファイル名（即ち、当該プログラム内でのみ有効なファイル名）を記述し、ＪＣＬにて、その仮想ファイル名と実ファイル名とを関連付けているからである。
【００２１】
プログラム内の仮想ファイル名が把握できれば、プログラム内の仮想ファイル名の記述部分を介して、入出力レコード定義部分や変数宣言部分におけるファイルレイアウト記述部分を把握することができる。図２は、実ファイルから（ファイルレイアウトに係る）変数宣言を如何に辿るかを簡略に示す模式図である。
【００２２】
図２では、左部にジョブ制御言語（ＪＣＬ）の簡易な構成例が、更に、右部にＣＯＢＯＬプログラムの簡易な構成例が、示されている。図２左部から、実ファイル「Ａ０１」は、「ＰＧＭ１」プログラム（又は「ＰＧＭ１」プログラムが呼出す副プログラム）にて、仮想ファイル「＊Ａ」として利用（即ち、入力又は出力）されていることがわかる（副プログラムについては、後で詳述する）。
【００２３】
「ＰＧＭ１」プログラムを確認する。「ＰＧＭ１」プログラムのソースコードにおいて、仮想ファイル「＊Ａ」に係る部分が抽出されれば、「ＰＧＭ１」プログラムから見た実ファイル「Ａ」のファイルレイアウトが確定可能となる。
【００２４】
「ＰＧＭ１」プログラムでは、「＊Ａ」に係る入出力（仮想）ファイル名使用宣言から、
・「入出力命令」部分と、
・「変数宣言」部分と
を検索（抽出）できることになる。「変数宣言」部分から、ファイルレイアウトは一義的に確定され、例えば、パソコンの表示画面に表示できることになる（図１参照）。ここで、上記の「変数宣言」部分は、「入出力命令」にて指定されているデータ項目に関連するものである。従って、ＣＯＢＯＬプログラムであるならば、
（ア）ＲＥＡＤ文、ＷＲＩＴＥ文で直接使用され、ＷＯＲＫＩＮＧ  ＳＴＯＲＡＧＥ  ＳＥＣＴＩＯＮに宣言されているデータ項目群、
（イ）ＦＩＬＥ  ＳＥＣＴＩＯＮに宣言されているデータ項目群、
の、２通りのレイアウトが出力される。
【００２５】
ジョブ制御言語に指定されているプログラム名は、主プログラムである。ところで、ファイルの利用（入出力）が主プログラムで行なわれず、主プログラムが呼出す副プログラムで行なわれることも多い。本発明に係るリバースエンジニアリングツールにおいては、後で説明するように、主プログラムと副プログラムとを関連付ける情報（テーブル）を参照するので、対象プログラムが副プログラムであっても、洩れなく抽出され得る。
【００２６】
一つの実ファイルを利用するプログラムが、複数存在することは、容易に想定され得る。一つの実ファイルを利用する複数のプログラムを夫々辿っていくことによって、複数のプログラムから見た一つの実ファイルに対する複数の（異なる）ファイルレイアウトが、導出されることになる。
【００２７】
次に、ＪＣＬ及びプログラムから作成されるリポジトリ（テーブル）を用いて、一つの実ファイルに係るファイルレイアウトを作成しコンピュータ画面に出力する手順を示す。
【００２８】
図３は、ジョブ制御言語のソースコードのひな型の例である。図４は、図３のソースコードから作成されるリポジトリ（テーブル）である。（１）は「ジョブとデータセットの関係」（ｔｂｌＤａｔａｓｅｔ＿ＪＯＢ）のテーブルであり、・装置名称、
・ボリューム名称、
・データセット名称、
・ジョブ名、
・ジョブ内のＳｔｅｐ番号（何番目のステップか）、
・Ｓｔｅｐ内のＤＤ番号（何番目のＤＤか）、
に関するデータをその内容として保持する。夫々の項目名は、図４（１）に示すように、「Ｕｎｉｔ」、「Ｖｏｌｕｍｅ」、「ＤＳＮａｍｅ」、「Ｊｏｂ」、「ＳｔｅｐＮｕｍ」、及び「ＤＤＮｕｍ」である。
【００２９】
ここで、周知のように、「ＤＤ」は「Ｄａｔａｓｅｔ  Ｄｅｆｉｎｉｔｉｏｎ（データセット定義）」のことであって、ＪＣＬ中のＤＤ行の「ＤＤ」の直前には、プログラムにおける上記の「仮想ファイル」名が記述される。
【００３０】
図４（２）は「ＤＤ情報」（ｔｂｌＤＤ）のテーブルであり、
・ジョブ名、
・ジョブ内のＳｔｅｐ番号（何番目のステップか）、
・Ｓｔｅｐ内のＤＤ番号（何番目のＤＤか）、
・データセット名称、
・ＤＤ名称、
に関するデータをその内容として保持する。夫々の項目名は、図４（２）に示すように、「Ｊｏｂ」、「ＳｔｅｐＮｕｍ」、「ＤＤＮｕｍ」、「ＤＳＮａｍｅ」、及び「ＤＤ」である。
【００３１】
図４（３）は「ジョブとステップとの関連」（ｔｂｌＳＴＥＰ）のテーブルであり、
・ジョブ名、
・ジョブ内のＳｔｅｐ番号（何番目のステップか）、
・プログラム名、
に関するデータをその内容として保持する。夫々の項目名は、図４（３）に示すように、「Ｊｏｂ」、「ＳｔｅｐＮｕｍ」、及び「ＰＧＭ」である。（１）、（２）、（３）いずれもリレーショナルデータベースモデルに則り作成されるのが望ましい。
【００３２】
更に、図５は、ＣＯＢＯＬにより記述されたプログラムコードのひな型の例である。図６は、図５のプログラムコードから作成されるリポジトリ（テーブル）である。（１）は「プログラムとＤＤの関連」（ｔｂｌＥＸＴＭＯＤＤＤ＿ＬＹ）のテーブルであり、
・プログラム名称（外部モジュール名称）、
・ＤＤ名称（ＳＥＬＥＣＴ文のＡＳＳＩＧＮ句より）、
・プログラム中のＤＤが関係する項目の出現番号（開始）、
・プログラム中のＤＤが関係する項目の出現番号（終了）、
に関するデータをその内容として保持する。夫々の項目名は、図６（１）に示すように、「ＥＸＴＭＯＤ」、「ＤＤ」、「ＦｒｏｍＳｅｑ」、及び「ＴｏＳｅｑ」である。
【００３３】
図６（２）は「プログラム中に宣言されている項目」（ｔｂｌＬｏｃａｌＩｔｅｍ）のテーブルであり、
・プログラム名称（外部モジュール名称）、
・プログラム中に宣言されている項目の出現順連番、
・レベル番号、
・項目名称（シンボル名称）、
・属性、
・オフセット値、
・バイト数、
に関するデータをその内容として保持する。夫々の項目名は、図６（２）に示すように、「ＥＸＴＭＯＤ」、「Ｓｅｑ」、「ＬｅｖｅｌＮｕｍ」、「Ｉｔｅｍ」、「Ａｔｔｒ」、「Ｏｆｆｓｅｔ」及び「Ｂｙｔｅ」である。
【００３４】
図６（３）は「プログラムの親子関連」（ｔｂｌＲＥＬＥＸＴＭＯＤ）のテーブルであり、
・親（呼出側）プログラム名称（外部モジュール名称）、
・子（呼出先）プログラム名称（外部モジュール名称）、
に関するデータをその内容として保持する。夫々の項目名は、図６（３）に示すように、「Ｐ＿ＥＸＴＭＯＤ」、及び「Ｃ＿ＥＸＴＭＯＤ」である。図６の（１）、（２）、（３）においても、いずれもリレーショナルデータベースモデルに則り作成されるのが望ましい。
【００３５】
図６（１）の「プログラムとＤＤの関連」（ｔｂｌＥＸＴＭＯＤＤＤ＿ＬＹ）テーブルの、「プログラム中のＤＤが関係する項目の出現番号（開始）（ＦｒｏｍＳｅｑ）」と、「プログラム中のＤＤが関係する項目の出現番号（終了）（ＴｏＳｅｑ）」とは、次のように決定される。
【００３６】
まず、ＤＤ名称に係るファイルのＲＥＡＤ命令がプログラムに存在する場合は、入力ファイル名に関連するＦＤ文の項目名称、又は、ＲＥＡＤ文のＩＮＴＯ句の後に記述されている項目名称について、ｔｂｌＬｏｃａｌＩｔｅｍテーブルを参照する。その項目名称が格納される該当行での「レベル番号（ＬｅｖｅｌＮｕｍ）」及びその前後の行（特に、後の行）に格納される「レベル番号（ＬｅｖｅｌＮｕｍ）」の大小関係により、上記の項目名称に係る「ＦｒｏｍＳｅｑ」（最小値）と「ＴｏＳｅｑ」（最大値）とを決定し、「プログラムとＤＤの関連（ｔｂｌＥＸＴＭＯＤＤＤ＿ＬＹ）」テーブルの該当行に格納する。
【００３７】
ＤＤ名称に係るファイルのＷＲＩＴＥ命令がプログラムに存在する場合は、出力ファイル名に関連するＦＤ文の項目名称、又は、ＷＲＩＴＥ文のＦＲＯＭ句の後に記述されている項目名称について、上述と同様に、「ＦｒｏｍＳｅｑ」（最小値）と「ＴｏＳｅｑ」（最大値）とを決定する。
【００３８】
図１０にて、ＣＯＢＯＬプログラム（ＭＡＣＴＨ−ＫＯＵＳＨＩＮ）のサンプル、及びそのｔｂｌＬｏｃａｌＩｔｅｍテーブルの一部を示す。図１０における「ＭＡＣＴＨ−ＫＯＵＳＨＩＮ」（プログラム名称）の「ＤＤ名１」（ＤＤ名称）に関しては、
（ＦｒｏｍＳｅｑ，ＴｏＳｅｑ）＝（１，１），（６，１２）
となることがわかる。
【００３９】
図８は、本発明の好適な実施の形態に係るリバースエンジニアリングツールが、一つの実ファイルに係るファイルレイアウトを作成する手順を、原理的側面から示している。更に、図７は、図８の手順を上述の（図４、図６の）テーブルを用いて説明するための図である。図８の手順を以下に示す。
【００４０】
Ｓ０２：実ファイルの情報が入力される。該情報とは、「Ｕｎｉｔ（装置名称）」、「Ｖｏｌｕｍｅ（ボリューム名称）」、「ＤＳＮａｍｅ（データセット名称）」である。
【００４１】
Ｓ０４：「ジョブとデータセットの関係（ｔｂｌＤａｔａｓｅｔ＿ＪＯＢ）」テーブルにより、上記Ｓ０２の実ファイル情報から「Ｊｏｂ（ジョブ名）」、「ＳｔｅｐＮｕｍ（ジョブ内のＳｔｅｐ番号）」、「ＤＤＮｕｍ（Ｓｔｅｐ内のＤＤ番号）」が導出される。
【００４２】
Ｓ０６：上記の「Ｊｏｂ」、「ＳｔｅｐＮｕｍ」、「ＤＤＮｕｍ」から、「ＤＤ情報（ｔｂｌＤＤ）」テーブルにおける該当行を導出する（図７の（ア）から（イ））。同様に、上記の「Ｊｏｂ」、「ＳｔｅｐＮｕｍ」から、「ジョブとステップとの関連（ｔｂｌＳＴＥＰ）」テーブルにおける該当行を導出する（図７の（ア）から（ウ））。
【００４３】
Ｓ０８：上記の「ＤＤ情報（ｔｂｌＤＤ）」テーブルの該当行に含まれるデータから、関連するＤＤ名称（ＤＤ）が判明する。同様に、上記の「ジョブとステップとの関連（ｔｂｌＳＴＥＰ）」テーブルの該当行に含まれるデータから、関連するプログラム名（ＰＧＭ）が判明する。それらの「ＤＤ名称（ＤＤ）」と「プログラム名（ＰＧＭ）」をキーとして「プログラムとＤＤの関連（ｔｂｌＥＸＴＭＯＤＤＤ＿ＬＹ）」テーブルを参照する（図７の（イ）（ウ）から（エ））。
【００４４】
Ｓ１０：上記の「プログラムとＤＤの関連（ｔｂｌＥＸＴＭＯＤＤＤ＿ＬＹ）」テーブルを参照する際には、「プログラムの親子関連（ｔｂｌＲＥＬＥＸＴＭＯＤ）」テーブルを利用して「プログラム名（ＰＧＭ）」を「親プログラム名称（Ｐ＿ＥＸＴＭＯＤ）」に当て嵌めその配下の子プログラム（副プログラム）も全て抽出する。その上で、「子プログラム名称（Ｃ＿ＥＸＴＭＯＤ）」の全てと上記の「ＤＤ名称（ＤＤ）」とで更にキーを作成して、「プログラムとＤＤの関連（ｔｂｌＥＸＴＭＯＤＤＤ＿ＬＹ）」テーブルを参照する（図７の（イ）（オ）から（エ））。
【００４５】
Ｓ１２：上記参照による抽出結果から、（副プログラムを含む）プログラム名と、その中で宣言されている上記ＤＤ名称に係るレイアウトの開始項目の番号と終了項目の番号とを、導出する。
【００４６】
Ｓ１４：上記の開始項目の番号から終了項目の番号までに相当するデータ項目を、「プログラム中に宣言されている項目（ｔｂｌＬｏｃａｌＩｔｅｍ）」テーブルより、ファイルレイアウトとして編集して出力する（図７の（ウ）から（エ））。ファイルレイアウト作成においては、レベル番号、データ項目の属性、オフセット値、バイト数の情報が必要になるが、それらは上記ｔｂｌＬｏｃａｌＩｔｅｍテーブルより取得される。
【００４７】
図１は、ファイルレイアウトのコンピュータ表示装置における出力例である。図１に示すように、当該画面においては、
・ＵＮＩＴ、
・ＶＯＬＵＭＥ、
・データセット、
・使用外部モジュール
を条件データとして入力するように設定されている。当該画面では、上述の図８の手順（原理）に従い、ファイルレイアウトが作成、出力される。
【００４８】
前に説明したように、プログラミング言語がＣＯＢＯＬであるならば、
（ア）ＲＥＡＤ文、ＷＲＩＴＥ文で直接使用され、ＷＯＲＫＩＮＧ  ＳＴＯＲＡＧＥ  ＳＥＣＴＩＯＮに宣言されているデータ項目群、
（イ）ＦＩＬＥ  ＳＥＣＴＩＯＮに宣言されているデータ項目群、
の、２通りのレイアウトが出力される。
【００４９】
≪その他の実施の形態について≫
以上、本発明に係る好適な実施の形態について説明したが、本発明は上記形態に限定されるものではない。ファイルとプログラムとの関係が明白であれば、ＣＯＢＯＬ以外の言語のプログラムにおいても、同様の手順にて、実ファイルとプログラムとを指定すれば該プログラムから見たファイルレイアウトを把握する仕組みを構築することが可能である。更に、バッチ処理のみならず、オンライン処理に係るシステムにおいても、同様の仕組みを構築することが可能である。
【００５０】
【発明の効果】
本発明を利用することにより、適用業務システムの開発及び保守作業において、実際に存在する実ファイルの最新のファイルレイアウトを、プログラム毎に正確に且つ容易に把握することが可能となる。
【図面の簡単な説明】
【図１】ファイルレイアウトのコンピュータ表示装置における出力例である。
【図２】実ファイル名からファイルレイアウトに係る変数宣言を如何にたどるかを簡略に示す模式図である。
【図３】ジョブ制御言語のソースコードのひな型の例である。
【図４】図３のソースコードから作成されるリポジトリ（テーブル）の一部である。
【図５】ＣＯＢＯＬにより記述されたプログラムコードのひな型の例である。
【図６】図５のプログラムコードから作成されるリポジトリ（テーブル）の一部である。
【図７】本発明の好適な実施の形態に係るリバースエンジニアリングツールが、一つの実ファイルに係るファイルレイアウトを作成する手順を、テーブルの例を用いて説明するための図である。
【図８】本発明の好適な実施の形態に係るリバースエンジニアリングツールが、一つの実ファイルに係るファイルレイアウトを作成する手順を原理的側面から示す流れ図である。
【図９】本発明に係るリポジトリの生成を模式的に示すブロック図である。
【図１０】ＣＯＢＯＬプログラム（ＭＡＣＴＨ−ＫＯＵＳＨＩＮ）のサンプル、及びそのｔｂｌＬｏｃａｌＩｔｅｍテーブルの一部である。
【符号の説明】
２・・・プログラムファイル、４・・・ＪＣＬファイル、６・・・ＣＯＰＹ句ファイル、８・・・ＤＢ定義体ファイル、１０・・・その他現行管理データファイル、１２・・・各種定義体ファイル、１４・・・リポジトリ。
【図１】
0003577480.tif 000002
【図２】
0003577480.tif 000003
【図３】
0003577480.tif 000004
【図４】
0003577480.tif 000005
【図５】
0003577480.tif 000006
【図６】
0003577480.tif 000007
【図７】
0003577480.tif 000008
【図８】
0003577480.tif 000009
【図９】
0003577480.tif 000010
【図１０】
0003577480.tif 000011