JPH09274562A - プログラム解析装置およびプログラム解析表示装置 - Google Patents

プログラム解析装置およびプログラム解析表示装置

Info

Publication number
JPH09274562A
JPH09274562A JP8099745A JP9974596A JPH09274562A JP H09274562 A JPH09274562 A JP H09274562A JP 8099745 A JP8099745 A JP 8099745A JP 9974596 A JP9974596 A JP 9974596A JP H09274562 A JPH09274562 A JP H09274562A
Authority
JP
Japan
Prior art keywords
program
domain
variable
variables
information
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP8099745A
Other languages
English (en)
Other versions
JP3305949B2 (ja
Inventor
Minako Kimura
美奈子 木村
Akihiko Matsuo
昭彦 松尾
Keiko Kawabe
敬子 川辺
Kenji Nagahashi
賢児 長橋
Sanpachi Uehara
三八 上原
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP09974596A priority Critical patent/JP3305949B2/ja
Priority to US08/794,368 priority patent/US6110224A/en
Publication of JPH09274562A publication Critical patent/JPH09274562A/ja
Application granted granted Critical
Publication of JP3305949B2 publication Critical patent/JP3305949B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3604Software analysis for verifying properties of programs

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

(57)【要約】 【課題】プログラムの理解を支援するプログラム解析装
置およびプログラム解析表示装置に関し,種々の名前を
持つ変数を制約条件に基づくカテゴリーに分けた情報を
自動抽出して出力することを目的とする。 【解決手段】制約条件抽出手段13によって,プログラム
のエラー判定条件を分析することにより特定の変数の制
約条件を得て,制約条件表14を出力する。また,変数分
類手段15によって,実行文で用いられている変数間の関
係を解析して変数を分類し,変数分類表16を出力する。
さらに,ドメイン定義抽出手段17によって,制約条件表
14と変数分類表16とから複数の変数が共通に表現するド
メインと,それらの変数の特定の制約条件とを表現した
ドメイン定義情報18を抽出して出力する。また, 複数の
プログラムにわたるドメイン間の関係を解析し,結果を
グラフ表示する。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は,プログラムの仕様
としてのデータ型定義を,プログラムを解析して抽出す
るプログラム解析装置およびその抽出結果を分類して表
示するプログラム解析表示装置に関するものである。特
に,データ宣言部の記述から得られる型情報だけではな
く,データ間の関連に着目してデータを分類し,特定の
制約条件を持ったドメイン定義を抽出することを可能に
したものである。
【0002】ここで,ドメインとは,同じ対象を表現す
るものであって,例えば変数「受注日付」と「納品日
付」とが,どちらも年,月,日で表現される場合,「受
注日付」と「納品日付」とは「年月日」を表現する変数
であり,このような変数の「表現される対象」をドメイ
ンという。
【0003】また,ドメイン定義とは,上記のようなド
メインの「表現される対象」を,制約条件(値域)で定
義付けたものをいう。例えば,ドメイン「年月日」は,
さらに細かく分けるとドメイン「年」,「月」,「日」
で構成されており,「日」は「1以上31以下の整数」
というドメイン定義で表現される。
【0004】これらの情報を既存のプログラムから自動
的に抽出することができれば,プログラムの理解に極め
て有用であり,デバッグ,保守,改良等に役立つ。ま
た,複数のプログラムにわたるドメイン間の関係情報お
よび変数の代入関係の情報を視覚的にわかりやすく表示
することにより,プログラムの理解をさらに容易にする
支援が可能になる。
【0005】
【従来の技術】プログラムの処理を詳細に理解するため
には,変数の宣言時の情報や変数が保持する値を,具体
的に追うことが必要不可欠となる。従来のプログラム解
析では,変数名や型,大きさ等,変数宣言時の静的な情
報のみが,変数毎にプログラム単位で解析されるだけで
あり,プログラムの保守や改良を行うための貢献は少な
かった。
【0006】図44は,従来技術を説明するための図で
ある。従来のプログラム解析では,データ個々の宣言文
からデータ型およびデータの大きさを分析するにとどま
っており,具体的には,例えば,図44(A)に示すC
OBOLプログラムのデータ宣言部のデータ個々の宣言
文から,データ型解析結果として,図44(B)に示す
ような各データの型と大きさについての情報を得るだけ
であった。
【0007】
【発明が解決しようとする課題】図44(B)に示すよ
うな従来のデータ型解析結果から,例えば「受注月」,
「受注日」,「納品月」,「納品日」は,データ型と大
きさが同じであることがわかる。しかし,これらが各々
どのような制約条件(値域)を持つかというようなこと
はわからない。
【0008】例えば「受注日」と「納品日」とは,デー
タのとる値の範囲が「1以上31以下」という共通の制
約条件を持つ。これらのデータは,「日:範囲(1以上
31以下)」という同一ドメインのデータである。一
方,「受注日」と「受注月」とは,データ型と大きさは
同じであるが,制約条件は,それぞれ「1以上31以下
の整数」,「1以上12以下の整数」と異なるため,ド
メインが異なる。
【0009】従来技術では,このようなドメインの観点
から変数をグループ分けできなかった。また,変数個々
の制約条件を抽出できず,さらには,ドメインを特徴づ
ける制約条件の抽出を行うことができなかった。
【0010】本発明は上記問題点の解決を図り,プログ
ラム中の変数に対して与えられた制約条件を自動抽出す
ること,ドメインの観点から変数をグループ分けするこ
と,制約条件の抽出結果と変数の分類結果とからドメイ
ン定義情報を得ることにより,プログラムの解読に有用
な情報を得る手段を提供することを目的とする。
【0011】また,本発明は,プログラム単位で得られ
たドメインの分類情報から,複数のプログラムにわたる
ドメイン間の関係情報を解析し,それをわかりやすく表
示する手段を提供することにより,プログラムの理解を
一層容易にする手段を提供することを目的とする。
【0012】
【課題を解決するための手段】上記の課題を解決するた
め,本発明は,図1および図2に示すような手段を用い
る。
【0013】図1は,本発明に係るプログラム解析装置
の構成例を示す図であり,1はプログラム解析装置,1
1はプログラムの構文情報・制御フロー情報を含む解析
対象プログラム情報,12はエラー処理判定支援情報,
13は制約条件抽出手段,131はエラー判定条件抽出
手段,132は条件式/制約条件変換手段,14は抽出
された制約条件を記憶する制約条件表(テーブル),1
5は変数分類手段,16は変数の分類情報を記憶する変
数分類表(テーブル),17はドメイン定義抽出手段,
18はドメイン定義情報,2はプログラム解析表示装置
を表す。
【0014】プログラム解析装置1は,プログラムを解
析するための情報として,解析対象プログラム情報11
とエラー処理判定支援情報12とを入力する。解析対象
プログラム情報11としては,プログラムの構文を解析
して得られる構文情報と,プログラムの実行順序に従っ
た文のつながりを示す制御フロー情報を利用する。これ
らは変数がどの文で利用されているか,それがどのよう
な条件下で実行されるかがわかるものである。これらの
情報は既存技術で得られるものであるので,詳細な説明
は省略する。エラー処理判定支援情報12は,エラー処
理手続き名やエラー処理の行番号などの情報であり,プ
ログラム作成者または解読者等がプログラム設計情報や
ソースプログラムをもとに作成する。
【0015】制約条件抽出手段13は,エラー判定条件
抽出手段131および条件式/制約条件変換手段132
を持つ。エラー判定条件抽出手段131は,解析対象プ
ログラム情報11およびエラー処理判定支援情報12を
もとにプログラムのエラー処理部分を認識し,エラー処
理を行う条件を抽出する手段である。条件式/制約条件
変換手段132は,エラー判定条件抽出手段131の出
力を分析して条件式を制約条件に変換することにより,
特定の変数の制約条件を得る手段である。抽出した制約
条件は,制約条件表14として出力し,必要であれば外
部記憶装置,プリンタまたはディスプレイ等にも出力す
る。
【0016】変数分類手段15は,解析対象プログラム
情報11をもとに,プログラムのある実行文中で複数の
変数が用いられている場合に,それらの変数の関係をそ
の実行文の種類またはオペランドの種類によって分析
し,変数の値が同じドメインを表現するかどうかによっ
てグループに分け,プログラム中の変数を同じドメイン
を表現するかどうかによって分類した情報を出力する手
段である。変数の分類結果は,変数分類表16として出
力し,必要であれば外部記憶装置,プリンタまたはディ
スプレイ等にも出力する。
【0017】ドメイン定義抽出手段17は,制約条件抽
出手段13から得た変数の制約条件を記憶する制約条件
表14と,変数分類手段15から得た複数の変数が共通
に表現するドメインに関する分類情報を記憶する変数分
類表16とから,同じ対象を表現するドメインに関する
定義情報を抽出し,ドメイン定義情報18として出力す
る手段である。
【0018】プログラム解析装置1は,制約条件抽出手
段13により,プログラムのエラー処理部分を認識し,
エラー処理を行う条件を抽出し,エラー判定条件式を分
析して特定の変数の制約条件を得て,条件式から制約条
件への変換を行い,また,変数分類手段15により,プ
ログラムのある実行文中で複数の変数が用いられている
場合に,それらの変数の関係をその実行文の種類または
オペランドの種類によって分析し,変数の値が同じドメ
インを表現するかどうかによってグループに分け,変数
分類手段15から得た複数の変数が共通に表現するドメ
インに関する分類情報と制約条件抽出手段13から得た
変数の制約条件とから,同じ対象を表現するドメインに
関する定義情報を抽出してプログラムの解析結果として
ドメイン定義情報18を出力する。
【0019】図1に示すプログラム解析装置1によって
ドメイン定義情報18を自動抽出することにより,同様
な対象を表す変数群を容易に把握できるようになる。図
2は,本発明に係るプログラム解析表示装置の構成例を
示す図であり,図1と同符号のものは図1に示すものに
対応し,21はドメイン解析手段,22は解析結果を表
示する表示処理手段,23はドメイン要素の関係出力手
段,24はジョブ制御言語(JCL),25はプログラ
ム間の呼び出し関係を示すCALL情報,26はユーザ
が入力し指定したユーザ入力情報,27は複数のプログ
ラムから得たドメインを分類した結果のドメイン間の関
係を示すドメイン関係情報,28はディスプレイを表
す。
【0020】図2に示すプログラム解析表示装置2は,
プログラム解析装置1が解析対象プログラム情報11か
ら各プログラム毎に得たドメインについて,ドメイン解
析手段21,表示処理手段22,ドメイン要素の関係出
力手段23によって,ドメイン間の関係を解析して表示
する装置である。
【0021】ジョブ制御言語24は,ユーザが書いたプ
ログラムや予め用意されたユーティリティプログラム等
を,どのような手順で実行するかを記述したものであ
る。ドメイン解析手段21は,各プログラム毎のドメイ
ンに分類された変数情報18’(またはドメイン定義情
報18)と,ジョブ制御言語24とを入力し,複数のプ
ログラムから得られたプログラム毎のドメイン間の関係
を解析する。解析した結果をドメイン関係情報27とし
て出力する。
【0022】また,ドメイン解析手段21は,複数のプ
ログラムから得られたプログラム毎のドメイン間の関係
を解析するために,各プログラム中に書かれているCA
LL文による呼び出し関係の情報(CALL情報25)
を用いることもできる。
【0023】CALL文を用いてプログラムの呼び出し
を行う場合,例えばCOBOLプログラム等ではUSI
NG指定を明記することにより,呼ぶ側のプログラム中
の変数の値を,呼ばれる側のプログラム中の変数に引き
渡すことができる。呼ぶ側のUSING指定中に書かれ
た変数と,呼ばれる側のUSING指定中に書かれた変
数とは,USING指定中に書かれた順に対応付けられ
て実行される。このことは即ち,対応付けられた変数同
士は実は同等なものであることを意味する。これから,
双方の変数を持つドメイン同士も実は同等であることが
わかる。
【0024】したがって,ドメイン解析手段21は,C
ALL情報25から各プログラムの呼び出し関係を得
て,ドメイン間の関係を解析することができる。同様
に,ドメイン解析手段21は,複数のプログラムから得
られたプログラム毎のドメイン間の関係を解析するため
に,ユーザが入力したユーザ入力情報26を用いること
もできる。
【0025】プログラム中に記述されている変数は,一
時的に用いるためだけの変数もあるが,目的とするある
処理のために意味を持たせられて,所定の規約に従って
命名された変数もある。そこで,その規約に基づいた条
件をユーザが入力指定することにより,その指定に見合
った変数を持つドメイン同士に関係を見いだすことがで
きる。
【0026】表示処理手段22は,ドメイン解析手段2
1によって解析したドメイン関係情報27および各ドメ
インに属する変数の代入関係の情報をディスプレイ28
に表示する。このとき,視覚的にグラフ表示することに
より,複数プログラム間に跨がるドメイン間の関係や,
各ドメインに属する変数の代入の関係が把握しやすくな
るように表示する。
【0027】変数の代入の関係に関する情報としては,
各プログラム中に出現する全変数について,プログラ
ム名,変数名,プログラム内出現位置(出現行番
号),代入の式(代入元の変数),ドメインID
(ドメイン名)等の情報を対応付けて保持する。これら
の情報のうち,〜は,プログラムの構文解析時に既
知の技術によって得ることができる。のドメインID
は,プログラム解析装置1によって変数をドメインに分
類した際に,各ドメインに対して識別子(ID)を付与
することによって得られる。
【0028】表示処理手段22は,変数について保持さ
れた〜の情報をもとに,(a) ドメインを中心にした
グラフ表示,(b) 変数の代入関係を中心にしたグラフ表
示等を行う。
【0029】さらに,表示処理手段22は,上述のプ
ログラム内出現位置(出現行番号),代入の式(代入
元の変数)の情報を保持することにより,グラフ表示上
のある要素が指定されたときに,その要素が表す変数が
出現するソースプログラム内行番号をリストアップした
り,エディタ画面(ソースリスト表示画面)上に表示さ
れたソースプログラムの対応行を表示したりする処理を
行う。
【0030】また逆に,表示処理手段22は,ソースプ
ログラム表示上のある行が指定された場合に,その行に
含まれる変数を表す図形をグラフ表示上で強調表示す
る。すなわち,グラフ表示上で該当する変数の色,明度
または輝度等を変化させて目立つように表示する。
【0031】ドメイン要素の関係出力手段23は,ドメ
インの要素または要素の一部としての変数または変数群
がユーザによって指定された場合に,ドメイン解析手段
21が解析したドメイン関係情報27に基づいて,同一
関係にあるドメインに含まれる指定された変数または変
数群に対応するすべての変数または変数群を,ディスプ
レイ28に表示する処理を行う。このとき,表示処理手
段22との連携により,ドメイン関係情報27に関する
グラフ表示上で,該当する変数または変数群の強調表示
を行うようにすることもできる。
【0032】一般にプログラムを理解しようとする場合
に,1つのプログラムだけでなく,複数のプログラムが
連携して動作するアプリケーションのようなものでは,
1つのプログラム内でのドメイン分類だけでは十分では
ないことがある。具体的に,複数のプログラム間の変数
の関係を追ってみると,あるドメインと他のドメインと
が実は同一のドメインと見なせるような場合があるから
である。
【0033】そこで,図2に示すプログラム解析表示装
置2を用いることにより,ドメイン間の関係を解析し解
析結果を表示すれば,複数のプログラムに跨がるドメイ
ン間の関係を把握し,変数の解析をより効率的に行うこ
とができるようになる。
【0034】また,この際にドメイン間の関係および変
数の代入関係をグラフ表示によって図示することによ
り,変数の持つ情報を視覚的に容易に得ることができ,
より高度なプログラム理解の支援を実現することが可能
になる。
【0035】
【発明の実施の形態】以下,本発明の実施の形態を図を
用いて説明する。図3は,図1に示す制約条件抽出手段
13の構成例を示す図である。
【0036】エラー判定条件抽出手段131は,エラー
判定条件式がその変数の制約条件を表している場合が多
いことを利用するものである。すなわち,業務用の応用
プログラム等では,通常,例えば入力データの変数の値
が正しいかどうかをプログラム中で判定し,もし正しい
値でなければ入力エラーのメッセージの出力と再入力処
理等を行う。このエラー処理への分岐のためのエラー判
定条件式を解析すれば,変数の制約条件を自動抽出する
ことができる。
【0037】このため,エラー判定条件抽出手段131
は,エラー処理手続き名やエラー処理の行番号などを記
録したエラー処理判定支援情報ファイル121を読み,
解析対象プログラム情報11の制御フロー情報をトラバ
ース(全実行文へアクセス)しながらエラー処理を行う
実行文を検索する。続いて,制御フロー情報を逆トラバ
ースして,実行文の直前の条件式を得る。なお,この制
御フロー情報を用いた検索処理は,周知の技術によって
容易に実現できる。
【0038】エラー処理判定支援情報ファイル121
は,例えば事前にプログラム作成者または解析者等がエ
ディタ等を用いて作成しておけばよい。または会話処理
等により解析時にエラー処理判定支援情報を入力する実
施も可能である。
【0039】条件式/制約条件変換手段132は,エラ
ー判定条件抽出手段131から得たエラー判定条件式
を,()や論理記号ORで分割して部分条件式を作成
し,各部分条件式について,中に変数が1つのみ存在す
るものだけ,「データ名:値域」のように表した制約条
件の形式に変換し,制約条件表14へ保存する。制約条
件は,その変数の値域を表していることが多い。
【0040】図4は,エラー判定条件抽出処理の例を示
す図であり,図4(A)は,エラー処理判定支援情報フ
ァイル121の例を示している。エラー処理判定支援情
報ファイル121には,エラー処理手続き名(LABE
L)やエラー処理の行番号(LINE−NUM)等が定
義されている。
【0041】図4(B)は,解析対象プログラム情報1
1に記録されている制御フローの例を示している。エラ
ー判定条件抽出手段131は,例えばプログラムの「G
OTO 日付−エラー処理.」がエラー処理実行文であ
ることを判定すると,制御フローを逆トラバースして直
前のIF文の条件式「受注日<1 OR 31<受注
日」を得て,条件式/制約条件変換手段132へ渡す。
図4(C)に,エラー処理の実行文A「GO TO 日
付−エラー処理.」と,その直前のIF文の条件式B
「受注日<1 OR 31<受注日」の例を示す。
【0042】図5は,条件式/制約条件変換処理の例を
示す図であり,図5(A)は,エラー判定条件式から制
約条件への変換例を示している。条件式/制約条件変換
手段132は,エラー判定条件抽出手段131から得た
条件式Bを()や論理記号ORで分割して,部分条件式
C1{受注日<1},C2{31<受注日}を作成す
る。さらに部分条件式C1,C2の補集合条件式を求め
て,制約条件D1{受注日,1≦@≦31}(@はこの
箇所に変数名が入ることを意味する)を得る。
【0043】図5(B)は,条件式Bが複数の変数を含
む場合のエラー判定条件式から制約条件への変換処理例
を示している。条件式Bが「(データ<データ)O
R(データ<1)」であるとき,(データ<データ
)の複数の変数を含む部分は変換の対象としないで,
(データ<1)の部分のみを変換の対象とする。条件
式Bから,部分条件式C1{データ<1}を作成し,
制約条件D1{データ,1≦@}を得る。これらの制
約条件は,図5(C)に示すように制約条件表14に記
録される。
【0044】図6は制約条件抽出手段13の処理フロー
チャートである。図6のフローチャート中で,ステップ
S1〜ステップS4は,エラー判定条件抽出手段131
の処理,ステップS5〜ステップS7は,条件式/制約
条件変換手段132の処理である。
【0045】ステップS1では,エラー処理判定支援情
報ファイル121を読み,エラー処理判定支援情報を入
力する。ステップS2では,解析対象プログラム情報1
1の制御フロー情報をトラバース(全実行文へアクセ
ス)しながらエラー処理を行う実行文を検索する。
【0046】ステップS3では,1つの実行文Aがエラ
ー処理かどうかを判定する。実行文Aがエラー処理であ
ればステップS4以降の処理を行い,実行文Aがエラー
処理でなければ次の実行文について処理に移る。
【0047】ステップS4では,解析対象プログラム情
報11の制御フロー情報を逆にトラバースし,実行文A
が実行される直前の条件式Bを得る。ステップS5で
は,条件式Bから,ある1つの変数に関する条件式を表
している全ての部分条件式C1,C2,…,を抽出す
る。
【0048】ステップS6では,部分条件式C1,C
2,…,を制約条件形式D1,D2,…,に変換する。
ステップS7では,制約条件形式D1,D2,…,を制
約条件表14へ登録する。以上のステップS2〜S7を
全実行文について繰り返したならば処理を終了する。
【0049】次に,変数分類手段15の処理を説明す
る。図7は,変数分類手段15の処理フローチャートお
よびデータ構造の例を示す図である。
【0050】変数分類手段15は,プログラムの実行文
中で複数の変数が用いられている場合に,それらの変数
の関係がその実行文の種類やオペランドの種類から推定
できることがあることを利用するものである。
【0051】例えば,代入関係のある実行文「MOVE
入力日 TO 納品日」における左辺(代入先)の変
数「入力日」と右辺(代入元)の変数「納品日」とは,
通常,同一ドメイン内の変数である。また,比較{単価
A<金額B}では,不等号の左右の変数「単価A」,
「金額B」が同一ドメイン内の変数である。実行文中に
このような代入関係,比較が表れた時点で,変数を同一
ドメイン内変数としてグループ化する。ここで,どのよ
うな関係を持った変数をグループ化するかはユーザが決
定することができる。
【0052】実行文「COMPUTE A=B+C」や
「(A+B)<(C+D)」のように,左辺,右辺の変
数が単一でない場合には,左辺,右辺の全ての変数が同
一ドメインであると言えないこともある。このような場
合には,例えば,右辺の変数が全て同一ドメインである
場合だけ,左辺,右辺の変数を全て同一ドメインとする
ような方式を採る。この場合,実行文「COMPUTE
A=B+C」は,「B∈δ ∧ C∈δ ならば,
A,B,C∈δ(δ:あるドメイン)」となる。すなわ
ち,BとCとが同一ドメインδならば,A,B,Cは全
て同一ドメインδであるとみなす。
【0053】図7において,[]は1ドメインを表し,
{}は同ドメイン内のメンバ変数の候補を表し,例え
ば,ドメイン[A,{B,C}]は,B,Cが同ドメイ
ンの変数ならば,A,B,Cは全て同ドメイン内の変数
であることを示す。
【0054】ステップS21では,ステップS22以降
の処理をプログラム内の全実行文に対して繰り返し,全
実行文について処理したならば終了する。ステップS2
2では,プログラムから実行文Aを取る。
【0055】ステップS23では,実行文Aについて,
後述する『処理1』を行い,使われている変数のうち同
一ドメインの変数の集合であるドメインD1,D2,
…,Dnを得る。
【0056】ステップS24では,ドメインDが1つ以
上存在するかどうかを判定し,存在するならばステップ
S25の処理を行い,存在しないならばステップS22
へ戻って次の実行文の処理を行う。
【0057】ステップS25では,ステップS26以降
の処理を全ドメインD1,D2,…,Dnについて繰り
返す。ステップS26では,既存の変数分類表T内で,
ドメインDi中の変数を持つドメインD″が存在するか
どうかを判定する。ドメインD″が存在する場合にはス
テップS27の処理を行い,ドメインD″が存在しない
場合にはステップS28の処理を行う。
【0058】ステップS27では,ドメインDiの変数
のうちドメインD″にない変数をドメインD″に追加
し,ドメインDiを消去する。ステップS28では,ド
メインDiを変数分類表Tへ追加する。
【0059】ステップS29では,ステップS27また
はS28で更新した新しい変数分類表T′を得る。ステ
ップS30では,変数分類表T′内の全既存ドメインD
について,後述する『処理2』を行い,ドメイン内の変
数候補が同一ドメインかどうかを変数分類表T′全体を
見て調査する。
【0060】ステップS31では,新しい変数分類表
T″を得る。例えば,ステップS22で取った実行文A
が,「COMPUTE A=B+C」であるとすると,
後述する『処理1』を行い,ドメインD1[A,{B,
C}]を得る。ここで,既存の変数分類表T中には,ド
メインD1内変数である「A」を持つドメインD″
[A,X]が存在するので,ドメインD1の変数候補
{B,C}をドメインD″へ追加し,ドメインD″
[A,X,{B,C}]とし,ドメインD1を消去し
て,新しい変数分類表T′を得る。
【0061】次に,新しい変数分類表T′内には,ドメ
インD″[A,X,{B,C}]の変数候補{B,C}
を全て含むドメイン[B,C,D]があることから,
「B,C」は同一ドメインと判定して,ドメインD″
[A,X,{B,C}]とドメイン[B,C,D]とを
マージして,ドメイン[A,X,B,C,D]とする。
一方,ドメイン[K,L,{M,N}]の変数候補
{M,N}は同一ドメインかどうか不明なのでそのまま
にして,新しい変数分類表T″とする。
【0062】次に,図7に示すステップS23で実行す
る『処理1』について,図8および図9に示す処理フロ
ーチャートを用いて説明する。図8のステップS101
では,実行文Aを入力する。
【0063】ステップS102では,実行文Aに代入系
演算式があるかどうかを判定する。実行文Aに演算式が
ある場合にはステップS103の処理を行い,実行文A
に演算式がない場合にはステップS109(図9)の処
理を行う。
【0064】ステップS103では,演算式全てについ
てステップS104〜ステップS108の処理を繰り返
す。ステップS104では,式の左辺(代入先)と右辺
(代入元)の変数を得て,左辺の変数の集合をSL
し,右辺の変数の集合をSR とする。ただし,右辺の式
で,乗算,除算オペランドを含む項に含まれている変数
は,オペランドの片側が定数である場合を除いて抽出し
ない。
【0065】同じドメインを表現する場合でも,ドメイ
ン「日」が文字列でも整数でも表現できるように,デー
タ型は変数によって異なる場合が多い。しかし,データ
型が違う変数は違うドメインとしてみなしたい場合に
は,オプションとしてステップS105を行う。このス
テップS105を行うか否かはユーザが指定する。ステ
ップS105を行わない場合には,ステップS106へ
続く。
【0066】ステップS105では,集合SL ,SR
中の変数が全て同じデータ型であるかどうかをプログラ
ムの変数宣言部をみて判定する。集合SL ,SR の中の
変数が全て同じデータ型である場合には,ステップS1
06の処理を行い,データ型が同じでない場合には次の
演算式の処理へ移る。
【0067】ステップS106では,集合SR に含まれ
る変数が1つかどうかを判定する。変数が1つであれば
ステップS107の処理を行い,変数が1つでない場合
にはステップS108を行う。
【0068】ステップS107では,集合SL と集合S
R とを合わせてドメインとし,保存する。ステップS1
08では,集合SL と集合SR とを結び付けてドメイン
とする。ここで,マージは行わない。
【0069】以上の処理を全ての演算式について繰り返
したならば,図9のステップS109へ進む。上記ステ
ップS101〜S108の処理において,例えば,実行
文Aとして「IF文」を入力し,この実行文Aに,(1)
「MOVE A TO B」,(2) 「COMPUTE
C=D+E」の代入系演算式があるとすると,まず,演
算式(1) 「MOVE A TO B」について,左辺
(代入先)の変数の集合SL :[A],右辺(代入元)
の変数の集合SR :[B]とする。
【0070】同一ドメイン内の変数は同一のデータ型を
持つとユーザが指定した場合に限り,オプションとし
て,プログラムの変数宣言部を見て,集合SL :[A]
と集合SR :[B]のメンバ変数が全て同一のデータ型
であるかどうかを調べ,同一のデータ型であることを確
認する。集合SL と集合SR とを合わせてドメイン
j:[A,B]とする。
【0071】演算式(2) 「COMPUTE C=D+
E」の場合,同様の処理を行い,集合SL :[C]と集
合SR :[{D,E}]とを抽出する。この場合,集合
R のメンバ変数は1つではないので,集合SL と集合
R とを単に結び付けて(マージしないで),ドメイン
j :[C,{D,E}]とする。
【0072】図9のステップS109では,実行文Aに
比較条件式があるかどうかを判定する。実行文Aに比較
条件式がある場合には,ステップS110の処理を行
い,比較条件式がない場合にはステップS117の処理
を行う。
【0073】ステップS110では,比較条件式を()
や論理記号で分割する。ステップS111では,ステッ
プS110で分割した式を単位として比較条件式の全て
についてステップS112〜ステップS116の処理を
繰り返す。
【0074】ステップS112では,比較記号の左辺と
右辺の変数を得る。左辺の変数の集合をSL ,右辺の変
数の集合をSR とする。ただし,両辺の式で,乗算,除
算オペランドを含む項に含まれる変数は,オペランドの
片側が定数である場合を除いて抽出しない。これは複数
の変数同士の乗算または除算の場合,それらの変数が同
一ドメインであるとは限らないからである。
【0075】同一ドメイン内の変数は同一データ型を持
つとユーザが指定した場合に限り,オプションとして,
ステップS113をステップS114の前に行う。ステ
ップS113では,集合SL ,SR の中の変数が全て同
じデータ型であるかどうかをプログラムの変数宣言部を
見て判定する。集合SL ,SR の中の変数が全て同じデ
ータ型である場合には,ステップS114の処理を行
い,データ型が同じでない場合にはステップS117の
処理を行う。
【0076】ステップS114では,集合SL と集合S
R に含まれる変数が1つかどうかを判定する。それぞれ
の変数が1つでなければステップS115の処理を行
い,変数がともに1つであればステップS116の処理
を行う。
【0077】ステップS115では,集合SL と集合S
R とをマージしてドメインDj とし,保存する。ステッ
プS116では,集合SL と集合SR とを結び付けてド
メインDj とする。ここで,マージは行わない。
【0078】全ての比較条件式について繰り返したなら
ば,ステップS117では,得られたドメインを全て返
す。例えば,実行文Aとして「IF文」を入力し,この
実行文Aに,「(H+I)>(J+K)‖(X<Y)」
の比較条件式があるとすると,比較条件式を()や論理
記号で分割し,(4) 「(H+I)>(J+K)」と(5)
「(X<Y)」とする。分割した単位毎に,左辺の変数
の集合SL ,右辺の変数の集合SR を抽出する。
【0079】まず,(4) 「(H+I)>(J+K)」に
ついて,集合SL :[H,I]および集合SR :[J,
K]を抽出する。同一ドメイン内の変数は同一のデータ
型を持つとユーザが指定した場合に限り,オプションと
して,プログラムの変数宣言部より,集合SL と集合S
R のメンバ変数が全て同一のデータ型であることを確認
する。集合SL と集合SR のメンバ変数が1つ以上なの
で,集合SL と集合S R を結び付けて,ドメインDj
[{H,I},{J,K}]とする。
【0080】次に,(5) 「(X<Y)」について,集合
L :[X],集合SR :[Y]を抽出する。同一ドメ
イン内の変数は同一のデータ型を持つとユーザが指定し
た場合に限り,オプションとして,プログラムの変数宣
言部より,集合SL と集合S R のメンバ変数が全て同一
のデータ型であることを確認する。集合SL ,集合S R
のメンバ変数が1つなので,集合SL と集合SR を合わ
せてドメインDj :[X,Y]とする。
【0081】図10は,演算式および条件式と,変数分
類手段15の『処理1』から得られるドメインの例を示
す図である。図10(A)は,単一オペランドを持つ実
行文の例,図10(B)は,複合オペランドを持つ実行
文の例を示している。
【0082】図10(B)において,代入系演算式「C
OMPUTE A=B*C」のように,乗算オペランド
を含む項の変数は,オペランドの片側が定数でない限
り,ドメインを生成するための変数の集合を抽出しない
ので,得られるドメインはない。一方,「MULTIP
LY I BY 定数 GIVING K」(K=I*
定数)を意味する)のように,乗算オペランドを含む項
の変数であっても,オペランドの片側が定数の場合に
は,ドメインが得られる。
【0083】図11は,図7に示すステップS30にお
いて行われる『処理2』の処理フローチャートである。
ステップS201により,入力した変数分類表T′の全
ドメインD1,D2,…,Dnについて以下の処理を繰
り返す。
【0084】ステップS202では,ドメインDi中に
変数候補の集合Sがあるかどうかを判定する。変数候補
の集合とは,{ }で囲まれた変数群である。変数候補
の集合Sがある場合にはステップS203の処理を行
い,変数候補の集合Sがない場合には,次のドメインの
処理へ移る。
【0085】ステップS203では,ドメインDi以外
の変数分類表T′中のドメインを参照し,変数候補の集
合Sのメンバ変数を全て含むドメインD′を探す。ステ
ップS204では,変数候補の集合Sのメンバ変数を全
て含むドメインD′が存在するかどうかを判定する。ド
メインD′が存在する場合には,ステップS205の処
理を行い,ドメインD′が存在しない場合には,次のド
メインの処理に移る。
【0086】ステップS205では,ドメインDiのメ
ンバ変数のうち,ドメインD′にないものを,ドメイン
D′へ追加し,ドメインDiを消去する。ステップS2
06では,新しいドメインD′のメンバ変数のみで構成
されている変数候補の集合を持つドメインが変数分類表
T′にあるかどうかを判定する。そのようなドメインが
変数分類表T′にある場合にはステップS207の処理
を行う。ない場合には,次のドメインの処理へ移る。
【0087】ステップS207では,該当する全てのド
メインをドメインD′にマージする。全ドメインについ
て以上の処理を実行したならば,ステップS208によ
り,新しい変数分類表T″を出力する。例えば,ドメイ
ン[A,{B,C}],[B,C,D],[K,L,
{A,B}],…を含む変数分類表T′が入力された場
合,以下のように処理される。ドメインDi:[A,
{B,C}]が処理対象のとき,ドメインDiの変数候
補の集合S:{B,C}を全て含むドメインD′:
[B,C,D]が存在するので,ドメインD′:[B,
C,D]にドメインDiのメンバ変数「A」を追加して
新たなドメインD′:[A,B,C,D]とし,ドメイ
ンDi:[A,{B,C}]を消去する。
【0088】さらに,新たなドメインD′のメンバ変数
のみで構成されている変数候補の集合を持つドメイン
[K,L,{A,B}]があるので,これをドメイン
D′にマージして,ドメインD′[A,B,C,D,
K,L]とする。ここで,ドメイン[A,B,C,D,
K,L],…を含む変数分類表T′を新たな変数分類表
T″として出力する。
【0089】図12は,ドメイン定義抽出手段17の処
理フローチャートおよびデータ構造の例を示す図であ
る。ステップS41では,制約条件抽出手段13から得
た制約条件表14と,変数分類手段15から得た変数分
類表16とを入力する。
【0090】ステップS42では,変数分類表16の各
変数グループに制約条件を付加してドメイン表9を作
る。各ドメインの制約条件は,該当変数の制約条件の和
(OR)とする。ここで,必要であれば,ドメイン名等
をキーボード等の入力手段によりユーザが登録する。
【0091】ステップS43では,プログラムのデータ
宣言部を読み,従属する変数がそれぞれ共通のドメイン
に属しているような変数があれば,1ドメインとして,
ドメイン表9に追加する。例えば,図44(A)に示す
COBOLプログラムの場合,「受注日付」,「納品日
付」は,ともにドメイン「日」,「月」,「年」内の変
数で構成されているので,ドメイン「年月日」をドメイ
ン表9に追加する。
【0092】次に,プログラム解析装置1による処理の
具体例を説明する。図13〜図15は,プログラム解析
装置1が処理対象として入力するCOBOLプログラム
の例,図16は,本実施例において用いるエラー処理判
定支援情報ファイル121の例,図17は,プログラム
解析装置1により出力されたドメイン定義抽出結果の例
を示す。
【0093】図16に示すように,エラー処理判定支援
情報ファイル121には,「LABEL:エラー処理」
と定義されているので,これによりプログラム中のエラ
ー処理を判定する。図13〜図15のCOBOLプログ
ラムについて作成された制御フローをトラバースするこ
とにより,「GO TO エラー処理」の実行文から直
前の条件式を得る。これによって,次のような条件式が
得られる。
【0094】(1) 「オーダ番号GET<=0」 (2) 「品目番号<=0 OR 品目番号 IS NOT
NUMERIC」 (3) 「(受注数量E>未引当在庫数量SM) AND
(商品区分SM=“0”)」 (4) 「(納入予定年月日<受注年月日+14) AND
(商品区分SM=“1”)」 これらの条件式から,「オーダ番号GET>0」,「品
目番号>0」,「品目番号 IS NUMERIC」の
制約条件が得られる。
【0095】また,変数分類手段15による変数のグル
ープ化によって,図17の左側の欄に変数名リストとし
て示すような変数分類結果が得られ,この変数分類結果
と上記制約条件とから図17に示すようなドメイン定義
情報が得られる。
【0096】このドメイン定義情報の出力は,プログラ
ムの解読等に非常に有用であるが,上記制約条件の出力
または変数分類結果の出力だけでも,プログラムの解読
等に十分に有用であることは言うまでもない。
【0097】次に,図2に示すプログラム解析表示装置
2の詳細について説明する。最初に,図18〜図23に
従って,ドメイン解析手段21によりジョブ制御言語2
4を用いてドメイン間の関係を得る処理について説明す
る。
【0098】図18および図19は解析対象となるCO
BOLプログラムの例,図20は各プログラム中に出現
する変数をドメインに分類した例,図21はジョブ制御
言語(JCL)の例,図22はCOBOLプログラムが
扱うファイルレコードの相対番地の例,図23はジョブ
制御言語を用いた場合のドメイン間の関係を解析する処
理の流れを示している。
【0099】図18に示すCOBOLプログラムのファ
イルFILE_1は,プログラムPROG_A, プログ
ラムPROG_Bを持ち,図19に示すCOBOLプロ
グラムのファイルFILE_2は,プログラムPROG
_Cを持つ。
【0100】プログラム解析装置1によって,事前に図
21に示すように,各プログラムPROG_A, PRO
G_B毎の変数がドメインに分類されているとする。こ
のドメイン分類では,図18に示すプログラム中の行番
号が41の文に出現する代入関係により,変数VAR_
A1と変数VAR_A2が,また行番号が42の文によ
り変数VAR_A1と変数VAR_A3が同一ドメイン
に分類されることが示されている。同様に,プログラム
中の行番号が86の文に出現する代入関係により,変数
VAR_B1と変数VAR_B2が同一ドメインに分類
されることが示されている。
【0101】しかし,図20に示すドメイン分類では,
プログラムという単位毎のドメインの分類は把握できて
も,「プログラムPROG_A, PROG_Bに対する
ドメインに,どのような関係があるか」までは,このま
までは把握できない。
【0102】そこで,ドメイン解析手段21では,図2
1に示すようなジョブ制御言語(JCL)を用いて,ド
メイン間の関係を解析する。図21に示すJCLは,
「プログラムPROG_A, プログラムPROG_Bを
この順で実行する」ことを記述したものであり,この記
述から,プログラムPROG_AとプログラムPROG
_Bの入力ファイル(論理ファイル名=IN_FIL
E) が共に「FILE_2」であることがわかる。
【0103】このことから,プログラムPROG_Aの
入力ファイルINFILE_A(図18の行番号12参
照)と,プログラムPROG_Bの入力ファイルINF
ILE_B(図18の行番号52参照)とが等しいこと
がわかり,従って,入力ファイルINFILE_A,I
NFILE_Bの各々の定義(図18の行番号22〜2
8,行番号62〜69)により,変数VAR_A1と変
数VAR_B1とが,実は同一の相対番地を占める変数
であることが得られる。図22は,入力ファイルINF
ILE_AとINFILE_Bの同じ相対番地に割り当
てられている変数の関係を示している。
【0104】変数VAR_A1と変数VAR_B1とが
同じドメインに属することがわかることにより,さら
に,図20に示すドメイン分類によって,ドメインDO
MAIN_A1とDOMAIN_B1とが,実は同じド
メインであることがわかる。
【0105】ジョブ制御言語を用いた場合のドメイン解
析手段21によるドメイン間の関係解析処理の流れを,
図23に従って説明する。ステップS51では,プログ
ラム解析装置1を用いて,各プログラム毎に変数をドメ
インに分類する。この結果をリストX1として保持す
る。リストX1は,例えばプログラム名,ドメイン名,
各ドメインに属する変数名等の対応情報を持つ。
【0106】ステップS52では,ジョブ制御言語を読
み込み,実行する各プログラムの各論理ファイル名(I
N_FILE, OUT−FILE等)に対して,物理フ
ァイル名(FILE_2,FILE_N等)を取り出
し,リストX2にその対応情報を保持する。
【0107】次に,ステップS53では,各論理ファイ
ル名に対して,同一の物理ファイル名を持つプログラム
を探し出し,ファイル名をリストX3に保持する。この
例では,物理ファイル名=FILE_2が等しいプログ
ラムPROG_A, プログラムPROG_Bのそれぞれ
の論理ファイルIN_FILEに対応するINFILE
_AとINFILE_Bのリストが得られる。
【0108】ステップS54では,リストX3を参照
し,同一物理ファイル名を持つプログラムが存在するか
どうかを判定する。存在する場合には,ステップS55
を実行し,存在しない場合またはすべての物理ファイル
に対する処理を終了したならば,ステップS56へ進
む。
【0109】ステップS55では,プログラム等のDA
TA DIVISIONの定義を参照して,共通の相対
番地を持つ変数のグループを拾い出し,リストX4に保
持する。この例では,変数VAR_A1と変数VAR_
B1とが同じ相対番地を持つ変数として抽出され,リス
トX4に格納される。その後,ステップS54へ戻り,
次の同一物理ファイル名を持つプログラムに対して同様
に処理を繰り返す。
【0110】ステップS56では,リストX4に保持し
た各変数グループに対して,その変数が含まれるリスト
X1内のドメイン同士を同一ドメインとする。この例で
は,リストX1とリストX4とから,ドメインDOMA
IN_A1とドメインDOMAIN_B1とが同一ドメ
インであることが得られる。
【0111】以上のようにして,これまではわからなか
った複数プログラム間のドメインの関係が,ジョブ制御
言語を用いることにより,プログラムという枠を越えて
容易に得られるようになる。
【0112】ドメイン間の関係をジョブ制御言語を用い
るのではなく,プログラムの呼び出し関係の情報,すな
わち図2に示すCALL情報25を用いることにより解
析することもできる。
【0113】次に図24〜図28に従って,ドメイン解
析手段21によりCALL情報25を用いてドメイン間
の関係を得る処理について説明する。図24および図2
5は解析対象となるCOBOLプログラムの例,図26
はプログラムの呼び出し関係の例,図27は各プログラ
ム中に出現する変数をドメインに分類した例,図28は
CALL情報(プログラムの呼び出し関係の情報)を用
いた場合のドメイン間の関係を解析する処理の流れを示
している。
【0114】この例では,図24に示すプログラムPR
OG_AとプログラムPROG_Bとから,図25に示
すプログラムSUB_PROGが呼び出されている。す
なわち,各プログラム間に図26に示すようなプログラ
ムの呼び出し関係がある。
【0115】このプログラムの呼び出しの際に,USI
NG指定がなされていることにより,プログラムPRO
G_Aの変数VAR_X1, VAR_X2, VAR_X
3の値が,それぞれプログラムSUB_PROGの変数
VAR_A,VAR_B,VAR_Cに引き渡され,プ
ログラムSUB_PROG内で具体的な計算が行われ
る。同様に,プログラムPROG_Bの変数VAR_Y
1, VAR_Y2, VAR_Y3の値が,それぞれプロ
グラムSUB_PROGの変数VAR_A,VAR_
B,VAR_Cに引き渡され,プログラムSUB_PR
OG内で処理される。
【0116】一方,各プログラム毎のドメインの分類
は,プログラム解析装置1によって,例えば図27に示
すように求めることができる。このドメイン分類によれ
ば,プログラムPROG_Aにおいては変数VAR_X
3と変数VAR_X4とが,同一ドメインに含まれ,プ
ログラムSUB_PROGにおいては変数VAR_A,
VAR_B,VAR_Cが同一ドメインに含まれること
がわかるので,呼び出し元のプログラムPROG_Aに
おいても,実は変数VAR_X1, VAR_X2, VA
R_X3が同一ドメインであることがわかる。すなわ
ち, DOMAIN-A1 =[VAR-X3, VAR-X4] =[VAR-X1, VAR-X2, VAR-X3, VAR-X4] であり,ドメインDOMAIN_A1とドメインDOM
AIN_SUB1とが同等であることがわかる。
【0117】DOMAIN-A1 = DOMAIN-SUB1 また,プログラムPROG_Bにおいては変数VAR_
Y1, VAR_Y2,VAR_Y3が同一ドメインに含
まれているので,USING指定により,プログラムP
ROG_Aの場合と同様にして, DOMAIN-B1 = DOMAIN-SUB1 であることがわかり,これから,ドメインDOMAIN
_SUB1を仲立ちとして, DOMAIN-A1 = DOMAIN-B1 という関係も得られる。
【0118】プログラムの呼び出し関係の情報(CAL
L情報)を用いた場合のドメイン解析手段21によるド
メイン間の関係解析処理の流れを,図28に従って説明
する。
【0119】ステップS501では,プログラム解析装
置1を用いて,各プログラム毎に変数をドメインに分類
する。この結果をリストY1として保持する。リストY
1は,例えばプログラム名,ドメイン名,各ドメインに
属する変数名等の対応情報を持つ。
【0120】ステップS502では,CALLの呼び出
し関係をもとに,値の引き渡しが行われる変数の組のリ
ストを,リストY2に保持する。この例では,VAR_
X1, VAR_X2, VAR_X3とVAR_A,VA
R_B,VAR_Cのそれぞれの組,またVAR_Y
1, VAR_Y2, VAR_Y3とVAR_A,VAR
_B,VAR_Cのそれぞれの組のリストが得られる。
【0121】次に,ステップS503では,リストY2
に保持した各変数グループに対して,その変数が含まれ
るリストY1内のドメイン同士を同一ドメインとする。
この例では, DOMAIN-A1 = DOMAIN-SUB1 DOMAIN-B1 = DOMAIN-SUB1 が得られ,さらに,これらから, DOMAIN-A1 = DOMAIN-B1 が得られる。
【0122】以上のように,プログラム単位ではわから
なかった変数のドメインへの分類が,CALLの呼び出
し関係を用いることによって,新たにわかるようにな
り,新たな統合された分類が可能になる。
【0123】さらに,ユーザ入力情報(図2のユーザ入
力情報26)を用いて,ドメイン間の関係を得ることも
できる。図29〜図32に従って,ドメイン解析手段2
1によりユーザ入力情報を用いてドメイン間の関係を得
る処理について説明する。
【0124】図29および図30は解析対象となるCO
BOLプログラムの例,図31は各プログラム中に出現
する変数をドメインに分類した例,図32はユーザ入力
情報を用いた場合のドメイン間の関係を解析する処理の
流れを示している。
【0125】図29および図30に示すようなファイル
FILE_1とFILE_2に格納されたプログラムP
ROGRAM1とPROGRAM2とについて,ユーザ
入力情報からドメイン間の関係情報を得るものとする。
図31に示すように,各プログラム毎のドメイン分類
は,図1に示すプログラム解析装置1によって求められ
る。
【0126】この例のような場合,プログラムPROG
RAM1とプログラムPROGRAM2で行われている
処理は共に明らかであるので,ユーザにとってはプログ
ラム毎のドメイン分類を得るだけでなく,全体をまとめ
ての「日付」,「各科目の得点」,「平均点」という観
点からの分類を得ることが望まれる。この点に鑑みて,
本例では,ユーザによる関係付け条件の指定を可能と
し,ユーザが入力した関係付けの条件によって全体のド
メイン間の関係情報を得る。
【0127】例えば,ユーザが「各科目の得点」という
観点から,キーワード「KAMOKU」を与えたとす
る。ドメイン解析手段21は,キーワード「KAMOK
U」を変数名(または変数名の一部)に持つ変数群と,
その変数群を含むドメインを全プログラムから探し出
し,各プログラムに対して得られたドメイン群を同等な
ものとみなす処理を行う。
【0128】以上の,ユーザ入力情報を用いた場合のド
メイン解析手段21によるドメイン間の関係解析処理の
流れを,図32に従って説明する。ステップS511で
は,プログラム解析装置1を用いて,各プログラム毎に
変数をドメインに分類する。この結果をリストZ1とし
て保持する。リストZ1は,例えばプログラム名,ドメ
イン名,各ドメインに属する変数名等の対応情報を持
つ。
【0129】ステップS512では,ユーザ入力によ
り,ドメインの関係付け情報Z2を得る。この例では,
ユーザは関係付け情報Z2としてキーワードを入力する
ものとし,そのキーワードを変数名の先頭に含む変数を
同一ドメインに属するものとして扱うようにしている。
他にユーザの関係付け情報として,ある特定範囲の数字
を含む変数名,ある特定の文字を含む変数名というよう
に,プログラム作成時に変数名の命名規則として規定さ
れた種々の条件を,関係付け情報として用いることも可
能である。
【0130】ステップS513では,入力された関係付
け情報Z2に当てはまる変数をリストZ1内から探し出
し,該当するリストZ1内のドメイン同士を同一のドメ
インとする。これによって,プログラムPROGRAM
1のドメインDOMAIN1_2とプログラムPROG
RAM2のドメインDOMAIN2_2とが同一のドメ
インであることがわかる。
【0131】DOMAIN1-2 = DOMAIN2-2 以上のように,ユーザの要求に従ってドメイン間の関係
を得ることも可能である。
【0132】次に,図2に示す表示処理手段22による
グラフ表示処理について説明する。図33は,ドメイン
間の関係および変数の代入関係の表示をグラフ表示した
例を示す図である。
【0133】ドメイン間の関係と変数の代入関係の情報
から,(a) ドメインを中心にしたグラフ表示,(b) 変数
の代入関係を中心にしたグラフ表示を行うことができ
る。いずれも次のような表示を行う。
【0134】(1) 各変数を丸や矩形等の図形で表す。 (2) ある変数から他の変数への代入を,例えば図33
(A)に示すように,代入元変数を表す図形から代入先
変数を表す図形への矢印で表す。あるいは,図33
(B)に示すように,代入元変数の図形を左側に,代入
先変数の図形を必ずその右側に描くという規約を設けた
上で,代入元変数の図形と代入される変数の図形とを線
で繋ぐ。
【0135】(3) 図33(C)に示すように,同一のド
メインに含まれる変数/変数とその代入関係を描き,そ
れらの変数(図形)全てを取り囲むようにして,ドメイ
ンを表す図形を描く。
【0136】(4) 図33(D)に示すように,同一ドメ
イン同士を線で結ぶ。特に,ドメインを中心にしたグラ
フ表示では,例えば図33(E)に示すように,同一の
ドメインに分類されたドメイン同士を線で結ぶ。その際
に,変数の代入関係は別段意識して描くことはせず,そ
のドメインに含まれる変数を,変数名や簡単な図形等で
書き表す。各変数については,必要に応じてその詳細な
情報を得て表示することも可能である。この場合,変数
について必要と思われる情報を,変数情報の追加項目と
して保持しておけばよい。
【0137】また,変数の代入関係を中心にしたグラフ
表示では,例えば図33(F)に示すように,代入元の
変数を表す図形から代入先の変数を表す図形への流れを
きちんと描くことを重視し,複数プログラムに跨がって
同一の変数とみなせる変数を同一であることがわかるよ
うな形で表す。変数が同一とみなせることを表すには,
ドメインを描いて線で結ぶというような表現,またはそ
の変数同士を直接,線で結ぶなどの表現が可能である。
【0138】図34は変数とドメインの情報(対応表)
の例,図35はドメイン関係情報の例,図36はドメイ
ン間の関係と変数代入関係のグラフ表示例を示す。図3
4に示す対応表は,図18および図19に示すCOBO
Lプログラム中に出現する全変数とドメインについての
情報を保持しており,プログラム解析装置1によって得
られたものである。これらの情報からドメイン解析手段
21によって,前述したドメイン間の関係を解析する処
理により図35に示すようなドメイン関係情報が得られ
る。
【0139】図34および図35に示す情報をもとにし
て,図18および図19に示すCOBOLプログラムに
対するドメイン間の関係と変数の代入関係をグラフ表示
したものが,図36である。このグラフ表示において,
楕円は変数を表し,楕円を結ぶ矢印が代入元と代入先を
表す。変数の代入の関係を囲む矩形(枠)は,その変数
を含むドメインであり,矩形間を結ぶ線は同等なものと
分類されたドメイン同士であることを表している。
【0140】すなわち,図36に示すグラフ表示は,プ
ログラムPROG_AのドメインDA1は,変数VAR
_A1, VAR_A2, VAR_A3を持ち,VAR_
A2およびVAR_A3には,VAR_A1の値が代入
されることを表している。また,プログラムPROG_
BのドメインDB1は,変数VAR_B1, VAR_B
2を持ち,VAR_B2からVAR_B1へ値が代入さ
れることを表している。
【0141】一方,図35のドメイン関係情報からドメ
インDA1とドメインDB1とを同一とみなし,またド
メインDA2とドメインDB3とを同一とみなすことが
できるので,ドメインDA1とドメインDB1の矩形同
士, およびドメインDA2とドメインDB3の矩形同士
をそれぞれ線で結んで表す。
【0142】図37は,表示処理手段22によるドメイ
ンを中心にしたグラフ表示の処理フローチャートであ
る。まず,ステップS61では,図34に示すような対
応表において,処理対象のプログラムがあるかどうかを
判定する。プログラムがある場合,ステップS62以下
の処理を行い,プログラムがない場合,ステップS64
へ進む。
【0143】次のステップS62では,着目したプログ
ラムに対して未処理のドメインがあるかどうかを判定す
る。未処理のドメインがない場合,ステップS61へ戻
って次のプログラムについての処理へ移る。
【0144】未処理のドメインがある場合,ステップS
63によって,そのドメインを矩形の枠で描画し,その
内側に変数名または変数を表すものを描く。その後,ス
テップS63へ戻り,他のドメインについて同様に処理
を繰り返す。
【0145】ステップS64では,描画したドメインの
関係を見て,関係のあるドメイン同士を線で結ぶことに
より,ドメイン間の関係を表示する。図38は,表示処
理手段22による変数の代入関係を中心にしたグラフ表
示の処理フローチャートである。
【0146】ステップS601では,図34に示すよう
な対応表において,処理対象のプログラムがあるかどう
かを判定する。プログラムがある場合,ステップS60
2以下の処理を行い,プログラムがない場合,ステップ
S605へ進む。
【0147】次のステップS602では,着目したプロ
グラムに対して未処理のドメインがあるかどうかを判定
する。未処理のドメインがない場合,ステップS601
へ戻って次のプログラムについての処理へ移る。
【0148】未処理のドメインがある場合,ステップS
603によって,さらにそのドメインについて代入関係
にある変数があるかどうかを判定する。代入関係にある
変数がない場合,ステップS602へ戻り,次のドメイ
ンについて同様に処理を繰り返す。
【0149】代入関係にある変数がある場合,ステップ
S604により,それらの変数の代入関係を描く。次
に,ステップS603へ戻り,同様に処理を繰り返す。
すべてのプログラムについての以上の処理が終了したな
らば,次に,ステップS605により,ドメインを描く
かどうかを判定し,ドメインを描く場合,ステップS6
06を実行し,ドメインを描かない場合には,ステップ
S607を実行する。ドメインを描くか描かないかは,
ユーザの指定情報によって判断する。
【0150】ドメインを描く場合,ステップS606に
よりドメインを描き,同一ドメインを線で結ぶ。一方,
ドメインを描かない場合には,ステップS607により
同等な変数を線で結ぶ処理を行う。
【0151】次に,図2に示す表示処理手段22による
対応ソースコードの表示処理について説明する。図39
は,ソースコードと出現行番号の表示例を示す。前述し
た図36のドメイン・グラフ表示画面において,ユーザ
が変数VAR_A1の図形(楕円)を,マウス等のポイ
ンティング・デバイスにより選択すると,図39に示す
ソースリスト表示画面のように,その変数VAR_A1
が出現するソースの行をハイライト表示する。または,
図39に示す出現行番号表示画面のように,変数VAR
_A1が出現するソースの行番号をリストアップしたも
のを表示する。必要に応じてその双方を表示するように
してもよい。これによって,変数VAR_A1が行番号
41と42の文に出現することがわかる。
【0152】図40は,表示処理手段22によるソース
コード表示処理のフローチャートである。まず,ステッ
プS71では,ユーザからの入力または事前の環境設定
情報により,強調表示の表示方法として,枠囲み,アン
ダーライン,反転,色別等を設定する。また,出現行番
号表示画面による行番号表示を行うか,ソースリスト表
示画面によるソースコードそのものの表示を行うかを設
定する。
【0153】ステップS72では,グラフ表示画面にお
いて選択されたドメインまたは変数の指定を入力する。
ステップS73では,図34に示すような対応表を参照
し,指定されたドメイン/変数に対応する行番号のリス
トを表示する。またはソースコードの行をステップS7
1で設定された表示方法に従って表示する。
【0154】一方,図39に示すソースコード表示処理
とは逆に,ソースリスト表示画面で指定された文に含ま
れる変数やドメインを,ドメイン・グラフ表示画面にお
いて,強調表示することも可能である。
【0155】図41は,図2に示す表示処理手段22に
よるグラフの強調表示例を示す。例えば,図41に示す
ようなソースリスト表示画面において,行番号86のソ
ースコードがマウス等によりクリックされると,その行
に含まれる変数の関係とその変数が含まれるドメインと
が,図41に示すドメイン・グラフ表示画面のように,
強調して表示される。すなわち,行番号86に含まれる
変数が,図34の対応表からVAR_B1とVAR_B
2であることがわかるため,これらを表す楕円およびこ
れらを含むドメインDB1の矩形がハイライト表示され
る。
【0156】図42は,表示処理手段22によるドメイ
ン/変数強調表示処理のフローチャートである。まず,
ステップS81では,ユーザからの入力または事前の環
境設定情報により,強調表示の表示方法として,枠囲
み,反転,色別等を設定する。また,強調表示の表示対
象として,ドメイン,変数またはこれらの双方のいずれ
かを設定する。
【0157】ステップS82では,エディタ等によるソ
ースリスト表示画面において指定された行の行番号を入
力する。ステップS83では,図34に示すような対応
表を参照し,指定された行番号に対応するドメイン/変
数を,ステップS81で設定された表示方法に従って表
示する。
【0158】次に,図2に示すドメイン要素の関係出力
手段23によるドメイン要素の関係情報出力処理の例を
説明する。例えば,図18および図19に示すCOBO
Lプログラムにおいて,変数VAR_A13に対応する
他の変数を,全てのプログラムの中から探し出す場合
に,本処理が有効となる。本処理では,具体的には,変
数「年」「月」「日」がまとめて変数「年月日」として
構造化されているような場合に,変数「年月日」が属す
るドメインの関係情報を利用して,変数「年」等に対応
する他のすべての変数の情報を自動抽出するような処理
を行う。
【0159】図43は,そのドメイン要素の関係情報出
力処理のフローチャートである。ステップS91では,
指定された変数(ドメイン要素)が属するドメインを求
める。例えば図18に示すCOBOLプログラムにおい
て変数VAR_A13が指定された場合,変数VAR_
A13が変数VAR_A1に含まれることから,図34
に示す対応表をもとにドメインDA1を得る。
【0160】ステップS92では,求めたドメインと同
一関係にあるドメインがあるかどうかを調べる。同一関
係にあるドメインがある場合には,ステップS93の処
理を行い,他にない場合にはステップS94へ進む。こ
の例では,図35に示すドメイン関係情報から,ドメイ
ンDA1と同一関係にあるドメインDB1があることが
わかるので,これについてステップS93が実行され
る。
【0161】ステップS93では,同一関係にある他の
ドメイン中の対応する変数(ドメイン要素)をすべて抽
出する。この例では,ドメインDB1に属する変数VA
R_B1が求められ,さらに変数VAR_A1と変数V
AR_B1の関係から,図22に示すような相対番地が
考慮され,変数VAR_A13に対応する変数VAR_
B12が求められる。
【0162】次にステップS92へ戻り,同様に処理を
繰り返し,すべての同一関係にあるドメインについての
処理が終了したならば,ステップS94によって,ステ
ップS93により抽出した変数(ドメイン要素)の対応
関係情報を表示する。この例では,変数VAR_A13
が変数VAR_B12に対応することが表示され,これ
らは擬似的なドメインを構成することが示される。
【0163】変数の対応関係として,同一の関係だけで
はなく,例えば図18に示す変数VAR_A11または
変数VAR_A12と,変数VAR_B11の関係のよ
うに,包含関係を自動抽出して表示することも可能であ
る。ドメイン分類情報を利用することにより,これらの
処理を容易に行うことができる。
【0164】図2に示すプログラム解析表示装置2は,
図1に示すプログラム解析装置1が抽出したプログラム
毎のドメイン定義情報もしくはドメインに分類した変数
情報に基づいて処理を行うが,例えば1つのプログラム
においてドメインを構成しない単独の変数であっても,
他のプログラムとの関係ではドメインを構成することも
ある。
【0165】この場合,プログラム解析装置1におい
て,予め単独の変数についても1つのドメインを構成す
るとして,それにドメインIDを与えて処理してもよ
く,また,プログラム解析表示装置2において,必要に
なったときに,各プログラム中に単独で現れる変数に対
してドメインIDを与えて処理してもよい。例えば,複
数のプログラムにおいて,同じ名前の外部変数名は,同
一関係にあるドメインとして扱うことができる。同じ名
前のデータベース・スキーマ名を持つ変数なども同様で
ある。
【0166】
【発明の効果】一般に,プログラムの仕様としてドメイ
ンを定義付けることを,そのドメイン内の変数のエラー
処理条件,変数が表現する対象や,利用制約などを明確
にするために,プログラムの開発・作成時に,プログラ
ム設計者が行っている。しかし,既存のプログラムに
は,このようなドメイン定義情報がないことがあり,ま
たドメイン定義情報がある場合でも,人間が作成したも
のであるので,正確に反映されていない可能性もある。
【0167】本発明のプログラム解析装置によれば,ド
メイン定義が明確に行われていなかった既存プログラム
を解析し,ドメイン定義情報を自動抽出することによ
り,プログラムの理解を助けるという効果を奏する。例
えば,「年」を表現する変数を一律に2桁から4桁に修
正したい場合,プログラムからこのような「年」を表現
する変数を容易に検索することができるようになる。す
なわち,既存のプログラムのデバッグ,保守,改良等の
際に,種々の名前を持つ変数を制約条件に基づいたカテ
ゴリーに分けた情報を利用することができるようになる
ので,プログラミングあるいはプログラムの理解を速く
かつ容易に行えるようになる。
【0168】また,大規模なプログラムは,通常,その
処理内容に応じて複数のプログラムから構成される。し
かも,大抵の場合において,それらの個々のプログラム
は異なる人によって書かれるため,作成規約を設けては
いても,全体的な処理の中でどのような変数を用いて情
報が流れていくかを把握するのは難しい。
【0169】本発明のプログラム解析表示装置によれ
ば,複数プログラムの各々において異なる文字列で表さ
れていた変数の関係を解析し,すなわち,複数のプログ
ラムにわたって同等な関係にある変数群を自動抽出し,
その解析結果をグラフ表示によって視覚的にわかりやす
く表示することができるため,特に多数のプログラムか
らなる一連の処理流れを容易に理解することが可能にな
る。
【0170】また,ある変数がソースリスト(ソースコ
ード)上のどこで使われているのか,逆に,ソースリス
ト上のある変数と関係のある変数がどれであるかなど
を,容易に把握することができるようになるという点で
も,プログラムの理解を支援する技術として大きく貢献
する。
【図面の簡単な説明】
【図1】本発明に係るプログラム解析装置の構成例を示
す図である。
【図2】本発明に係るプログラム解析表示装置の構成例
を示す図である。
【図3】制約条件抽出手段の構成例を示す図である。
【図4】エラー判定条件抽出処理の例を示す図である。
【図5】条件式/制約条件変換処理の例を示す図であ
る。
【図6】制約条件抽出手段の処理フローチャートであ
る。
【図7】変数分類手段の処理フローチャートおよびデー
タ構造を示す図である。
【図8】『処理1』のフローチャート(その1)であ
る。
【図9】『処理1』のフローチャート(その2)であ
る。
【図10】『処理1』から得られるデータ構造の例を示
す図である。
【図11】『処理2』のフローチャートである。
【図12】ドメイン定義抽出手段の処理フローチャート
およびデータ構造を示す図である。
【図13】入力するプログラム例(その1)を示す図で
ある。
【図14】入力するプログラム例(その2)を示す図で
ある。
【図15】入力するプログラム例(その3)を示す図で
ある。
【図16】エラー処理判定支援情報ファイルの例を示す
図である。
【図17】ドメイン定義抽出結果の例を示す図である。
【図18】解析対象となるCOBOLプログラムの例を
示す図である。
【図19】解析対象となるCOBOLプログラムの例を
示す図である。
【図20】各プログラム中に出現する変数をドメインに
分類した例を示す図である。
【図21】ジョブ制御言語(JCL)の例を示す図であ
る。
【図22】COBOLプログラムが扱うファイルレコー
ドの相対番地の例を示す図である。
【図23】ジョブ制御言語を用いた場合のドメイン間の
関係を解析する処理の流れを示す図である。
【図24】解析対象となるCOBOLプログラムの例を
示す図である。
【図25】解析対象となるCOBOLプログラムの例を
示す図である。
【図26】プログラムの呼び出し関係の例を示す図であ
る。
【図27】各プログラム中に出現する変数をドメインに
分類した例を示す図である。
【図28】プログラムの呼び出し関係の情報を用いた場
合のドメイン間の関係を解析する処理の流れを示す図で
ある。
【図29】解析対象となるCOBOLプログラムの例を
示す図である。
【図30】解析対象となるCOBOLプログラムの例を
示す図である。
【図31】各プログラム中に出現する変数をドメインに
分類した例を示す図である。
【図32】ユーザ入力情報を用いた場合のドメイン間の
関係を解析する処理の流れを示す図である。
【図33】ドメイン間の関係および変数の代入関係の表
示をグラフ表示した例を示す図である。
【図34】変数とドメインの情報(対応表)の例を示す
図である。
【図35】ドメイン関係情報の例を示す図である。
【図36】ドメイン間の関係と変数代入関係のグラフ表
示例を示す図である。
【図37】表示処理手段によるドメインを中心にしたグ
ラフ表示の処理フローチャートである。
【図38】表示処理手段による変数の代入関係を中心に
したグラフ表示の処理フローチャートである。
【図39】ソースコードと出現行番号の表示例を示す図
である。
【図40】表示処理手段によるソースコード表示処理の
フローチャートである。
【図41】表示処理手段によるグラフの強調表示例を示
す図である。
【図42】表示処理手段によるドメイン/変数強調表示
処理のフローチャートである。
【図43】ドメイン要素の関係出力手段によるドメイン
要素の関係情報出力処理のフローチャートである。
【図44】従来技術の説明図である。
【符号の説明】
1 プログラム解析装置 11 解析対象プログラム情報 12 エラー処理判定支援情報 13 制約条件抽出手段 131 エラー判定条件抽出手段 132 条件式/制約条件変換手段 14 制約条件表 15 変数分類手段 16 変数分類表 17 ドメイン定義抽出手段 18 ドメイン定義情報 2 プログラム解析表示装置 21 ドメイン解析手段 22 表示処理手段 23 ドメイン要素の関係出力手段 24 ジョブ制御言語(JCL) 25 CALL情報 26 ユーザ入力情報 27 ドメイン関係情報 28 ディスプレイ
───────────────────────────────────────────────────── フロントページの続き (72)発明者 川辺 敬子 神奈川県川崎市中原区上小田中4丁目1番 1号 富士通株式会社内 (72)発明者 長橋 賢児 神奈川県川崎市中原区上小田中4丁目1番 1号 富士通株式会社内 (72)発明者 上原 三八 神奈川県川崎市中原区上小田中4丁目1番 1号 富士通株式会社内

