(57)【要約】【課題】  解析対象プログラムから、業務の切替に関わる命令文の抽出を行う際、データ項目が入力に関わることが業務に関わるという判断基準に基づくだけだと、ほとんどの命令文が業務に関わる命令文であるとの結果を得ることになり、作業者により業務に関わるか否かの判断を行わざるを得なかった。【解決手段】解析対象プログラムを構成する命令文に対して、業務に関わる可能性を数値化した値を付して出力する。命令文が設定する入力が定数か他の命令文に依存するデータ項目であるか、及び命令文の種類により業務に関わる可能性の数値はをスコアとして算出する業務仕様解析部と、命令文とスコアの両方を表示する業務仕様解析結果表示部を備え、スコアの指定範囲により、対応する命令文を識別可能に表示する。【選択図】図１
2007264863.tif 000002
【特許請求の範囲】
【請求項１】
入力された解析対象プログラムより、業務の切替に関る命令文の抽出を支援する業務仕様解析装置であって、
上記解析対象プログラムの命令文が制御文かそれ以外かを識別する情報と、
個々の命令文におけるデータ項目が、他の命令文で定義された値を参照しているデータ項目、該命令文で値を定義されているデータ項目、その命令文で該プログラムの入力を設定しているデータ項目、または定数であるデータ項目かとを識別する情報と、
個々の命令文のある特定のデータ項目のデータ依存元、データ依存先との対応情報、ある特定の命令文の制御依存元、及び制御依存先との対応情報と、
制御依存先の命令文が制御依存元の命令文に比べて、どれくらい業務の切替に関る可能性が低くなるかを表した数値と、
データ項目がその命令文で該プログラムの入力を設定しているデータ項目または定数であるデータ項目のときに、業務の切替に関る可能性について表した数値とを用いて、
命令文と、該命令文が業務の切替に関る可能性の数値との対で構成される業務仕様解析結果を出力とする業務仕様解析部を備えることを特徴とする業務仕様解析装置、
ここで、ある第１の命令文と、別の第２の命令文とがあったとき、第２の命令文を実行するか否かが、第１の命令文の実行結果によって決まるとき、第１の命令文は制御文であり、
また、ある第１の命令文と、別の第２の命令文と、ある第１のデータ項目とがあったときに、第１の命令文で第１のデータ項目を定義しているとき、かつ、第２の命令文で第１のデータ項目を参照しているとき、かつ、第１の命令文から第２の命令文への実行可能な経路で、その経路において第１の命令文から第２の命令文を実行する間に第１のデータ項目を再定義している命令文が存在しないとき、第１の命令文を第１のデータ項目のデータ依存元といい、第２の命令文を第１のデータ項目のデータ依存先といい、
また、ある第１の命令文と、別の第２の命令文とがあったときに、第１の命令文の実行結果によって第２の命令文を実行するか否かが決まるとき、かつ、第１の命令文から第２の命令文への実行可能経路で、第２の命令文を実行するか否かを決定するような命令文が存在しないとき、第１の命令文を制御依存元といい、第２の命令文を制御依存先という。
【請求項２】
解析対象プログラムより、業務の切替に関る可能性がある命令文の抽出を支援する業務仕様解析装置であって、
個々の命令文におけるデータ項目が、他の命令文で定義された値を参照しているデータ項目、該命令文で値を定義されているデータ項目、その命令文で該プログラムの入力を設定しているデータ項目、または定数であるデータ項目かとを識別する情報と、
個々の命令文のある特定のデータ項目のデータ依存元とデータ依存先との対応情報と、
データ項目がその命令文で該プログラムの入力を設定しているデータ項目または定数であるデータ項目のときに、業務の切替に関る可能性について表した数値とを入力として、
命令文と、該命令文が業務の切替に関る可能性の数値との対で構成される業務仕様解析結果を出力とする業務仕様解析部を備えることを特徴とする業務仕様解析装置。
【請求項３】
請求項１に記載の業務仕様解析装置において、
業務仕様解析部は、入力を構成する、命令文が制御文であるか、それ以外であるかという情報を、命令文が分類１の制御文であるか、分類２の制御文であるか、それ以外であるかという情報に置き換えることと、
入力を構成する、制御依存先の命令文が制御依存元の命令文に比べて、どれくらい業務の切替に関る可能性が低くなるかを表した数値を、制御依存元の命令文が分類１の命令文と、分類２の命令文とのときに、制御依存先の命令文が制御依存元の命令文に比べて、どれぐらい業務の切替に関る可能性が低くなるかを、制御依存元の命令文が分類1の命令文と、分類２の命令文との場合ごとに表した数値に置き換えると、
出力を構成する、命令文が業務の切替に関る可能性を示す数値が置き換えない場合と異なることを特徴とする業務仕様解析装置、
但し、ある第１の命令文と、別の第２の命令文があったときに、第２の命令文をただ１度だけ実行するか否かが、第１の命令文の実行結果によって決まるとき、第１の命令文は分類１の制御文である。
また、命令文が制御文であったとき、かつ、命令文が分類１の制御文でなかったとき、命令文は分類２の制御文とする。
【請求項４】
請求項１に記載の業務仕様解析装置において、
業務仕様解析部は、入力を構成する、個々の命令文におけるデータ項目が、他の命令文で定義された値を参照しているデータ項目かと、該命令文で値を定義されているデータ項目かと、その命令文で該プログラムの入力を設定しているデータ項目または定数であるデータ項目かとを識別する情報を、個々の命令文におけるデータ項目が、他の命令文で定義された値を参照しているデータ項目かと、該命令文で値を定義されているデータ項目かと、その命令文で該プログラムの入力を設定しているデータ項目と、定数であるデータ項目かとを識別する情報に置き換えることと、
入力を構成する、データ項目がその命令文で該プログラムの入力を設定しているデータ項目または定数であるデータ項目のときに、業務の切替に関る可能性について表した数値を、データ項目がその命令文で該プログラムの入力を設定しているデータ項目と、定数であるデータ項目とのときに、データ項目が業務の切替に関る可能性について表した数値に置き換えることとで、データ項目が入力であるか、入力でないかとに応じて、
出力を構成する、命令文が業務の切替に関る可能性を示す数値が異なることを特徴とする業務仕様解析装置。
【請求項５】
請求項２に記載の業務仕様解析装置において、
業務仕様解析部は、入力を構成する、個々の命令文におけるデータ項目が、他の命令文で定義された値を参照しているデータ項目かと、該命令文で値を定義されているデータ項目かと、その命令文で該プログラムの入力を設定しているデータ項目または定数であるデータ項目かとを識別する情報を、個々の命令文におけるデータ項目が、他の命令文で定義された値を参照しているデータ項目かと、該命令文で値を定義されているデータ項目かと、その命令文で該プログラムの入力を設定しているデータ項目と、定数であるデータ項目かとを識別する情報に置き換えることと、及び、
入力を構成する、データ項目がその命令文で該プログラムの入力を設定しているデータ項目または定数であるデータ項目のときに、業務の切替に関る可能性について表した数値を、データ項目がその命令文で該プログラムの入力を設定しているデータ項目と、定数であるデータ項目とのときに、データ項目が業務の切替に関る可能性について表した数値に置き換えることとで、データ項目が入力であるか、入力でないかとに応じて、
出力を構成する、命令文が業務の切替に関る可能性を示すの数値が異なることを特徴とする業務仕様解析装置。
【請求項６】
請求項１に記載の業務仕様解析装置において、
業務仕様解析装置は、ユーザが指定したプログラムを入力として、プログラムの命令文が制御文であるか、それ以外であるかという情報と、個々の命令文におけるデータ項目が、他の命令文で定義された値を参照しているデータ項目かと、該命令文で値を定義されているデータ項目かと、その命令文で該プログラムの入力を設定しているデータ項目、または、定数であるデータ項目かとを識別する情報と、個々の命令文のある特定のデータ項目のデータ依存元と、データ依存先との対応情報と、ある特定の命令文の制御依存元と、制御依存先との対応情報とを出力するプログラム解析部をさらに備えることを特徴とする業務仕様解析装置。
【請求項７】
請求項２に記載の業務仕様解析装置において、
業務仕様解析装置は、ユーザが指定したプログラムを入力として、個々の命令文におけるデータ項目が、他の命令文で定義された値を参照しているデータ項目かと、該命令文で値を定義されているデータ項目かと、その命令文で該プログラムの入力を設定しているデータ項目、または、定数であるデータ項目かとを識別する情報と、個々の命令文のある特定のデータ項目のデータ依存元と、データ依存先との対応情報と、ある特定の命令文の制御依存元と、制御依存先との対応情報とを出力するプログラム解析部をさらに備えることを特徴とする業務仕様解析装置。
【請求項８】
請求項３に記載の業務仕様解析装置において、
業務仕様解析装置は、ユーザが指定したプログラムを入力として、プログラムの命令文が分類１の制御文であるか、分類２の制御文であるか、それ以外であるかという情報と、制御依存元の命令文が分類１の命令文と、分類２の命令文とのときに、制御依存先の命令文が制御依存元の命令文に比べて、どれぐらい業務の切替に関る可能性が低くなるかを、制御依存元の命令文が分類1の命令文と、分類２の命令文との場合ごとに表した数値と、個々の命令文のある特定のデータ項目のデータ依存元と、データ依存先との対応情報と、ある特定の命令文の制御依存元と、制御依存先との対応情報とを出力するプログラム解析部をさらに備えることを特徴とする業務仕様解析装置。
【請求項９】
請求項４に記載の業務仕様解析装置において、
業務仕様解析装置は、ユーザが指定したプログラムを入力として、プログラムの命令文が制御文であるか、それ以外であるかという情報と、個々の命令文におけるデータ項目が、他の命令文で定義された値を参照しているデータ項目かと、該命令文で値を定義されているデータ項目かと、その命令文で該プログラムの入力を設定しているデータ項目と、定数であるデータ項目かとを識別する情報と、個々の命令文のある特定のデータ項目のデータ依存元と、データ依存先との対応情報と、ある特定の命令文の制御依存元と、制御依存先との対応情報とを出力するプログラム解析部をさらに備えることを特徴とする業務仕様解析装置。
【請求項１０】
請求項５に記載の業務仕様解析装置において、
業務仕様解析装置は、ユーザが指定したプログラムを入力として、個々の命令文におけるデータ項目が、他の命令文で定義された値を参照しているデータ項目かと、該命令文で値を定義されているデータ項目かと、その命令文で該プログラムの入力を設定しているデータ項目と、定数であるデータ項目かとを識別する情報と、個々の命令文のある特定のデータ項目のデータ依存元と、データ依存先との対応情報と、ある特定の命令文の制御依存元と、制御依存先との対応情報とを出力するプログラム解析部をさらに備えることを特徴とする業務仕様解析装置。
【請求項１１】
ユーザの指定したプログラムより、業務の切替に関る可能性がある命令文を抽出することを支援する装置であって、
ユーザが指定したプログラムと、データ項目がその命令文で該プログラムの入力を設定しているデータ項目または定数であるデータ項目のときに、業務の切替に関る可能性について表した数値とを入力として、
命令文と、命令文が業務の切替に関る可能性の数値とで構成される業務仕様解析結果を出力とすることを特徴とする業務仕様解析装置。
【請求項１２】
ユーザの指定したプログラムより、業務の切替に関る可能性がある命令文を抽出することを支援する装置であって、
ユーザが指定したプログラムと、制御依存先の命令文が制御依存元の命令文に比べて、どれくらい業務の切替に関る可能性が低くなるかを表した数値と、データ項目がその命令文で該プログラムの入力を設定しているデータ項目または定数であるデータ項目のときに、業務の切替に関る可能性について表した数値とを入力として、
命令文と、命令文が業務の切替に関る可能性の数値とで構成される業務仕様解析結果を出力とすることを特徴とする業務仕様解析装置。
【請求項１３】
請求項１〜５、１１、１２に記載の業務仕様解析装置において、
業務処理処理条件抽出装置は、命令文と、命令文が業務の切替に関る可能性の数値とで構成される業務仕様解析結果を入力として、命令文と、命令文が業務の切替に関る可能性の数値との対応を表示する業務仕様解析結果表示部を備えることをさらに特徴とする業務仕様解析装置。
【請求項１４】
請求項１〜５、１１、１２に記載の業務仕様解析装置において、
業務処理処理条件抽出装置は、命令文と、命令文が業務の切替に関る可能性の数値とで構成される業務仕様解析結果を入力として、業務の切替に関る可能性の数値が高い順に命令文を表示する業務仕様解析結果表示部をさらに備えることを特徴とする業務仕様解析装置。
【請求項１５】
請求項１〜５、１１、１２に記載の業務仕様解析装置において、
業務処理処理条件抽出装置は、命令文と、命令文が業務の切替に関る可能性の数値とで構成される業務仕様解析結果を入力として、業務の切替に関る可能性の数値が一定以上の命令文を表示する業務仕様解析結果表示部をさらに備えることを特徴とする業務仕様解析装置。
【請求項１６】
請求項１〜５、１１、１２に記載の業務仕様解析装置において、
業務処理処理条件抽出装置は、命令文と、命令文が業務の切替に関る可能性の数値とで構成される業務仕様解析結果を入力として、制御文である命令文と、命令文が業務の切替に関る可能性の数値との対応を表示する業務仕様解析結果表示部をさらに備えることを特徴とする業務仕様解析装置。
【請求項１７】
解析対象プログラムから業務の切り替えに関わる命令文の抽出を支援する業務仕様解析装置であって、解析処理プログラムを記憶する第１のメモリ（105）と、解析対象プログラム及び解析処理時に用いるテーブル情報を記憶する第２のメモリ（110）と、入力装置（103）と、出力装置（102）と、上記解析処理を実行して上記解析対象プログラムを解析する処理装置（101）とを有し、
上記解析処理プログラムは、
上記解析対象プログラムを取得して、仕様の解析に用いる情報（a）（ｂ）（ｃ）（ｄ）を取得するプログラム解析処理（106）と、
上記入力装置より数値（e）（ｆ）を受付け、上記情報（a）（ｂ）（ｃ）（ｄ）を用いて上記解析対象プログラムを構成する処理文に対して業務の切替に依存する数値を取得する業務仕様解析処理（107）と、
上記解析対象プログラムを構成する処理文と該処理文に対応した上記業務の切替に依存する数値とを併記して上記出力手段へ表示処理する業務仕様解析結果表示処理（108）と
からなることを特徴とする業務仕様解析装置、
ただし、
上記情報（ａ）は、解析対象プログラムを構成する命令文が制御文であるかそれ以外かとを識別する情報（図２０）、
上記情報（ｂ）は、解析対象プログラムを構成する個々の命令文におけるデータ項目が、他の命令文で定義された値を参照しているデータ項目か、該命令文で値を定義されているデータ項目か、その命令文で該プログラムの入力を設定しているデータ項目か、または定数であるデータ項目化とを識別する情報、
上記情報（ｃ）は、解析対象プログラムを構成する個々の命令文のある特定のデータ項目のデータ依存元と、データ依存先との対応情報、
上記情報（ｄ）は、解析対象プログラムを構成するある特定の命令文の制御依存元と、制御依存先との対応情報、
上記数値（ｅ）は、制御依存先の命令文が制御依存元の命令文に比べて、どれくらい業務の切替に関わる可能性が低くなるかを示す数値、
上記数値（ｆ）は、データ項目がその命令文で該プログラムの入力を設定しているデータ項目又は定数であるデータ項目のときに、業務の切替に関わる可能性についてあらわした数値、
とする。
【請求項１８】
請求項１７において、
上記業務使用解析処理では、
上記解析対象プログラムを構成する処理文に対して、重み係数と、計算部スコアを取得し、
上記重み係数と上記計算部スコアの積を上記業務の切替に依存する数値とすることを特徴とする業務仕様解析装置。
【請求項１９】
請求項１７において、上記数値（ｅ）は１以下の数値であることを特徴とする業務仕様解析装置。
【請求項２０】
請求項１７において、上記数値（ｆ）はデータ項目がその命令文でプログラムの入力が設定しされているときに１以上の数値であることを特徴とする業務仕様解析装置。
【請求項２１】
請求項１８において、処理中の上記処理文の制御依存元プログラム行がない場合には、上記重み係数に定数を設定することを特徴とする業務仕様解析装置。
【発明の詳細な説明】
【技術分野】
【０００１】
情報システムで使用されているプログラムの解析をおこない、業務の切替に関るプログラムの命令文の抽出を支援するプログラムの解析技術に関する。
【背景技術】
【０００２】
プログラムに埋もれている業務仕様を回復するためには、業務的な視点からプログラム中で活用したい箇所を見極める必要がある。そのためにはプログラムの業務仕様を生成する必要があるが、現状ではこれを行うためには膨大なソースコードを読んで理解した上で仕様を作成しなければならなかった。
【０００３】
そのため従来から、既存のプログラムを業務に関る部分と制御に関る部分に切り分け、業務に関る部分を抽出することで、プログラムの処理内容を効率的に把握しようとする試みはなされてきた。
【０００４】
このように、プログラムを業務に関る部分と制御に関る部分に切り分けることで業務仕様を解析する装置としては、特許第３３７７８３６号に記載のシステムがある。このシステムでは、プログラムのデータ項目に着目し、命令文が業務に関るか、制御に関るかを判定している。その判定方法は以下のような流れである。命令文のデータ項目が以下の条件を満たす場合には業務に関るとしている
「データ項目が一つでも入力である場合」
「データ項目が変数である場合には、そのデータ項目の更新を行っている命令文を検索し、その命令文のデータ項目が入力の場合」
つまり、業務仕様に関る命令文は、該命令文のデータ項目が必ず入力に関るデータ項目を含んでいるとしている。
【０００５】
【特許文献１】特許第３３７７８３６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
従来の技術では、命令文のデータ項目が入力に関る場合には業務仕様、入力に関らない場合には制御仕様というように、プログラムを入力のみを判定条件として業務か制御かのどちらかに振り分けている。
しかし、実際のプログラムにおいて個々の命令文を考えた場合、その命令文に含まれるデータ項目の大部分は入力に関るデータ項目である。そのため、プログラム中のほとんどの命令文は業務に関る命令文に振り分けられる。  この業務に関る命令文に振り分けられた命令文には、該命令文に含まれるデータ項目は入力に関るが、業務仕様ではない命令文も含まれている。
結果として、作業者はプログラム中のほとんどの命令文を、実際にその命令文が業務に関っているかの判断を必要もあるため、作業者はプログラムにおいて、どのような処理が行われているかを効率よく把握することができない。
従って本発明の目的は、業務使用に関わる可能性のある命令文を効率よく把握可能に利用者に提示する、業務仕様解析を支援するシステムを提供することにある。
【課題を解決するための手段】
【０００７】
上記の課題を解決するために本発明では、業務に関ると振り分けられた命令文に対しても、どの命令文がより業務に関る可能性が高いかという命令文を確認するための優先順位をつける。
解析対象のプログラムを項目ごとに識別し、識別されたプログラムの個々の命令文に含まれるデータ項目と、命令文の制御依存関係が業務に関る可能性を数値設定し、プログラムの個々の命令文に対して業務の仕様に関る可能性の数値を取得し、命令文と数値とを表示画面に併記して出力する。作業者からの数値範囲の指示にしたがい、優先的に表示させるべき命令文（業務にかかわる可能性の高い命令文）を選択する。指示された数値範囲に該当する命令文を視覚的に強調表示する表示手段を有する。
【発明の効果】
【０００８】
本発明の効果としては、解析対象のプログラムから業務仕様に関係する命令文を、関係する可能性を示す数値をとともに得ることができ、数値範囲の指定におうじて命令文を表示・提供することができる。業務仕様の確認に必要な命令文を選択的に把握することが可能となり、種々のシステム開発の効率化に資することができる。
【発明を実施するための最良の形態】
【０００９】
以下に本発明の実施の形態を説明する。
【実施例１】
【００１０】
＜全体構成＞
以下、本発明の実施例を図面を用いて詳細に説明する。
図１は、業務仕様解析装置全体構成図を示している。システムはバス等の接続手段で接続されたCPU１０１と、ディスプレイ装置１０２と、キーボード１０３とマウス等の指示装置１０４とを含む入力装置と、メモリ１０５と、メモリ上に置かれたプログラム１０６〜１０９とからなるCPU101はメモリ１０５上のプログラムを読み出し実行するが、その際、外部記憶装置１１０にアクセスして必要な情報を読み出したり書き込んだりする。また、１１０は外部記憶装置を示しており、１１１と、１１２とはディスク装置上に置かれたデータである。なお、対象プログラム（対象PRG）１１１は、本発明システムが解析対象とするプログラムである。
【００１１】
図２に記載されているフローチャートを用いて、業務仕様解析装置の制御部１０９の機能について説明する。制御部１０９の機能は、プログラム解析部１０６と、業務仕様解析部１０７と、業務仕様解析結果表示部１０８の機能からユーザに機能を指定させ、指定を受けた機能を実行する。
プログラム解析部１０６は、入力装置（１０３，１０４）からユーザによって指定されたプログラム名をキーとして、解析対象のプログラム１１１を検索し、解析対象とするプログラムを取得する。そして、命令文情報と、データ項目情報と、制御依存情報と、データ依存情報とからなるプログラム解析結果情報を業務処理条件情報１１２に与える処理を行う。（ステップ２０１）
業務仕様解析部１０７は、業務仕様解析機能２０２で定義された処理を実行することで、命令文が業務の切替に関る可能性の数値で構成される業務仕様解析結果を業務処理条件情報１１２に与える。なお、業務仕様解析機能２０２で定義された処理については、図３を用いて以下で詳細に説明する。（ステップ２０２）
業務仕様解析結果表示部１０８は、業務仕様解析結果表示機能２０３を実行することで、業務処理条件情報１１２に格納された業務仕様解析結果を取得して、命令文と、命令文が業務の切替に関る可能性の数値との対応をディスプレイ装置１０２に表示する処理を行う。（ステップ２０３）
ディスプレイ装置１０２に表示した業務仕様解析の結果に対して、ユーザに再度、業務仕様解析機能を実行させるかを選択させる。（ステップ２０４）
上記ステップ（２０１〜２０４）はユーザが再度、業務仕様解析機能の実行を選択している間、繰り返し行われ、業務仕様解析機能の終了が選択されたときに装置の動作（制御部１０９での処理）が終了する。
【００１２】
次に、図３１のメニュー画面を用いて、制御部１０９の機能を具体的に説明する。
まず、ユーザからディスプレイ装置１０２に図３１のメニュー画面を表示し、に解析プログラムの取得／登録（３１０１）の選択・実行を受け付けると、解析対象のプログラムを対象PRG１１１から取得する。
解析対象のプログラム取得後、ユーザからプログラム解析機能（３１０２）を選択・実行を受け付け、プログラム解析部１０６の処理によりプログラム解析結果を作成し、その結果を業務処理条件情報１１２に登録する。作成されたプログラム解析結果により値の入った命令文情報テーブル１１３と、データ項目情報テーブル１１４と、制御依存情報テーブル１１５と、データ依存情報テーブル１１６が作成される。これらのテーブルについては、以下で詳細な説明を行う。
【００１３】
次に、ユーザに、プログラム解析機能３１０２を選択させ、業務仕様解析部１０７を起動する。業務仕様解析部１０７が起動して表示されるユーザ設定値入力画面（図３２）において、ユーザからいくつかの数値の設定を受け付ける。解析対象のプログラムにおいて、入力であるデータ項目が業務の切替に関る可能性の数値（以下、入力の初期値スコア）の入力は３２０１の入力欄で、定数であるデータ項目が業務の切替に関る可能性の数値（以下、定数の初期値スコア）の入力は３２０２の入力欄で、制御依存元の命令文の処理内容が分岐処理であるときに、制御依存先の命令文が制御依存元の命令文に比べてどれくらい業務の切替に関る可能性が低くなるかを表す数値（以下、分岐処理の処理内容係数）の入力は３２０３の入力欄で、制御依存元の命令文の処理内容がループ処理であるときに、制御依存先の命令文が制御依存元の命令文に比べてどれくらい業務の切替に関る可能性が低くなるかを表す数値（以下、ループ処理の処理内容係数）の入力は３２０４の入力欄で受け付けるように設定する。ただし、制御依存関係の階層が深い命令文において、入力を判定条件にする制御文のように、業務の切替に関る可能性が高い命令文が存在することを考慮して、入力の初期値スコアは「1」以上とする。また、ある第１の命令文が入力を判定条件にしない制御文であるときに、第１の命令文が業務の切替に関る可能性は、第１の命令文の制御依存元である別の第２の命令文が業務の切替に関る可能性より低くなることを考慮して、定数の初期値スコアと、分岐処理の処理内容係数と、ループ処理の処理内容係数とは「1」以下とする。
【００１４】
ユーザが図３２のユーザ設定値指定入力画面の登録ボタンを押下すると、業務仕様解析部１０７は業務仕様解析結果を作成し、その結果を業務処理条件情報１１２に登録する。業務仕様解析結果とは、処理文情報テーブル１１７と、データ項目スコアテーブル１１８と、データ項目初期値スコアテーブル１１９と、処理内容係数設定テーブル１２０と、ループエラー判定テーブル１２１とのことを指している。これらのテーブルについては、詳細な説明を後述する。
【００１５】
図３２の設定値入力画面の登録処理が終わり、業務仕様解析結果が作成されると、図３１のメニュー画面に戻り、ユーザから業務仕様解析結果表示３１０４の選択を受け付け、業務仕様解析結果表示部１０８を起動して業務仕様解析結果を、図３３の業務仕様解析結果表示画面に表示する。図３３の業務仕様解析結果表示の結果、ある処理文スコア以上の命令文を明示的に表示したいときには、３３０１の入力欄に数値を指定して、抽出ボタン３３０２を押下する。処理文スコアはその処理を行うめいれいぶんが業務に関わる可能性を数値で表したものである。下限は０であるが、上限の設定はなく、値が大きいほど命令文が業務に関わる可能性が高いことを示す。例えば、ユーザは処理文スコアが「1.0」以上の命令文を明示的に表示させるには、「1.0」を３３０１の入力欄に指定して、抽出ボタンを押下して、図３４の業務使用解析結果表示画面を得る。
また、図３３の業務仕様解析結果表示画面を参照した結果、ユーザからが再度、業務仕様解析機能を実行させる要求があるときには、再実行ボタン３３０３の入力を受け付けて業務仕様解析機能を再実行させ、業務仕様解析機能を実行させる要求がない場合には、終了ボタン３３０５の入力を受付て業務仕様解析装置を終了させる。
【００１６】
次に、業務仕様解析装置の外部記憶装置１１０について、説明を行う。外部記憶装置１１０は解析対象プログラム１１１と、業務処理条件情報１１２とから構成される。対象プログラム１１１には解析対象となるプログラムが格納され、業務処理条件情報１１２には図９の、命令文情報テーブル９０１と、データ項目情報テーブル９０２と、制御依存情報テーブル９０３と、データ依存情報テーブル９０４と、処理文情報テーブル９０５と、データ項目スコアテーブル９０６と、データ項目初期値スコア設定１００７と、処理内容係数設定テーブル９０８と、ループエラー判定テーブル９０８とが格納されている。これらのテーブルの情報は必要に応じて制御部１０９により読み出されてプログラム会席部１０６の処理、業務仕様解析部１０７の処理、業務仕様解析結果表示部１０８の処理に用いられる。図９の各テーブルを結んでいる線は、これらのテーブルの関連を示している。
【００１７】
以下で、これらのテーブルの詳細を説明する。
命令文情報テーブル９０１は、対象となるプログラムのプログラム行番号９１０と、対象となるプログラムの命令文９１１と、命令文を処理文かと、分岐かと、命令文かと、それ以外かとを識別する処理内容区分９１２とから構成される命令文情報を登録する。なお、命令文テーブルのデータ構成例は後述の図１０に示す。
データ項目情報テーブル９０２は、プログラム行番号９１０と、個々の命令文に含まれるデータ項目名称９１３と、データ項目を参照かと、更新かと、入力かと、定数かとを識別する参照更新区分９１４とから構成されるデータ項目情報を登録する。なお、データ項目情報テーブル９０２のデータ構成例は後述の図１１に示す。
制御依存情報テーブル９０３は、対象となるプログラムのある第１の命令文のプログラム行番号である制御依存先プログラム行番号９１５と、第１の命令文の制御依存元で別の第２の命令文のプログラム行番号である制御依存元プログラム行番号９１６とから構成される制御依存情報を登録する。なお、制御依存情報テーブルテーブル９０３のデータ構成例は後述の図１２に示す。
【００１８】
データ依存情報テーブル９０４は、対象となるプログラムのある第１の命令文のプログラム行番号であるデータ依存先プログラム行番号９１７と、第１の命令文に含まれる個々のデータ項目名称９１８と、第１の命令文に含まれる個々のデータ項目のデータ依存元の命令文のプログラム行番号であるデータ依存元プログラム行番号９１９とから構成されるデータ依存情報を登録する。なお、データ依存情報テーブル９０４のデータ構成例は後述の図１３に示す。
処理文情報テーブル９０５は、プログラム行番号９１０と、命令文が業務の切替に関る可能性の数値である処理文スコア９２０と、命令文の計算部が業務の切替に関る可能性の数値である計算部スコア９２１と、命令文が制御依存元の別の命令文に比べて、どれくらい業務の切替に関る可能性が低くなるかを表す数値である重み係数９２２と、処理内容区分９２３と、命令文が処理中かと、処理中でないかとを区別する処理中区分９２４とから構成される処理文情報を登録する。なお、処理文情報テーブル９０５のデータ構成例は後述の図１４に示す。
【００１９】
データ項目スコアテーブル９０６は、プログラム行番号９１０と、データ項目名称９１３と、データ項目が業務の切替に関る可能性の数値であるデータ項目スコア９２４とから構成されるデータ項目スコア情報を登録する。
【００２０】
データ項目初期値スコア設定テーブル９０７は、参照更新区分９１４と、データ項目名称の参照更新区分が入力と、定数とのときの業務の切替に関る可能性の数値である初期値スコア９２５とから構成されるデータ項目初期値スコアを登録する。
【００２１】
処理内容係数設定テーブル９０８は、命令文の処理内容を分岐処理かと、ループ処理かとを識別する処理内容区分９２６と、ある第１の命令文の制御元である別の第２の命令文の処理内容ごとに、第１の命令文が第２の命令文に比べてどれくらい業務に関る可能性が低くなるかを表す処理内容係数９２７とから構成される処理内容係数設定を登録する。
ループエラー判定テーブル９０９は、ループ処理でエラーが生じたかと、生じていないかとを識別する参照更新区分９２８から構成されるループエラー判定情報を登録する。
【００２２】
図１０は、命令文情報テーブル９０１の内容の一例を示したものである。
９１０は、対象となるプログラムの行ごとに一意となるプログラム行番号である。そして、このプログラム行番号９１０により、命令文情報を一意に識別するようになっている。命令文９１１は、プログラム行番号に対応する命令文の本文である。９１２は、プログラム行番号に対応する命令文の処理内容を区別する処理内容区分であり、命令文が分岐処理を行っているときには分岐、命令文がループ処理を行っているときにはループ、命令文が変数を含む場合で分岐またはループでないときには処理文となる。
例えば、命令文情報１００１は、対象となるプログラムのプログラム行番号が「1」で命令文は「read a;」であり、処理内容区分は「処理文」であることを示している。
【００２３】
図１１は、データ項目情報テーブル９０２の一例を示したものである。
９１３は、プログラム行番号に対応する命令文に含まれるデータ項目の名称である。９１４は、プログラム行番号に対応する命令文に含まれるデータ項目を識別する参照更新区分であり、データ項目が定義されている変数のときには「更新」、参照されている変数のときには「参照」、入力である定数のときには「入力」、入力でない定数のときには「定数」となる。そして、図１０と同様のプログラム行番号９１０と、データ項目名称９１３と、参照更新区分９１４により、データ項目情報を一意に識別するようになっている。
例えば、データ項目情報１１０１は、対象となるプログラムのプログラム行番号が「1」の命令文に含まれる、データ項目名称が「a」のデータ項目の参照更新区分は「入力」であることを示している。
【００２４】
図１２は、制御依存情報テーブル９０３の一例を示したものである。
９１５は、対象となるプログラムのある第１の命令文のプログラム行番号である。そして、この制御依存先プログラム行番号９１５により、制御依存情報を一意に識別するようになっている。９１６は、第１の命令文の制御依存元となる別の第２の命令文のプログラム行番号である。
例えば、制御依存情報１２０１は、対象となるプログラムのプログラム行番号が「7」の命令文の制御依存元のプログラム行番号は「6」であることを示している。
【００２５】
図１３は、データ依存情報テーブル９０４の一例を示したものである。
９１７は、対象となるプログラムのある第１の命令文のプログラム行番号である。９１８は、第１の命令文に含まれる個々のデータ項目のデータ項目名称である。９１９は、第１の命令文の各データ項目のデータ依存先の命令文のプログラム行番号である。そして、これらのデータ依存先プログラム行番号９１７と、データ項目名称９１８と、データ依存元プログラム行番号９１９とにより、データ依存情報を一意に識別するようになっている。
例えば、データ依存情報１３０１は、対象となるプログラムのプログラム行番号が「6」の命令文に含まれる、データ項名称が「a」のデータ項目のデータ項目依存元のプログラム行番号は「1」であることを示している。
【００２６】
図１４は、処理文情報テーブル９０５の一例を示したものであり、図１０と同様のプログラム行番号９１０により、処理文情報を一意に識別するようになっている。９２０は、命令文情報テーブル９０１において、処理内容区分がNULLでない命令文（すなわち、処理文）が業務の切替に関る可能性の数値である。計算部スコア９２１は、個々の命令文に含まれる、他の命令文で定義された値を参照しているデータ項目と、その命令文で該プログラムの入力を設定しているデータ項目と、定数であるデータ項目のデータ項目スコアの平均値である。重み係数９２２は、ある第１の命令文の制御元である別の第２の命令文の処理内容ごとに、第１の命令文が第２の命令文に比べてどれくらい業務に関る可能性が低くなるかを表す処理内容係数と、第２の命令文が業務の切替に関る可能性の数値との積から算出される値である。９１２は、処理分の処理を識別する処理内容区分であり、分岐と、ループと、処理文のいずれかに区分される。９２３は、ある処理文が処理文スコアを算出の処理中か、処理中ではないかを示す処理中区分であり、処理中のときには「処理中」、処理中でないときにはNULL（値なし）である。
例えば、処理文情報１４０１は、対象となるプログラムのプログラム行番号が「1」の命令文は、処理文スコアは「1.5」であり、計算部スコアは「1.5」であり、重み係数が「1」であり、処理内容区分は「処理文」であり、処理中区分はNULL（値なし）で、この場合は、そのプログラム行のスコア計算処理中ではないことを示している。
【００２７】
図１５は、データ項目スコアテーブル９０６の一例を示したものであり、図１０と同様のプログラム行番号９１０と、図１１と同様のデータ項目名称９１３とにより、データ項目スコアを一意に識別することになっている。９２４は、ある第１の処理文のデータ項目において、そのデータ項目の複数あるデータ依存元の命令文の処理文スコアの最小値である。
例えば、データ項目スコア情報１５０１は、対象となるプログラム行番号が「1」の命令文に含まれる、データ項目名称が「a」のデータ項目のデータ項目スコアは「1.5」であることを示している。
【００２８】
図１６は、データ項目初期値スコア設定テーブル９０７の一例を示したものである。
９１４は、図１１の参照更新区分の一部の参照更新区分であり、入力と、定数のいずれかとなる。この、参照更新区分９１４により、データ項目初期値スコアを一意に識別することになっている。初期値スコア９２５は、データ項目が「入力」と、「定数」とのときのデータ項目が業務の切替に関る可能性の数値である。
例えば、データ項目初期値スコア１６０１は、データ項目の参照更新区分が「入力」であるときには、データ項目が業務の切替に関る可能性の数値は「1.5」であることを示している。
【００２９】
図１７は、処理内容係数設定テーブル９０８の一例を示したものである。
９２６は、図１０の処理内容区分の一部の処理内容区分であり、分岐と、ループのいずれかとなる。この、処理内容区分９２６により、処理内容係数設定を一意に識別することになっている。処理内容係数９２７は、制御依存先のある第１の命令文が制御依存元の別の第２の命令文の処理内容の影響を受ける程度を示す数値である。
例えば、処理内容係数設定１７０１は、処理文の処理内容が「分岐」であるときには、処理内容係数は「0.8」であることを示している。
【００３０】
図１８は、ループエラー判定テーブル９０９の一例を示したものである。
９２８は、業務仕様解析機能でループにより処理にエラーが発生しているか判定するループエラー区分であり、エラーが発生していないときは正常、エラーが発生しているときはエラーとなる。このループエラー区分９２８により、ループエラー判定テーブルを一意に識別することになっている。
例えば、ループエラー判定１８０１は、業務仕様解析機能において、ループによるエラーが発生していることを示している。
【００３１】
＜プログラム解析処理１＞
次に、図２〜図８および図１９〜図３０を参照して、本実施形態における業務仕様解析装置の処理動作を詳細に説明する。はじめに業務にかかる可能性を示す処理文スコアの取得に必要な数値情報がすべてそろっている場合から説明する。
【００３２】
作業者はプログラム解析機能を起動して、対象となる図１９のプログラムを選択して、プログラム解析を実行して、図２０の命令文情報テーブルと、図２１のデータ項目情報テーブルと、図２２の制御依存情報テーブルと、図２３のデータ依存情報テーブルを作成する。（ステップ２０１）
図３は、業務仕様解析機能２０２を説明するためのフローチャートを示す。業務仕様解析部１０７において、業務仕様解析機能２０２が起動すると、はじめに、ステップ３０１で、作業者にデータ項目初期値スコア設定テーブルに対して、初期値を入力させる。なお、データ項目は解析対象のプログラムで処理されるデータで、そのデータが出現するプログラム行番号以前に他の命令文でデータとして取り扱われている場合には、初期値スコアの設定はしない。実施例では図２６のように、データ項目初期値スコア設定テーブルの、参照更新区分が入力に対応する初期値スコアに「1.5」が、参照更新区分が定数に対応する初期値スコアに「0.8」が入力される。（ステップ３０１）
次にステップ３０２で、作業者に処理内容係数設定テーブルに処理内容係数を入力させる。実施例では図２５のように、処理内容係数設定テーブルの、処理内容区分が分岐に対応する処理内容係数に「0.8」と、処理内容区分がループに対応する処理内容係数に「0.8」 が入力される（ステップ３０２）。
【００３３】
次のステップ３０３では、これからプログラム解析を行うため、初期値としてループエラー判定テーブルのループエラー区分に「正常」を登録する。（図２４、ステップ３０３）
ステップ３０４で業務処理情報テーブル類の初期設定処理を行うが、この処理を図４を用いて説明する。
ステップ４０１は、命令文情報テーブルを「処理内容区分  <>NULL」という条件で検索し、プログラム行番号、処理内容区分を取得する。実施例では、図２０の命令文情報テーブルを「処理内容区分<>NULL」という条件で検索して、プログラム行番号と、処理内容区分とを取得する。（ステップ４０１）
ステップ４０２は、処理文情報テーブルに前ステップで取得したプログラム行番号、処理内容を登録する。実施例では、処理文情報テーブルにステップ４０１で取得したプログラム行番号と、処理内容区分とを登録して、図２７の処理文情報テーブルを作成する。（ステップ４０２）
ステップ４０３は、データ項目情報テーブルを「参照更新区分<>'更新'」という条件で検索し、プログラム行番号、データ項目名称、参照更新区分を取得する。実施例では、図２１のデータ項目情報テーブルを「参照更新区分<>「更新」」という条件で検索して、プログラム行番号と、データ項目名称と、参照更新区分を取得する。（ステップ４０３）
ステップ４０４は、データ項目初期値スコア設定テーブルを「参照更新区分＝前ステップで取得した参照更新区分」という条件で検索し、初期値スコアを取得する。実施例では、図２６のデータ項目初期値スコアテーブルを「参照更新区分＝ステップ４０３で取得した参照更新区分」という条件で検索して、初期値スコアを取得する。（ステップ４０４）
ステップ４０５は、データ項目スコアテーブルに前ステップで取得したプログラム行番号、データ項目名称、初期値スコアを登録する。実施例では、データ項目スコアテーブルにステップ４０３で取得したプログラム行番号と、ステップ４０３で取得したデータ項目名称と、ステップ４０４で取得した初期値スコアとを登録して、図２８のデータ項目スコアテーブルを作成する。（ステップ４０５）
この時点では、ステップ４０４で参照更新区分に対する初期値が設定されていないデータ項目のスコアは空白となっている。このように業務処理情報テーブル類の初期値設定処理（図３のステップ３０４）が行われる。
図３に戻る。ステップ３０４の直後では、処理文情報テーブルは図２７の状態である。これから図２７に示される核プログラム行番号（対象プログラムの命令文で「処理内容区分<>NULL」の条件のもの）の処理文スコア、重み係数、計算部スコアを取得していく。
ステップ３０５は、処理文情報テーブルにおいて、処理文スコアがわからないプログラム行番号を一つ選択する。実施例の図２７では、プログラム行番号「1」を選択する。（ステップ３０５）
次の処理文スコア算出処理（ステップ３０６）の詳細を図５から図８を用いて説明する。
【００３４】
ステップ５０１は、処理文情報テーブルを「プログラム行番号＝前ステップで取得したプログラム行番号」という条件で検索し、処理中区分に「処理中」を登録する。実施例では、図２７の処理文情報テーブルを「プログラム行番号＝ステップ３０５で取得したプログラム行番号「１」」という条件で検索し、プログラム行番号１の処理中区分に「処理中」を登録する。（ステップ５０１）
次のステップ５０２の重み係数算出処理について図を用いて説明する。
【００３５】
ステップ６０１は、制御依存情報テーブル図２２を「制御依存先プログラム行番号＝プログラム行番号」という条件で検索し、制御依存元プログラム行番号を取得する。実施例では、制御依存情報テーブルを「制御依存先プログラム行番号＝ステップ３０５で取得したプログラム行番号「１」」という条件で検索して、制御依存元プログラム行番号を取得しようとするが、図２２の制御依存先プログラム行番号には「１」はないため、制御依存元プログラム行番号は取得できない。（ステップ６０１）
ステップ６０２は、制御依存元プログラム行番号が取得できるかどうかを判定する。実施例では、ステップ６０１で制御依存元プログラム行番号が取得できないため、NOと判定し（ステップ６０２）、ステップ６０３では数値「１」を取得する（ステップ６０３）
ステップ６０４は、処理文情報テーブルを「プログラム行番号＝前ステップで取得したプログラム行番号」という条件で検索し、前ステップで算出した重み係数を登録する。実施例では、処理文条件テーブルを「プログラム行番号＝ステップ３０５で取得したプログラム行番号「１」」という条件で検索して、重み係数にステップ６０３で取得した数値「１」を登録する。（ステップ６０４）
ステップ５０３は、ループエラー区分が「エラー」か、それ以外かを判定する。実施例では、図２４のループエラー判定テーブルを検索して、ループエラー判定区分が「正常」であるため、NOと判定する。（ステップ５０３）
次にステップ５０４の計算部スコア算出処理について図７を用いて説明する。
【００３６】
ステップ７０１は、データ項目スコアテーブル図２８において、選択したプログラム行番号に対応するデータスコアが一つでもNULLがあるかどうかを判定する。実施例では、データ項目スコアテーブルにおいて、ステップ３０５で取得したプログラム行番号「１」に対応するデータ項目スコアが「１.５」のみであるため、NOと判定する。（ステップ７０１）
ステップ７０２は、データ項目スコアが「エラー」以外のデータ項目スコアを取得する。実施例では、データ項目スコアテーブル図２８を「プログラム行番号＝ステップ３０５で取得したプログラム行番号「１」」という条件で検索して、データ項目スコア「1.5」を取得する。（ステップ７０２）
ステップ７０３は、データ項目スコアに「エラー」が存在するか、しないかを判定する。実施例では、ステップ７０２のとおり、データ項目スコアとして、エラーではなく「1.5」のみを取得しているため、NOと判定する。（ステップ７０３）
ステップ７０４は、取得したデータ項目スコアの平均値を取得する。実施例では、ステップ７０３で取得したデータ項目スコア「1.5」の平均値を計算部スコアとして算出するため、「1.5」を取得する。（ステップ７０４）
ステップ７０５は、処理文情報テーブルを「プログラム行番号＝前ステップで取得したプログラム行番号」という条件で検索し、検索した行番号の計算部スコアに前ステップで算出した計算部スコアを登録する。実施例では、図２７の処理文情報テーブルを「プログラム行番号＝ステップ３０５で取得したプログラム行番号「１」」という条件で検索して、計算部スコアにステップ７０４で取得した数値「1.5」を登録する。（ステップ７０５）
ステップ７０６は、データ項目スコアテーブルを「データ項目スコア=ループエラー」という条件で検索し、データ項目スコアにNULLを登録する。実施例では、データ項目スコアテーブルを「データ項目スコア＝「エラー」」という条件で検索するが、条件に当てはまるデータ項目は存在しない。（ステップ７０６）
これで図ステップ５０４の計算部スコアの算出ができた。
【００３７】
ステップ５０５は、処理文情報テーブルの計算部スコアが「エラー」であるかどうかを判定する。実施例では、この時点で処理文情報テーブルの計算部スコアに「エラー」が存在しないため、NOと判定する。（ステップ５０５）
ステップ５０６は、処理文スコアとして、計算部スコアと、重み係数との積を算出して、取得する。実施例では、ステップ６０４で登録した重み係数「１」と、ステップ７０５で登録した計算部スコア「１．５」の積を処理文
スコアとして算出するため、数値「1.5」を取得する。（ステップ５０６）
ステップ５０７は、処理文情報テーブルに前ステップで算出した処理文スコアを登録する。実施例では、処理文情報テーブル図２７を「プログラム行番号＝ステップ３０５で取得したプログラム行番号「1」」で検索して、プログラム行番号「１」の処理文スコアにステップ５０６で取得した数値「1.5」を登録する。（ステップ５０７）
ステップ５０８は、処理文情報テーブルを「計算部スコア＝'エラー'」という条件で検索し、計算部スコアにNULLを登録する。実施例では、処理文情報テーブルを「計算部スコア＝「エラー」」という条件で検索するが、条件に当てはまる計算部スコアは存在しない。（ステップ５０８）
ステップ５０９は、処理文情報テーブルを「プログラム行番号＝前ステップで取得したプログラム行番号」という条件で検索し、処理中区分にNULLを登録する。実施例では、処理文情報テーブルを「プログラム行番号＝ステップ３０５で取得したプログラム行番号「１」」という条件で検索するが、条件を満たすプログラム行番号は存在しない。（ステップ５０９）
以上の手順で図２７の処理文情報テーブルの処理文スコア、重み係数を取得していく。
【００３８】
次のステップ３０７は、処理文情報テーブルの処理文スコアが全てわかっているかどうかを判定する。実施例では、この時点の図２７の処理文情報情報テーブルのプログラム行番号が「２」以降の処理文スコアがまだNULLであるため、NOと判定する。（ステップ３０７）
処理文情報テーブルのプログラム行番号が「２」から「５」までの処理文スコアは、プログラム行番号が「１」に対する処理と同様に行い取得する。プログラム行番号「１」から「５」までの処理文スコアが取得されたときの処理文情報テーブルの途中経過は図３７のようになる。プログラム行番号「６」の処理文スコアの取得は次の処理による。
【００３９】
＜プログラム解析処理２＞
次に処理文スコアの取得にあたり、必要な数値情報としてデータ項目スコアが初期設定されていない場合を説明する。
はじめに処理文情報テーブル（図３７）において、処理文スコアがわからないプログラム行番号「６」を選択する。（ステップ３０５）
処理文情報テーブルを「プログラム行番号＝ステップ３０５で取得したプログラム行番号「６」」という条件で検索して、処理中区分に「処理中」を登録する。（ステップ５０１）
重み係数算出処理は、プログラム行番号「１」のときと同様に行い、この場合は重み係数が１となり、処理文情報テーブル（図３７）のプログラム行番号「６」の重み係数欄に１を登録する。
ループエラー判定テーブル図２４のループエラー区分が「正常」であるため、NOと判定する。（ステップ５０３）
計算部スコア算出処理（図５の５０４、図７）では、データ項目スコアテーブル図２８において、ステップ３０５で取得したプログラム行番号「６」に対応するデータ項目スコアが「NULL」と、「NULL」であるため、YESと判定する。（ステップ７０１）
ステップ７０７は、データ項目スコアがNULLのデータ項目を一つ選択する。実施例では、データ項目スコアテーブルを「プログラム行番号＝ステップ３０５で取得したプログラム行番号「６」」かつ「データ項目スコア＝「NULL」」という条件で検索して、検索条件を満たすデータ項目名称としてaとiを得るが、そのうちの「a」を選択する（ステップ７０７）。選択したデータ項目名称「ａ」のデータ項目スコアを取得するため、デーｔ赤穂目スコア算出処理（ステップ７０８、図８）を行う。
【００４０】
ステップ８０１は、データ依存情報テーブル図２３を「データ依存先プログラム行番号＝前ステップで選択したプログラム行番号」かつ「データ項目名称＝前ステップで選択したデータ項目名称」という条件で検索し、データ依存元プログラム行番号を取得する。実施例では、データ依存情報テーブル図２３を「データ依存先プログラム行番号＝ステップ３０５で選択したプログラム行番号「6」」かつ「データ項目名称＝ステップ７０７で選択したデータ項目名称「a」」という条件で検索して、データ依存元プログラム行番号「１」を取得する。（ステップ８０１）
ステップ８０２は、処理文情報テーブルにおいて、取得したデータ依存元プログラム行番号と一致するプログラム行番号の処理文スコアが1つでもNULLであるかどうかを判定する。実施例では、処理文情報テーブル（図３７）において、ステップ８０１で取得したデータ依存元プログラム行番号「１」と一致するプログラム行番号の処理文スコアは「1.5」であるため、NOを判定する。（ステップ８０２）
ステップ８０３は、処理文スコアが「エラー」以外のスコアを取得する。実施例では、ステップ８０１で取得したプログラム行番号の処理文スコアのうちで、処理文スコアがNULL以外の処理文スコアを取得するため、処理文スコア「1.5」を取得する。（ステップ８０３）
ステップ８０４は、処理文スコアが取得できるかどうかを判定する。実施例では、ステップ８０３で処理文スコア「1.5」を取得しているため、YESと判定する。（ステップ８０４）
ステップ８０５は、データ項目スコアとして、取得した処理文スコアのうちの最小値を取得する。実施例では、ステップ８０３で取得した処理文スコアのうちで最小値をデータ項目スコアとして算出するため、データ項目スコア「1.5」を取得する。（ステップ８０５）
ステップ８０６は、データ項目スコアテーブルを「プログラム行番号＝前ステップで選択したプログラム行番号」かつ「データ項目名称＝前ステップで選択したデータ項目名称」という条件で検索し、データ項目スコアに前ステップで算出したデータ項目スコアを登録する。実施例では、データ項目スコアテーブル図２８を「プログラム行番号＝ステップ３０５で選択したプログラム行番号「6」」かつデータ項目＝ステップ７０７で選択したデータ項目名称「a」」という条件で検索して、データ項目スコアにステップ８０５で取得したデータ項目スコア「1.5」を登録する。（ステップ８０６）
ステップ８０７は、処理文情報テーブルを「処理文スコア＝'エラー'」という条件で検索し、処理文スコアにNULLを登録する。実施例では、処理文情報テーブルを「処理文スコア＝「エラー」」という条件で検索するが、検索条件を満たす処理文スコアは存在しない。（ステップ８０７）
ステップ７０９は、データ項目スコアテーブルにおいて、選択したプログラム行番号に対応するデータ項目スコアが1つでもNULLであるかどうかを判定する。すなわち、まだNULLのデータ項目スコアがあれば取得処理を行うための判定である。実施例では、データ項目スコアテーブル図２８において、ステップ３０５で取得したプログラム行番号「６」に対応するデータ項目スコアが「1.5」と、「NULL」であるため、YESと判定する。（ステップ７０９）
データ項目スコアテーブルを「プログラム行番号＝ステップ３０５で取得したプログラム行番号「６」」かつ「データ項目スコア＝「NULL」」という条件で検索して、検索条件を満たすデータ項目名称「i」を選択する。（ステップ７０７）
データ依存情報テーブル図２３を「データ依存先プログラム行番号＝ステップ３０５で選択したプログラム行番号「6」」かつ「データ項目名称＝ステップ７０７で選択したデータ項目名称「i」」という条件で検索して、データ依存元プログラム行番号「5」と「7」を取得する。（ステップ８０１）
処理文情報テーブル（図３７）において、ステップ８０１で取得したデータ依存元プログラム行番号「5」と、「7」とに一致するプログラム行番号の処理文スコアは「0.8」と、NULLであるため、YESを判定する（ステップ８０２）。
【００４１】
ステップ８０８は、処理文スコアが不明なプログラム行番号を1つ選択する。ここでプログラム行番号「７」が選択されている。次に、処理文情報テーブル（図３７）において、「処理文スコア＝ステップ８０１で取得したデータ依存元プログラム行番号「７」」かつ「処理文スコア＝NULL」という条件で検索して、条件を満たすプログラム行番号「7」一つ選択する（ステップ８０８）。
ステップ８０９は、処理中区分が処理中か、処理中でないかとを判定する。実施例では、処理文情報テーブルにおいて、ステップ８０８で取得したプログラム行番号「7」の処理中区分は「処理中」ではないため、NOを判定する（ステップ８０９）。そしてプロ不ラム行番号「６」の依存元であるプログラム行番号「７」の処理文スコアを先に算出する処理をする（ステップ８１１）。処理文スコアの算出は図３のステップ３０５、すなわち図５の処理による。
処理文情報テーブル（図３７）を「プログラム行番号＝ステップ８０８で選択したプログラム行番号「7」」という条件で検索して、処理中区分に「処理中」を登録する。（ステップ５０１）
次にステップ５０２（図６）でプログラム行番号「７」の重み係数を算出する。
制御依存情報テーブル（図２２）を「制御依存先プログラム行番号＝ステップ８０８で取得したプログラム行番号「7」」という条件で検索して、制御依存元プログラム行番号「6」を取得する。（ステップ６０１）
システムは、ステップ６０１で制御依存元プログラム行番号「6」を取得しているため、YESを判定する。（ステップ６０２）
ステップ６０５は、処理文情報テーブルを「プログラム行番号＝前ステップで取得した制御依存元プログラム行番号」という条件で検索し、処理文スコアと処理内容区分、処理中区分を取得する。実施例では、処理文情報テーブルを「プログラム行番号＝ステップ６０１で取得した行番号「6」」という条件で検索して、処理文スコアNULLと、処理内容区分「ループ」と、処理中区分「処理中」を取得する。（ステップ６０５）
ステップ６０５は、処理中区分が処理中であるか、処理中でないかとを判定する。実施例では、ステップ６０５で取得した処理中区分が「処理中」であるため、YESと判定する。（ステップ６０６）
ステップ６０７は、ループエラー判定テーブルのループエラー区分に‘エラー’を登録する。実施例では、ループエラー判定テーブル（図２４）のループエラー区分に「エラー」を登録する（ステップ６０７）。これで図５のステップ５０２が終了した。
【００４２】
図５のステップ５０３に戻る。ループエラー判定テーブルのループエラー区分（図２４）が「エラー」となったため、YESを判定する（ステップ５０３）。
ステップ５１０は、処理文情報テーブルを「プログラム行番号＝前ステップで取得したプログラム行番号」という条件で検索し、処理文スコアに‘エラー'を登録する。実施例では、処理文情報テーブル（図３７）を「プログラム行番号＝ステップ８０８で取得したプログラム行番号「7」」という条件で検索して、処理文スコアに「エラー」を登録する。（ステップ５１０）
ステップ５１１は、ループエラー判定テーブルのループエラー区分に‘正常’を登録する。実施例では、ループエラー判定テーブルのループエラー区分に「正常」を登録する。（ステップ５１１）
処理文情報テーブルを「プログラム行番号＝ステップ８０８で取得したプログラム行番号「７」」という条件で検索して、処理中区分にNULLを登録する。（ステップ５０９）。これで、プログラム行番号「６」のデータ項目スコア（図２８）算出のためのプログラム行番号「７」の処理文スコアの算出（ステップ８１１）が終了した。
【００４３】
図８に戻り、ステップ８１０は、処理文情報テーブル（図３７）において、取得したデータ依存元プログラム行番号と一致するプログラム行番号の処理文スコアが1つでもNULLであるかどうかを判定する。実施例では、処理文情報テーブルにおいて、ステップ８０１で取得したデータ依存元プログラム行番号「5」と、「7」とに一致するプログラム行番号の処理文スコアは「0.8」と、「エラー」であるため、NOを判定する。（ステップ８１０）
ステップ８０１で取得した処理文スコアのうちで、処理文スコアが「エラー」以外の処理文を取得するため、処理文スコア「0.8」を取得する。（ステップ８０３）
処理文スコア「0.8」を取得しているため、YESと判定する。（ステップ８０４）
ステップ８０３で取得した処理文スコアのうちで最小値をデータ項目スコアとして算出するため、データ項目スコア「0.8」を取得する。（ステップ８０５）
データ項目スコアテーブルを「プログラム行番号＝ステップ３０５で選択したプログラム行番号「6」」かつ「データ項目名称＝ステップ７０７で選択したデータ項目名称「i」」という条件で検索して、データ項目スコアにステップ８０５で取得したデータ項目スコア「0.8」を登録する。（ステップ８０６）
処理文情報テーブル（図３７）を「処理文スコア＝「エラー」」という条件で検索して、この時点で、検索条件を満たすプログラム行番号「７」の処理文スコアにNULLを登録する。（ステップ８０７）。これで図７のステップ７０８（データ項目算出処理、図８）が終了した。
【００４４】
図７のステップ７０９に戻り、データ項目スコアテーブル（図２８）において、ステップ３０５で取得したプログラム行番号「６」に対応するデータ項目スコアが「1.5」と、「0.8」であるため、NOと判定する。（ステップ７０９）
データ項目スコアテーブルを「プログラム行番号＝ステップ３０５で取得したプログラム行番号「6」」かつ「データ項目スコア<>「エラー」」という条件で検索して、データ項目スコア「1.5」と、「0.8」とを取得する（ステップ７０２）。
エラーが存在していないため、NOと判定する（ステップ７０３）。
【００４５】
ステップ７０２で取得したデータ項目スコア「1.5」と、「0.8」との平均値を計算部スコアとして算出するため、「1.15」を取得する。（ステップ７０４）
処理文情報テーブル（図３７）を「プログラム行番号＝ステップ３０５で取得したプログラム行番号「6」」という条件で検索して、計算部スコアにステップ７０４で取得した数値「1.15」を登録する。（ステップ７０５）
データ項目スコアテーブル（図２８）を「データ項目スコア＝「エラー」」という条件で検索するが、条件に当てはまるデータ項目は存在しない（ステップ７０６）。これで図５の計算部スコアの算出処理５０４が終了する。
ステップ５０５からステップ５０９に関しては、プログラム行番号「１」の場合と同様に行う。
これで図３の処理文スコアの算出処理３０６が終了する、次に図３のステップ３０７に進む。
【００４６】
処理文情報情報テーブル（図３７）のプログラム行番号が「７」以降の処理文スコアが「NULL」であるため、NOと判定（ステップ３０７）し、ステップ３０５に戻る。
処理文情報テーブル（図３７）において、処理文スコアがわからないプログラム行番号「7」を選択する。（ステップ３０５）
前述と同様に処理文スコア算出処理３０６は図５に従い行われる。
処理文情報テーブル（図３７）を「プログラム行番号＝ステップ３０５で選択したプログラム行番号「7」」という条件で検索して、処理中区分に「処理中」を登録する。（ステップ５０１）
制御依存情報テーブル（図２２）を「制御依存先プログラム行番号＝ステップ３０５で取得したプログラム行番号「７」」という条件で検索して、制御依存元プログラム行番号「6」を取得する。（ステップ６０１）
ステップ６０１で制御依存元プログラム行番号「6」を取得しているため、YESを判定する。（ステップ６０２）
処理文情報テーブルを「プログラム行番号＝ステップ６０１で取得した行番号「6」」という条件で検索して、処理文スコア「1.15」と、処理内容区分「ループ」と、処理中区分NULLを取得する。（ステップ６０５）
ステップ６０５で取得した処理中区分がNULLであるため、NOと判定する。（ステップ６０６）
ステップ６０８は、取得した処理文スコアがNULLであるかどうかを判定する。実施例では、ステップ６０５で取得した処理文スコアが「1.15」であるため、NOを判定する。（ステップ６０８）
ステップ６０９は、処理内容係数設定テーブルを「処理内容区分＝前ステップで取得した処理内容区分」という条件で検索し、処理内容係数を取得する。実施例では、処理内容係数設定テーブルを「処理内容区分＝ステップ６０５で取得した処理内容区分「ループ」」という条件で検索して、処理内容係数「0.8」を取得する。（ステップ６０９）
ステップ６１０は、重み係数として、処理文スコアと、処理内容係数の積を算出して、取得する。実施例では、ステップ６０５で取得した処理文スコア「1.15」と、ステップ６０９で取得した処理内容係数「0.8」との積で重み係数を算出するので、重み係数「0.92」を取得する。（ステップ６１０）
処理文条件テーブルを「プログラム行番号＝ステップ３０５で取得したプログラム行番号「７」」という条件で検索して、重み係数にステップ６１０で取得した数値「0.92」を登録する。（ステップ６０４）
プログラム行番号「７」のステップ５０３からステップ５０９までの処理については、プログラム行番号「６」のときと同様に行う。この段階（プログラム行番号「７」までの処理終了時点））で処理文情報テーブルは図３８に示す状態となっている。
【００４７】
＜プログラム解析処理３＞
データ項目スコアの初期値の設定がない場合の他の例を説明する。
処理文情報情報テーブルのプログラム行番号が「8」以降の処理文スコアが「NULL」であるため、NOと判定する。（ステップ３０７）
処理文情報テーブル（図３８）において、処理文スコアがわからないプログラム行番号「8」を選択する。（ステップ３０５）
処理文情報テーブルを「プログラム行番号＝ステップ３０５で取得したプログラム行番号「8」」という条件で検索して、処理中区分に「処理中」を登録する。（ステップ５０１）
プログラム行番号「８」 の重み係数算出処理（ステップ５０２）については、プログラム行番号「7」の場合と同様に行う。これにより、重み係数は０．９２を取得する。
ループエラー判定テーブルのループエラー区分が「正常」であるため、NOと判定する。（ステップ５０３）
次のステップ５０４（計算部スコアの算出、図７）に進む。
データ項目スコアテーブルにおいて、ステップ３０５で取得したプログラム行番号「8」に対応するデータ項目スコアが「NULL」と、「NULL」であるため、YESと判定する（ステップ７０１）。
データ項目スコアテーブルを「プログラム行番号＝ステップ３０５で取得したプログラム行番号「8」」かつ「データ項目スコア＝「NULL」」という条件で検索して、検索条件を満たすデータ項目名称「b」を選択する（ステップ７０７）。
次のステップ７０８（データ項目スコア算出、図８）に進む。
データ依存情報テーブル図２３を「データ依存先プログラム行番号＝ステップ３０５で選択したプログラム行番号「8」」かつ「データ項目名称＝ステップ７０７で選択したデータ項目名称「b」」という条件で検索して、データ依存元プログラム行番号「2」と、「11」と、「13」とを取得する（ステップ８０１）。
処理文情報テーブルにおいて、ステップ８０１で取得したデータ依存元プログラム行番号「１」と、「11」と、「13」とに一致するプログラム行番号の処理文スコアは「1.5」と、NULLと、NULLとであるため、YESを判定する（ステップ８０２）。
処理文情報テーブル（図３８）において、「プログラム行番号＝ステップ８０１で取得したデータ依存元プログラム行番号「8」」かつ「処理文スコア＝NULL」という条件で検索して、条件を満たすプログラム行番号として「11」を一つ選択する（ステップ８０８）。
処理文情報テーブルにおいて、ステップ８０８で選択したプログラム行番号「11」の処理中区分は「処理中」ではないため、NOを判定する（ステップ８０９）。
【００４８】
次のステップ８１１の処理文スコア図２２の算出は、図５に従って行われる。
処理文情報テーブルを「プログラム行番号＝ステップ８０８で選択したプログラム行番号「１１」」という条件で検索して、処理中区分に「処理中」を登録する（ステップ５０１）。
【００４９】
次のステップ５０２の重み係数の算出は、図６に従って行われる。
制御依存情報テーブルを「制御依存先プログラム行番号＝ステップ８０８で選択したプログラム行番号「１１」」という条件で検索して、制御依存元プログラム行番号「10」を取得する（ステップ６０１）。
ステップ６０１で制御依存元プログラム行番号「10」を取得しているため、YESを判定する（ステップ６０２）。
処理文情報テーブル（図３８）を「プログラム行番号＝ステップ６０１で選択した行番号「10」」という条件で検索して、処理文スコアNULLと、処理内容区分「分岐」と、処理中区分NULLを取得する（ステップ６０５）。
ステップ６０５で取得した処理中区分がNULLであるため、NOと判定する（ステップ６０６）。
ステップ６０５で取得した処理文スコアがNULLであるため、YESを判定し（ステップ６０８）、
プログラム行番号「10」の処理文スコアの算出処理を行うが、この算出処理は図５の処理に従っては、プログラム行番号６のときと同様に行う。
ステップ６０９以降のプログラム行番号１１の処理文スコアの算出処理は、プログラム行番号7のときと同様におこなう。ステップ８１１の処理が終了し、ステップ８１０へ進む。
【００５０】
処理文情報テーブル（図３８）において、ステップ８０１で取得したデータ依存元プログラム行番号「１」と、「11」と、「13」とに一致するプログラム行番号の処理文スコアは「1.5」、「0.55」、NULLであるため、YESを判定する（ステップ８１０）。
処理文情報テーブルにおいて、「プログラム行番号＝ステップ８０１で取得したデータ依存元プログラム行番号「8」」かつ「処理文スコア＝NULL」という条件で検索して、条件を満たすプログラム行番号として「13」を一つ選択する（ステップ８０８）。
処理文情報テーブルにおいて、ステップ８０８で取得したプログラム行番号「13」の処理中区分は「処理中」ではないため、NOを判定する（ステップ８０９）。
プログラム番号「13」の処理文スコア算出処理は、プログラム行番号「11」の処理文スコア算出処理と同様に行う。
【００５１】
処理文情報テーブルにおいて、ステップ８０１で取得したデータ依存元プログラム行番号「１」と、「11」と、「13」とに一致するプログラム行番号の処理文スコアは「1.5」、「0.55」、「0.42」であるため、NOを判定する（ステップ８１０）。
ステップ８１０で選択した処理文スコアのうちで、処理文スコアが「エラー」以外の処理文を取得するため、処理文スコア「1.5」、「0.55」、「0.42」を取得する（ステップ８０３）。
処理文スコア「1.5」と、「0.55」と、「0.42」とを取得しているため、YESと判定する（ステップ８０４）。
ステップ８０３で取得した処理文スコアのうちで最小値をデータ項目スコアとして算出するため、データ項目スコア「0.42」を取得する（ステップ８０５）。
データ項目スコアテーブルを「プログラム行番号＝ステップ３０５で選択したプログラム行番号「8」」かつ「データ項目名称＝ステップ７０７で選択したデータ項目名称「b」」という条件で検索して、データ項目スコアにステップ８０５で取得したデータ項目スコア「0.42」を登録する（ステップ８０６）。
処理情報テーブルを「処理文スコア＝「エラー」」という条件で検索するが、条件を満たす処理文スコアは存在しない（ステップ８０７）。
【００５２】
データ項目スコアテーブルにおいて、ステップ３０５で取得したプログラム行番号「8」に対応するデータ項目スコアが「0.42」と、「NULL」であるため、YESと判定する（ステップ７０９）。
データ項目スコアテーブルを「プログラム行番号＝ステップ３０５で取得したプログラム行番号「8」」かつ「データ項目スコア＝「NULL」」という条件で検索して、検索条件を満たすデータ項目名称「d」を選択する（ステップ７０７）。
データ依存情報テーブルを「データ依存先プログラム行番号＝ステップ３０５で選択したプログラム行番号「8」」かつ「データ項目名称＝ステップ７０７で選択したデータ項目名称「b」という条件で検索して、データ依存元プログラム行番号「4」と、「9」とを取得する（ステップ８０１）。
処理文情報テーブルにおいて、ステップ８０１で取得したデータ依存元プログラム行番号「４」と、「9」とに一致するプログラム行番号の処理文スコアは」0.8「と、NULLとであるため、YESを判定する（ステップ８０２）。
処理文情報テーブルにおいて、「プログラム行番号＝ステップ８０１で取得したデータ依存元プログラム行番号」かつ「処理文スコア＝NULL」という条件で検索して、条件を満たすプログラム行番号として」9「を一つ選択する（ステップ８０８）。
処理文情報テーブルにおいて、ステップ８０８で取得したプログラム行番号「9」の処理中区分は「処理中」ではないため、NOを判定する（ステップ８０９）。
【００５３】
次ステップ５０１（処理文スコア算出）は図５に従って行われる。
処理文情報テーブルを「プログラム行番号＝ステップ８０８で取得したプログラム行番号「9」」という条件で検索して、処理中区分に「処理中」を登録する（ステップ５０１）。
プログラム行番号「9」のステップ５０２の重み係数算出処理については、プログラム行番号「7」の場合と同様に図６に従い行われる。
次のステップ５０３に進み、ループエラー判定テーブルのループエラー区分が「正常」であるため、NOと判定する（ステップ５０３）。
次のステップ５０４（計算部算出処理）は図７に従い行われる。
データ項目スコアテーブルにおいて、ステップ８０８で取得したプログラム行番号「8」に対応するデータ項目スコアがNULLと、「0.8」であるため、YESと判定する（ステップ７０１）。
データ項目スコアテーブルを「プログラム行番号＝ステップ８０８で取得したプログラム行番号「9」」かつ「データ項目スコア＝「NULL」」という条件で検索して、検索条件を満たすデータ項目名称「s」を選択する。（ステップ７０７）
次のデータ項目スコア算出処理（ステップ７０８）は図８に従い行われる。
【００５４】
データ依存情報テーブルを「データ依存先プログラム行番号＝ステップ７０７で選択したプログラム行番号「9」」かつ「データ項目名称＝ステップ７０７で選択したデータ項目名称「s」」という条件で検索して、データ依存元プログラム行番号「8」を取得する。（ステップ８０１）
処理文情報テーブルにおいて、ステップ８０１で取得したデータ依存元プログラム行番号「8」に一致するプログラム行番号の処理文スコアはNULLであるため、YESを判定する（ステップ８０２）。
処理文情報テーブルにおいて、「プログラム行番号＝ステップ８０１で取得したデータ依存元プログラム行番号」かつ「処理文スコア＝NULL」という条件で検索して、条件を満たすプログラム行番号として「8」を一つ選択する。（ステップ８０８）
処理文情報テーブルにおいて、ステップ８０８で取得したプログラム行番号「8」の処理中区分は「処理中」であるため、YESを判定する（ステップ８０９）。
【００５５】
ステップ８１２は、処理文情報テーブルを「プログラム行番号＝前ステップで選択したプログラム行」という条件で検索し、処理文スコアに'ループエラー‘を登録する。実施例では、処理文情報テーブルを「プログラム行番号＝ステップ８０１で選択したプログラム行番号８」という条件で検索して、処理文スコアに「エラー」を登録する（ステップ８１２）。
処理文情報テーブルにおいて、ステップ８０１で取得したデータ依存元プログラム行番号「8」に一致するプログラム行番号の処理文スコアは「エラー」であるため、NOと判定する（ステップ８１０）。
ステップ８１０で選択した処理文スコアのうちで、処理文スコアが「エラー」以外の処理文を取得するため、処理文スコアを取得できない（ステップ８０３）。
ステップ８０３で処理文スコアを取得できていないため、NOと判定する（ステップ８０４）。
【００５６】
ステップ８１３は、データ項目スコアとして「エラー」を取得する（ステップ８１３）。
データ項目スコアテーブルを「プログラム行番号＝ステップ８０８で選択したプログラム行番号「9」」かつ「データ項目名称＝ステップ７０７で選択したデータ項目名称「s」」という条件で検索して、データ項目スコアにステップ８１３で取得したデータ項目スコア「エラー」を登録する（ステップ８０６）。
処理文情報テーブルを「処理文スコア＝「エラー」」という条件で検索して、処理文スコアにNULLを登録する。（ステップ８０７）。これで図７ステップ７０８が終了する。
【００５７】
次ステップ７０９に進み、データ項目スコアテーブルにおいて、ステップ８０８で取得したプログラム行番号「9」に対応するデータ項目スコアが「エラー」と、「1」であるため、NOと判定する。（ステップ７０９）
データ項目スコアテーブルを「プログラム行番号＝ステップ８０８で取得したプログラム行番号「9」」という条件で検索して、データ項目スコア「エラー」と、「1」とを取得する。（ステップ７０２）
ステップ７０２で取得したデータ項目スコアに「エラー」が存在するため、YESと判定する（ステップ７０３）。
ステップ７１０は、計算部スコアとして「エラー」を取得する（ステップ７１０）。
処理文情報テーブルを「プログラム行番号＝ステップ８０８で取得したプログラム行番号「9」」という条件で検索して、計算部スコアにステップ７１０で取得した「エラー」を登録する（ステップ７０５）。
データ項目スコアテーブルを「データ項目スコア＝「エラー」」という条件で検索して、データ項目スコアにNULLを登録する。（ステップ７０６）。これで図５ステップ５０４の計算部スコア算出処理が終了する。
【００５８】
次ステップ５０５に進み、処理文情報テーブルの計算部スコアに「エラー」が存在するため、YESと判定する（ステップ５０５）。
ステップ５１２は、処理文スコアとして「エラー」を取得する（ステップ５１２）。
処理文情報テーブルを「プログラム行番号＝ステップ８０８で取得したプログラム行番号「9」」で検索して、処理文スコアにステップ５１２で取得した「エラー」を登録する。（ステップ５０７）
処理文情報テーブルを「計算部スコア＝「エラー」」という条件で検索して、計算部スコアにNULLを登録する。（ステップ５０８）
処理文情報テーブルを「プログラム行番号＝ステップ８０８で取得したプログラム行番号「9」」という条件で検索して、処理中区分にNULLを登録する。（ステップ５０９）
プログラム行番号8の処理文スコア算出処理において、ステップ８１０以降の処理はプログラム行番号6のときと同様に行う。
プログラム行番号9の処理文スコア算出処理は、プログラム行番号11のときと同様に行う。
処理文情報情報テーブルの全てのプログラム行番号の処理文スコアがNULLではないため、YESと判定する。（ステップ３０７）
解析対象プログラムの業務仕様解析処理が終了すると、業務仕様解析結果表示部（１０８）が起動し、はじめに図３３のように処理文に対する処理文スコアを一覧するように表示される。作業者が処理文スコア欄３３０１に値を入力して抽出ボタン３３０２を押すと、入力された処理文スコアの値以上の処理文を視覚的に強調表示する（図３４）。作業者は、業務仕様解析結果表示を実行して、業務処理抽出結果をディスプレイ装置に表示する。（ステップ２０３）
また、本実施形態において業務仕様解析装置を実行したときの、最終的な条件文情報テーブルと、データ項目スコアテーブルとは、図２９と、図３０とになる。
以上のような業務仕様の解析は命令文のデータ項目が入力であっても、その入力種類（入力又は定数）に応じて業務への関連程度を区別して設定し、かつ、プログラムの処理文間の依存関係をスコア算出の要素（処理内容）として反映させることにより、業務の使用に関わる可能性の評価を実現するものである。
【００５９】
業務仕様解析装置の効果を検証するため、対象プログラムとして、売上ファイルを入力として売上金ファイルを作成する業務的なプログラム図３５を用いる。対象プログラムでは、プログラム行番号25と、28と、31と、34とにおいて、取引区分による単価の計算という業務の切替に関る処理を行っている。また、プログラム行番号42において、出力ファイルの改ページ処理という業務の切替に関らない処理を行っている。
【００６０】
対象プログラムの業務仕様解析処理の結果は図３６の処理文情報テーブルに登録される。図３６から、プログラム行番号25と、28と、31と、34の処理文スコアは全て「0.88」であり、プログラム行番号42の処理文スコアは「0.64」あることが確認できる。
以上のことから、業務仕様解析装置では、業務の切替に関る処理を処理文スコアで相対的に比較して、より処理文スコアの値に応じて業務の切替に関る可能性が高い処理文を参照することができる。
以上、述べたように、本発明の業務処理関連度数算出装置では、解析対象となるプログラムの個々の命令文に対して、命令文が業務の切替に関る可能性の数値を示す。作業者は数値が高い命令文を優先的に確認することで、解析対象となるプログラムにおいて、どのような処理が行われているかを効率よく把握することができる。
【００６１】
なお、最後に、業務仕様解析装置の入力値について、最適な値について深く検討する。
本実施例では入力値に関る値を以下のような範囲としています。
（ア）入力が業務の切替に関る数値            ≫１以上
（イ）定数が業務の切替に関る数値            ≫1より小さい
（ウ）制御依存元が分岐処理であるときに、制御依存先が制御依存元に比べて業務の切替に関る可能性の数値≫１より小さい
（エ）制御依存元がループ処理であるときに、制御依存先が制御依存元に比べて業務の切替に関る可能性の数値≫１より小さい
詳細説明はないが、他のプログラムの業務仕様解析で（ア）を“1.5”、（イ）を“1”、（ウ）を“1”、（エ）を“1”(以下、パターン１)としています。
パターン１で設定した数値を変更したときの解析結果を以下に示します。
（１）（イ）の数値を“0.8“に変更
業務仕様に関る命令文においても、データ項目が定数に関る場合にスコアが低くなる(場合によっては、データ項目に定数を設定している命令文よりも)。そのため、スコアが高い命令文から処理内容を確認した場合に、確認の優先順位がパターン１より低くなる。
（２）（ウ）の数値を“0.8”に変更
業務仕様に関る命令文においても、分岐処理が階層になっているときに階層の深い命令文はスコアが低くなる。よって（１）と同様の結果となる。（エ）の数値に関しても同様の結果となる。
（１）、（２）から（イ）、（ウ）、（エ）の数値はパターン１が最適と考える。
（ア）の数値に関しては、数値を変化させても全命令文のスコアの相対な大小関係は変化しないため、命令文を確認する順番は変わらない。よって、（ア）の数値に関してもパターン１でよい。
よって、結論としては、入力に関る値は、A特許検討会で使用したパターン１の組合せが良い。
【図面の簡単な説明】
【００６２】
【図１】本発明の実施例のシステム全体構造を示すブロック図である。
【図２】制御部１０９の機能を説明するためのフローチャートである。
【図３】ステップ２０２の業務仕様解析機能を説明するためのフローチャートである。
【図４】ステップ３０４の業務処理条件情報テーブル類の初期値設定処理を説明するためのフローチャートである。
【図５】ステップ３０６の処理文スコア算出処理を説明するためのフローチャートである。
【図６】ステップ５０２の重み係数算出処理を説明するためのフローチャートである。
【図７】ステップ５０４の計算部スコア算出処理を説明するためのフローチャートである。
【図８】ステップ７０８のデータ項目スコア算出処理を説明するためのフローチャートである。
【図９】各テーブルの関連を示したER図である。
【図１０】解析対象のプログラムを命令文単位に登録する命令文情報テーブルである。
【図１１】解析対象のプログラムを個々の命令文のデータ項目単位に登録するデータ項目情報テーブルである。
【図１２】制御依存の依存先と依存元となっている命令文に付加された命令文番号を管理する制御依存情報テーブルである。
【図１３】個々の命令文のデータ項目と、そのデータ項目のデータ依存元となっている命令文に付加された命令文番号と、該命令文に付加された命令文番号とを管理する制御依存情報テーブルである。
【図１４】命令文が業務の切替に関る可能性の数値を命令文単位に登録する処理文情報テーブルである。
【図１５】データ項目が業務の切替に関る可能性の数値を個々の命令文のデータ項目単位に登録しているデータ項目スコアテーブルである。
【図１６】データ項目が入力と、定数とのときに業務に関る可能性の数値を登録するデータ項目初期値スコアテーブルである。
【図１７】制御依存先が制御依存元に比べてどれくらい業務に関る可能性が低くなるか表した数値を登録している処理内容係数設定テーブルである。
【図１８】重み係数算出処理で重み係数を算出できない状態をエラーとして登録するループエラー判定テーブルである。
【図１９】実施例で用いる解析対象のプログラムである。
【図２０】ステップ２０２の業務仕様解析機能前の命令文情報テーブルである。
【図２１】ステップ２０２の業務仕様解析機能前のデータ項目情報テーブルである。
【図２２】ステップ２０２の業務仕様解析機能前の制御依存情報テーブルである。
【図２３】ステップ２０２の業務仕様解析機能前のデータ依存情報テーブルである。
【図２４】ステップ３０４の業務処理条件情報テーブル類の初期値設定処理前のループエラー判定テーブルである。
【図２５】ステップ３０４の業務処理条件情報テーブル類の初期値設定処理前の処理内容係数設定テーブルである。
【図２６】ステップ３０４の業務処理条件情報テーブル類の初期値設定処理前のデータ項目初期値スコア設定テーブルである。
【図２７】ステップ３０６の処理文スコア算出処理前の処理文情報テーブルである。
【図２８】ステップ３０６の処理文スコア算出処理前のデータ項目スコアテーブルである。
【図２９】ステップ３０６の処理文スコア算出処理後の処理文情報テーブルである。
【図３０】ステップ３０６の処理文スコア算出処理後のデータ項目スコアテーブルである。
【図３１】制御部１０９の機能を説明するために用いる、メニュー画面である。
【図３２】ユーザからのデータ項目初期値スコア設定テーブルに対する初期値スコアの入力と、処理内容係数設定テーブルに対する処理内容係数の入力とを受け付ける画面である。
【図３３】命令文単位で業務切替関連度数情報を表示する画面である。
【図３４】業務仕様解析結果表示画面の例である。
【図３５】解析対象の業務的なプログラムの他の例である。
【図３６】図３５の業務的なプログラムの処理文スコア算出処理後の処理文情報テーブルである。
【図３７】プログラム行番号「１」から「５」までの処理文スコア算出処理後の処理文情報テーブルである。
【図３８】プログラム行番号「１」から「６」までの処理文スコア算出処理後の処理文情報テーブルである。
【符号の説明】
【００６３】
１０１  ＣＰＵ
１０２  ディスプレイ装置
１０３  キーボード
１０４  指示装置
１０５  メモリ
１０６  プログラム解析部
１０７  業務仕様解析部
１０８  業務仕様解析結果表示部
１０９  制御部
１１０  外部記憶装置
１１１  対象プログラム
１１２  業務処理条件情報
１１３  命令文情報
１１４  データ項目情報
１１５  制御依存情報
１１６  データ依存情報
１１７  処理文情報
１１８  データ項目スコア
１１９  データ項目初期設定スコア設定
１２０  処理内容係数設定
１２１  ループエラー判定
【図１】
2007264863.tif 000003
【図２】
2007264863.tif 000004
【図３】
2007264863.tif 000005
【図４】
2007264863.tif 000006
【図５】
2007264863.tif 000007
【図６】
2007264863.tif 000008
【図７】
2007264863.tif 000009
【図８】
2007264863.tif 000010
【図９】
2007264863.tif 000011
【図１０】
2007264863.tif 000012
【図１１】
2007264863.tif 000013
【図１２】
2007264863.tif 000014
【図１３】
2007264863.tif 000015
【図１４】
2007264863.tif 000016
【図１５】
2007264863.tif 000017
【図１６】
2007264863.tif 000018
【図１７】
2007264863.tif 000019
【図１８】
2007264863.tif 000020
【図１９】
2007264863.tif 000021
【図２０】
2007264863.tif 000022
【図２１】
2007264863.tif 000023
【図２２】
2007264863.tif 000024
【図２３】
2007264863.tif 000025
【図２４】
2007264863.tif 000026
【図２５】
2007264863.tif 000027
【図２６】
2007264863.tif 000028
【図２７】
2007264863.tif 000029
【図２８】
2007264863.tif 000030
【図２９】
2007264863.tif 000031
【図３０】
2007264863.tif 000032
【図３１】
2007264863.tif 000033
【図３２】
2007264863.tif 000034
【図３３】
2007264863.tif 000035
【図３４】
2007264863.tif 000036
【図３５】
2007264863.tif 000037
【図３６】
2007264863.tif 000038
【図３７】
2007264863.tif 000039
【図３８】
2007264863.tif 000040