(57)【特許請求の範囲】
【請求項１】
変数に適用される演算の種類に関する情報と、前記演算の種類から推定される用途とを対応させた変数分類規則表を記憶する変数分類規則表記憶手段と、
プログラムで使用されている処理命令から変数に適用される演算の種類に関する情報を収集する変数情報収集手段と、
前記変数情報収集手段で収集した情報について前記変数分類規則表記憶手段に記憶された変数分類規則表を参照し、前記収集された演算の種類に関する情報と一致する前記変数分類規則表の演算の種類に対応する用途を、前記プログラムで使用されている変数の用途として推定して分類する変数分類手段と、
を備えることを特徴とするプログラムの変数分類装置。
【請求項２】
変数に適用される演算の種類に関する情報もしくは変数の型に関する情報と、前記演算の種類もしくは変数の型から推定される用途とを対応させた変数分類規則表を記憶する変数分類規則表記憶手段と、
プログラムで使用されている処理命令から変数に適用される演算の種類を、もしくは変数の定義から変数の型に関する情報を収集する変数情報収集手段と、
前記変数情報収集手段で収集した情報について前記変数分類規則表記憶手段に記憶された変数分類規則表を参照し、前記収集された演算の種類もしくは変数の型に関する情報と一致する前記変数分類規則表の演算の種類もしくは変数の型と対応する用途を、前記プログラムで使用されている変数の用途として推定して分類する変数分類手段とを備え、
前記プログラムで使用されている変数において、その変数とデータの受渡しのある変数を列挙したデータ授受グループがある場合に、前記変数分類手段は、データ授受グループに列挙されている変数に対して推定された用途に共通の用途のみを残し、それ以外の用途はその変数から削除する方法で前記推定した用途を限定する
ことを特徴とするプログラムの変数分類装置。
【請求項３】
前記変数分類手段は、変数に適用される演算の種類に関する情報と用途とを対応させた変数分類規則表と、変数の型に関する情報と用途とを対応させた変数分類規則表の異なる変数分類規則表により推定された変数の用途についての複数の推定結果に基づいて、共通の用途のみを残し、それ以外の用途はその変数の用途から削除する方法で変数の用途を限定することを特徴とする請求項２に記載のプログラムの変数分類装置。
【請求項４】
コンピュータを、
変数に適用される演算の種類に関する情報と、前記演算の種類から推定される用途とを対応させた変数分類規則表を記憶する変数分類規則表記憶手段と、
プログラムで使用されている処理命令から変数に適用される演算の種類に関する情報を収集する変数情報収集手段と、
前記変数情報収集手段で収集した情報について前記変数分類規則表記憶手段に記憶された変数分類規則表を参照し、前記収集された演算の種類に関する情報と一致する前記変数分類規則表の演算の種類に対応する用途を、前記プログラムで使用されている変数の用途として推定して分類する変数分類手段
として機能させるためのプログラムを格納したコンピュータ読み取り可能な記憶媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
コンピュータプログラムの作成および変更を支援するプログラム変数分類装置に関するものであり，コンピュータシステムで使用されているコンピュータプログラム（以後，プログラムと称する）の変数の変数の内容もしくは用途の種類を分類して出力する装置に関するものである。
【０００２】
金融システム，医療システム等のコンピュータシステムのプログラムは膨大な大きさであり，多数の変数が使用されている。しかし，その変数の定め方はプログラマーによりまちまちであり，プログラムの変更，拡張等を行うためには，それらの変数についての情報を必要とするが，プログラム作成者でないプログラマーがプログラムを見てもその変数の表す内容もしくは用途（例えば，金額，郵便番号等）を簡単に見分けることが困難である。
【０００３】
【従来の技術】
従来のコンピュータプログラム作成・変更支援装置では，プログラムで使用されている変数に対して変数の型を問い合わせる機能，変数の使用箇所を問い合わせる機能を備えるだけである。そして，プログラムの変更・保守等をする時は，プログラマは既存のプログラムを解析しながらプログラムで使用されている変数の意味（内容，用途等）を理解しプログラムの変更，保守等を行っていた。
【０００４】
【発明が解決しようとする課題】
前述したように，金融システム，医療システム等のプログラムは膨大な大きさであり，多種多様の変数が使用されている。そして，例えば，金融システムの場合，数量，金額，住所，郵便番号等に対してプログラム作成者はその変数名を設定するが，通常はそのように決めた変数名に対してその内容がわかるようにはプログラムに明記しない。一方，プログラムの変更，保守等を行う場合にはこれらの変数の内容ないし用途（金額，日付等）を知ることが必要である。
【０００５】
現状の技術ではプログラムを保守するプログラマーがプログラムを調査して推測するしか方法がないため，多数の変数をもつプログラムに対する作業量は非常に大きく，誤りも生じ易かった。
【０００６】
本発明は，プログラム中の変数を分類して保存し，オペレータの問い合わせにより，変数の種類，用途を判定し，出力するプログラムの分類予測装置を提供することを目的とする。
【０００７】
【課題を解決するための手段】
プログラムで使用されている変数の内容や用途は変数に施されている演算や含まれる文字によってある程度分類できる。例えば，金額では加減乗除の演算が行われたり，「￥」や「＄」などの通貨記号文字が含まれるので，演算での変数の使われ方を解析することにより変数の内容，用途を推定できる。また，郵便番号は通常加減乗除などの演算は行われないので，そのことから推定できる。このようにプログラムで使用されている変数についての情報を収集し，解析することにより変数を分類することができる。
【０００８】
本発明は，プログラムで使用される変数の用途を推定する変数分類装置において，変数に関する情報と変数の内容もしくは用途の関係を定めた変数分類規則表を備え，プログラムで変数に適用される演算の種類もしくは変数に関する情報を収集し，収集された変数情報について変数分類規則表を参照し，プログラムで使用されている変数の内容もしくは用途を推定して分類するようにした。
更に詳しくは、本発明の構成は次の通りである。
(1) ：変数に適用される演算の種類に関する情報と、前記演算の種類から推定される用途とを対応させた変数分類規則表を記憶する変数分類規則表記憶手段と、プログラムで使用されている処理命令から変数に適用される演算の種類に関する情報を収集する変数情報収集手段と、前記変数情報収集手段で収集した情報について前記変数分類規則表記憶手段に記憶された変数分類規則表を参照し、前記収集された演算の種類に関する情報と一致する前記変数分類規則表の演算の種類に対応する用途を、前記プログラムで使用されている変数の用途として推定して分類する変数分類手段とを備えることを特徴とするプログラムの変数分類装置。
(2) ：変数に適用される演算の種類に関する情報もしくは変数の型に関する情報と、前記演算の種類もしくは変数の型から推定される用途とを対応させた変数分類規則表を記憶する変数分類規則表記憶手段と、プログラムで使用されている処理命令から変数に適用される演算の種類を、もしくは変数の定義から変数の型に関する情報を収集する変数情報収集手段と、前記変数情報収集手段で収集した情報について前記変数分類規則表記憶手段に記憶された変数分類規則表を参照し、前記収集された演算の種類もしくは変数の型に関する情報と一致する前記変数分類規則表の演算の種類もしくは変数の型と対応する用途を、前記プログラムで使用されている変数の用途として推定して分類する変数分類手段とを備え、前記プログラムで使用されている変数において、その変数とデータの受渡しのある変数を列挙したデータ授受グループがある場合に、前記変数分類手段は、データ授受グループに列挙されている変数に対して推定された用途に共通の用途のみを残し、それ以外の用途はその変数から削除する方法で前記推定した用途を限定することを特徴とするプログラムの変数分類装置。
(3) ：前記(2) のプログラムの変数分類装置において、前記変数分類手段は、変数に適用される演算の種類に関する情報と用途とを対応させた変数分類規則表と、変数の型に関する情報と用途とを対応させた変数分類規則表の異なる変数分類規則表により推定された変数の用途についての複数の推定結果に基づいて、共通の用途のみを残し、それ以外の用途はその変数の用途から削除する方法で変数の用途を限定することを特徴とするプログラムの変数分類装置。
(4) ：コンピュータを、変数に適用される演算の種類に関する情報と、前記演算の種類から推定される用途とを対応させた変数分類規則表を記憶する変数分類規則表記憶手段と、プログラムで使用されている処理命令から変数に適用される演算の種類に関する情報を収集する変数情報収集手段と、前記変数情報収集手段で収集した情報について前記変数分類規則表記憶手段に記憶された変数分類規則表を参照し、前記収集された演算の種類に関する情報と一致する前記変数分類規則表の演算の種類に対応する用途を、前記プログラムで使用されている変数の用途として推定して分類する変数分類手段として機能させるためのプログラムを格納したコンピュータ読み取り可能な記憶媒体。
【０００９】
図１は，本発明の基本構成を示すものである。
図１において，
１は変数分類装置である。
【００１０】
１１はソースプログラムであって，変数を分類する対象のプログラムである。１２は変数情報収集手段であって，ソースプログラムで使用されている変数についての情報を収集するものであり，プログラムで使用されている変数の型や名前などの変数の定義に関する情報，変数に対して行われる演算，操作，代入されている定数値，変数などの情報を収集するものである。
【００１１】
１３は変数情報保持手段であって，変数情報を保持するものである。
１４は変数分類手段であって，変数情報保持手段に保持されている変数情報を利用者が利用し易いように内容，用途を分類するものである。
【００１２】
１４１は変数分類規則表であって，変数に関する情報と変数の内容もしくは用途の関係を定めたものである。
１５は検索手段であって，変数分類装置１に登録されている変数の内容，用途等を問い合わせる手段である。
【００１３】
図１の本発明の基本構成の動作を説明する。
変数情報収集手段１２は，ソースプログラム１１で使用されているすべての変数を列挙し，それらの変数の各々について，その定義内容（変数の型などの情報），変数を参照している処理命令，多岐変数とのデータの授受関係などの情報を収集する。そして，収集した変数情報を変数情報保持手段１３に保持する。そして変数分類手段１４はそのようにして収集された変数情報について，変数分類規則表１４１を参照し，変数の内容もしくは用途を推定する。
【００１４】
変数の内容もしくは用途の推定は以下のような方法で行う。
▲１▼  変数を参照している全ての処理命令から変数に代入されている値と，変数に直接適用されている演算の種別を収集し，その情報に基づいて変数の用途として推定されるものを列挙する。
【００１５】
▲２▼  あるいは，変数の定義から，変数の型に関する情報を収集し，それに基づいて変数の用途として推定されるものを列挙する。
▲３▼  ▲１▼もしくは▲２▼で求められた推定結果に対して，変数間のデータの授受関係の情報を元に同一種のデータを授受している変数のグループを求め，それらの間で共通している用途だけを残して他を削除することにより，列挙された変数の用途を限定する。
【００１６】
▲４▼  同一の演算式の中で参照されている変数の間の関係を調べ，変数の用途が満たすべき関係を計算し，それを満たすことのできる各変数の用途だけを残して他を削除することにより，列挙された変数の用途を限定する。
【００１７】
利用者は検索手段１５に検索内容を指示する。そして，検索手段１５は変数情報保持手段１３を検索し，問い合わせのあった変数の内容，用途をディスプレイ等に出力する。
【００１８】
本発明によれば，大規模なコンピュータシステムのプログラムであっても，膨大な変数について容易にその内容，用途を知ることができる。そのため，プログラムの変更，拡張，保守等の能率が大幅に向上する。
【００１９】
【発明の実施の形態】
以下の説明においては，本発明の実施の形態をＣＯＢＯＬ言語を使用して記述されたプログラムを例として説明するが，本発明の対象とするプログラム言語は必ずしもＣＯＢＯＬ言語に限られるわけではない。
【００２０】
ＣＯＢＯＬ言語では変数に対して演算を行う処理命令としては，ＡＤＤ文，ＳＵＢＴＲＡＣＴ文，ＤＩＶＩＤＥ文，ＭＵＬＴＩＰＬＹ文，ＣＯＭＰＵＴＥ文，ＭＯＶＥ文，ＡＣＣＥＰＴ文などの更新文が該当する。またＩＦ文，ＥＶＡＬＵＡＴＥ文，ＰＥＲＦＯＲＭ文，ＳＥＡＲＣＨ文などの条件分岐文も分岐条件計算の中で変数に対する演算を行うことがある。変数に適用される演算としては，加減乗除の四則演算およびべき乗の演算が分類に利用可能である他，特殊な演算としては，端末画面への表示装置や，組み込み函数の引数として使用している場合や，数字の下２桁のみを取り出す等の部分参照の操作なども利用可能である。ここでは四則演算のみによる場合を例として説明する。
【００２１】
図２は本発明の実施の形態の装置構成を示す。
図２において，
１は変数分類装置である。
【００２２】
１１はソースプログラムである。
１２は変数情報収集手段である。
１３１は変数情報データベースであって，収集された変数情報を保持するものである（図１の変数情報保持手段１３に相当する）。
【００２３】
１４は変数分類手段である。
１４１は変数分類規則表であって，変数の用途の集合と変数の型，適用演算式等の変数についての情報に対応してもつものであり，変数についての情報を指定することによりそれらの用途として推定される用途の集合を返す処理手続の集まりとして実現される。用途の候補は対象とするプログラムが扱う分野を考慮してあらかじめ利用者が用意する。
【００２４】
１５は検索手段である。
２１は構文解析装置であって，ソースプログラムの構文解析をするものである。
【００２５】
２２はデータフロー解析装置であって，構文解析されたプログラムのデータフローを解析するものである。
２３はプログラム解析情報データベースであって，プログラムの解析情報をもつものである。
【００２６】
２４は端末装置である。
図２の構成の動作を説明する。
変数情報収集手段１２は，プログラム解析情報データベースから変数情報を収集し，変数情報データベース１３１に格納する（変数情報の具体例については図４参照）。この変数情報の収集はデータフロー分析，ドメイン分析等の既存技術により可能である（特願平８−９９７４５号等参照）。解析の対象は一つのＣＯＢＯＬプログラムに限定されることはなく，複数のプログラムに属する変数に対して一括して処理を行うことができる。変数分類手段１４は変数分類規則表１４１を参照し，変数情報データベース１３１の変数情報を分類する。変数分類手段１４の動作の詳細は後述する。利用者は，端末装置２４を使用して検索手段１５に検索項目を入力し，変数についての必要な情報を検索する。
【００２７】
図３は本発明のシステム構成の実施の形態の形態である。
図３において，
１１１はコンピュータである。
【００２８】
１１２はＣＰＵである。
１１３はメモリである。
１１４は入出力インタフェースである。
【００２９】
１１５はドライブ装置であって，記憶媒体１５１のドライブ装置である。
１１６はディスプレイである。
１１７はプリンタである。
【００３０】
１２１は外部記憶装置１であって，システムプログラムを保持するものである。
１２２はシステムプログラム（ソースプログラム）である。
【００３１】
１２５は外部記憶装置２であって，システムデータベースを保持するものである。
１２６はシステムデータべースであって，システムのデータべースである。
【００３２】
１３０は外部記憶装置３であって，構文解析プログラム，データフロー解析プログラム，プログラム解析情報データべースを保持するものである。
１３２は構文解析プログラムである。
【００３３】
１３４はデータフロー解析プログラムである。
１３６はプログラム解析情報データべースである。
１３８は外部記憶装置４であって，変数情報データべース，変数分類規則表を保持するものである。
【００３４】
１４０は変数情報データべースである。
１４２は変数分類規則表である。
１５１は記憶媒体であって，本発明の変数分類装置に必要なプログラムを保持するものである。
【００３５】
１５３は変数情報収集プログラムであり，ＣＰＵ，メモリ等とにより変数収集手段を構成するものである。
１５５は変数分類プログラムであり，ＣＰＵ，メモリ等とにより変数分類手段を構成するものである。
【００３６】
１５７は変数分類規則作成プログラムである。
１５９は検索プログラムであり，ＣＰＵ，メモリ等とにより検索手段を構成するものである。
【００３７】
図４はソースプログラムの例であり，ＣＯＢＯＬ言語のプログラムである。
ステップ７３２のＦＲＥＣ．は上位変数であり，以下の変数ＰＲ，ＤＴ，ＡＭＴ，ＴＸＲ，Ｉ−ＣＮＴの上位変数である。
【００３８】
ステップ７３３は変数ＰＲの定義であり，８桁の数値であることを表す。
ステップ７３４は変数ＤＴの定義であり，６桁の数値であることを表す。
ステップ７３５は変数ＡＭＴの定義であり，４桁の数値であることを表す。
【００３９】
ステップ７３６は変数ＴＸＲの定義であり，少数点以下に２桁の数値があることを表す。
ステップ７３７は変数Ｉ−ＣＮＴの定義であり，４桁の数値があることを表す。
【００４０】
ステップ７３８のＤＳＰ．は上位変数であり，変数ＰＰ，ＹＭＤ，ＴＴＬ，ＰＳＴＮＯの上位変数である。
ステップ７３９は変数ＰＰの定義であり，６桁の数値であって，３桁毎にカンマ（，）が挿入される負の数値であることを表す。
【００４１】
ステップ７４０は変数ＹＭＤの定義であり，６桁の数値であって，３桁毎にスラッシュ（／）が挿入される数値であることを表す。
ステップ７４１は変数ＴＴＬの定義であり，４桁の数値であって，３桁目にカンマ（，）が挿入される数値であることを表す。
【００４２】
ステップ７４２は変数ＰＳＴＮＯの定義であり，５桁の数値であることを表す。
ステップ７４２は変数ＴＰＰの定義であり，９桁の数値であることを表す。
【００４３】
ステップ１３２５は命令であり，ＴＰＰにゼロを代入することを命令するものである。
ステップ１５５５は演算命令であり，ＴＰＰ＝ＴＰＰ＋ＰＲ＊（ＴＸＲ＋１）を演算することを命令するものである。
【００４４】
ステップ１５５６は命令であり，ＰＰにＴＰＰの値を代入することを命令するものである。
ステップ１５５７は加算命令であり，ＴＴＬにＡＭＴの値を代入することを命令するものである。
【００４５】
ステップ１５５８は命令であり，ＹＭＤにＤＴの値を代入することを命令するものである。
ステップ１５５９は加算命令であり，Ｉ−ＣＮＴに１を加算することを命令するものである。
【００４６】
図５は収集された変数情報の例である。
３１は変数情報であって，図４のプログラムの変数についての変数情報である。
【００４７】
データ授受グループは図４のプログラムにおいて任意の変数においてその変数とデータの受渡しのある変数を列挙したものである。
例えば，変数ＤＴの型はＰＩＣ９（６）（６桁の数値）であり，ステップ１５５８の命令“ＭＯＶＥ  ＤＴ  ＴＯ  ＹＭＤ”で使用され，そこで変数ＹＭＤとデータの授受があることを表している。
【００４８】
図６は本発明の用途推定方法１である。
図６ (a)は用途推定規則１で使用する変数分類規則表である。
４１は変数分類規則表１である。
【００４９】
変数が適用されている演算（適用演算）により変数を推定する表である。例えば，郵便番号，性別，氏名，日付は加減乗除の演算の対象にならないので，四則演算で使用されていない変数は郵便番号，性別，氏名，日付に用途を分類する。また，年度は加減算のみで使用されると推定され，個数も加減算のみで使用されることがあるので，加減算のみに使用されている変数は用途を表のように分類する。さらに，年数，税率，利率，金額，個数は，加減算と乗算に使用されると推定されるので用途を表のように分類する。
【００５０】
変数分類規則表１はユーザが作成するか，デフォルト値として予め製品を出荷する時に予め作成しておき，ユーザが変更するようにしておいても良い。
図６ (b)は用途の変数分類規則表１（４１）に基づいて求めた推定結果の例である。図５の変数情報データベースに対して，図６ (a)の変数分類規則表１（４１）を適用して求めた各変数の用途の推定結果である。
【００５１】
図５の変数情報データべースにおいて，変数ＰＲは加減算と乗算に使用されているので変数ＰＲの用途は年数，税率，利率，金額，個数のいずれかであると推定する。また，変数ＤＴは加減乗除が一切ないので，郵便番号，性別，氏名，日付の変数であると推定される。
【００５２】
このように，各変数の用途を推定して，図６ (b)の推定結果を求めることができる。
図７は本発明の用途推定方法１のフローチャートである。
【００５３】
図７のプログラムステップに従ってフローチャートを説明する。
Ｓ１  変数Ｖの使用箇所Ｌの処理命令から，変数Ｖの前後の演算子を得る。
Ｓ２  変数Ｖの前後に演算子があるか判定する。
【００５４】
Ｓ３  Ｓ２の判定において，Ｖの前後になく唯一個だけであればその唯一の演算子をＯＰとする。
Ｓ４  Ｓ２の判定において，Ｖの前後に演算子があればその優先度の高い方（優先度は予め決めておく）の演算子をＯＰとする。
【００５５】
Ｓ５  求めたＯＰを変数Ｖに対応付けて変数データベースに追加記録する。
Ｓ６  全ての使用箇所Ｌについて繰り返し，変数Ｖに対応する演算子ＯＰを求め，変数データべースに記録する。
【００５６】
Ｓ７  変数分類規則表１より，変数Ｖに対応付けられている演算子の組み合わせに該当する用途を取り出し，変数Ｖに対応付けて，変数データベースに記録する。
【００５７】
Ｓ８  全ての変数Ｖに対して以上の処理を繰り返す。
図８は本発明の用途の推定方法２を示す図である。
ＣＯＢＯＬ言語の場合，変数の型の情報としてデータ項目記述のＰＩＣＴＵＲＥ句，ＵＳＡＧＥ句の記述を用いて，変数の用途を推定できる。これらの型情報から少数点の有無，編集文字（変数に値が代入された時に常に特定の位置に自動的に配置される文字），桁数，値として許される文字種などの情報が得られる。これらの情報をもとに用途を推定し，変数分類規則表を作成する。
【００５８】
図８ (a)は，本発明の変数分類規則表２であって，変数の型の情報と用途の関係を推定して用途を定めるための表である。
５１は変数分類規則表２である。
【００５９】
型の特徴として少数点を含む変数は，税率，利率と推定できるのでそのように用途を分類する。また，通貨記号や“ＣＤ”，“ＤＢ”など通貨に関連する特定の文字列を含む変数は金額に推定できるので，その金額に用途を分類する。以下同様に図８ (a)の変数分類規則表２を作成しておく。
【００６０】
なお，図８ (a)の変数分類規則表２では表されていないが，変数を代入した結果の値（数値，文字列等）により用途を推定できるので，その対応をつけるようにしても良い。
【００６１】
図８ (b)は変数分類規則表２に基づいて求めた用途の推定結果の例である。
図５の変数情報データべースの各変数について，図８ (a)の変数分類規則表２を適用して求めた変数の用途の推定結果である。
【００６２】
ＴＸＲは小数点を含む数値の変数であるので，変数分類規則表２に従って，税率，利率に分類する。
ＰＰはカンマ（，）を含み，通貨記号をもつので金額に分類する。
【００６３】
ＹＭＤは‘／’が挿入されるで，年月日に分類する。
ＴＴＬはカンマ（，）を含むので金額，個数に分類する。
ＰＳＴＮＯは５桁の数字なので郵便番号に分類する。
【００６４】
図９は本発明の用途の推定方法２のフローチャートである。
Ｓ１  型に基づく用途の変数分類規則表２により，変数Ｖに対応付けられている演算子の組み合わせに該当する用途を取り出す。
【００６５】
Ｓ２  変数Ｖに対等付けて変数情報データべースに記録する。
Ｓ３  全ての変数Ｖに対して以上の処理を繰り返す。
図１０は本発明の用途の推定方法３を示す。
【００６６】
本発明の用途の推定方法３は，前述の方法で各変数に対して推定された用途と任意の変数のデータ授受グループに列挙されている変数に対して推定された用途に共通の用途のみを残し，それ以外の用途はその変数の用途から削除する方法である。
【００６７】
図５の変数情報データべースの変数について，図８ (b)の用途の推定結果に対して，本発明の用途の推定方法３を適用すると次のようになる。
変数ＤＴのデータ授受グループの変数はＹＭＤである。推定結果２において，変数ＤＴの用途は未定であり，変数ＹＭＤの用途は日付である。従って，変数ＤＴの用途を日付に分類する。
【００６８】
同様に，変数ＡＭＴのデータ授受グループの変数はＹＭＤであり，用途の推定結果２のＡＭＴは未定であり，ＴＴＬの用途は金額，個数であるので，ＴＴＬの用途を金額，個数に分類する。
【００６９】
以下同様にして，図１０の (b)の用途の推定結果の例を得ることができる。
図１０ (a)は，本発明の用途の推定方法３のフローチャートである。
Ｓ１  用途集合Ｓに変数Ｖの用途集合を設定する。
【００７０】
Ｓ２  データ授受グループに列挙されている変数Ｗの用途の集合をＴとする。
Ｓ３  ＳとＴの各集合（共通部分）をＳに設定する。
Ｓ４  データ授受グループに列挙された全ての変数Ｗについて以上の処理を繰り返す。
【００７１】
Ｓ５  すべての変数Ｗに対して以上の処理を繰り返す。
図１１は本発明の用途の推定方法４を示す。
上記の推定方法１，２もしくは３で求められていない変数については，それらを元に，以下に説明する推定方法で求めることができる。
【００７２】
演算式とそこで使用されている変数の用途の間には一定の関係があると推定できるので，本発明の推定方法４は，演算式と変数用途の関係を変数分類規則表として求めておく。そして，変数情報データべースの演算式についてその変数分類規則表を当てはめて変数の用途を推定する。
【００７３】
図１１ (a)は用途の推定方法４の変数分類規則の例である。
６１は変数分類規則表４である。
金額と税率には金額＝金額＊税率の関係があるので，その関係を規則とする。同様にカウンタ＝カウンタ＋定数，カウンタ＝カウンタ−定数，金額＝金額＊税率等の関係をもとに変数分類規則表４を作成しておく。
【００７４】
図１１ (b)は変数分類規則表４に基づく推定結果の例である。
図５の変数情報データべースの照合対象の式６２について説明する。
照合対象の式６２の１＋ＴＸＲに照合規則７を適用し，ＴＸＲが税率もしくはカウンタであると推定する（カウンタは制御に必要な数値であって，実際の業務で使用する項目を表す変数ではない）。次にＴＸＲが税率であることから（１＋ＴＸＲ）も税率であり，照合対象の式ＰＲ＊（１＋ＴＸＲ）に照合規則１を適用し，ＰＲが金額であることを推定する。さらに，ＰＲ＊（１＋ＴＸＴ）が金額であることから，ＴＰＰ＋ＰＲ＊（１＋ＴＸＴ）に照合規則９を適用し，ＴＰＰが金額であることを推定する。カウンタには乗算の演算は含まれていないので適用規則１，９の過程では除外される。
【００７５】
図１２は本発明の用途の推定方法４のフローチャートである。
Ｓ１  用途の集合Ｓを空集合とする。
Ｓ２  既に処理した処理文か判定する。処理文でなければＳ３の処理を行う。すでに処理した文であれば，次の使用箇所ＬについてＳ９の処理を行う。
【００７６】
Ｓ３  処理文から演算式Ｅを得る。
Ｓ４  式Ｅに適合する演算規則の集合Ｒを演算規則表から検索する。
Ｓ５  Ｒは発見されたか判定し，あれば，Ｓ６の処理を行う。なければ次の使用箇所ＬについてＳ９の処理を行う。
【００７７】
Ｓ６  Ｒの中で変数Ｖに照合した部分の用途Ｕを得る。
Ｓ７  用途Ｕは変数Ｖの用途に含まれているか判定し，含まれていればＳ８の処理をする。なければ次の使用箇所ＬについてＳ９の処理をする。
【００７８】
Ｓ８  Ｓに用途Ｕを加える。
Ｓ９  すべての使用箇所ＬについてＳ２〜Ｓ８の処理を繰り返す。
Ｓ１０  用途集合Ｓは空か判定し，空でなければＳ１１の処理をする。空集合であればＳ１２で次の変数ＶについてＳ１２の処理を繰り返す。
【００７９】
Ｓ１２  全ての変数Ｖについて上記の処理を繰り返す。
なお，このフローチャートにおいて，Ｓ４の式の照合は，パターンマッチングアルゴリズムなどの既存技術を用いることができる。
【００８０】
【発明の効果】
本発明によれば，プログラムで使用されている全ての変数に対して自動的に行うことができる。そのため，従来の変数の用途の調査に費やされた膨大な作業時間を削減でき，大規模ソフトウェアシステムの調査，維持等の効率を大幅に引き上げることができる。
【図面の簡単な説明】
【図１】本発明の基本構成を示す図である。
【図２】本発明の実施の形態を示す図である。
【図３】本発明のシステム構成の実施の形態を示す図である。
【図４】ソースプログラムの例である。
【図５】本発明の収集された変数情報の例である。
【図６】本発明の用途推定方法１を示す図である。
【図７】本発明の用途推定方法１のフローチャートである。
【図８】本発明の用途推定方法２を示す図である。
【図９】本発明の用途の推定方法２のフローチャートである。
【図１０】本発明の用途の推定方法３を示す図である。
【図１１】本発明の用途の推定方法４を示す図である。
【図１２】本発明の用途の推定方法４のフローチャートを示す図である。
【符号の説明】
１：変数分類装置
１１：ソースプログラム
１２：変数情報収集手段
１３：変数保持手段
１４：変数分類手段
１４１：変数分類規則表
１５：検索手段
【図１】
0003881103.tif 000002
【図２】
0003881103.tif 000003
【図３】
0003881103.tif 000004
【図４】
0003881103.tif 000005
【図５】
0003881103.tif 000006
【図６】
0003881103.tif 000007
【図７】
0003881103.tif 000008
【図８】
0003881103.tif 000009
【図９】
0003881103.tif 000010
【図１０】
0003881103.tif 000011
【図１１】
0003881103.tif 000012
【図１２】
0003881103.tif 000013