Claims (10)

    【特許請求の範囲】
  1. 【請求項1】 プログラムを解析し,プログラム中の変
    数に関する解析情報を出力するプログラム解析装置であ
    って,プログラムのエラー処理部分を認識し,エラー処
    理を行う条件を抽出するエラー判定条件抽出手段と,こ
    のエラー判定条件抽出手段の出力を分析して特定の変数
    の制約条件を得る条件式/制約条件変換手段とを備え,
    プログラム中の変数に対して与えられた制約条件を抽出
    して出力することを特徴とするプログラム解析装置。
  2. 【請求項2】 プログラムを解析し,プログラム中の変
    数に関する解析情報を出力するプログラム解析装置であ
    って,プログラムのある実行文中で複数の変数が用いら
    れている場合に,それらの変数の関係をその実行文の種
    類またはオペランドの種類によって分析し,変数の値が
    同じドメインを表現するかどうかによってグループに分
    ける変数分類手段を備え,プログラム中の変数を同じド
    メインを表現するかどうかによって分類した情報を出力
    することを特徴とするプログラム解析装置。
  3. 【請求項3】 プログラムを解析し,プログラム中の変
    数に関する解析情報を出力するプログラム解析装置であ
    って,プログラムのエラー処理部分を認識し,エラー処
    理を行う条件を抽出するエラー判定条件抽出手段とこの
    エラー判定条件抽出手段の出力を分析して特定の変数の
    制約条件を得る条件式/制約条件変換手段とからなる制
    約条件抽出手段と,プログラムのある実行文中で複数の
    変数が用いられている場合に,それらの変数の関係をそ
    の実行文の種類またはオペランドの種類によって分析
    し,それらの変数の値が同じドメインを表現するかどう
    かによってグループに分ける変数分類手段と,前記変数
    分類手段から得た複数の変数が共通に表現するドメイン
    に関する分類情報と前記制約条件抽出手段から得た変数
    の制約条件とから,同じ対象を表現するドメインに関す
    る定義情報を抽出するドメイン定義抽出手段とを備え,
    プログラムの解析結果としてドメイン定義情報を出力す
    ることを特徴とするプログラム解析装置。
  4. 【請求項4】 プログラムの実行文中に出現する変数を
    同じ対象を表現するものに分類したドメインの情報を用
    いて,ドメイン間の関係を解析し表示する装置であっ
    て,各プログラム毎にドメインに分類された変数情報と
    それらの各プログラムを実行させる制御情報を記述した
    ジョブ制御言語の情報とをもとに,複数のプログラムに
    おけるドメイン間の関係を解析するドメイン解析手段
    と,解析したドメイン間の関係を表示する表示処理手段
    とを備えたことを特徴とするプログラム解析表示装置。
  5. 【請求項5】 プログラムの実行文中に出現する変数を
    同じ対象を表現するものに分類したドメインの情報を用
    いて,ドメイン間の関係を解析し表示する装置であっ
    て,各プログラム毎にドメインに分類された変数情報と
    それらの各プログラムの呼び出し関係の情報とをもと
    に,複数のプログラムにおけるドメイン間の関係を解析
    するドメイン解析手段と,解析したドメイン間の関係を
    表示する表示処理手段とを備えたことを特徴とするプロ
    グラム解析表示装置。
  6. 【請求項6】 プログラムの実行文中に出現する変数を
    同じ対象を表現するものに分類したドメインの情報を用
    いて,ドメイン間の関係を解析し表示する装置であっ
    て,各プログラム毎にドメインに分類された変数情報と
    ユーザの入力による情報とをもとに,複数のプログラム
    におけるドメイン間の関係を解析するドメイン解析手段
    と,解析したドメイン間の関係を表示する表示処理手段
    とを備えたことを特徴とするプログラム解析表示装置。
  7. 【請求項7】 請求項4,請求項5または請求項6記載
    のプログラム解析表示装置において,各プログラムにお
    ける変数間の代入の関係を保持する手段を有し,前記表
    示処理手段は,複数のプログラムに跨がるドメイン間の
    関係と,それらの各ドメインに含まれる変数間の代入の
    関係とを,グラフの形態で視覚的に表示する手段を持つ
    ことを特徴とするプログラム解析表示装置。
  8. 【請求項8】 請求項7記載のプログラム解析表示装置
    において,各プログラムにおけるドメインを構成する変
    数の代入文または代入式の出現位置を保持する手段を有
    し,前記表示処理手段は,前記グラフの表示におけるド
    メインまたは変数の指示に対し,指示されたドメインま
    たは変数を含むプログラム中の対応するソースコードま
    たはその出現位置情報を表示する手段を持つことを特徴
    とするプログラム解析表示装置。
  9. 【請求項9】 請求項7記載のプログラム解析表示装置
    において,各プログラムにおけるドメインを構成する変
    数の代入文または代入式の出現位置を保持する手段を有
    し,前記表示処理手段は,指定されたプログラムのソー
    スコードを表示する手段と,表示したプログラムのソー
    スコード中で文または変数が指定された場合に,その文
    に出現する変数または指定された変数を表す図形を,前
    記グラフの表示上で強調表示する手段を持つことを特徴
    とするプログラム解析表示装置。
  10. 【請求項10】 請求項4,請求項5または請求項6記
    載のプログラム解析表示装置において,ドメインの要素
    に含まれる変数または変数群の指定により,前記ドメイ
    ン解析手段が解析したドメイン間の関係情報に基づい
    て,同一関係にあるドメインの要素に含まれる指定され
    た変数または変数群に対応するすべての変数または変数
    群を表示するドメイン要素の関係出力手段を備えたこと
    を特徴とするプログラム解析表示装置。
