(57)【要約】【課題】前処理後のソースファイルの取込関係構造図を出力するプログラム解析装置及びプログラムを提供する。【解決手段】ソースプログラムファイルを読み込み、ファイル取込命令があった場合に取込順序識別情報と取込元ソースプログラムファイルのファイル情報と被取込ソースプログラムファイルのファイル情報とを抽出する情報抽出手段と、前記情報抽出手段で抽出した取込順序識別情報と取込元のソースプログラムファイルのファイル情報と被取込ソースプログラムファイルのファイル情報とに基づきファイルの取り込み関係構造図を出力する出力制御手段により、前処理実行後のファイルの取り込み関係構造図を出力する。【選択図】図１
2004192084.tif 000002
【特許請求の範囲】
【請求項１】
１以上のソースプログラムファイルを記憶したソースファイル記憶手段と、
前記ソースファイル記憶手段に記憶されたソースプログラムファイルを読み込み、ファイル取込命令があった場合に取込順序識別情報と取込元ソースプログラムファイルのファイル情報と被取込ソースプログラムファイルのファイル情報とを抽出する情報抽出手段と、
前記情報抽出手段で抽出した取込順序識別情報と取込元のソースプログラムファイルのファイル情報と被取込ソースプログラムファイルのファイル情報とに基づきファイルの取り込み関係構造図を出力する出力制御手段と
を備えることを特徴とするプログラム解析装置。
【請求項２】
前記ソースファイル記憶手段に記憶されたソースプログラムファイルを開いて読み込み、前処理を実行して前処理結果レコードを前処理結果ファイル記憶手段に記憶すると共に該開いたソースプログラムファイルに対する前処理が終了すると該ソースプログラムファイルを閉じる前処理手段を更に備え、
前記情報抽出手段は、前記前処理手段が前記ソースプログラムファイルを開く都度該ソースプログラムファイルのファイル開始情報を、該前処理手段が該ソースプログラムファイルファイルを閉じる都度該ソースプログラムファイルのファイル終了情報を前記前処理結果ファイル記憶手段に更に記憶し、且つ、前記被取込ソースプログラムファイルのファイル情報に更に該前処理結果ファイル記憶手段における該ソースプログラムファイルの開始情報の位置を関連付けて抽出し、
前記出力制御手段は、更に、該出力制御手段で出力したファイル取り込み関係構造図における特定のソースプログラムファイルの指定に基づき、前記情報抽出手段が抽出した該ソースプログラムファイルの開始情報の位置と、前記前処理結果ファイル記憶手段に記憶した開始情報及び終了情報に基づき、該特定のソースプログラムファイルの前処理結果レコードのみを出力する
ことを特徴とする請求項１記載のプログラム解析装置。
【請求項３】
コンピュータに、
１以上のソースプログラムファイルを記憶したソースファイル記憶部に記憶されたソースプログラムファイルを読み込み、ファイル取込命令があった場合に取込順序識別情報と取込元のソースプログラムファイルのファイル情報と被取込ソースプログラムファイルのファイル情報とを関連付けて抽出する情報抽出ステップと、
前記情報抽出ステップで抽出した取込順序識別情報と取込元ソースプログラムファイルのファイル情報と被取込ソースプログラムファイルのファイル情報とに基づきファイルの取り込み関係構造図を出力する出力制御ステップと
を実行させることを特徴とするプログラム解析プログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、プログラムのファイル取り込み関係を解析するためのプログラム解析装置、方法及びプログラムに関する。
【０００２】
【従来の技術】
従来、プログラムのファイル取り込み関係を解析するための技術としては、構文解析の対象となっている構文のソースプログラム全体での位置及び個々のソースファイル内での位置を出力するものがあった（例えば、特許文献１参照。）
また、複数のソースプログラムで構成されるプログラムにおいて、他ファイルからインクルード又はインラインされた部分について各文のソース行が存在するファイルを特定する情報を出力するものもあった（例えば、特許文献１参照。）
【０００３】
【特許文献１】
特開平０３−２５３９４３
【０００４】
【特許文献２】
特開平１１−２１２８２３
【０００５】
【発明が解決しようとする課題】
取り込みファイルを取り込む条件等により、１つの取り込みファイルであっても取り込み結果が異なる場合があることから、同じ取り込みファイルを複数回取り込むようなプログラムを解析する際に、どの取り込み元から取り込まれたものであるのかという取り込みファイルの取り込み関係を明らかにしたいという要請があった。
【０００６】
しかし、上記に示すような従来の技術は、どの取り込みファイルから取り込まれているものかを表現できるものではなかった。
【０００７】
このため、コンパイル時に取り込みファイルと取り込まれる順番を把握するためには、ソースプログラムの条件付きコンパイル・マクロ展開処理（以降、前処理と表記）を行った後のソース（以降、前処理結果ソースと表記）を解析して、この前処理結果ソースからファイルの取り込み関係関係を考慮しながらファイル名部分を１つ１つ抜き出してこなければならなかったため、非常な手間がかかるものであった。更に、大規模プログラムを解析したい場合等においては、前処理結果ソースは膨大な量となり、作業負荷が高すぎるため現実的ではなかった。
【０００８】
本発明はこのような問題点に鑑みてなされたものであり、ソースファイル・取り込みファイルの取り込み関係を出力するプログラム解析装置、方法及びプログラムを提供することにある。
【０００９】
【課題を解決するための手段】
本発明は、上記従来の問題点を解決するため、１以上のソースプログラムファイルを記憶したソースファイル記憶手段と、前記ソースファイル記憶手段に記憶されたソースプログラムファイルを読み込み、ファイル取込命令があった場合に取込順序識別情報と取込元ソースプログラムファイルのファイル情報と被取込ソースプログラムファイルのファイル情報とを抽出する情報抽出手段と、前記情報抽出手段で抽出した取込順序識別情報と取込元のソースプログラムファイルのファイル情報と被取込ソースプログラムファイルのファイル情報とに基づきファイルの取り込み関係構造図を出力する出力制御手段の各部を備え、前処理時にファイルの取込関係を情報ファイルに蓄積しておき、情報ファイルからファイルの取り込み関係構造図を出力することにより、前処理実行後のファイルの取り込み関係構造図を出力することを可能とする。
【００１０】
更に、前記ソースファイル記憶手段に記憶されたソースプログラムファイルを開いて読み込み、前処理を実行して前処理結果レコードを前処理結果ファイル記憶手段に記憶すると共に該開いたソースプログラムファイルに対する前処理が終了すると該ソースプログラムファイルを閉じる前処理手段を更に備え、前記情報抽出手段は、前記前処理手段が前記ソースプログラムファイルを開く都度該ソースプログラムファイルのファイル開始情報を、該前処理手段が該ソースプログラムファイルファイルを閉じる都度該ソースプログラムファイルのファイル終了情報を前記前処理結果ファイル記憶手段に更に記憶し、且つ、前記被取込ソースプログラムファイルのファイル情報に更に該前処理結果ファイル記憶手段における該ソースプログラムファイルの開始情報の位置を関連付けて抽出し、前記出力制御手段は、更に、該出力制御手段で出力したファイル取り込み関係構造図における特定のソースプログラムファイルの指定に基づき、前記情報抽出手段が抽出した該ソースプログラムファイルの開始情報の位置と、前記前処理結果ファイル記憶手段に記憶した開始情報及び終了情報に基づき、該特定のソースプログラムファイルの前処理結果レコードのみを出力することにより、情報ファイルと前処理結果ファイルからファイル取り込み関係構造図で示されるファイル毎に該当する前処理結果部分を出力する。
【００１１】
【発明の実施の形態】以下、この発明の本発明の実施の形態について図面を参照しながら説明する。
【００１２】
図１は本発明のプログラム解析装置１００の構成概要図である。同図に示すプログラム解析装置１００は、ソースプログラムファイル１１１〜１１ｘを記憶したソースファイル記憶部１１０、ソースファイル記憶部１１０に記憶されたソースプログラムファイル１１１〜１１ｘを読み込み前処理を実行して前処理結果レコード１５１１を作成して前処理結果ファイル１５１に出力する前処理部１３０、前処理部１３０の中で前処理時に制御情報レコード１５１２を作成して前処理結果ファイル１５１に出力し、且つ、ファイル情報レコード１６１１及び取込情報レコード１６１２を作成して情報ファイル１６１に出力する情報抽出部１４０、前処理結果ファイル１５１を記憶する前処理結果ファイル記憶部１５０、情報ファイル１６１を記憶する情報ファイル記憶部１６０、情報ファイル記憶部１６０に記憶された情報ファイル１６１に基づき出力情報レコード１８１を作成して出力結果ファイル１８１に出力し、前処理結果ファイル記憶部１５０に記憶された前処理結果ファイル１５１から前処理結果レコード１５１１を抽出し、出力部１９０に対する出力制御を行う出力制御部１７０、出力結果ファイル１８１を記憶する出力結果ファイル記憶部１８０、出力制御部１７０の出力制御に基づき出力を行う出力部１９０の各部を備える。
【００１３】
ソースプログラムファイル記憶部１１０に記憶したソースプログラムファイル１１１〜１１５の例を図２（ａ）〜図３（ｅ）に、前処理結果ファイル記憶部１５０に記憶された前処理結果ファイル１５１の例を図４〜５（ｆ）に、情報ファイル記憶部１６０に記憶された情報ファイル１６１のファイル情報レコード１６１１と取込情報レコード１６１２のレコードフォーマット及びレコード例を図６（ｇ）と（ｈ）に、それぞれ示す。
【００１４】
図２（ａ）〜図３（ｅ）に示すソースプログラムファイル１１１〜１１５及び図４〜５（ｆ）に示す前処理結果ファイル１５１の例では、実際のデータ内容の例の他に、以降の説明で判りやすいように、左側に枠を設け行番号を付加してある。
【００１５】
図４〜５（ｆ）に示す前処理結果ファイル１５１は、前処理部１３０で出力される前処理結果レコード１５１１の他に、情報抽出部で出力される「＃」で始まる制御情報レコード１５１２からなる。
【００１６】
図６（ｇ）に示すファイル情報レコード１６１１は、ファイルを一意に識別するファイルＩＤ１６１１１及びファイル名１６１１２の各項目を含む。
【００１７】
図６（ｈ）に示す取込情報レコード１６１２は、取り込み順序を示す取込ＩＤ１６１２１、取り込み元のファイルのファイルＩＤを示す取込元ファイルＩＤ１６１２２、取り込まれたファイルのファイルＩＤを示す被取込ファイルＩＤ１６１２３、取り込みの深さを示す階層１６１２４、及び前処理結果ファイルでの取り込まれたファイルの開始行を示す前処理結果ファイル開始位置１６１２５の各項目を含む。
【００１８】
次に図７に示す処理フローを用いて、本発明の実施の形態に係るプログラム解析装置における前処理フローについて以下に説明する。なお、本フローでは、ソースファイル記憶部１１０と「／ｈｏｍｅ／ｐｇｒ／」は同じものとして説明する。
【００１９】
本発明のプログラム解析装置１００は、ファイル名と条件を指定した前処理依頼に基づき、前処理部１３０を起動する。
【００２０】
ステップＳ０１０で、前処理部１３０がソースファイル記憶部１１０に記憶されたプログラムソースファイル１１１〜１１ｘをの内、指定されたファイル名のプログラムソースファイルを読み込んで開く。なお、本発明の要旨ではないため詳述しないが、本実施例において前処理部１３０は、別途の定義体に基づき、「＜＞」で囲まれたファイル名は「／ｈｏｍｅ／ｐｇｒ／ｉｎｃｌｕｄｅ／」配下のファイル、  「゛゛」で囲まれたファイル名は「／ｈｏｍｅ／ｐｇｒ／」のファイルと識別するものとする。
【００２１】
ステップＳ０２０で、情報抽出部１４０が、このファイルの開始を示す報制御情報レコード１５１２を作成して前処理結果ファイル１５１に挿入出力する。例えば、図２（ａ）に示すプログラムソースファイル１１１の例では、図４〜５（ｆ）に示す前処理結果ファイル１５１の１行目に示す「＃ｂｅｇｉｎ」で始まる制御情報レコード１５１２を作成して前処理結果ファイル１５１に出力する。ステップＳ０３０で、情報抽出部１４０が情報抽出処理を行う。ステップＳ０３０の情報抽出処理の詳細については後述する。
【００２２】
ステップＳ０４０で、前処理部１３０が開いたファイルの新しい１行を取り込む。ステップＳ０４０で一行取り込めた場合、ステップＳ０５０で、前処理部１３０がファイルありと判定して、前処理を行い、前処理結果レコード１５１１を作成して前処理結果ファイル１５１に出力する。前処理自体については本発明の要旨ではないため詳述しないが、例えば、図２（ａ）に示すプログラムソースファイル１１１の例では、この１行目を前処理した結果、図４〜５（ｆ）に示す前処理結果ファイル１５１の３行目に示すような前処理結果レコード１５１１を作成して前処理結果ファイル１５１に出力する。
【００２３】
ステップＳ０６０で、前処理部１３０がこの行がファイル取り込み指令であるか判定する。ステップＳ０６０で、ファイル取り込み指令でないと判定した場合、ステップＳ０４０に進む。例えば、図２（ａ）に示すプログラムソースファイル１１１の例では、１行目、２行目はファイル取り込み指令ではないと判定し、ステップＳ０４０に進む。
ステップＳ０６０で、前処理部１３０がこの行がファイル取込指令であると判定した場合、ステップ  Ｓ０７０で、情報抽出処理部１４０が、初期値を「０」とする取込ＩＤ１６１２１に取込ＩＤ１６１２１を１インクリメントした値を、初期値を「０」とする階層１６１２４に階層１６１２４を１インクリメントした値を、それぞれ設定し、前処理部１３０がこのファイル取り込み指令で指定された取り込みファイル名を指定して、処理Ａを再帰呼び出しする。例えば、図２（ａ）に示すプログラムソースファイル１１１の例では、３行目はファイル取り込み指令であると判定し、階層取込ＩＤ１６１２１に「１」を、階層１６１２４に「１」を、それぞれ設定し、処理Ａを再帰呼び出しする。
【００２４】
ステップＳ０４０で１行取り込めなかった場合、ステップＳ０５０で、前処理部１３０がファイル終了と判定して、ステップＳ０８０で、情報抽出部１４０が階層１６１２４に階層１６１２４を１デクリメントした値を設定すると共に、ファイルの終了を示す制御情報レコード１５１２を作成して前処理結果ファイル１５１に出力する。例えば、図２（ａ）に示すプログラムソースファイル１１１の例では、図４〜５（ｆ）に示す前処理結果ファイル１５１の５４行目に示すような「＃ｅｎｄ」で始まる制御情報レコード１５１２を作成して前処理結果ファイル１５１に出力する。その後、ステップＳ０９０でファイルを閉じて、取り込み元へ復帰する。復帰すべき取り込み元が存在しない場合には処理を終了する。
【００２５】
このようにして、図２（ａ）に示すプログラムソースファイル１１１と条件ＡＡを指定した前処理依頼に基づき、図２（ｂ）〜図３（ｅ）に示すプログラムソースファイル１１２〜１１５を取り込んだ結果の前処理結果ファイル１５１を図４〜５（ｆ）に示す。なお、図４〜５（ｆ）に示す前処理結果ファイル１５１では、復帰した時や、条件分岐で行を読み飛ばした時にも「＃」で始まる制御情報レコード１５１２を出力した例を示しているが、本願発明の要旨ではないため詳述しない。
【００２６】
次に図８に示す処理フローを用いて、本発明の実施の形態に係るプログラム解析装置における前処理のステップＳ０３０における情報抽出処理フローについて以下に説明する。
【００２７】
ステップＳ２１０で、情報抽出部１４０が、取込ＩＤ１６１２１が「０」より大きいか判定する。ステップＳ２１０で取込ＩＤ１６１２１が「０」より大きいと判定した場合だけ、ステップＳ２２０で、情報抽出部１４０が、取込元ファイルＩＤ１６１２２にファイルＩＤ１６１１１を、取込位置１６１２５にこの行の行番号を、前処理結果ファイル開始位置１６１２６に実際にファイルが開始される行として前処理結果ファイルの行番号に１加えた値をそれぞれ設定する。例えば、図２（ａ）に示すプログラムソースファイル１１１の３行目の取り込み指令の場合、情報抽出部１４０が、取込元ファイルＩＤ１６１２２に「０」、取込位置１６２５に「３」、前処理結果ファイル開始位置１６１２６に「６」を、それぞれ設定する。
【００２８】
ステップＳ２３０で、情報ファイル記憶部１６０に記憶された情報ファイル１６１を検索して、図７に示す前処理のステップＳ０２０で開いたファイルのファイル名と同じファイル名１６１１２を持つファイル情報レコード１６１１が存在するか判定する。ステップＳ２３０で、存在しないと判定した場合、ステップＳ２４０で、情報抽出部１４０が初期値を「０」とするファイルＩＤ１６１１１と、ファイル名１６１１２に図７の前処理概要フローのステップＳ０２０で開いたファイルのファイル名とを設定したファイル情報レコード１６１１を情報ファイル１６１に出力する。図６（ｇ）にファイル情報レコード１６１１のレコードフォーマットと実レコードの例を示す。例えば、図２（ａ）に示すプログラムソースファイル１１１の場合、図６（ｇ）に示すファイル情報レコード１６１１の２行目に示す、ファイルＩＤ１６１１１に「０」を、ファイル名１６１１２に「／ｈｏｍｅ／ｐｇｒ／ａ．ｃ」を設定したファイル情報レコード１６１１を情報ファイル１６１に出力する。
【００２９】
ステップＳ２３０で、存在すると判定した場合、ステップＳ２５０で、情報抽出部１４０が、該当のファイル情報レコード１６１１のファイルＩＤ１６１１１を取得する。例えば、図２（ａ）に示すプログラムソースファイル１１１の場合、図６（ｇ）に示すファイル情報レコード１６１１の２行目に示す、ファイルＩＤ１６１１１「０」を取得する。
【００３０】
ステップＳ２６０で、情報抽出部１４０が、取込ＩＤ１６１２１が「０」より大きいか判定する。ステップＳ２６０で取込ＩＤ１６１２１が「０」より大きいと判定した場合のみ、ステップＳ２７０で、被取込ファイルＩＤ１６１２３にファイルＩＤ１６１１を設定し、取込情報レコード１６１２を作成して情報ファイル１６１に出力する。図６（ｈ）に取込情報レコード１６１２の例を示す。例えば、図２（ａ）に示すプログラムソースファイル１１１の３行目の取り込み指令の場合、図６（ｈ）の２行目のように、既に取込元ファイルＩＤ１６１２２に「０」、階層１６１２４に「１」、前処理結果ファイル開始位置１６１２５に「６」がそれぞれ設定された取込情報レコード１６１２の被取込ファイルＩＤ１６１２３に「１」を設定した取込情報レコード１６１２を作成して情報ファイル１６１に出力する。
【００３１】
このようにして、図２（ａ）に示すプログラムソースファイル１１１と条件ＡＡを指定した前処理依頼に基づき、図２（ｂ）〜図３（ｅ）に示すプログラムソースファイル１１２〜１１５を取り込んだ結果の情報ファイル１６１のファイル情報レコード１６１１を図６（ｇ）に、取込情報レコード１６１２を図６（ｈ）に、それぞれ示す。
【００３２】
なお、本実施例の中では特に記載していないが、前処理結果ファイル記憶部１５０は、前処理結果ファイル１５１に対する１レコード出力毎に前処理結果ファイル１５１を記憶するようにしても良いし、全ての処理が終了した時に前処理結果ファイル１５１を記憶するようにしても良い。また、情報ファイル記憶部１６０についても、情報ファイル１６１に対する１レコード出力毎に情報ファイル１６１を記憶するようにしても良いし、全ての処理が終了した時に情報ファイル１６１を記憶するようにしても良い。
【００３３】
次に図９に示す処理フローを用いて、本発明の実施の形態に係るプログラム解析装置における出力制御処理フローについて以下に説明する。
【００３４】
本発明のプログラム解析装置１００は、前記前処理部１４０による処理に続き、出力制御部１７０を起動する。
【００３５】
ステップＳ４１０で、出力制御部１７０が、初期処理として出力制御処理の内部で利用する変数である階層Ｗに「０」を設定する。ステップＳ４３０で出力制御部１７０が、取込ＩＤ１６１２１が「０」より大きいか判定し、ステップＳ４３０で「０」より大きいと判定した場合、ステップＳ４４０で、出力制御部１７０が、情報ファイル１６１から取込ＩＤ１６１２１の取込情報レコード１６１２を検索し、ファイルＩＤ１６１１１にこの取り込み情報レコード１６１２の被取込ファイルＩＤ１６１２３を設定する。
【００３６】
ステップＳ４５０で、出力制御部１７０が、階層Ｗの値が「０」であるか、または、この取込情報レコード１６１２の階層１６１２４の値が階層Ｗの値以下であるか判定する。ステップＳ４５０で、階層Ｗの値が「０」である、または、この取込情報レコード１６１１の階層１６１２４の値が階層Ｗの値以下であると判定すると、ステップＳ４６０で、出力制御部１７０が、出力情報レコード１８１１に階層１６１２４の値から１減算した値の数分の空白と“＋”とを設定する。ステップＳ４５０で、階層Ｗが「０」でなく、且つ、階層１６１２４が階層Ｗより大きいと判定すると、ステップＳ４７０で、出力制御部１７０が、出力情報レコード１８１１に階層Ｗの値から１減算した値の数分の空白と“｜”と階層１６１２４の値から階層Ｗの値を減算した値の数分の空白と“＋”とを設定する。ステップＳ４８０で、出力制御部１７０が、階層１６１２４の値を階層Ｗに設定する。
【００３７】
ステップＳ４３０で取込ＩＤ１６１２１が「０」以下であると判定した場合、ステップＳ４９０で、出力制御部１７０がファイルＩＤ１６１１１に「０」を設定する。
【００３８】
ステップＳ５００で、出力制御部１７０が、ファイルＩＤ１６１１１で識別されるファイル情報レコード１６１１を情報ファイル１６１から抽出し、ファイルＩＤ１６１１１に対応するファイル名１６１１２を取得して、出力レコード１８１１に追加設定する。ステップＳ５１０で、出力制御部１７０が、出力情報レコード１８１１を出力情報ファイル１８１に出力する。ステップＳ５２０で、出力制御部１７０が、取込ＩＤ１６１２１に取込ＩＤ１６１２１を１デクリメントした値を設定する。
ステップＳ５３０で、出力制御部１７０が、取込ＩＤ１６１２１の値が「０」より小さいか判定する。ステップＳ５３０で取込ＩＤの値が「０」より小さいと判定すると、ステップＳ５４０で、出力制御部１７０が、出力情報ファイル１８１の出力情報レコード１８１１を逆順に並べ替えた後、取り込み関係構造図として出力部１９０に出力する。このようにして、図２（ａ）に示すプログラムソースファイル１１１と条件ＡＡを指定した前処理依頼に基づき、図２（ｂ）〜図３（ｅ）に示すプログラムソースファイル１１２〜１１５を取り込んだ結果の出力情報ファイル１８１を取り込み関係構造図として出力した例を図１１（ｉ）に示す。
【００３９】
また、ステップＳ５５０で、出力制御部１７０は、利用者の出力部１９０に出力した取り込み関係構造図のファイル名をクリックする等による前処理結果出力依頼に基づき、後述する前処理結果出力処理を行う。
【００４０】
次に図１０に示す処理フローを用いて、本発明の実施の形態に係るプログラム解析装置における出力制御処理のステップＳ５５０における前処理結果出力処理フローについて以下に説明する。
【００４１】
ステップＳ７１０で、出力制御部１７０が、利用者の出力部１９０に出力した取り込み関係構造図のファイル名のクリック等による指定を検知すると、該ファイルの前処理結果出力依頼ありと判定して、該ファイルの出力情報レコード１８１１の出力情報ファイル中の初期値を「０」とするレコード番号を取込ＩＤ１６１２１に設定する。例えば、図１１（ｉ）に示す１行目の「／ｈｏｍｅ／ｐｇｒ／ａ．ｃ」の場合、１行目であるため初期値「０」がレコード番号となり、これを取込ＩＤ１６１２１に設定する。ステップＳ７２０で、出力制御部１７０が、ステップＳ７１０で設定した取込ＩＤ１６１２１で識別される取込情報レコード１６１２を抽出して、初期値を「１」とする前処理結果出力処理内部で使用される変数である前処理結果ファイル位置Ｗに、この取り込み情報レコード１６１２の前処理結果ファイル位置１６１２５を設定する。なお、取込ＩＤ１６１２１が「０」である場合は、取り込み情報レコード１６１２が存在しないため、前処理結果ファイル開始位置１６１２５に「１」が設定されることになる。
【００４２】
ステップＳ７４０で、出力制御部１７０が、前処理結果ファイル１５１から前処理結果ファイル位置Ｗで識別される行を取得する。ステップＳ７５０で、出力制御部１７０が、ステップＳ７４０で取得した行が前処理結果出力依頼を受けたファイルの終了情報ではないかを判定する。ステップＳ７５０で、前処理結果出力依頼を受けたファイルの終了情報ではないと判定した場合、ステップＳ７６０で、出力制御部１７０が、この行が「＃ｂｅｇｉｎ」で始まる別のファイルの開始情報であるか判定する。
【００４３】
ステップＳ７６０で、別のファイルの開始情報であると判定した場合、ステップＳ７７０で、出力制御部１７０が、この別のファイルの開始情報「＃ｂｅｇｉｎ」に対応する終了情報「＃ｅｎｄ」までを読み飛ばし、ステップＳ８００に進む。途中でこの別のファイルの中に更に別の「＃ｂｅｇｉｎ」が出現した場合には、その更に別の「＃ｂｅｇｉｎ」に対応する「＃ｅｎｄ」までを読み飛ばした後、この別のファイルの「＃ｅｎｄ」までを読み飛ばすというように、最終的に途中で出現した「＃ｂｅｇｉｎ」の数と同じ「＃ｅｎｄ」が出現するまでを読み飛ばし、ステップＳ８００に進む。
【００４４】
ステップＳ７６０で、別のファイルの開始情報ではないと判定した場合、ステップＳ７８０で、出力制御部１７０は、情報抽出部１４０が出力した「＃」で始まる制御情報ではなく、前処理部１３０が出力した前処理結果レコードであるかを判定する。ステップＳ７８０で前処理結果レコードであると判定した場合のみ、ステップＳ７９０で、出力制御部１７０が、この行を出力部１９０に出力し、ステップＳ８００へ進む。また、ステップＳ７８０で前処理結果レコードではないと判定した場合にも、ステップＳ８００へ進む。
【００４５】
ステップＳ８００で、出力制御部１７０が、前処理結果ファイル位置Ｗに現在の前処理結果ファイルの行番号を１インクリメントした値を設定し、ステップＳ７４０へ戻る。ステップＳ７５０で、ステップＳ７５０で、前処理結果出力依頼を受けたファイルの終了情報であると判定した場合、処理を終了する。このようにして、図２（ａ）に示すプログラムソースファイル１１１と条件ＡＡを指定した前処理依頼に基づき、図２（ｂ）〜図３（ｅ）に示すプログラムソースファイル１１２〜１１５を取り込んだ結果の出力情報ファイル１８１を取り込み関係構造図として出力した例、図１１（ｉ）に示す１行目の「／ｈｏｍｅ／ｐｇｒ／ａ．ｃ」の前処理結果の出力例を図１１（ｊ）に、図１１（ｉ）に示す４行目の「／ｈｏｍｅ／ｐｇｒ／ａ．ｃ」の前処理結果の出力例を図１２（ｋ）に、それぞれ示す。
【００４６】
なお、本実施例においては、情報抽出部１４０は、ファイル情報レコード１６１１と取込情報レコード１６１２とを別に出力したが、取込元ファイルＩＤ１６１２２及び被取込ファイルＩＤ１６１２３にファイル名１６１１２を直接設定するよう構成することにより、１つのレコードにして出力するよう構成することも可能である。
【００４７】
また、本実施例においては、情報抽出部１４０は、前処理部１３０の中で情報抽出処理を行ったが、前処理部１３０とは別に、ソースプログラムファイルを取り込み、ファイル取り込み指令の都度、取込ＩＤ、取込元ファイルＩＤ、被取込ファイルＩＤ及び階層を設定した取込情報レコードを情報ファイルに出力するよう構成することにより、前処理とは無関係に取込関係構造図を作成することも可能である。
【００４８】
（付記１）  １以上のソースプログラムファイルを記憶したソースファイル記憶手段と、
前記ソースファイル記憶手段に記憶されたソースプログラムファイルを読み込み、ファイル取込命令があった場合に取込順序識別情報と取込元ソースプログラムファイルのファイル情報と被取込ソースプログラムファイルのファイル情報とを抽出する情報抽出手段と、
前記情報抽出手段で抽出した取込順序識別情報と取込元のソースプログラムファイルのファイル情報と被取込ソースプログラムファイルのファイル情報とに基づきファイルの取り込み関係構造図を出力する出力制御手段と
を備えることを特徴とするプログラム解析装置。
【００４９】
（付記２）  前記ソースファイル記憶手段に記憶されたソースプログラムファイルを開いて読み込み、前処理を実行して前処理結果レコードを前処理結果ファイル記憶手段に記憶すると共に該開いたソースプログラムファイルに対する前処理が終了すると該ソースプログラムファイルを閉じる前処理手段を更に備え、
前記情報抽出手段は、前記前処理手段が前記ソースプログラムファイルを開く都度該ソースプログラムファイルのファイル開始情報を、該前処理手段が該ソースプログラムファイルファイルを閉じる都度該ソースプログラムファイルのファイル終了情報を前記前処理結果ファイル記憶手段に更に記憶し、且つ、前記被取込ソースプログラムファイルのファイル情報に更に該前処理結果ファイル記憶手段における該ソースプログラムファイルの開始情報の位置を関連付けて抽出し、
前記出力制御手段は、更に、該出力制御手段で出力したファイル取り込み関係構造図における特定のソースプログラムファイルの指定に基づき、前記情報抽出手段が抽出した該ソースプログラムファイルの開始情報の位置と、前記前処理結果ファイル記憶手段に記憶した開始情報及び終了情報に基づき、該特定のソースプログラムファイルの前処理結果レコードのみを出力する
ことを特徴とする付記１記載のプログラム解析装置。
【００５０】
（付記３）  前記情報抽出手段は、前記被取込ソースプログラムファイルのファイル情報に更に取込階層識別情報を関連付けて抽出し、
前記出力制御手段は、前記情報抽出手段が抽出した取込順序識別情報と取込元のソースプログラムファイルのファイル情報と被取込ソースプログラムファイルのファイル情報と取込階層識別情報に基づき、ファイル名をツリー構造で表したファイル取り込み関係構造図を出力する
ことを特徴とする付記１記載のプログラム解析装置。
【００５１】
（付記４）  コンピュータに、
１以上のソースプログラムファイルを記憶したソースファイル記憶部に記憶されたソースプログラムファイルを読み込み、ファイル取込命令があった場合に取込順序識別情報と取込元のソースプログラムファイルのファイル情報と被取込ソースプログラムファイルのファイル情報とを関連付けて抽出する情報抽出ステップと、
前記情報抽出ステップで抽出した取込順序識別情報と取込元ソースプログラムファイルのファイル情報と被取込ソースプログラムファイルのファイル情報とに基づきファイルの取り込み関係構造図を出力する出力制御ステップと
を実行させることを特徴とするプログラム解析プログラム。
【００５２】
（付記５）  前記ソースファイル記憶手段に記憶されたソースプログラムファイルを開いて読み込み、前処理を実行して前処理結果レコードを前処理結果ファイル記憶手段に記憶すると共に該開いたソースプログラムファイルに対する前処理が終了すると該ソースプログラムファイルを閉じる前処理ステップを更に備え、
前記情報抽出ステップは、前記前処理ステップが前記ソースプログラムファイルを開く都度該ソースプログラムファイルのファイル開始情報を、該前処理手段が該ソースプログラムファイルファイルを閉じる都度該ソースプログラムファイルのファイル終了情報を前記前処理結果ファイル記憶部に更に記憶し、且つ、前記被取込ソースプログラムファイルのファイル情報に更に該前処理結果ファイル記憶部における該ソースプログラムファイルの開始情報の位置を関連付けて抽出し、
前記出力制御ステップは、更に、該出力制御ステップで出力したファイル取り込み関係構造図における特定のソースプログラムファイルの指定に基づき、前記情報抽出ステップで抽出した該ソースプログラムファイルの開始情報の位置と、前記前処理結果ファイル記憶手段に記憶した開始情報及び終了情報に基づき、該特定のソースプログラムファイルの前処理結果レコードのみを出力する
ことを特徴とする付記４記載のプログラム解析プログラム。
【００５３】
（付記６）  前記情報抽出ステップは、前記被取込ソースプログラムファイルのファイル情報に更に取込階層識別情報を関連付けて抽出し、
前記出力制御手段は、前記情報抽出ステップで抽出した取込順序識別情報と取込元ソースプログラムファイルのファイル情報と被取込ソースプログラムファイルのファイル情報と取込階層識別情報に基づき、ファイル名をツリー構造で表したファイル取り込み関係構造図を出力する
ことを特徴とする付記４記載のプログラム解析プログラム。
【００５４】
【発明の効果】
このような本発明のプログラム解析装置、方法及びプログラムによれば、前処理実行後のファイルの取り込み関係構造図を出力することが可能となる。更に、情報ファイルと前処理結果ファイルからファイル取り込み関係構造図で示されるファイル毎に該当する前処理結果部分を出力することが可能となる。
【図面の簡単な説明】
【図１】本発明のプログラム解析装置の構成概要図である。
【図２】（ａ）本発明のソースプログラムファイル１１１の例である。
（ｂ）本発明のソースプログラムファイル１１２の例である。
【図３】（ｃ）本発明のソースプログラムファイル１１３の例である。
（ｄ）本発明のソースプログラムファイル１１３の例である。
（ｅ）本発明のソースプログラムファイル１１３の例である。
【図４】（ｆ）本発明の前処理結果ファイル１５１の例である。
【図５】（ｆ）本発明の前処理結果ファイル１５１の例（つづき）である。
【図６】（ｇ）本発明のファイル情報レコード１６１１の例である。
（ｈ）本発明の取込情報レコード１６１１の例である。
【図７】本発明のプログラム解析装置の前処理のフロー図である。
【図８】本発明のプログラム解析装置の情報抽出処理のフロー図である。
【図９】本発明のプログラム解析装置の出力制御処理のフロー図である。
【図１０】本発明のプログラム解析装置の前処理結果出力処理フロー図である。
【図１１】（ｉ）本発明の取り込み関係構造図の出力例である。
（ｊ）本発明の前処理結果の出力例である。
【図１２】（ｋ）本発明の前処理結果の出力例である。
【符号の説明】
１００：プログラム解析装置
１１０：ソースファイル記憶部
１１１〜１１ｘ：ソースプログラムファイル
１３０：前処理部
１４０：情報抽出部
１５０：前処理結果ファイル記憶部
１５１：前処理結果ファイル
１５１１：前処理結果レコード
１５１２：制御情報レコード
１６０：情報ファイル記憶部
１６１：情報ファイル
１６１１：ファイル情報レコード
１６１２：取込情報レコード
１７０：出力制御部
１８０：出力情報ファイル記憶部
１８１：出力情報ファイル
１９０：出力部
【図１】
2004192084.tif 000003
【図２】
2004192084.tif 000004
【図３】
2004192084.tif 000005
【図４】
2004192084.tif 000006
【図５】
2004192084.tif 000007
【図６】
2004192084.tif 000008
【図７】
2004192084.tif 000009
【図８】
2004192084.tif 000010
【図９】
2004192084.tif 000011
【図１０】
2004192084.tif 000012
【図１１】
2004192084.tif 000013
【図１２】
2004192084.tif 000014