(57)【特許請求の範囲】
【請求項１】
プログラム言語によって記述された１以上の文からなるモジュールを１以上の二次的文からなる二次的モジュールに変換し、これにより複数の箇所に分散された機能を１つに纏めて把握するための前記二次的モジュールを作成する装置であって、
前記モジュールはモジュール名によって特定可能であり、前記モジュールには、１以上の前記文から構成される処理単位であって処理単位名によって特定可能な前記処理単位を記述することが可能であり、
前記モジュールには、前記文として、前記処理単位を前記処理単位名によって特定して実行するための処理単位実行文と、前記モジュールを前記モジュール名によって特定して実行するためのモジュール呼び出し文と、条件式が成立するか成立しないかによって実行すべき前記文を選択するための条件文とを記述可能であり、前記条件文によって選択される前記文として更に前記条件文が記述可能であり、これにより前記条件文による前記文の階層化が可能であり、
前記装置は、１以上の前記モジュールが記憶された記憶手段と、前記記憶手段に記憶された前記モジュールのうちの所定の対象モジュールを前記二次的モジュールに変換して前記記憶手段に記憶する変換手段とを備えており、
前記変換手段は、前記対象モジュールを前記記憶手段から読み込む読込機能と、前記対象モジュールの所定の処理開始箇所から所定の処理終了箇所までに記述された前記文の夫々を前記二次的文として前記二次的モジュールに順次出力すると共に、前記文が前記処理単位実行文又は前記モジュール呼び出し文である場合、実行対象の前記処理単位又は呼び出し対象の前記モジュールに記述されている前記文を展開することで前記二次的文を生成して前記二次的モジュールに出力する変換機能であって、前記展開される前記文における前記処理単位実行文又は前記モジュール呼び出し文についても前記展開を更に行う前記変換機能と、前記二次的モジュールを前記記憶手段に記憶する書込機能とを有している
モジュールの構造解析を支援する装置。
【請求項２】
請求項１記載の装置であって、
前記変換手段は、展開制御情報を取得する制御情報取得機能を有しており、前記展開制御情報は、実行対象の前記処理単位又は呼び出し対象の前記モジュールに記述されている前記文の前記展開を初回のみに制限することを指示する展開制限指示を指定することが可能なものであり、
前記変換手段は、前記変換機能において、前記展開制御情報に前記展開制限指示が指定されている場合、同一の前記処理単位については、実行対象の前記処理単位に記述されている前記文の前記展開を初回の１回のみ行い、同一の前記モジュールについては、呼び出し対象の前記モジュールに記述されている前記文の前記展開を初回の１回のみ行う
モジュールの構造解析を支援する装置。
【請求項３】
請求項１又は請求項２記載の装置であって、
前記変換手段は、前記変換機能において、前記文が前記条件文である場合、前記条件文の前記条件式に基づいて前記二次的文の一つである二次的条件文を生成し、前記二次的条件文によって前記二次的文を階層化して前記二次的モジュールに出力するものであり、
前記二次的条件文は、２つの評価対象オペランド間の関係を１つの論理演算子のみによって評価する二次的条件式が成立するか成立しないかによって実行すべき前記二次的文を選択するものである
モジュールの構造解析を支援する装置。
【請求項４】
請求項３記載の装置であって、
前記変換手段は、前記二次的モジュールに出力する前記二次的文の少なくとも一部について、前記二次的文がいずれの前記階層に位置しているかを示す階層識別を付加する階層識別付加機能と、前記二次的モジュールに出力する前記二次的文のうち定数又は変数からなる２つのオペランドと１つの演算子とを含むものについて、２つの前記オペランドと１つの前記演算子とからなるオペランド情報を前記二次的文に付加するオペランド付加機能とのうちの少なくとも一方を有している
モジュールの構造解析を支援する装置。
【請求項５】
請求項３記載の装置によって出力される二次的モジュールが記憶された記憶手段を備える装置であって、
前記装置は、前記記憶手段に記憶された前記二次的モジュールを加工する加工手段を備えており、
前記加工手段は、読込機能と、階層識別付加機能とオペランド付加機能とのうちの少なくとも一方と、書込機能とを有しており、
前記読込機能は、前記二次的モジュールを前記記憶手段から読み込む機能であり、
前記階層識別付加機能は、前記二次的モジュールの前記二次的文の少なくとも一部について、前記二次的文がいずれの前記階層に位置しているかを示す階層識別を付加する機能であり、
前記オペランド付加機能は、前記二次的モジュールの前記二次的文のうち定数又は変数からなる２つのオペランドと１つの演算子とを含むものについて、２つの前記オペランドと１つの前記演算子とからなるオペランド情報を前記二次的文に付加する機能であり、
前記書込機能は、前記階層識別又は前記オペランド情報が付加された前記二次的文からなる前記二次的モジュールを前記記憶手段に記憶する機能である
モジュールの構造解析を支援する装置。
【請求項６】
請求項４又は請求項５記載の装置によって出力される二次的モジュールであって、少なくとも階層識別が付加された二次的文からなる前記二次的モジュールが記憶された記憶手段を備える装置であって、
前記装置は、前記記憶手段に記憶された前記二次的モジュールの前記二次的文の一部を選択する選択手段を備えており、
前記選択手段は、前記二次的モジュールを前記記憶手段から読み込む読込機能と、前記二次的文のうち選択対象とすべきものの前記階層識別を特定する階層識別特定情報を取得する特定情報取得機能と、前記二次的モジュールの前記二次的文のうち前記階層識別が前記階層識別特定情報によって特定される前記階層識別と同一であるものを選択して選択後の二次的モジュールに出力する選択機能と、前記選択後の二次的モジュールを前記記憶手段に記憶する書込機能とを有している
モジュールの構造解析を支援する装置。
【請求項７】
請求項４又は請求項５記載の装置によって出力される二次的モジュールであって、少なくとも階層識別が付加された二次的文からなる前記二次的モジュールが記憶された記憶手段を備える装置であって、
前記装置は、前記記憶手段に記憶された前記二次的モジュールから表形式のフローチャートを作成するフローチャート作成手段を備えており、
前記フローチャート作成手段は、前記二次的モジュールを前記記憶手段から読み込む読込機能と、前記二次的モジュールの前記二次的文のうち前記階層識別によって示される階層が同一である前記二次的文について、前記二次的条件式が成立した場合に実行される前記二次的文と前記二次的条件式が成立しない場合に実行される前記二次的文とを表の左右に並べた前記フローチャートを作成するフローチャート作成機能と、前記フローチャートを前記記憶手段に記憶する書込機能とを有している
モジュールの構造解析を支援する装置。
【請求項８】
請求項４又は請求項５記載の装置によって出力される二次的モジュールであって、少なくともオペランド情報が付加された二次的文からなる前記二次的モジュールが記憶された記憶手段を備える装置であって、
前記装置は、前記記憶手段に記憶された前記二次的モジュールの前記二次的文に所定の表示属性を設定する表示属性設定手段を備えており、
前記表示属性設定手段は、前記二次的モジュールを前記記憶手段から読み込む読込機能と、初期検索文字を取得する初期検索文字取得機能と、前記二次的モジュールの前記二次的文のうち前記オペランド情報の前記オペランドに前記初期検索文字を含んでいるものの前記オペランドを追加検索文字とし、前記二次的文のうち前記オペランド情報の前記オペランドに前記追加検索文字を含んでいるものの前記オペランドを更に前記追加検索文字として、前記二次的文のうち前記オペランド情報の前記オペランドに前記初期検索文字又は前記追加検索文字を含んでいるものに前記所定の表示属性を設定する表示属性設定機能と、前記二次的文に前記所定の表示属性が設定された前記二次的モジュールを前記記憶手段に記憶する書込機能とを有している
モジュールの構造解析を支援する装置。
【請求項９】
請求項３記載の装置によって出力される二次的モジュールが記憶された記憶手段を備える装置であって、
前記装置は、前記記憶手段に記憶された前記二次的モジュールから複数の列と１以上の行とを組み合わせた表形式のマトリックスを作成するマトリックス作成手段を備えており、
前記マトリックス作成手段は、前記二次的モジュールを前記記憶手段から読み込む読込機能と、前記二次的モジュールの前記二次的文を前記マトリックスの所定の列の各行に出力する二次的文出力機能と、前記二次的モジュールの１以上の前記二次的条件式について、その全てが成立する場合と、その一部が成立する場合と、その全てが成立しない場合とを含む全てのケースを生成するケース生成機能と、生成した前記ケースの夫々に前記列のいずれかを関連表示列として対応させ、前記行に出力された前記二次的文のうち前記関連表示列と対応する前記ケースにおいて実行対象となるものが出力されている前記行に、実行対象となることを示す表示情報を出力するマトリックス作成機能と、前記マトリックスを前記記憶手段に記憶する書込機能とを有している
モジュールの構造解析を支援する装置。
【請求項１０】
請求項９記載の装置であって、
前記マトリックス作成手段は、前記マトリックス作成機能において、前記記憶手段に記憶された前記二次的モジュールの前記二次的文の一部を選択し、前記関連表示列のうち前記選択された前記二次的文が実行対象となる前記ケースに対応するもののみを前記記憶対象として抽出する
モジュールの構造解析を支援する装置。
【請求項１１】
コンピュータを、請求項１乃至請求項１０のいずれかに記載の装置として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラム言語によって記述された１以上の文からなるモジュール（ソースプログラム）の構造解析を支援する装置に関する。
【背景技術】
【０００２】
プログラムを作成する場合、構造化プログラミングが強く推奨される。具体的には、例えば、比較的少数の文からなる処理単位を組み合わせることでモジュールを作成するように求められる。また、複数のモジュールについての共通的な処理もモジュール化することが求められる。従って、例えばプログラムの合計行数が１００万行を超すような大きなシステムは、夫々が数十の処理単位からなる数千のモジュールを備えていることも多い。
【０００３】
上述のような大規模なシステムは、開発後しばらくの期間においては、開発に携わった担当者、即ちモジュール間の関連及び夫々のモジュールの構造を熟知した者がシステムのメンテナンスを行うことが多い。しかしながら、このようなシステムは数十年に亘ってメンテナンスを繰り返しながら使用されることも多い。時が経つにつれて開発に携わった担当者がいなくなり、モジュールの構造を知らない者がシステムのメンテナンスを行うことになる。このような場合、構造化プログラミングがなされていることに起因して、膨大なモジュールに分散して記述されている機能を把握しなければならず、メンテナンスは困難を極める。即ち、モジュールの構造解析が困難になる。
【０００４】
例えば、特許文献１及び特許文献２には、モジュールの構造解析を支援するための技術が開示されている。特許文献１には、モジュール関連図を自動的に作成するモジュール構成図自動生成装置が開示されている。特許文献２には、フローチャート及びテスト項目を自動的に作成するテスト項目自動生成装置が開示されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開平１１−１１０１９８号公報
【特許文献２】特開２００６−２０９５２１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、システムのメンテナンスを目的としてモジュールの構造解析を行う場合、各モジュールの詳細な内部処理を把握する必要がある。モジュール関連図やモジュール毎のフローチャートを利用しても、多数のモジュールに分散された機能の全体像を把握することは容易ではない。
【０００７】
そこで、本発明は、多数のモジュールに分散された機能を１つの二次的モジュールに纏めることによって機能を把握し易くし、これによってモジュールの構造解析を支援する装置を提供することを目的とする。
【課題を解決するための手段】
【０００８】
本発明は、第１の装置として、
プログラム言語によって記述された１以上の文からなるモジュールを１以上の二次的文からなる二次的モジュールに変換する装置であって、
前記モジュールはモジュール名によって特定可能であり、前記モジュールには、１以上の前記文から構成される処理単位であって処理単位名によって特定可能な前記処理単位を記述することが可能であり、
前記モジュールには、前記文として、前記処理単位を前記処理単位名によって特定して実行するための処理単位実行文と、前記モジュールを前記モジュール名によって特定して実行するためのモジュール呼び出し文と、条件式が成立するか成立しないかによって実行すべき前記文を選択するための条件文とを記述可能であり、前記条件文によって選択される前記文として更に前記条件文が記述可能であり、これにより前記条件文による前記文の階層化が可能であり、
前記装置は、１以上の前記モジュールが記憶された記憶手段と、前記記憶手段に記憶された前記モジュールのうちの所定の対象モジュールを前記二次的モジュールに変換して前記記憶手段に記憶する変換手段とを備えており、
前記変換手段は、前記対象モジュールを前記記憶手段から読み込む読込機能と、前記対象モジュールの所定の処理開始箇所から所定の処理終了箇所までに記述された前記文の夫々を前記二次的文として前記二次的モジュールに順次出力すると共に、前記文が前記処理単位実行文又は前記モジュール呼び出し文である場合、実行対象の前記処理単位又は呼び出し対象の前記モジュールに記述されている前記文を展開することで前記二次的文を生成して前記二次的モジュールに出力する変換機能であって、前記展開される前記文における前記処理単位実行文又は前記モジュール呼び出し文についても前記展開を更に行う前記変換機能と、前記二次的モジュールを前記記憶手段に記憶する書込機能とを有している
モジュールの構造解析を支援する装置を提供する。
【０００９】
本発明は、第２の装置として、第１の装置であって、
前記変換手段は、展開制御情報を取得する制御情報取得機能を有しており、前記展開制御情報は、実行対象の前記処理単位又は呼び出し対象の前記モジュールに記述されている前記文の前記展開を初回のみに制限することを指示する展開制限指示を指定することが可能なものであり、
前記変換手段は、前記変換機能において、前記展開制御情報に前記展開制限指示が指定されている場合、同一の前記処理単位については、実行対象の前記処理単位に記述されている前記文の前記展開を初回の１回のみ行い、同一の前記モジュールについては、呼び出し対象の前記モジュールに記述されている前記文の前記展開を初回の１回のみ行う
モジュールの構造解析を支援する装置を提供する。
【００１０】
本発明は、第３の装置として、第１又は第２の装置であって、
前記変換手段は、前記変換機能において、前記文が前記条件文である場合、前記条件文の前記条件式に基づいて前記二次的文の一つである二次的条件文を生成し、前記二次的条件文によって前記二次的文を階層化して前記二次的モジュールに出力するものであり、
前記二次的条件文は、２つの評価対象オペランド間の関係を１つの論理演算子のみによって評価する二次的条件式が成立するか成立しないかによって実行すべき前記二次的文を選択するものである
モジュールの構造解析を支援する装置を提供する。
【００１１】
本発明は、第４の装置として、第３の装置であって、
前記変換手段は、前記二次的モジュールに出力する前記二次的文の少なくとも一部について、前記二次的文がいずれの前記階層に位置しているかを示す階層識別を付加する階層識別付加機能と、前記二次的モジュールに出力する前記二次的文のうち定数又は変数からなる２つのオペランドと１つの演算子とを含むものについて、２つの前記オペランドと１つの前記演算子とからなるオペランド情報を前記二次的文に付加するオペランド付加機能とのうちの少なくとも一方を有している
モジュールの構造解析を支援する装置を提供する。
【００１２】
本発明は、第５の装置として、第３の装置によって出力される二次的モジュールが記憶された記憶手段を備える装置であって、
前記装置は、前記記憶手段に記憶された前記二次的モジュールを加工する加工手段を備えており、
前記加工手段は、読込機能と、階層識別付加機能とオペランド付加機能とのうちの少なくとも一方と、書込機能とを有しており、
前記読込機能は、前記二次的モジュールを前記記憶手段から読み込む機能であり、
前記階層識別付加機能は、前記二次的モジュールの前記二次的文の少なくとも一部について、前記二次的文がいずれの前記階層に位置しているかを示す階層識別を付加する機能であり、
前記オペランド付加機能は、前記二次的モジュールの前記二次的文のうち定数又は変数からなる２つのオペランドと１つの演算子とを含むものについて、２つの前記オペランドと１つの前記演算子とからなるオペランド情報を前記二次的文に付加する機能であり、
前記書込機能は、前記階層識別又は前記オペランド情報が付加された前記二次的文からなる前記二次的モジュールを前記記憶手段に記憶する機能である
モジュールの構造解析を支援する装置を提供する。
【００１３】
本発明は、第６の装置として、第４又は第５の装置によって出力される二次的モジュールであって、少なくとも階層識別が付加された二次的文からなる前記二次的モジュールが記憶された記憶手段を備える装置であって、
前記装置は、前記記憶手段に記憶された前記二次的モジュールの前記二次的文の一部を選択する選択手段を備えており、
前記選択手段は、前記二次的モジュールを前記記憶手段から読み込む読込機能と、前記二次的文のうち選択対象とすべきものの前記階層識別を特定する階層識別特定情報を取得する特定情報取得機能と、前記二次的モジュールの前記二次的文のうち前記階層識別が前記階層識別特定情報によって特定される前記階層識別と同一であるものを選択して選択後の二次的モジュールに出力する選択機能と、前記選択後の二次的モジュールを前記記憶手段に記憶する書込機能とを有している
モジュールの構造解析を支援する装置を提供する。
【００１４】
本発明は、第７の装置として、請求項４又は請求項５記載の装置によって出力される二次的モジュールであって、少なくとも階層識別が付加された二次的文からなる前記二次的モジュールが記憶された記憶手段を備える装置であって、
前記装置は、前記記憶手段に記憶された前記二次的モジュールから表形式のフローチャートを作成するフローチャート作成手段を備えており、
前記フローチャート作成手段は、前記二次的モジュールを前記記憶手段から読み込む読込機能と、前記二次的モジュールの前記二次的文のうち階層識別によって示される階層が同一である前記二次的文について、前記二次的条件式が成立した場合に実行される前記二次的文と前記二次的条件式が成立しない場合に実行される前記二次的文とを表の左右に並べた前記フローチャートを作成するフローチャート作成機能と、前記フローチャートを前記記憶手段に記憶する書込機能とを有している
モジュールの構造解析を支援する装置を提供する。
【００１５】
本発明は、第８の装置として、第４又は第５の装置によって出力される二次的モジュールであって、少なくともオペランド情報が付加された二次的文からなる前記二次的モジュールが記憶された記憶手段を備える装置であって、
前記装置は、前記記憶手段に記憶された前記二次的モジュールの前記二次的文に所定の表示属性を設定する表示属性設定手段を備えており、
前記表示属性設定手段は、前記二次的モジュールを前記記憶手段から読み込む読込機能と、初期検索文字を取得する初期検索文字取得機能と、前記二次的モジュールの前記二次的文のうち前記オペランド情報の前記オペランドに前記初期検索文字を含んでいるものの前記オペランドを追加検索文字とし、前記二次的文のうち前記オペランド情報の前記オペランドに前記追加検索文字を含んでいるものの前記オペランドを更に前記追加検索文字として、前記二次的文のうち前記オペランド情報の前記オペランドに前記初期検索文字又は前記追加検索文字を含んでいるものに前記所定の表示属性を設定する表示属性設定機能と、前記二次的文に前記所定の表示属性が設定された前記二次的モジュールを前記記憶手段に記憶する書込機能とを有している
モジュールの構造解析を支援する装置を提供する。
【００１６】
本発明は、第９の装置として、第３の装置によって出力される二次的モジュールが記憶された記憶手段を備える装置であって、
前記装置は、前記記憶手段に記憶された前記二次的モジュールから複数の列と１以上の行とを組み合わせた表形式のマトリックスを作成するマトリックス作成手段を備えており、
前記マトリックス作成手段は、前記二次的モジュールを前記記憶手段から読み込む読込機能と、前記二次的モジュールの前記二次的文を前記マトリックスの所定の列の各行に出力する二次的文出力機能と、前記二次的モジュールの１以上の前記二次的条件式について、その全てが成立する場合と、その一部が成立する場合と、その全てが成立しない場合とを含む全てのケースを生成するケース生成機能と、生成した前記ケースの夫々に前記列のいずれかを関連表示列として対応させ、前記行に出力された前記二次的文のうち前記関連表示列と対応する前記ケースにおいて実行対象となるものが出力されている前記行に、実行対象となることを示す表示情報を出力するマトリックス作成機能と、前記マトリックスを前記記憶手段に記憶する書込機能とを有している
モジュールの構造解析を支援する装置を提供する。
【００１７】
本発明は、第１０の装置として、第９の装置であって、
前記マトリックス作成手段は、前記マトリックス作成機能において、前記記憶手段に記憶された前記二次的モジュールの前記二次的文の一部を選択し、前記関連表示列のうち前記選択された前記二次的文が実行対象となる前記ケースに対応するもののみを前記記憶対象として抽出する
モジュールの構造解析を支援する装置を提供する。
【００１８】
本発明は、第１のプログラムとして、コンピュータを、第１乃至第１０のいずれかの装置として機能させるためのプログラムを提供する。
【発明の効果】
【００１９】
本発明によれば、１つのモジュールの所定の処理開始箇所から所定の処理終了箇所までの間に実行対象の文が展開されるため、多数のモジュールに分散された機能を容易に把握することが可能になる。
【００２０】
また、同じ処理単位又は同じモジュールについて実行対象の文を１回のみ展開することにすれば重複した展開を避けることができ、これにより展開される量を小さくすることができる。
【図面の簡単な説明】
【００２１】
【図１】本発明の実施の形態によるモジュールの構造解析を支援する装置を示すブロック構成図である。
【図２】図１の装置の記憶装置に記憶されているモジュールの模式的なファイル構成図である。
【図３】図２のモジュールを例示する図である。
【図４】図１の記憶装置に記憶されている二次的モジュールの模式的なファイル構成図である。
【図５】図１の二次的モジュールを部分的に例示する図である。なお、二次的モジュールの一部（破線Ａの部分）を実線Ａの部分に拡大して示している。
【図６】図１の記憶装置に記憶されているフローチャートを部分的に例示する図である。
【図７】図１の記憶装置に記憶されているマトリックスを部分的に例示する図である。
【図８】図１の装置の変換手段の機能を示すフローチャートである。
【図９】図８の変換手段の機能の一部をより詳細に示すフローチャートである。
【図１０】図１の装置の加工手段の機能を示すフローチャートである。
【図１１】図１の装置の選択手段の機能を示すフローチャートである。
【図１２】図１の装置の表示属性設定手段の機能を示すフローチャートである。
【図１３】図１の装置のフローチャート作成手段の機能を示すフローチャートである。
【図１４】図１の装置のマトリックス作成手段の機能を示すフローチャートである。
【図１５】図１の記憶装置に記憶されているマトリックスを部分的に例示する図である。
【図１６】図３のモジュールのうちの一つを変更した際の差分を例示する図である。
【図１７】図１４のマトリックス作成手段の機能の変形例を示すフローチャートである。
【図１８】図１６のモジュールが変更された場合のマトリックスを部分的に例示する図である。
【図１９】図１６のモジュールが変更された場合のフローチャートを部分的に例示する図である。
【図２０】図１の装置の変形例を示すシステム構成図である。
【発明を実施するための形態】
【００２２】
図１に示されるように、本実施の形態による装置（モジュールの構造解析を支援する装置）１０は、装置本体２０と、記憶装置（記憶手段）３０と、入力装置４０と、表示装置５０とを備えている。装置１０は、プログラム言語によって記述された１以上の文からなるモジュール（ソースプログラム）を、１以上の二次的文からなる二次的モジュール（二次的ソースプログラム）に変換するものである。
【００２３】
本実施の形態によるプログラム言語はCOBOLである。しかしながら、本発明はCOBOL以外のプログラム言語にも適用可能である。
【００２４】
本実施の形態によるモジュールは、文字、数字、記号等を組み合わせたモジュール名によって特定可能である。
【００２５】
モジュールには、１以上の文から構成される処理単位を記述することができる。本実施の形態による処理単位は、COBOLにおけるセクションであり、セクションの夫々は、セクション名（処理単位名）によって特定することができる。なお、他のプログラム言語における処理単位は、例えば関数名（処理単位名）によって特定可能な関数である。
【００２６】
モジュールは、他のモジュール又は当該モジュール自身を呼び出すことができる。また、モジュールのセクションは、他のセクション又は当該セクション自身を実行することができる。より具体的には、モジュールには、文として、セクションをセクション名によって特定して実行するための処理単位実行文と、モジュールの一つをモジュール名によって特定して実行するためのモジュール呼び出し文とを記述することができる。また、モジュールには、文として、条件式が成立するか成立しないかによって実行すべき文を選択するための条件文を記述することができる。なお、他のプログラム言語における処理単位実行文及びモジュール呼び出し文は、例えば関数名を指定した文である。モジュール呼び出し文が関数名を指定した文である場合、モジュール呼び出し文によって実行されるのはモジュールのうちの指定された関数部分（即ち、モジュールの一部）である。また、この場合、モジュール呼び出し文においてモジュール名が明示的に記述されない場合（即ち、関数名によってモジュール名が間接的に特定される場合）がある。
【００２７】
本実施の形態においては、処理単位実行文はPERFORM文であり、モジュール呼び出し文はCALL文である。また、条件文はIF文及びEVALUATE文である。IF文等の条件文によって選択される文として更に条件文が記述可能であり、これにより条件文による文の階層化が可能である。詳しくは、例えばIF文のTHENについて更にIF文を記述することができる。
【００２８】
図１に示されるように、記憶装置３０は、例えば磁気ディスク装置であり、フォルダ（図示せず）等によって階層化された様々なファイルを記憶することができる。記憶装置３０は、装置本体２０と通信可能に接続されており、装置本体２０からの指示に従ってファイルの読込、書込（記憶）等を行う。本実施の形態による記憶装置３０には、１以上のモジュール３１が記憶されている。換言すれば、本実施の形態によるモジュール３１は、記憶装置３０に記憶されたモジュールである。モジュール３１は、例えばプログラミングツール（図示せず）を使用して作成される。モジュール３１の夫々が一つのファイルであってもよいし、複数のモジュール３１が一つのファイルとして記憶されていてもよい。記憶装置３０は、二次的モジュール３２と、フローチャート３３と、マトリックス３４とを、モジュール３１と同様に記憶することができる。本実施の形態によるフローチャート３３及びマトリックス３４は、二次的モジュール３２から夫々作成することができる。
【００２９】
入力装置４０は、例えばキーボードやマウスである。入力装置４０は、装置本体２０と通信可能に接続されており、キーボードから入力された文字やマウスによって指示された位置を装置本体２０に通知する。
【００３０】
表示装置５０は、例えばディスプレイやプリンタである。表示装置５０は、装置本体２０と通信可能に接続されており、装置本体２０から転送された文字や図形等を表示又は印刷する。
【００３１】
装置本体２０は、例えばＰＣ（Personal Computer）の本体である。装置本体２０は、ＣＰＵ（Central
Processing Unit）、主記憶装置等を備えている（図示せず）。記憶装置３０には様々なプログラムの実行形式ファイルが記憶されている（図示せず）。ＣＰＵは、実行形式ファイルを主記憶装置にローディングし、実行形式ファイル内の命令語を実行することで様々な機能を実現する。またＣＰＵが命令語を実行する過程において、記憶装置３０に記憶された所定のファイルが、主記憶装置内のバッファ領域を経由してプログラムの変数領域に読み込まれる。また、プログラムの変数領域に読み込まれたファイルの内容は、必要に応じて主記憶装置内のバッファ領域を経由して記憶装置３０に書き込まれる。上記の説明から理解されるように、記憶装置３０と主記憶装置とは、本実施の形態における読み込み及び書き込み可能な記憶手段として夫々機能する。以降の説明における記憶手段としては記憶装置３０を例示する。
【００３２】
本実施の形態による記憶装置３０には、変換プログラムと、加工プログラムと、選択プログラムと、表示属性設定プログラムと、フローチャート作成プログラムと、マトリックス作成プログラムとが記憶されている（図示せず）。上記のプログラムは、主記憶装置にローディングされ、ＣＰＵによって実行され、これによってコンピュータは、変換手段２１、加工手段２２、選択手段２３、表示属性設定手段２４、フローチャート作成手段２５、及びマトリックス作成手段２６として夫々機能する。即ち、上記のプログラムは、コンピュータをモジュールの構造解析を支援する装置１０として機能させるためのものである。換言すれば、本実施の形態による装置１０の装置本体２０は、変換手段２１と、加工手段２２と、選択手段２３と、表示属性設定手段２４と、フローチャート作成手段２５と、マトリックス作成手段２６とを備えている。
【００３３】
本実施の形態による変換手段２１は、記憶装置３０に記憶されたモジュール３１のうちの所定の対象モジュール３１を二次的モジュール３２に変換して記憶装置３０に記憶するものである。加工手段２２は、記憶装置３０に記憶された二次的モジュール３２を加工するものである。選択手段２３は、記憶装置３０に記憶された二次的モジュール３２の二次的文の一部を選択するものである。表示属性設定手段２４は、記憶装置３０に記憶された二次的モジュール３２の二次的文に所定の表示属性を設定するものである。フローチャート作成手段２５は、記憶装置３０に記憶された二次的モジュール３２から表形式のフローチャート３３を作成するものである。マトリックス作成手段２６は、記憶装置３０に記憶された二次的モジュール３２から複数の列と１以上の行とを組み合わせた表形式のマトリックス３４を作成するものである。
【００３４】
図２に示されるように、本実施の形態によるモジュール３１は、ｎ個（ｎ≧１）の行３１０から構成される。行３１０は、一連番号（行識別）３１１と文３１２とから構成される。一連番号３１１は、行３１０を識別するためのものであり、数字だけでなく文字等を含むことができる。文３１２には、文（データ定義文、実行文、コメント文等）が記述されている。文３１２には、一つの完結した文全体が記述されていてもよいし、一つの文の一部が記述されていてもよい。例えば、MOVE文が２つの行３１０の文３１２に分けて記述されていてもよい。
【００３５】
図３に示されるように、記憶装置３０には、例えばモジュール名がＸＸＸであるモジュール３１（ＸＸＸモジュール）と、モジュール名がＡＡＡであるモジュール３１（ＡＡＡモジュール）と、モジュール名がＢＢＢであるモジュール３１（ＢＢＢモジュール）と、モジュール名がＣＣＣであるモジュール３１（ＣＣＣモジュール）とが記憶されている。モジュール３１の夫々は、一連番号３１１と文３１２とからなる複数の行３１０から構成されている。
【００３６】
ＸＸＸモジュールはメインモジュール（即ち、処理の起点となるモジュール）であり、ＡＡＡモジュールとＢＢＢモジュールとをモジュール名によって特定して呼び出すためのCALL文が夫々記述された行３１０を有している。ＡＡＡモジュールは、ＣＣＣモジュールを呼び出すCALL文が記述された行３１０を有している。
【００３７】
図３に例示されたモジュール３１の夫々は、１以上のセクションから構成されている。例えば、ＸＸＸモジュールは、”PROCEDURE
DIVISION.”が記述された行３１０の次の行から、”STOP
RUN.”が記述された行３１０までのメインセクション（モジュールにおける処理の起点となる主たる処理単位）と、”AAA-SUB
SECTION.”が記述された行３１０から、”EXIT.”が記述された行３１０までの従たるセクション（従たる処理単位）を有している。なお、上述の従たるセクションのセクション名（処理単位名）はＡＡＡ−ＳＵＢであり、メインセクションは、ＡＡＡ−ＳＵＢセクションをセクション名によって特定して実行する行３１０を備えている。より具体的には、メインセクションは、”PERFORM
AAA-SUB.”が記述された行３１０を備えている。
【００３８】
図３に例示されたセクションの一部は、条件文が記述された行３１０を備えている。例えば、ＸＸＸモジュールのメインセクションは、５つのWHENを有するEVALUATE文が記述された行３１０と、THENおよびELSEを有するIF文が記述された行３１０とを備えている。また、ＣＣＣモジュールのメインセクションは、IF文のELSEにおいて更にIF文が記述された行３１０を備えており、これによって条件文による文３１２の階層化が行われている。
【００３９】
図４に示されるように、本実施の形態による二次的モジュール３２は、ｍ個（ｍ≧１）の行３２０から構成される。本実施の形態においては、二次的モジュール３２は、MICROSOFT EXCEL（登録商標）のワークシートであるが、テキストファイル等であってもよい。行３２０は、モジュール識別３２１と、行番号３２２と、階層識別３２３と、命令識別３２４と、オペランド情報３２５と、一連番号（行識別）３２６と、二次的文３２７と、表示属性３２８とから構成される。オペランド情報３２５は、第１オペランド３２５ｆと、演算子３２５ｏと、第２オペランド３２５ｓとを備えている。二次的モジュール３２は、１以上のモジュール３１から実行文等が記述された行３１０を集めて加工することによって生成されている。
【００４０】
図５に示されるように、本実施の形態による二次的モジュール３２は、例えば、ＸＸＸモジュール、ＡＡＡモジュール、ＢＢＢモジュール及びＣＣＣモジュールのPROCEDURE DIVISIONの行３１０を集めて加工したものである。
【００４１】
図５に例示されているように、行３２０の二次的文３２７において、行３１０の文３１２に記述されているCALL文はコメント化されて（コメント文に変更されて）いる。また、CALL文によって呼び出されるＡＡＡモジュールのPROCEDURE DIVISIONの文３１２が、行３２０の二次的文３２７として展開されている。更に、ＡＡＡモジュールからCALL文によって呼び出されるＣＣＣモジュールのPROCEDURE DIVISIONの文３１２が、行３２０の二次的文３２７として展開されている。同様に、行３１０の文３１２に記述されているPERFORM文は、行３２０の二次的文３２７においてコメント化されている。また、PERFORM文によって実行されるＡＡＡ−ＳＵＢセクションの文３１２が、行３２０の二次的文３２７として展開されている。
【００４２】
図５に例示されているように、文３１２に記述された条件文のうちIF文以外のもの（本実施の形態においてはEVALUATE文）は、二次的文３２７においてIF文に変換されている。例えば、”EVALUATE WK-A-O”、”WHEN
CS-1”、”MOVE
CS-1 TO WK-B-I”が夫々記述された３つの文３１２は、”*#E
EVALUATE WK-A-O”（コメント文）、”*#E WHEN
CS-1” （コメント文）、”IF ( WK-A-O = CS-1 )” 、”THEN”、”MOVE
CS-1 TO WK-B-I”が夫々記述された５つの二次的文３２７に変換される。上記の変換に加え、IF文におけるTHEN、ELSE及びEND IFの欠落を補うための二次的文３２７が生成される。また、否定の条件式は肯定の条件式に変換される。更に、ANDやORで結合された条件式を有するIF文は複数のIF文に分解されて、２つの評価対象オペランド間の関係を１つの論理演算子のみによって評価する単純な二次的条件式を有するIF文に変換される。
【００４３】
以上に加えて、複数の文３１２に分かち書きされているMOVE文等は、１つの二次的文３２７に纏められている。即ち、二次的モジュール３２の行３２０の夫々は、モジュール３１の行３１０に基づいて生成されており、二次的文３２７は、文３１２をそのままコピーしたものであるか、又は文３１２を加工・展開することによって生成されたものである。
【００４４】
表示属性３２８には、行３２０の二次的文３２７等を表示装置５０に表示する際の表示色、背景色、書体等、表示に関する属性が設定される。例えば、文３１２をコメント化した二次的文３２７を赤色で表示することで、コメント化したことを視覚的に把握することが可能になる。
【００４５】
本実施の形態によるモジュール識別３２１は、夫々の行３２０がいずれのモジュール３１に基づくものであるかを示すものである。より具体的には、モジュール識別３２１には、ＸＸＸ等のモジュール名が設定される。なお、モジュール名に代えて、モジュール３１を一意に識別可能な番号等を設定してもよい。
【００４６】
一連番号３２６には、二次的文３２７が文３１２のコピーである行３２０においては、コピー元の行３１０の一連番号３１１が設定される。また、二次的文３２７が文３１２をコメント化したものである等、行３１０と１対１に対応する行３２０については、一連番号３２６には、対応する行３１０の一連番号３１１が設定される。一方、生成された（追加された）行３２０の一連番号３２６には、生成された行３２０であることを識別可能な記号等が設定される。このようにすることで、システムのメンテナンスを行う際に、行３２０と行３１０を容易に対応付けることができる。
【００４７】
本実施の形態による行番号３２２には、１から始まる通番が行３２０の並び順に沿って設定されている。しかしながら、通番である必要はなく、行番号３２２に記号等を設定してもよい。
【００４８】
本実施の形態による階層識別３２３は、分岐階層と分岐の深さとから構成されている。分岐階層は、条件文による階層を識別するためのものである。本実施の形態による分岐階層は、１を１行目の行３２０における出発値としており、IF文のTHENが記述された行３２０において１．１に変わり、ELSEが記述された行３２０において１．２に変わる。そしてIF文のEND IFが記述された行３２０の次の行から１に戻る。一般化すると、THENが記述された行３２０においては、直前の行３２０の分岐階層の末尾に「．１」が加えられ、ELSEが記述された行３２０においては、直前の行３２０の分岐階層の末尾「．１」が「．２」に変更され、END IFが記述された行３２０の次の行においては、END IFが記述された行３２０の分岐階層の末尾「．２」が削除されている。上記の場合を除き、分岐階層には、直前の行３２０と同一の値が設定されている。
【００４９】
本実施の形態による分岐の深さは、１を１行目の行３２０における出発値としており、IF文のTHENが記述された行３２０において１．１に変わり、END IFが記述された行３２０の次の行から１に戻る。また、その後のIF文のTHENが記述された行３２０において１．２に変わり、END IFが記述された行３２０の次の行から１に戻る。一般化すると、分岐の深さは、１を出発値としており、THENが記述された行３２０において末尾に「．ｐ」（ｐは１以上の整数）なる桁が加えられ、END
IFが記述された行３２０の次の行において末尾の「．ｐ」なる桁が削除される。「．ｐ」におけるｐの値は、桁の夫々について１を出発値としている。詳しくは、１桁目の「．ｐ」（例えば１．２の「．２」）におけるｐの値は、１を出発値としており、付加される毎にインクリメントされる。一方、２桁目以降の「．ｐ」（例えば１．２．１の「．１」）におけるｐの値は、当該桁を除いた分岐の深さが同一値である行３２０が連続する範囲において１を出発値としており、当該連続する範囲において付加される毎にインクリメントされる。
【００５０】
以上の説明から理解されるように、階層識別３２３によって、条件文による階層の二次的モジュール３２における場所を特定することができる。なお、階層識別３２３の設定内容は上述の説明には限られない。条件文による階層の二次的モジュール３２における場所を特定することができる限り、階層識別３２３にどのような値が設定されていてもよい。
【００５１】
命令識別３２４は、二次的文３２７に記述されている文の種別を示すものである。本実施の形態による命令識別３２４は、命令名と、条件命令であるか否かを示す区分（条件命令当否）と、処理命令であるか否かを示す区分（処理命令当否）とからなる。二次的文３２７にIF文の一部が記述されている場合（IF、THEN、ELSE又はEND-IFが記述されている場合）、条件命令当否には○が設定される。また、二次的文３２７にIF文以外の実行文が記述されている場合（例えばMOVE文やCOMPUTE文が記述されている場合）、処理命令当否には○が設定される。条件命令当否又は処理命令当否に○が設定されている場合、命令名には二次的文３２７に記述されている命令名（IF、THEN、END-IF、MOVE等）が設定される。
【００５２】
オペランド情報３２５は、命令識別３２４に命令名が設定された二次的文３２７のうち（即ち、実行文が記述されている二次的文３２７のうち）２つのオペランドと１つの演算子とからなる二次的文３２７について設定される。例えば、”MOVE
9 TO WK-C-I”が記述されている二次的文３２７については、第１オペランド３２５ｆ、演算子３２５ｏ及び第１オペランド３２５ｓに、９、ＴＯ及びＷＫ−Ｃ−Ｉが夫々設定される。オペランド情報３２５を参照することによって、変数および定数間の代入・比較がどのように行われているかを、より容易に把握することができる。
【００５３】
なお、行３２０は、以上に説明した項目に加えて様々な項目を備えることができる。例えば、対応する行３１０のセクション名を備えることにより、行３２０と行３１０との対応を、より容易に把握することができる。
【００５４】
本実施の形態によれば、記憶装置３０に記憶された二次的モジュール３２に基づいて様々なファイルを作成し、作成したファイルをモジュール３１の構文解析を支援するための資料として表示装置５０に表示・印刷することができる。具体的には、例えば二次的モジュール３２に基づいてフローチャート３３及びマトリックス３４を作成することができる。
【００５５】
図６及び図７から理解されるように、本実施の形態によるフローチャート３３及びマトリックス３４は、MICROSOFT EXCEL（登録商標）のワークシートであり、二次的モジュール３２から生成される。但し、フローチャート３３及びマトリックス３４は他の形式のファイル等であっても構わない。
【００５６】
図６から理解されるように、フローチャート３３は、二次的モジュール３２の二次的文３２７をフローチャート風に編集したものである。より具体的には、IF文と関連しない二次的文３２７は、二次的モジュール３２における行３２０の並び順に沿って、第２列目に並べられている。一方、二次的文３２７のうち、IF文と関連するもの（即ち、IFからEND-IFまでの文が記述されたもの）については、IF文における条件式が成立する場合に実行される二次的文３２７と、IF文における条件式が成立しない場合に実行される二次的文３２７とが左右の列に並べられている。
【００５７】
フローチャート３３の第１列目には第２列目に並べられた二次的文３２７の行番号３２２が設定されており、これによりフローチャート３３の行を二次的モジュール３２の行３２０に夫々対応付けることができる。なお、行番号３２２に限らず、行３２０の任意の項目をフローチャート３３に設定することができる。
【００５８】
以上の説明から理解されるように、本実施の形態によるフローチャート３３は、IF文による階層が深くなるにつれて列が増加する。換言すれば、二次的モジュール３２のうち、より複雑な条件文が記述されている箇所は、表の列方向に延びるようにして表示される。従って、フローチャート３３を表示装置５０に表示させ、左右の列に並べて表示された実行文を見比べることで、条件式の成否による処理の相違を把握することができる。フローチャート３３における処理の塊を色付けして表示装置５０に表示させることもできる。例えば、フローチャート３３のIF及びEND-IFが設定された欄に所定の背景色Ａを設定し、THENの場合に実行される二次的文３２７に所定の背景色Ｂを設定し、ELSEの場合に実行される二次的文３２７に所定の背景色Ｃを設定することができる。このようにすることで、フローチャート３３を表示装置５０に表示させた際に、IF文による階層構造を背景色の組み合わせによるパターンとして視覚的に把握することが可能になる。
【００５９】
図７に示されるように、本実施の形態によるマトリックス３４は、行番号の列（第１列目）と、一連番号の列（第２列目）と、二次的文の列（第３列目）と、１以上の関連表示列（第４列目以降）とからなる表である。列の夫々は１以上の行を備えている。
【００６０】
行番号の列、一連番号の列、及び二次的文の列には、二次的モジュール３２の行番号３２２、一連番号３２６、及び二次的文３２７が夫々設定され、表示属性３２８に基づく表示属性が設定される。なお、上記の項目に代えて又は上記の項目に加えて、行３２０の任意の項目をマトリックス３４に設定することができる。
【００６１】
関連表示列の列数は、二次的モジュール３２の二次的文３２７に記述されているIF文によって決まる。例えば、THENとELSEとを夫々１つだけ有するIF文が１つのみ記述されている場合、IF文による分岐数（即ち、IF文において実行されるケースの数）は２なので、関連表示列の列数は２である。また、例えば、THENとELSEとの夫々にTHENとELSEとを有するIF文が記述されている場合、実行されるケースの数は４（２×２）なので、関連表示列の列数は４である。例えば、実行されるケースの数が５のIF文が２つ記述されている場合、関連表示列の列数は、２つのケースの数の最大値である５としてもよいし、夫々のケースを組み合わせた数である２５（５×５）としてもよい。図７に例示されている関連表示列の列数は、夫々のIF文において実行されるケースの数の最大値となっている。詳しくは、図７のマトリックス３４は、ケースＣ１乃至ケースＣ５の５つのケースに対応する５列の関連表示列を備えている。
【００６２】
関連表示列には、二次的文の列（第３列目）との関連が設定される。より具体的には、二次的文の列に記述されている実行文のうち、関連表示列と対応するケースにおいて実行されるものについて、関連表示列の対応する行にＩ、Ｔ、Ｅ、ＥＩ又は○が設定される。一方、実行されないものについては−が設定される。ここで、Ｉ、Ｔ、Ｅ、ＥＩ及び○は、実行文がIF文のIF、THEN、ELSE、END-IF及びIF文以外の実行文であることを夫々示している。なお、実行文以外の文（例えばコメント文）と対応する行には＊が設定される。
【００６３】
以上の説明から理解されるように、本実施の形態によるマトリックス３４を表示装置５０に表示させることにより、二次的文の列に表示される実行文と、関連表示列に表示されるケースとの関連を把握することができる。また、メンテナンスにおいて実行文を変更した場合に必要なテストケースを把握することができる。
【００６４】
以下、以上のように構成された装置１０の機能及び動作について詳細に説明する。
【００６５】
図８から理解されるように、本実施の形態による変換手段２１は、展開制御情報を取得する制御情報取得機能（Ｓ８００）と、モジュール３１のうち処理対象とする対象モジュール３１を記憶装置３０から読み込む読込機能（Ｓ８０２、Ｓ８０４）と、対象モジュール３１を二次的モジュール３２に変換する変換機能（Ｓ８０６〜Ｓ８１２）と、二次的モジュール３２を記憶装置３０に記憶する書込機能（Ｓ８１４）とを有している。
【００６６】
より具体的には、図８に示されるように、変換手段２１は、例えば入力装置４０から入力された起動指示によって起動され、例えば起動指示の一部として入力された展開制御情報を取得する（Ｓ８００）。ここで、展開制御情報は、展開制限指示を指定することが可能なものであり、展開制限指示は、実行対象のセクション又は呼び出し対象のモジュール３１の文３１２に記述されている文の展開を初回のみに制限することを指示するものである。
【００６７】
次に、変換手段２１は、対象モジュール３１を特定するための対象モジュール名を取得する（Ｓ８０２）。対象モジュール名は、展開制御情報と同様な方法で取得することができる。変換手段２１は、取得した対象モジュール名によって特定される対象モジュール３１を記憶装置３０から読み込む（Ｓ８０４）。このとき、例えば所定のフォルダに記憶されたモジュール３１のみを読み込み対象としてもよい。なお対象モジュール３１が記憶装置３０に記憶されていない場合、変換手段２１は、処理を終了する。
【００６８】
次に、変換手段２１は、対象モジュール３１の処理開始箇所の文３１２を取得する（Ｓ８０６）。本実施の形態による処理開始箇所は、メインセクションの先頭である。変換手段２１は、取得した文３１２について二次的文出力処理を行う（Ｓ８０８）。次に、変換手段２１は、処理終了箇所の文３１２を処理済みであるか判定する（Ｓ８１０）。本実施の形態による処理終了箇所は、メインセクションの末尾である。処理済みの場合（Ｓ８１０においてＹＥＳの場合）、変換手段２１は、作成した二次的モジュール３２を記憶装置３０に書き込み（Ｓ８１４）、処理を終了する。一方、処理済みでない場合（Ｓ８１０においてＮＯの場合）、変換手段２１は、次に処理する文３１２（後続する行３１０の文３１２）を取得し（Ｓ８１２）、取得した文３１２について二次的文出力処理を行う（Ｓ８０８）。
【００６９】
図９は、図８に示した変換手段２１の処理（機能）のうち、二次的文出力処理（Ｓ８０８）をより詳細に示すフローチャートである。図９に示されるように、変換手段２１は、二次的文出力処理において文３１２を二次的文３２７として出力する。より具体的には、本実施の形態においては、文３１２に記述されている実行文等をワークシートの所定の行・列にコピーする。このとき、前述したように、PERFORM文をコメント文にする等の加工が行われる。また、変換手段２１は、モジュール識別３２１と、行番号３２２と、一連番号３２６と、表示属性３２８とに前述したような値を出力する。
【００７０】
次に、変換手段２１は、文３１２に条件文が記述されているか判定する（Ｓ９０２）。文３１２に記述されている実行文が条件文である場合（Ｓ９０２でＹＥＳの場合）、変換手段２１は、前述したようにIF文以外の条件文をIF文に変換する等の処理を行う。より具体的には、変換手段２１は、条件文の条件式に基づいて、二次的文の一つである二次的条件文（IF文）が記述された二次的文３２７を生成し、二次的条件文によって二次的文３２７を階層化して二次的モジュールに出力し（Ｓ９０４）、二次的文出力処理を終了する。ここで、二次的条件文は、２つの評価対象オペランド間の関係を１つの論理演算子のみによって評価する二次的条件式が成立するか成立しないかによって実行すべき二次的文３２７を選択するものである。
【００７１】
文３１２に記述されている実行文が条件文でない場合（Ｓ９０２でＮＯの場合）、変換手段２１は、文３１２に記述されている実行文が処理単位実行文（PERFORM文）であるか判定する（Ｓ９０６）。処理単位実行文である場合（Ｓ９０６でＹＥＳの場合）、変換手段２１は、実行対象の処理単位（セクション）の処理開始箇所の文３１２を取得する。本実施の形態においては、処理単位の処理開始箇所はセクションの先頭である。
【００７２】
処理単位実行文でない場合（Ｓ９０６でＮＯの場合）、変換手段２１は、文３１２に記述されている実行文がモジュール呼び出し文（CALL文）であるか判定する（Ｓ９１０）。モジュール呼び出し文である場合（Ｓ９１０でＹＥＳの場合）、変換手段２１は、CALL文によって特定される呼び出し対象のモジュール３１を記憶装置３０から読み込み、呼び出し対象のモジュール３１の処理開始箇所の文３１２を取得する。このとき、例えば対象モジュール３１が記憶されている所定のフォルダに記憶されたモジュール３１のみを読み込み対象としてもよい。本実施の形態においては、呼び出し対象のモジュール３１の処理開始箇所は、当該モジュール３１のメインセクションの先頭である。一方、モジュール呼び出し文でない場合（Ｓ９１０でＮＯの場合）、変換手段２１は二次的文出力処理を終了する。
【００７３】
変換手段２１は、実行対象のセクションの文３１２又は呼び出し対象のモジュール３１の文３１２について、再帰的に二次的文出力処理を行う（Ｓ９１６）。次に、変換手段２１は、処理終了箇所の文３１２を処理済みであるか判定する（Ｓ９１８）。本実施の形態による処理終了箇所は、実行対象のセクションについては当該セクションの末尾であり、呼び出し対象のモジュール３１についてはメインセクションの末尾である。処理済みの場合（Ｓ９１８においてＹＥＳの場合）、変換手段２１は、二次的文出力処理を終了する。一方、処理済みでない場合（Ｓ９１８においてＮＯの場合）、変換手段２１は、次に処理する文３１２（後続する行３１０の文３１２）を取得し（Ｓ９２０）、取得した文３１２について再帰的に二次的文出力処理を行う（Ｓ９１６）。
【００７４】
なお、変換手段２１は、再帰的な（自分自身を実行する）PERFORM文については、実行対象のセクションの文３１２の展開を行わない。同様に、再帰的な（自分自身を呼び出す）CALL文については、呼び出し対象のモジュール３１の文３１２の展開を行わない。更に、変換手段２１は、展開制御情報に展開制限指示が指定されている場合、既に二次的文出力処理を行ったセクションとセクション名が同一であるセクションを実行するPERFORM文については、二次的文出力処理を行わない（Ｓ９０６）。同様に、変換手段２１は、展開制御情報に展開制限指示が指定されている場合、変換手段２１は、既に二次的文出力処理を行ったモジュール３１とモジュール名が同一であるモジュール３１を呼び出すCALL文については、二次的文出力処理を行わない（Ｓ９１０）。
【００７５】
以上の説明から理解されるように、変換手段２１の変換機能は、対象モジュール３１の所定の処理開始箇所から所定の処理終了箇所までに記述された文３１２の夫々を二次的文３２７として二次的モジュールに順次出力する。更に、文３１２が処理単位実行文又はモジュール呼び出し文である場合、実行対象の前記処理単位又は呼び出し対象のモジュール３１に記述されている文３１２を展開することで二次的文３２７を生成して二次的モジュール３２に出力する。更に、展開される文３１２における処理単位実行文又はモジュール呼び出し文についても展開を更に行う（即ち、再帰的に展開する）。従って、多数の処理単位やモジュール３１に分散された機能を、対象モジュール３１のメインセクションに手繰り寄せるようにして集めることができる。なお、モジュール３１についての所定の処理開始箇所及び所定の処理終了箇所は、夫々、PROCRDURE DIVISONの先頭及び末尾としてもよい。また、例えば、メインセクションの途中とすることも可能である。但し、不要な展開を避け、且つ十分な展開結果を得るためには本実施の形態のようにするのが好ましい。
【００７６】
また、以上の説明から理解されるように、変換手段２１の変換機能は、展開制御情報に展開制限指示が指定されている場合、同一の処理単位については、実行対象の処理単位に記述されている文３１２の展開を初回の１回のみ行い、同一のモジュール３１については、呼び出し対象のモジュール３１に記述されている文３１２の展開を初回の１回のみ行う。
【００７７】
以上に説明したように、変換手段２１によって、二次的文３２７からなる二次的モジュール３２が記憶装置３０に記憶される。換言すれば、変換手段２１を備えた装置１０は、二次的文３２７からなる二次的モジュール３２を記憶装置３０に出力することができる。
【００７８】
図１０から理解されるように、本実施の形態による加工手段２２は、読込機能（Ｓ１０００、Ｓ１００２）と、階層識別付加機能（Ｓ１００６）とオペランド付加機能（Ｓ１０１０）とのうちの少なくとも一方と、書込機能（Ｓ１０１４）とを有している。読込機能は、処理対象の二次的モジュール３２を記憶装置３０から読み込む機能である。階層識別付加機能は、二次的モジュール３２の二次的文３２７の少なくとも一部について、二次的文３２７がいずれの階層に位置しているかを示す階層識別３２３を付加する機能である。オペランド付加機能は、二次的モジュール３２の二次的文３２７のうち定数又は変数からなる２つのオペランドと１つの演算子とを含むものについて、２つのオペランド（第１オペランド３２５ｆと第２オペランド３２５ｓ）と１つの演算子３２５ｏとからなるオペランド情報３２５を二次的文３２７に付加する機能である。書込機能は、階層識別３２３又はオペランド情報３２５が付加された二次的文３２７からなる二次的モジュール３２を記憶装置３０に記憶する機能である。
【００７９】
より具体的には、図１０に示されるように、加工手段２２は、例えば変換手段２１と同様に起動され、処理対象の二次的モジュール３２を特定するための二次的モジュール名を取得する（Ｓ１０００）。加工手段２２は、取得した二次的モジュール名によって特定される二次的モジュール３２を記憶装置３０から読み込む（Ｓ１００２）。なお処理対象の二次的モジュール３２が記憶装置３０に記憶されていない場合、加工手段２２は、処理を終了する。
【００８０】
次に、加工手段２２は、処理対象の二次的モジュール３２の処理開始箇所の二次的文３２７を取得する（Ｓ１００４）。本実施の形態による処理開始箇所は、二次的モジュール３２の先頭である。
【００８１】
加工手段２２は、取得した二次的文３２７について階層識別３２３を付加する（Ｓ１００６）。より具体的には、本実施の形態による加工手段２２は、ワークシートにおいて行３２０の階層識別３２３と対応する行・列に、前述したような分岐階層と分岐の深さとを設定する。次に、加工手段２２は、取得した二次的文３２７について命令識別３２４を付加する（Ｓ１００８）。より具体的には、本実施の形態による加工手段２２は、ワークシートにおいて行３２０の命令識別３２４と対応する行・列に、前述したような命令名と、条件命令当否と、処理命令当否とを設定する。次に、加工手段２２は、取得した二次的文３２７についてオペランド情報３２５を付加する（Ｓ１０１０）。より具体的には、本実施の形態による加工手段２２は、ワークシートにおいて行３２０のオペランド情報３２５と対応する行・列に、前述したような第１オペランド３２５ｆと、演算子３２５ｏと、第２オペランド３２５ｓとを設定する。
【００８２】
次に、加工手段２２は、処理終了箇所の二次的文３２７を処理済みであるか判定する（Ｓ１０１２）。本実施の形態による処理終了箇所は、二次的モジュール３２の末尾である。処理済みの場合（Ｓ１０１２においてＹＥＳの場合）、加工手段２２は、加工した二次的モジュール３２を記憶装置３０に書き込み（Ｓ１０１４）、処理を終了する。一方、処理済みでない場合（Ｓ１０１２においてＮＯの場合）、加工手段２２は、次に処理する二次的文３２７（後続する行３２０の二次的文３２７）を取得し（Ｓ１０１６）、取得した二次的文３２７について階層識別３２３の付加等を行う（Ｓ１００６〜Ｓ１０１０）。
【００８３】
以上に説明したように、加工手段２２によって、階層識別３２３、命令識別３２４及びオペランド情報３２５が付加された二次的文３２７からなる二次的モジュール３２が記憶装置３０に記憶される。換言すれば、加工手段２２を備えた装置１０は、階層識別３２３、命令識別３２４及びオペランド情報３２５が付加された二次的文３２７からなる二次的モジュール３２を記憶装置３０に出力することができる。
【００８４】
なお、階層識別３２３の付加（Ｓ１００６）、命令識別３２４の付加（Ｓ１００８）及びオペランド情報３２５の付加（Ｓ１０１０）のうちの一部を行うようにしてもよい。例えば、加工手段２２を起動する際に、入力装置４０から階層識別３２３の付加を行うか否かの指示を入力するようにしてもよい。
【００８５】
また、階層識別３２３の付加、命令識別３２４の付加及びオペランド情報３２５の付加のうちの一部を変換手段２１が行うようにしてもよい。例えば、変換手段２１が、二次的モジュール３２に出力する二次的文３２７に階層識別３２３を付加する階層識別付加機能と、二次的文３２７にオペランド情報３２５を付加するオペランド付加機能とのうちの少なくとも一方を有するように構成してもよい。
【００８６】
図１１から理解されるように、本実施の形態による選択手段２３は、読込機能（Ｓ１１００、Ｓ１１０２）と、特定情報取得機能（Ｓ１１０４）と、選択機能（Ｓ１１０６）と、書込機能（Ｓ１１０８）とを有している。読込機能は、処理対象の二次的モジュール３２を記憶装置３０から読み込む機能である。特定情報取得機能は、階層識別特定情報を取得する機能である。ここで、階層識別特定情報は、処理対象の二次的モジュール３２の二次的文３２７のうち選択対象とすべきものの階層識別３２３を特定するものである。選択機能は、処理対象の二次的モジュール３２の二次的文３２７のうち、階層識別３２３が階層識別特定情報によって特定される階層識別と同一であるものを選択して選択後の二次的モジュール３２に出力する機能である。書込機能は、選択された二次的文３２７からなる選択後の二次的モジュール３２を記憶装置３０に記憶する機能である。
【００８７】
より具体的には、図１１に示されるように、選択手段２３は、例えば変換手段２１と同様に起動され、処理対象の二次的モジュール３２を特定するための二次的モジュール名を取得する（Ｓ１１００）。選択手段２３は、取得した二次的モジュール名によって特定される二次的モジュール３２を記憶装置３０から読み込む（Ｓ１１０２）。なお処理対象の二次的モジュール３２が記憶装置３０に記憶されていない場合、選択手段２３は、処理を終了する。
【００８８】
次に、選択手段２３は、階層識別特定情報を取得する（Ｓ１１０４）。本実施の形態においては、例えば処理対象の二次的モジュール３２を表示装置５０に表示させ、ワークシートの行３２０を表示した行がダブルクリックされた場合に、ダブルクリックされた行に表示されている階層識別３２３を階層識別特定情報として取得するようにできる。
【００８９】
次に、選択手段２３は、処理対象の二次的モジュール３２の先頭の行３２０から末尾の行３２０まで、取得した階層識別特定情報と階層識別３２３とを順次比較し、一致する行３２０のうち先頭の行３２０から末尾の行３２０までの二次的文３２７（選択対象となる二次的文３２７）を選択する（Ｓ１１０６）。選択手段２３は、選択対象となる二次的文３２７の行３２０からなる選択後の二次的モジュール３２（選択後のワークシート）を作成する。
【００９０】
次に、選択手段２３は、選択後の二次的モジュール３２を記憶装置３０に書き込み（Ｓ１１０８）、処理を終了する。
【００９１】
以上の説明から理解されるように、選択後の二次的モジュール３２は、処理対象の二次的モジュール３２のうち、指定された階層識別３２３を有する部分である。このように二次的モジュール３２の一部を選択可能とすることにより、例えばメンテナンスを行う際、処理について確認したい箇所をコンパクトに表示装置５０に表示することが可能になる。なお、階層識別３２３以外の項目によって二次的文３２７を選択するようにしてもよい。例えば、入力装置４０によって行番号が入力されるようにして、入力された行番号と一致する行番号３２２を検索し、検索された行番号３２２の階層識別３２３によって二次的文３２７を選択するようにしてもよい。
【００９２】
図１２から理解されるように、本実施の形態による表示属性設定手段２４は、読込機能（Ｓ１２００、Ｓ１２０２）と、初期検索文字取得機能（Ｓ１２０４）と、表示属性設定機能（Ｓ１２０６〜Ｓ１２１０）と、書込機能（Ｓ１２１２）とを有している。
【００９３】
より具体的には、図１２に示されるように、表示属性設定手段２４は、例えば変換手段２１と同様に起動され、処理対象の二次的モジュール３２を特定するための二次的モジュール名を取得する（Ｓ１２００）。表示属性設定手段２４は、取得した二次的モジュール名によって特定される処理対象の二次的モジュール３２を記憶装置３０から読み込む（Ｓ１２０２）。なお処理対象の二次的モジュール３２が記憶装置３０に記憶されていない場合、表示属性設定手段２４は、処理を終了する。
【００９４】
次に、表示属性設定手段２４は、初期検索文字を取得する（Ｓ１２０４）。本実施の形態による初期検索文字は二次的文３２７において参照又は更新される変数名である。初期検索文字は、変数名の一部分であってもよいし、二次的文３２７において参照される定数であってもよい。
【００９５】
次に、表示属性設定手段２４は、二次的文３２７の第１オペランド３２５ｆ又は第２オペランド３２５ｓのうち初期検索文字を含むものを追加検索文字とする（Ｓ１２０６）。
【００９６】
より具体的には、表示属性設定手段２４は、まず処理対象の二次的モジュール３２の二次的文３２７のうち、オペランド情報３２５の第１オペランド３２５ｆ又は第２オペランド３２５ｓに初期検索文字を含んでいるものを検索する。このとき、単純な文字検索を行うだけでなく、例えばREDEFINES句によって再定義された変数について、再定義される変数名によって文字検索してもよい。具体的には、例えば変数名ＶＲＢＬが変数名ＶＶＶに再定義され、第１オペランド３２５ｆに変数名ＶＶＶが設定されており、初期検索文字がＶＲＢＬである場合、第１オペランド３２５ｆは初期検索文字を含んでいると判定してもよい。上述のREDEFINES句による例に限らず、実質的に初期検索文字を含んでいるか否かを判定してもよい。なお、このような判定を行うためには、変換手段２１がモジュール３１から二次的モジュール３２を生成する際に、生成した二次的モジュール３２と対応付けてモジュール３１のDATA DIVISIONを記憶装置３０に記憶すればよい。
【００９７】
なお、表示属性設定手段２４は、第１オペランド３２５ｆ又は第２オペランド３２５ｓが初期検索文字を含んでいる場合、第１オペランド３２５ｆと第２オペランド３２５ｓの２つを追加検索文字とする。
【００９８】
次に、表示属性設定手段２４は、新たな追加検索文字が見つからなくなるまで、二次的文３２７の第１オペランド３２５ｆ又は第２オペランド３２５ｓのうち追加検索文字を含むものを追加検索文字とする（Ｓ１２０８）。より具体的には、表示属性設定手段２４は、二次的文３２７のうちオペランド情報３２５の第１オペランド３２５ｆ又は第２オペランド３２５ｓに追加検索文字を含んでいるものを更に検索する。このときの検索方法は初期検索文字の検索方法と同じである。表示属性設定手段２４は、第１オペランド３２５ｆ又は第２オペランド３２５ｓが追加検索文字を含んでいる場合、第１オペランド３２５ｆと第２オペランド３２５ｓの２つを追加検索文字とする。
【００９９】
次に、表示属性設定手段２４は、二次的文３２７のうちオペランド情報３２５の第１オペランド３２５ｆ又は第２オペランド３２５ｓに初期検索文字又は追加検索文字を含んでいる行３２０の表示属性３２８に所定の表示属性（例えば強調表示可能な背景色）を設定する。（Ｓ１２１０）。
【０１００】
次に、表示属性設定手段２４は、二次的文３２７等に所定の表示属性が設定された二次的モジュール３２を記憶装置３０に書き込む。即ち、処理対象の二次的モジュール３２を更新して（Ｓ１２１２）、処理を終了する。
【０１０１】
以上の説明から理解されるように、表示属性設定後の二次的モジュール３２の二次的文３２７のうち初期検索文字と関連する変数又は定数を参照・更新しているものには、所定の背景色等が設定される。従って、例えばメンテナンスを行う際、所定の変数に関連する処理が目立つようにして表示装置５０に表示することが可能になる。また、例えば、初期検索文字を含む二次的文３２７の背景色と、追加検索文字を含む二次的文３２７の背景色を別の色とすることにより、関連する処理を、より視覚的に把握することができる。
【０１０２】
図１３から理解されるように、本実施の形態によるフローチャート作成手段２５は、読込機能（Ｓ１３００、Ｓ１３０２）と、フローチャート作成機能（Ｓ１３０４）と、書込機能（Ｓ１３０６）とを有している。
【０１０３】
より具体的には、図１３に示されるように、フローチャート作成手段２５は、例えば変換手段２１と同様に起動され、処理対象の二次的モジュール３２を特定するための二次的モジュール名を取得する（Ｓ１３００）。フローチャート作成手段２５は、取得した二次的モジュール名によって特定される処理対象の二次的モジュール３２を記憶装置３０から読み込む（Ｓ１３０２）。なお処理対象の二次的モジュール３２が記憶装置３０に記憶されていない場合、フローチャート作成手段２５は、処理を終了する。
【０１０４】
次に、フローチャート作成手段２５は、二次的条件式の成否に対応した二次的文３２７を表の左右に並べた表形式のフローチャート３３を作成する（Ｓ１３０４）。より具体的には、二次的モジュール３２の二次的文３２７のうち階層識別３２３によって示される階層が同一である二次的文３２７について、二次的条件式が成立した場合に実行される二次的文３２７と二次的条件式が成立しない場合に実行される二次的文３２７とを表の左右に並べたフローチャート３３を作成する。このとき、フローチャート３３に、二次的文３２７と対応するように行番号３２２を設定する。なお、階層識別３２３の分岐の深さが同一であり、且つ分岐階層のうち末尾の１桁（１又は２）を除いた部分が同一である場合、階層識別３２３によって示される階層が同一であると判定する。
【０１０５】
次に、フローチャート作成手段２５は、フローチャート３３を記憶手段３０に書き込み（Ｓ１３０６）、処理を終了する。
【０１０６】
図１４から理解されるように、本実施の形態によるマトリックス作成手段２６は、読込機能（Ｓ１４００、Ｓ１４０２）と、二次的文出力機能（Ｓ１４０４）と、ケース生成機能（Ｓ１４０６）と、マトリックス作成機能（Ｓ１４０８、Ｓ１４１０）と、書込機能（Ｓ１４１２）とを有している。
【０１０７】
より具体的には、図１４に示されるように、マトリックス作成手段２６は、例えば変換手段２１と同様に起動され、処理対象の二次的モジュール３２を特定するための二次的モジュール名を取得する（Ｓ１４００）。マトリックス作成手段２６は、取得した二次的モジュール名によって特定される処理対象の二次的モジュール３２を記憶装置３０から読み込む（Ｓ１４０２）。なお処理対象の二次的モジュール３２が記憶装置３０に記憶されていない場合、マトリックス作成手段２６は、処理を終了する。
【０１０８】
次に、マトリックス作成手段２６は、二次的文３２７を表形式のマトリックス３４の所定の列に出力する（Ｓ１４０４）。詳しくは、マトリックス作成手段２６は、処理対象の二次的モジュール３２の行番号３２２、一連番号３２６、及び二次的文３２７をマトリックス３４の所定の列（例えば、第１列目乃至第３列目）の各行に出力する。
【０１０９】
次に、マトリックス作成手段２６は、二次的条件式の成否についてのケースを生成する（Ｓ１４０６）。より具体的には、マトリックス作成手段２６は、二次的モジュール３２の二次的文３２７に記述されている１以上の二次的条件式について、その全てが成立する場合と、その一部が成立する場合と、その全てが成立しない場合とを含む全てのケースを生成する。このとき、階層識別３２３の分岐識別が１である二次的文３２７に記述されたIF文（階層の最上位のIF文）毎にケースを作成してもよいし、階層の最上位のIF文の夫々についてのケースを組み合わせることでケースを作成してもよい。更に、階層の最上位のIF文のうちの一部についてケースを組み合わせることでケースを作成してもよい。
【０１１０】
次に、マトリックス作成手段２６は、生成したケースの夫々に、マトリックス３４の列のいずれかを関連表示列として対応させる（Ｓ１４０８）。例えば、生成したケースの数が５であれば、第１のケース乃至第５のケースに、第４列目乃至第８列目を夫々対応させる。この場合、例えば第３のケースに対応する関連表示列は第６列目である。
【０１１１】
次に、マトリックス作成手段２６は、関連表示列の夫々につき、対応するケースにおいて実行対象となる二次的文３２７が出力されている行に、実行対象となることを示す表示情報を出力する（Ｓ１４１０）。具体的には、前述したように、○、Ｉ等の表示情報が出力される。
【０１１２】
次に、マトリックス作成手段２６は、マトリックス３４を記憶手段３０に書き込み（Ｓ１４１２）、処理を終了する。
【０１１３】
マトリックス作成手段２６によって、図７及び図１５に示されるようなマトリックス３４を作成することができる。図７に部分的に示されているマトリックス３４は、階層の最上位のIF文毎にケースを作成したものであり、ケースの数は５である。図１５に部分的に示されているマトリックス３４は、階層の最上位のIF文の夫々についてのケースを組み合わせることでケースを作成したものであり、ケースの数は１８０である。
【０１１４】
本実施の形態による装置１０は、メンテナンスによってモジュール３１が変更された場合、モジュール３１の変更箇所を表示装置５０に視覚的に表示することもできる。
【０１１５】
例えば、図１６に示されるように、ＣＣＣモジュールを変更した場合、変更前後のＣＣＣモジュールを照合することで、ＣＣＣモジュールにおける変更前後の差分を得ることができる。変更前後の差分は、例えば、行毎にモジュール名（ＣＣＣ）を付加して、テキストファイル（差分ファイル）として記憶装置３０に記憶することができる。このとき、マトリックス作成手段２６を、差分ファイルを参照してマトリックス３４を作成するようにすればよい。
【０１１６】
図１７に示されるように、第１の変形例によるマトリックス作成手段２６は、マトリックス作成機能において、記憶装置３０に記憶された二次的モジュール３２の二次的文３２７の一部を選択して、所定の表示属性を表示属性３２８に設定する（Ｓ１４０５）。より具体的には、第１の変形例によるマトリックス作成手段２６は、記憶装置３０から差分ファイルを読み込み、差分ファイルの各行について、モジュール識別３２１及び一連番号３２６が一致する行３２０を検索し、検索された行３２０の表示属性３２８に強調表示のための背景色等を設定する。
【０１１７】
また、第１の変形例によるマトリックス作成手段２６は、関連表示列のうち選択された二次的文３２７が実行対象となるケースに対応するもののみを記憶対象として抽出する（Ｓ１４１１）。
【０１１８】
以上に説明した他は、第１の変形例によるマトリックス作成手段２６は、前述した本実施の形態によるマトリックス作成手段２６と同じ機能を備えている。第１の変形例によるマトリックス作成手段２６により、モジュール３１の変更前後の差分と関連するケースのみをマトリックス３４に作成することができる。従って、メンテナンスによって変更した機能に関連するテストケースを、より容易に作成することができる。なお、マトリックス作成手段２６は、強調表示のための背景色等の設定を行う一方、実行対象となるケースに対応する関連表示列の抽出を行わないようにしてもよい（第２の変形例）。
【０１１９】
図１８から理解されるように、マトリックス作成手段２６の第２の変形例によって作成されたマトリックス３４を表示装置５０に表示すると、変更された文３１２に対応する行３２０（変更された箇所）と、変更された文３１２から生成された二次的文３２７の行３２０（二次的に変更された箇所）とが、他の行３２０と異なる色で夫々表示される。従って、変更された箇所及び二次的に変更された箇所における関連表示列の表示内容を見ることで、関連するケースを選択することができる。より具体的には、変更された箇所及び二次的に変更された行の関連表示列に○、Ｉ、Ｔ、Ｅ、ＥＩのいずれかが表示されている場合、変更した機能に関連するケースであると判断することができる。
【０１２０】
図１８に示されるように、ＣＣＣモジュールを前述のように変更した例においては、変更した機能に関連するケースは、Ｃ２乃至Ｃ４である。従って、第１の変形例によるマトリックス作成手段２６によってマトリックス３４を作成した場合、作成されたマトリックス３４は、図１８の第１列目乃至第３列目および第５列目乃至第７列目を有する一方、第４列目と第８列目とを有していない。
【０１２１】
図１９から理解されるように、フローチャート作成手段２５についても、マトリックス作成手段２６の第２の変形例と同様に変形することで、変更された箇所と二次的に変更された箇所とを強調表示することができる。
【０１２２】
また、本実施の形態による装置１０は、様々に変形することが可能である。例えば、図２０に示されるように、装置１０を、変換手段２１を備える装置１０′と加工手段２２を備える装置１０″と、選択手段２３等を備える装置（図示せず）に分けてもよい。装置１０′と装置１０″との夫々は、通信回線８０を経由して、ファイルサーバ６０と通信可能に接続されている。通信回線８０は、例えばＬＡＮ（Local Area Network）であってもよいし、インターネットであってもよい。ファイルサーバ６０は、記憶装置（記憶手段）７０を備えている。記憶装置７０は、モジュール３１と、二次的モジュール３２と、フローチャート３３と、マトリックス３４とを記憶することができる。従って、装置１０′と装置１０″とは、記憶装置７０からモジュール３１等を読み込み、記憶装置７０にモジュール３１等を書き込むことができる。
【０１２３】
装置１０′は、装置本体２０′と、入力装置４０と、表示装置５０とを備えている。装置１０″は、装置本体２０″と、入力装置４０と、表示装置５０とを備えている。装置本体２０′は、変換手段２１と記憶装置（記憶手段）３０′とを備えている。装置本体２０″は、加工手段２２と記憶装置（記憶手段）３０″とを備えている。
【０１２４】
本変形例における記憶装置３０′と記憶装置３０″とは、主記憶装置によって構成することができる。例えば、変換手段２１は、モジュール３１を記憶装置３０′から読み込むことができる。
【符号の説明】
【０１２５】
１０，１０′，１０″  装置（モジュールの構造解析を支援する装置）
２０，２０′，２０″  装置本体
２１                  変換手段
２２                  加工手段
２３                  選択手段
２４                  表示属性設定手段
２５                  フローチャート作成手段
２６                  マトリックス作成手段
３０，３０′，３０″  記憶装置（記憶手段）
３１                  モジュール（ソースプログラム）
３１０                行
３１１                一連番号（行識別）
３１２                文
３２                  二次的モジュール（二次的ソースプログラム）
３２０                二次的行
３２１                モジュール識別
３２２                行番号
３２３                階層識別
３２４                命令識別
３２５                オペランド情報
３２５ｆ              第１オペランド（オペランド）
３２５ｏ              演算子
３２５ｓ              第２オペランド（オペランド）
３２６                一連番号（行識別）
３２７                二次的文
３２８                表示属性
３３                  フローチャート
３４                  マトリックス
４０                  入力装置
５０                  表示装置
６０                  ファイルサーバ
７０                  記憶装置（記憶手段）
８０                  通信回線
【図１】
0005458065.tif 000002
【図２】
0005458065.tif 000003
【図３】
0005458065.tif 000004
【図４】
0005458065.tif 000005
【図５】
0005458065.tif 000006
【図６】
0005458065.tif 000007
【図７】
0005458065.tif 000008
【図８】
0005458065.tif 000009
【図９】
0005458065.tif 000010
【図１０】
0005458065.tif 000011
【図１１】
0005458065.tif 000012
【図１２】
0005458065.tif 000013
【図１３】
0005458065.tif 000014
【図１４】
0005458065.tif 000015
【図１５】
0005458065.tif 000016
【図１６】
0005458065.tif 000017
【図１７】
0005458065.tif 000018
【図１８】
0005458065.tif 000019
【図１９】
0005458065.tif 000020
【図２０】
0005458065.tif 000021