JP09974596A 1996-02-08 1996-04-22 プログラム解析装置 Expired - Fee Related JP3305949B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP09974596A JP3305949B2 (ja) 1996-02-08 1996-04-22 プログラム解析装置
US08/794,368 US6110224A (en) 1996-02-08 1997-02-04 Program analyzing apparatus which categorizes variables into domains and method thereof

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP8-22295 1996-02-08
JP2229596 1996-02-08
JP09974596A JP3305949B2 (ja) 1996-02-08 1996-04-22 プログラム解析装置

Publications (2)

Publication Number Publication Date
JPH09274562A true JPH09274562A (ja) 1997-10-21
JP3305949B2 JP3305949B2 (ja) 2002-07-24

Family

ID=26359484

Family Applications (1)

Application Number Title Priority Date Filing Date
JP09974596A Expired - Fee Related JP3305949B2 (ja) 1996-02-08 1996-04-22 プログラム解析装置

Country Status (2)

Country Link
US (1) US6110224A (ja)
JP (1) JP3305949B2 (ja)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11203116A (ja) * 1998-01-14 1999-07-30 Fujitsu Ltd 変数分類装置およびそのプログラムを格納した記憶媒体
WO2009011057A1 (ja) * 2007-07-19 2009-01-22 Fujitsu Limited アプリケーション解析プログラム、アプリケーション解析方法およびアプリケーション解析装置
WO2012011145A1 (ja) 2010-07-20 2012-01-26 株式会社 日立製作所 ソフトウェア保守支援装置及びそれにより検証した電子制御装置
JP2013156786A (ja) * 2012-01-30 2013-08-15 Hitachi Automotive Systems Ltd ソフトウェアの構造可視化プログラムおよびシステム
JP2014089568A (ja) * 2012-10-30 2014-05-15 Toshiba Corp ソースコード解析装置
JP6004110B2 (ja) * 2013-07-19 2016-10-05 日産自動車株式会社 ソフトウェア検査装置、ソフトウェア検査方法、ソフトウェア検査プログラム

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7774377B2 (en) * 2003-12-03 2010-08-10 The Trizetto Group, Inc. Range definition method and system
US7430551B2 (en) * 2005-01-20 2008-09-30 International Business Machines Corporation Method to enforce domain strong typing
JP4681923B2 (ja) * 2005-04-01 2011-05-11 キヤノン株式会社 情報処理装置及びその制御方法、コンピュータプログラム、記憶媒体
JP4712512B2 (ja) * 2005-10-14 2011-06-29 富士通株式会社 プログラム変換プログラム、プログラム変換装置、プログラム変換方法
US8949786B2 (en) * 2008-12-01 2015-02-03 Kpit Technologies Limited Method and system for parallelization of sequential computer program codes
KR20120058455A (ko) * 2009-04-28 2012-06-07 인터내셔널 비지네스 머신즈 코포레이션 멀티 스레드 상에서 동작하는 프로그램의 프로그램 코드를 록 충돌이 적은 프로그램 코드로 변환하기 위한 방법, 및 그 컴퓨터 프로그램 및 컴퓨터 시스템
EP2557499A1 (en) * 2011-08-12 2013-02-13 Tata Consultancy Services Limited A system and method for automatic impact variable analysis and field expansion in mainframe systems
US9542182B2 (en) * 2013-06-18 2017-01-10 International Business Machines Corporation Standardization of variable names in an integrated development environment
US10055332B2 (en) * 2016-02-12 2018-08-21 International Business Machines Corporation Variable detection in source code to reduce errors
CN111737040B (zh) * 2020-06-22 2024-05-28 北京字节跳动网络技术有限公司 程序代码修复方法及装置

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4931928A (en) * 1988-11-09 1990-06-05 Greenfeld Norton R Apparatus for analyzing source code
US5485621A (en) * 1991-05-10 1996-01-16 Siemens Corporate Research, Inc. Interactive method of using a group similarity measure for providing a decision on which groups to combine
JP3181994B2 (ja) * 1992-09-03 2001-07-03 株式会社日立製作所 ジョブフロー仕様書自動作成方法
US5742827A (en) * 1992-11-02 1998-04-21 Fujitsu Limited Method of automatically forming program specifications and apparatus therefor
US5339433A (en) * 1992-11-19 1994-08-16 Borland International, Inc. Symbol browsing in an object-oriented development system
US5432942A (en) * 1993-06-10 1995-07-11 The United States Of America As Represented By The Secretary Of The Navy Data structure extraction, conversion and display tool
JP2755154B2 (ja) * 1994-02-23 1998-05-20 日本電気株式会社 プログラム変換処理装置およびプログラム変換処理方法
JPH0869381A (ja) * 1994-08-30 1996-03-12 Nec Ic Microcomput Syst Ltd コンパイル方式
US5822587A (en) * 1995-10-20 1998-10-13 Design Intelligence, Inc. Method and system for implementing software objects
US5838979A (en) * 1995-10-31 1998-11-17 Peritus Software Services, Inc. Process and tool for scalable automated data field replacement
US5794048A (en) * 1996-08-29 1998-08-11 Matridigm Corporation Method for classification of year-related data fields in a program
US5987253A (en) * 1996-08-29 1999-11-16 Matridigm Corporation Method for classification of year-related data fields in a program

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11203116A (ja) * 1998-01-14 1999-07-30 Fujitsu Ltd 変数分類装置およびそのプログラムを格納した記憶媒体
WO2009011057A1 (ja) * 2007-07-19 2009-01-22 Fujitsu Limited アプリケーション解析プログラム、アプリケーション解析方法およびアプリケーション解析装置
JPWO2009011057A1 (ja) * 2007-07-19 2010-09-09 富士通株式会社 アプリケーション解析プログラム、アプリケーション解析方法およびアプリケーション解析装置
US8392892B2 (en) 2007-07-19 2013-03-05 Fujitsu Limited Method and apparatus for analyzing application
WO2012011145A1 (ja) 2010-07-20 2012-01-26 株式会社 日立製作所 ソフトウェア保守支援装置及びそれにより検証した電子制御装置
US9170805B2 (en) 2010-07-20 2015-10-27 Hitachi, Ltd. Software maintenance supporting device for analyzing relationships between variables
JP2013156786A (ja) * 2012-01-30 2013-08-15 Hitachi Automotive Systems Ltd ソフトウェアの構造可視化プログラムおよびシステム
JP2014089568A (ja) * 2012-10-30 2014-05-15 Toshiba Corp ソースコード解析装置
JP6004110B2 (ja) * 2013-07-19 2016-10-05 日産自動車株式会社 ソフトウェア検査装置、ソフトウェア検査方法、ソフトウェア検査プログラム

Also Published As

Publication number Publication date
JP3305949B2 (ja) 2002-07-24
US6110224A (en) 2000-08-29

Similar Documents

Publication Publication Date Title
JP3305949B2 (ja) プログラム解析装置
US9519636B2 (en) Deduction of analytic context based on text and semantic layer
US9659073B2 (en) Techniques to extract and flatten hierarchies
CN109344230B (zh) 代码库文件生成、代码搜索、联结、优化以及移植方法
US7739257B2 (en) Search engine
US20040215612A1 (en) Semi-boolean arrangement, method, and system for specifying and selecting data objects to be retrieved from a collection
KR20060043741A (ko) 자연 언어 커맨드에 따른 표 렌더링
US9182947B2 (en) Program source code navigation
US10699112B1 (en) Identification of key segments in document images
JP2003141158A (ja) 順序を考慮したパターンを用いた検索装置および方法
CN111475196A (zh) 编译告警溯源方法、装置、电子设备及计算机可读介质
US20080059429A1 (en) Integrated search processing method and device
CN113297251A (zh) 多源数据检索方法、装置、设备及存储介质
CN117539893A (zh) 数据处理方法、介质、装置和计算设备
JP3606484B2 (ja) データベース装置
US7085759B2 (en) System and method for communicating data to a process
CN111639504A (zh) 网页的多语言翻译方法和装置及设备
Kazato et al. Incremental feature location and identification in source code
US20230044287A1 (en) Semantics based data and metadata mapping
US20090138435A1 (en) Techniques for searching and presenting search results
JPH11250073A (ja) 複数データベース意味的階層検索方法及び装置及び複数データベース意味的階層検索プログラムを格納した記憶媒体
CN113946324A (zh) 一种展示高通量测序数据结果的交互式可视化报告系统
CN114089980A (zh) 编程处理方法、装置、解释器及非易失性存储介质
CN114115872A (zh) 一种业务表达式生成和解析工具的实现方法及装置
US20230033887A1 (en) Database-platform-agnostic processing of natural language queries

Legal Events

Date Code Title Description
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20020423

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20080510

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090510

Year of fee payment: 7

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090510

Year of fee payment: 7

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100510

Year of fee payment: 8

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100510

Year of fee payment: 8

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110510

Year of fee payment: 9

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120510

Year of fee payment: 10

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130510

Year of fee payment: 11

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140510

Year of fee payment: 12

LAPS Cancellation because of no payment of annual fees