JP3062266B2 - 支援装置 - Google Patents
支援装置Info
- Publication number
- JP3062266B2 JP3062266B2 JP3056711A JP5671191A JP3062266B2 JP 3062266 B2 JP3062266 B2 JP 3062266B2 JP 3056711 A JP3056711 A JP 3056711A JP 5671191 A JP5671191 A JP 5671191A JP 3062266 B2 JP3062266 B2 JP 3062266B2
- Authority
- JP
- Japan
- Prior art keywords
- program
- expression
- evaluation
- unit
- variable
- 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.)
- Expired - Fee Related
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3664—Environments for testing or debugging software
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/32—Monitoring with visual or acoustical indication of the functioning of the machine
- G06F11/323—Visualisation of programs or trace data
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Data Mining & Analysis (AREA)
- Debugging And Monitoring (AREA)
- Stored Programmes (AREA)
Description
【0001】
【産業上の利用分野】本発明は、FORTRANやC言
語などの高級言語によってプログラムを作成する場合
に、プログラムのエラーの原因を調べるための情報を提
供する支援装置に関する。
語などの高級言語によってプログラムを作成する場合
に、プログラムのエラーの原因を調べるための情報を提
供する支援装置に関する。
【0002】
【従来の技術】一般に、新たなプログラムを作成した場
合、ソースプログラムをコンパイラによって翻訳したの
ち実行すると、途中で異常終了することはよく経験する
ことである。その場合、プログラムのどの部分が走行し
て停止に至ったのかを知り、停止に至る部分を注意して
調べることは、プログラムのエラーの原因を探るときに
有力な方法である。
合、ソースプログラムをコンパイラによって翻訳したの
ち実行すると、途中で異常終了することはよく経験する
ことである。その場合、プログラムのどの部分が走行し
て停止に至ったのかを知り、停止に至る部分を注意して
調べることは、プログラムのエラーの原因を探るときに
有力な方法である。
【0003】そこで、プログラム中の実行した行の番号
などを逐次出力したものであるトレース情報をとりなが
らプログラムを実行すれば、異常終了したままトレース
情報を調べることで、プログラム上どのような経路を通
って停止に至ったのかを比較的容易に知ることができ
る。
などを逐次出力したものであるトレース情報をとりなが
らプログラムを実行すれば、異常終了したままトレース
情報を調べることで、プログラム上どのような経路を通
って停止に至ったのかを比較的容易に知ることができ
る。
【0004】
【発明が解決しようとする課題】しかしながら、トレー
ス情報の収集はプログラムの異常終了が予想される場合
にのみ行われるものであり、正常に走行すると期待して
走行させた場合、トレース情報は存在しない。また異常
終了後、トレース情報をとりながら再実行させた場合、
同じ異常が再現するとは限らない。
ス情報の収集はプログラムの異常終了が予想される場合
にのみ行われるものであり、正常に走行すると期待して
走行させた場合、トレース情報は存在しない。また異常
終了後、トレース情報をとりながら再実行させた場合、
同じ異常が再現するとは限らない。
【0005】また、異常終了が再現できる場合でも、ト
レース情報をとりながら実行するには長時間を要する場
合もあり、更に、プログラム作成者と離れた場所の利用
者においてはトレース情報をとることもできない場合が
ある。一方、異常終了の発生時にメモリの内容を保存す
ることは、とくにシステムの性能の低下を来さないため
通常行われる。これはメモリダンプ情報として知られて
いる。
レース情報をとりながら実行するには長時間を要する場
合もあり、更に、プログラム作成者と離れた場所の利用
者においてはトレース情報をとることもできない場合が
ある。一方、異常終了の発生時にメモリの内容を保存す
ることは、とくにシステムの性能の低下を来さないため
通常行われる。これはメモリダンプ情報として知られて
いる。
【0006】プログラマはこのメモリダンプ情報を参照
し、いろいろな変数の値の関係を調べながら、プログラ
ムの走行経路を推定し、どの部分は正常に走行し、どの
部分が異常を発生させる原因になったかを推定する。例
えば、分岐命令の実行結果を決定する変数の値が残って
いれば、この変数の値によって分岐先を推定できる。ま
た、走行したと推定されるプログラム部分の予想される
実行結果と、メモリダンプの内容とを比較し、予想どお
りなら正常と判断し、異なれば、その付近のプログラム
に問題があると推定して調べる。
し、いろいろな変数の値の関係を調べながら、プログラ
ムの走行経路を推定し、どの部分は正常に走行し、どの
部分が異常を発生させる原因になったかを推定する。例
えば、分岐命令の実行結果を決定する変数の値が残って
いれば、この変数の値によって分岐先を推定できる。ま
た、走行したと推定されるプログラム部分の予想される
実行結果と、メモリダンプの内容とを比較し、予想どお
りなら正常と判断し、異なれば、その付近のプログラム
に問題があると推定して調べる。
【0007】プログラムデバッグにおいては、このよう
な検証作業を手作業で、個々の変数の値を見ながら繰り
返し行っているが、手作業であるために異常終了の原因
究明に時間がかかり、作業負担が大きいという問題があ
った。本発明は、このような従来の問題点に鑑みてなさ
れたもので、プログラム停止時のメモリのダンプ情報や
主記憶上のデータ部に基づいて特にプログラムの走行経
路を推定するのに有効な情報を生成して表示出力する支
援装置を提供することを目的とする。
な検証作業を手作業で、個々の変数の値を見ながら繰り
返し行っているが、手作業であるために異常終了の原因
究明に時間がかかり、作業負担が大きいという問題があ
った。本発明は、このような従来の問題点に鑑みてなさ
れたもので、プログラム停止時のメモリのダンプ情報や
主記憶上のデータ部に基づいて特にプログラムの走行経
路を推定するのに有効な情報を生成して表示出力する支
援装置を提供することを目的とする。
【0008】
【課題を解決するための手段】図1は本発明の原理説明
図である。本発明の支援装置は、プログラム内の代入式
および比較式の右辺、左辺の値を評価する評価部と、代
入式および比較式が、評価された右辺、左辺の値により
成立するか否かを判定する判定部と、判定部により成立
すると判定された代入式および比較式を、プログラム上
で識別可能に出力する出力部とを有することを特徴とす
る。
図である。本発明の支援装置は、プログラム内の代入式
および比較式の右辺、左辺の値を評価する評価部と、代
入式および比較式が、評価された右辺、左辺の値により
成立するか否かを判定する判定部と、判定部により成立
すると判定された代入式および比較式を、プログラム上
で識別可能に出力する出力部とを有することを特徴とす
る。
【0009】これに対応して評価部は、主記憶上の変数
の値を用いて評価することを特徴とする。
の値を用いて評価することを特徴とする。
【0010】また評価部は、メモリダンプ情報の変数の
値を用いて評価することを特徴とする。
値を用いて評価することを特徴とする。
【0011】また出力部は、判定部により成立すると判
定された代入式および比較式に、アンダーラインを付け
て出力することを特徴とする。
定された代入式および比較式に、アンダーラインを付け
て出力することを特徴とする。
【0012】
【作用】このような構成を備えた本発明の支援装置によ
れば次の作用が得られる。一般にプログラムは手続部と
データ部とから構成されており、プログラムの実行はC
PUが手続部の命令を逐次実行して行われる。
れば次の作用が得られる。一般にプログラムは手続部と
データ部とから構成されており、プログラムの実行はC
PUが手続部の命令を逐次実行して行われる。
【0013】このプログラムの実行では、プログラムの
データ部の各変数を取出したり、CPUで演算した後に
結果をデータ部に格納することが繰り返して行われる。
これは通常ソースプログラム上では代入式として記述さ
れる。また例えば2つの変数を比較し、その結果、条件
の成立、不成立に応じて次に実行すべき命令を決定する
ことが行われる。これはソースプログラム上では比較式
を含む分岐命令として記述されることが多い。
データ部の各変数を取出したり、CPUで演算した後に
結果をデータ部に格納することが繰り返して行われる。
これは通常ソースプログラム上では代入式として記述さ
れる。また例えば2つの変数を比較し、その結果、条件
の成立、不成立に応じて次に実行すべき命令を決定する
ことが行われる。これはソースプログラム上では比較式
を含む分岐命令として記述されることが多い。
【0014】プログラムが途中で異常終了した場合、特
に最近に実行された代入式では、右辺の値をメモリ上、
あるいはメモリダンプに残っている各変数の値を使って
再計算したとき、左辺の変数のメモリ上の値と一致する
ことが多い。また分岐先命令を決定するために比較した
変数を同様に再度比較してみると、もし最近に実行され
た分岐命令の場合、実際に選択された分岐先が再び選択
されることが多い。
に最近に実行された代入式では、右辺の値をメモリ上、
あるいはメモリダンプに残っている各変数の値を使って
再計算したとき、左辺の変数のメモリ上の値と一致する
ことが多い。また分岐先命令を決定するために比較した
変数を同様に再度比較してみると、もし最近に実行され
た分岐命令の場合、実際に選択された分岐先が再び選択
されることが多い。
【0015】本発明は、このような考えを具体化したも
ので、プログラムが異常終了を起こした際に、ソースプ
ログラムから全ての代入式及び比較式を拾い出し、その
とき主記憶等に保存されているプログラムのデータ部の
値を用いて代入式及び比較式を再評価して成立、不成立
を判定し、成立が判定された式の部分にアンダーライン
等のプログラムの記述から区別できる表示を付して出力
表示する。
ので、プログラムが異常終了を起こした際に、ソースプ
ログラムから全ての代入式及び比較式を拾い出し、その
とき主記憶等に保存されているプログラムのデータ部の
値を用いて代入式及び比較式を再評価して成立、不成立
を判定し、成立が判定された式の部分にアンダーライン
等のプログラムの記述から区別できる表示を付して出力
表示する。
【0016】このようにソースプログラム上で、代入式
や比較式が成立するか否かを自動的に解析して表示する
ことにより、トレース情報が存在しない場合にも、プロ
グラム走行経路を推定するに極めて有力な情報を提供す
ることができる。
や比較式が成立するか否かを自動的に解析して表示する
ことにより、トレース情報が存在しない場合にも、プロ
グラム走行経路を推定するに極めて有力な情報を提供す
ることができる。
【0017】
【実施例】図2は本発明の全体構成を示した実施例構成
図である。図2において、10はCPU、12は主記
憶、14は外部記憶装置、16はキーボード付きディス
プレイ装置、18はプリンタ装置である。主記憶12の
OS領域20上のOS(オペレーティングシステム)と
使用者の指示に基づき、CPU10は主記憶12上にプ
ログラムA及びB用領域30,32を確保したのち、プ
ログラムBを外部記憶装置よりロードする。
図である。図2において、10はCPU、12は主記
憶、14は外部記憶装置、16はキーボード付きディス
プレイ装置、18はプリンタ装置である。主記憶12の
OS領域20上のOS(オペレーティングシステム)と
使用者の指示に基づき、CPU10は主記憶12上にプ
ログラムA及びB用領域30,32を確保したのち、プ
ログラムBを外部記憶装置よりロードする。
【0018】ここで、プログラムBは本発明によるプロ
グラムデータ解析表示処理を実行するプログラムであ
る。外部記憶装置14には、デバッグされるプログラム
Aのソースプログラム22、プログラムAのロードモジ
ュール24が格納されている。プログラムAのロードモ
ジュール24はロードモジュール部26と、変数・アド
レス対応情報28を備え、変数・アドレス対応情報28
は通常、特別に指定した場合にコンパイラによって生成
される。
グラムデータ解析表示処理を実行するプログラムであ
る。外部記憶装置14には、デバッグされるプログラム
Aのソースプログラム22、プログラムAのロードモジ
ュール24が格納されている。プログラムAのロードモ
ジュール24はロードモジュール部26と、変数・アド
レス対応情報28を備え、変数・アドレス対応情報28
は通常、特別に指定した場合にコンパイラによって生成
される。
【0019】OSは、プログラムBからの依頼によって
プログラムA用領域30を確保した後、プログラムAを
ロードし、実行を開始する。OSがプログラムAをロー
ドするとき、手続部34及びデータ部36の主記憶12
上の位置をOSが決定することから、手続部34及びデ
ータ部36の先頭アドレス及びサイズはOS領域20内
に記憶されている。
プログラムA用領域30を確保した後、プログラムAを
ロードし、実行を開始する。OSがプログラムAをロー
ドするとき、手続部34及びデータ部36の主記憶12
上の位置をOSが決定することから、手続部34及びデ
ータ部36の先頭アドレス及びサイズはOS領域20内
に記憶されている。
【0020】またOSはプログラムAの実行中や、デー
タ入力待ち状態などにおいて、プログラムBからの依頼
により、プログラムAの実行を中断させる機能を有す
る。更にOSは、プログラムAの実行中に、何らかの異
常、たとえばプログラムAの領域以外に分岐しようとし
たり、領域以外のデータをアクセスしようとした場合な
どに、前もって出されたプログラムBからの依頼によっ
てプログラムBにその事象を通知する機能を有する。
タ入力待ち状態などにおいて、プログラムBからの依頼
により、プログラムAの実行を中断させる機能を有す
る。更にOSは、プログラムAの実行中に、何らかの異
常、たとえばプログラムAの領域以外に分岐しようとし
たり、領域以外のデータをアクセスしようとした場合な
どに、前もって出されたプログラムBからの依頼によっ
てプログラムBにその事象を通知する機能を有する。
【0021】更にまた、プログラムAのデータ部36や
手続部34の先頭アドレスをプログラムBの依頼によっ
て通知する機能を有する。加えてOSは、プログラムA
の実行中断時あるいは異常終了時に、プログラムA用領
域30の内容を外部記憶装置14に出力する機能を有す
る。また、プログラムBからの依頼により、プログラム
A用領域30内の指定されたアドレスの内容を読出す機
能を有する。
手続部34の先頭アドレスをプログラムBの依頼によっ
て通知する機能を有する。加えてOSは、プログラムA
の実行中断時あるいは異常終了時に、プログラムA用領
域30の内容を外部記憶装置14に出力する機能を有す
る。また、プログラムBからの依頼により、プログラム
A用領域30内の指定されたアドレスの内容を読出す機
能を有する。
【0022】プログラムBのデータ部40には、外部記
憶装置14中のプログラムAのソースプログラム22及
びプログラムAの変数・アドレス対応情報28が格納さ
れる。プログラムAのソースプログラム22には付加情
報42の領域が加えられる。更に、プログラムBの実行
段階でプログラムAのソースプログラム22より生成さ
れる評価式一覧表44、解析木46、及び分解済みトー
クン列48のための各領域も確保される。
憶装置14中のプログラムAのソースプログラム22及
びプログラムAの変数・アドレス対応情報28が格納さ
れる。プログラムAのソースプログラム22には付加情
報42の領域が加えられる。更に、プログラムBの実行
段階でプログラムAのソースプログラム22より生成さ
れる評価式一覧表44、解析木46、及び分解済みトー
クン列48のための各領域も確保される。
【0023】プリンタ装置18やキーボード付きディス
プレイ装置16は、プログラムBにより処理されたプロ
グラムAのソースプログラム22を出力表示する。図3
は本発明の解析表示処理を実行するプログラムBのモジ
ュール構成を示したもので、図4及び図5にその詳細を
示している。これを列挙すると次のようになる。
プレイ装置16は、プログラムBにより処理されたプロ
グラムAのソースプログラム22を出力表示する。図3
は本発明の解析表示処理を実行するプログラムBのモジ
ュール構成を示したもので、図4及び図5にその詳細を
示している。これを列挙すると次のようになる。
【0024】[全体制御部50]プログラムBの全体の
流れを制御する。 [被デバッグプログラム動作制御部B1]子プロセスの
生成処理、プログラムAのローディング処理、プログラ
ムAの実行開始、中断、事象通知依頼などをOSインタ
フェース部B1−1を介してOSに依頼する。
流れを制御する。 [被デバッグプログラム動作制御部B1]子プロセスの
生成処理、プログラムAのローディング処理、プログラ
ムAの実行開始、中断、事象通知依頼などをOSインタ
フェース部B1−1を介してOSに依頼する。
【0025】[データアクセス部B2]主記憶12上の
子プロセス内の指定されたアドレスより、指定された長
さのデータを読み出す。 [ソースプログラム入力部B3]プログラムAのソース
プログラムを主記憶12上に読み込む。
子プロセス内の指定されたアドレスより、指定された長
さのデータを読み出す。 [ソースプログラム入力部B3]プログラムAのソース
プログラムを主記憶12上に読み込む。
【0026】[言語解析部B4]プログラムAのソース
プログラムの生成文法に従ってプログラム全体を解析
し、代入式および比較式を抽出し、更に演算子、変数、
定数等に分解し、解析木を生成する。また評価式一覧表
を生成する。 [評価部B5]解析木に従って代入式及び比較式の右
辺、左辺を評価する。具体的には左辺・右辺評価部B5
−1及び解析木アクセス部B5−2で構成される [判定部B6]右辺と左辺の値を比較し、代入式の場合
は両辺が等しいかどうか、比較式の場合は比較の条件が
成立するか否かを判定する。
プログラムの生成文法に従ってプログラム全体を解析
し、代入式および比較式を抽出し、更に演算子、変数、
定数等に分解し、解析木を生成する。また評価式一覧表
を生成する。 [評価部B5]解析木に従って代入式及び比較式の右
辺、左辺を評価する。具体的には左辺・右辺評価部B5
−1及び解析木アクセス部B5−2で構成される [判定部B6]右辺と左辺の値を比較し、代入式の場合
は両辺が等しいかどうか、比較式の場合は比較の条件が
成立するか否かを判定する。
【0027】[付加情報生成部B7]ソースプログラム
上で、代入式、比較式の成立している部分を示す付加情
報42を主記憶12上に生成する。 [ソースプログラム編集処理部B8]付加情報42を参
照しつつ、成立している代入式や比較式の部分を識別で
きる形(例えばアンダーライン表示)に編集し、ソース
プログラム全体を出力する。
上で、代入式、比較式の成立している部分を示す付加情
報42を主記憶12上に生成する。 [ソースプログラム編集処理部B8]付加情報42を参
照しつつ、成立している代入式や比較式の部分を識別で
きる形(例えばアンダーライン表示)に編集し、ソース
プログラム全体を出力する。
【0028】[変数・アドレス対応情報アクセス部B
9]プログラムAの変数アドレス対応情報28を主記憶
12上に読み込む。また与えられた変数名に対応するプ
ログラムAのデータ部36内アドレス及び長さを求め
る。 [使用者コマンド入力・解析部B10]デバッグを行う
使用者の入力コマンドを解析して解析結果の情報を全体
制御部50に渡す。
9]プログラムAの変数アドレス対応情報28を主記憶
12上に読み込む。また与えられた変数名に対応するプ
ログラムAのデータ部36内アドレス及び長さを求め
る。 [使用者コマンド入力・解析部B10]デバッグを行う
使用者の入力コマンドを解析して解析結果の情報を全体
制御部50に渡す。
【0029】図6、図7は、本発明によるプログラムデ
ータ解析表示処理を示したフローチャートである。尚、
図6、図7の中の各ステップの右下の( )の中の記号
は、図3、図4のプログラムBのいずれのモジュールに
よって実行されるかを示している。図6において、プロ
グラムBはまずステップS1で子プロセスの生成をOS
に依頼する。続いてステップS2でプログラムAを指定
してOSにローディングを依頼し、プログラムAの実行
を開始させる。
ータ解析表示処理を示したフローチャートである。尚、
図6、図7の中の各ステップの右下の( )の中の記号
は、図3、図4のプログラムBのいずれのモジュールに
よって実行されるかを示している。図6において、プロ
グラムBはまずステップS1で子プロセスの生成をOS
に依頼する。続いてステップS2でプログラムAを指定
してOSにローディングを依頼し、プログラムAの実行
を開始させる。
【0030】ステップS3ではプログラムAが実行中に
異常発生により中断されるのを待つ。ステップS3でプ
ログラムAの実行が中断されると、ステップS4に進ん
でプログラムAのソースプログラムを読み込む。続いて
ステップS5でソースプログラムをトークン(字句)に
分解し、分解済みトークン列を生成する。
異常発生により中断されるのを待つ。ステップS3でプ
ログラムAの実行が中断されると、ステップS4に進ん
でプログラムAのソースプログラムを読み込む。続いて
ステップS5でソースプログラムをトークン(字句)に
分解し、分解済みトークン列を生成する。
【0031】次にステップS6でプログラムAのソース
プログラム(分解済トークン列)を解析し、解析木を作
成する。またプログラムAのソースプログラムの中の代
入式、比較式を全て抽出する。以上の処理が済むとステ
ップS7で式を1つ取り出し、ステップS8の判定を介
してステップS9に進み、式の解析木の右辺の部分を評
価し、右辺の値を求める。
プログラム(分解済トークン列)を解析し、解析木を作
成する。またプログラムAのソースプログラムの中の代
入式、比較式を全て抽出する。以上の処理が済むとステ
ップS7で式を1つ取り出し、ステップS8の判定を介
してステップS9に進み、式の解析木の右辺の部分を評
価し、右辺の値を求める。
【0032】次にステップS1ヌで右辺と左辺の値を比
較し、ステップS12で成立の有無を判定し、成立した
場合のみステップS13でソースプログラムAの成立し
た式の部分に付加するアンダーライン等のための付加情
報を生成し、再び図6のステップS7に戻る。以上の処
理をステップS8で全ての式の処理終了が判定されるま
で繰り返し、全ての式の処理が終了するとステップS1
4に進んで、ソースプログラムAのリストを付加情報、
例えば成立した式の部分にアンダーラインを付けるよう
に編集しながら、印刷又は表示する。
較し、ステップS12で成立の有無を判定し、成立した
場合のみステップS13でソースプログラムAの成立し
た式の部分に付加するアンダーライン等のための付加情
報を生成し、再び図6のステップS7に戻る。以上の処
理をステップS8で全ての式の処理終了が判定されるま
で繰り返し、全ての式の処理が終了するとステップS1
4に進んで、ソースプログラムAのリストを付加情報、
例えば成立した式の部分にアンダーラインを付けるよう
に編集しながら、印刷又は表示する。
【0033】図8は本発明の処理対象となるプログラム
Aの一部を示したもので、C言語による記述を例にとっ
ている。図8において、 if( ) は条件付き分岐命令である。また( )内の line>66 の部分は条件式であり、変数lineの値が66より大
であるとき、成立する式である。
Aの一部を示したもので、C言語による記述を例にとっ
ている。図8において、 if( ) は条件付き分岐命令である。また( )内の line>66 の部分は条件式であり、変数lineの値が66より大
であるとき、成立する式である。
【0034】if(heads=0) の場合は、変数headsの値が0と等しい場合に、成
立する式である。 heads=1 は変数headsに1を代入する代入式である。 line=printhead1( ) の部分は、サブルーチンである関数printhead
1( )を呼び出し、その後サブルーチンより返される
値を変数lineに代入するものである。
立する式である。 heads=1 は変数headsに1を代入する代入式である。 line=printhead1( ) の部分は、サブルーチンである関数printhead
1( )を呼び出し、その後サブルーチンより返される
値を変数lineに代入するものである。
【0035】図9は図8のプログラムAをある時点で停
止させたときの各変数の値をケース1とケース2に分け
て示す。この値は主記憶12上のプログラムAのデータ
部の中に残されている値として仮定したものである。。
図10は図9の停止状態について本発明により処理した
ソースプログラムの出力結果を示し、ケース1の場合に
は、 line>66 heads=1 が成立していることから、これにアンダーラインを付し
て示し、またケース2では、 heads=1 のみが成立していることから、これにアンダーラインを
付して示している。
止させたときの各変数の値をケース1とケース2に分け
て示す。この値は主記憶12上のプログラムAのデータ
部の中に残されている値として仮定したものである。。
図10は図9の停止状態について本発明により処理した
ソースプログラムの出力結果を示し、ケース1の場合に
は、 line>66 heads=1 が成立していることから、これにアンダーラインを付し
て示し、またケース2では、 heads=1 のみが成立していることから、これにアンダーラインを
付して示している。
【0036】この図8、図9及び図10のプログラムA
を例にとって、図6、図7のフローチャートの処理を説
明すると次のようになる。まず図11は、コンパイラが
生成した図2の外部記憶装置14のプログラムAのロー
ドモジュール22中に示すプログラムAの変数・アドレ
ス対応情報28の例である。
を例にとって、図6、図7のフローチャートの処理を説
明すると次のようになる。まず図11は、コンパイラが
生成した図2の外部記憶装置14のプログラムAのロー
ドモジュール22中に示すプログラムAの変数・アドレ
ス対応情報28の例である。
【0037】この変数・アドレス対応情報28はシンボ
ル・テーブルとして知られており、変数名をもとに、変
数のサイズやデータ域内の変数の相対アドレスなどが抽
出できる。例えば変数名「line」を使用すると、ソ
ースプログラム上で整数型であり、またサイズが4バイ
トであり、更にデータ域内相対アドレスがadr−1で
あることが判る。
ル・テーブルとして知られており、変数名をもとに、変
数のサイズやデータ域内の変数の相対アドレスなどが抽
出できる。例えば変数名「line」を使用すると、ソ
ースプログラム上で整数型であり、またサイズが4バイ
トであり、更にデータ域内相対アドレスがadr−1で
あることが判る。
【0038】図12は、図2でプログラムBのソースプ
ログラム22を外部記憶装置14から主記憶12のプロ
グラムB用領域32に読み込んだあと言語解析部B4に
より生成されるデータ部40内の評価式一覧表44を示
したもので、評価式一覧表44は、評価式ごとに解析木
内のノードへのポインタを格納している。従って、全体
制御部50のメインルーチンは評価式一覧表44の要素
を順次指定して評価部B5を呼出し、評価部B5が各解
析木の両辺の子ノードを指定して左辺と右辺の評価を行
い、成立していた場合にソースプログラムAの中の式の
成立部分を示す付加情報42を生成するようになる。
ログラム22を外部記憶装置14から主記憶12のプロ
グラムB用領域32に読み込んだあと言語解析部B4に
より生成されるデータ部40内の評価式一覧表44を示
したもので、評価式一覧表44は、評価式ごとに解析木
内のノードへのポインタを格納している。従って、全体
制御部50のメインルーチンは評価式一覧表44の要素
を順次指定して評価部B5を呼出し、評価部B5が各解
析木の両辺の子ノードを指定して左辺と右辺の評価を行
い、成立していた場合にソースプログラムAの中の式の
成立部分を示す付加情報42を生成するようになる。
【0039】図13は図3、図4に示したプログラムB
の言語解析部B4が1つの式に対応して生成する解析木
を、比較式 line < 66 を例にとって示した説明図である。プログラムBの評価
部B5が式の左辺と右辺を評価する場合、評価部B5は
図13の解析木を評価するものとする。
の言語解析部B4が1つの式に対応して生成する解析木
を、比較式 line < 66 を例にとって示した説明図である。プログラムBの評価
部B5が式の左辺と右辺を評価する場合、評価部B5は
図13の解析木を評価するものとする。
【0040】図14は図13に示した解析木の1個のノ
ード情報の形式を示す。このノード情報は、 (a)左辺トークンのid (b)入力トークン列の開始位置 (c)入力トークン列の長さ (d)評価結果格納アドレス (e)適用文法規則 (f)子ノードの個数 (g)子ノード毎のアドレス及び評価結果領域 で構成される。
ード情報の形式を示す。このノード情報は、 (a)左辺トークンのid (b)入力トークン列の開始位置 (c)入力トークン列の長さ (d)評価結果格納アドレス (e)適用文法規則 (f)子ノードの個数 (g)子ノード毎のアドレス及び評価結果領域 で構成される。
【0041】ここでトークンのidというのは、ソース
プログラム上の記号( ,)や、予約語、変数名などの
字句と、文法規則にあらわれる記号を番号に置き換えた
ものである。左辺トークンとは、適用された文法規則の
左辺のトークンである。入力トークン列とは、解析木を
生成するときに、そのノードに与えられたトークン列の
部分である。解析木はトークン列を細分しつつ、木の枝
を下に伸ばして生成されていく。
プログラム上の記号( ,)や、予約語、変数名などの
字句と、文法規則にあらわれる記号を番号に置き換えた
ものである。左辺トークンとは、適用された文法規則の
左辺のトークンである。入力トークン列とは、解析木を
生成するときに、そのノードに与えられたトークン列の
部分である。解析木はトークン列を細分しつつ、木の枝
を下に伸ばして生成されていく。
【0042】図15は図13の解析木の詳細を示した説
明図である。図3のプログラムBの評価部B5は、図1
5の解析木の情報を与えられ、条件式を主記憶12上の
プログラムAのデータ部30に格納された変数の値を使
って再評価する。評価結果は、途中のノードに示された
アドレスに格納することによって、順次、上のノードに
書き込まれていく。
明図である。図3のプログラムBの評価部B5は、図1
5の解析木の情報を与えられ、条件式を主記憶12上の
プログラムAのデータ部30に格納された変数の値を使
って再評価する。評価結果は、途中のノードに示された
アドレスに格納することによって、順次、上のノードに
書き込まれていく。
【0043】ノード内の適用文法規則は、入力トークン
列に対してどの文法規則を適用したかを示し、またノー
ド内の適用文法規則は演算や、比較の処理方法をも示し
ている。図16は図15に示した解析木の生成に先立っ
て行われるソースプログラムをトークンに分解して得ら
れる分解済みトークン列を示した説明図である。
列に対してどの文法規則を適用したかを示し、またノー
ド内の適用文法規則は演算や、比較の処理方法をも示し
ている。図16は図15に示した解析木の生成に先立っ
て行われるソースプログラムをトークンに分解して得ら
れる分解済みトークン列を示した説明図である。
【0044】この分解済みトークン列の中には、 (a)トークンid (b)ソースプログラム中のファイルの先頭からの文字
位置 (c)行番号 (d)行中の文字位置 を格納する。
位置 (c)行番号 (d)行中の文字位置 を格納する。
【0045】図15に示した解析木上の各ノードが指す
入力トークン列とは、この分解済みトークン列の中の部
分トークン列を示すものである。図17は、図15に示
した解析木中の上の3つのノードに対して適用されたC
言語の文法規則を示す。解析木を生成する処理において
は、与えられた左辺トークンを左辺に持つ文法規則であ
って、入力トークン列に適合する右辺を持つ文法規則を
選択して適用する。
入力トークン列とは、この分解済みトークン列の中の部
分トークン列を示すものである。図17は、図15に示
した解析木中の上の3つのノードに対して適用されたC
言語の文法規則を示す。解析木を生成する処理において
は、与えられた左辺トークンを左辺に持つ文法規則であ
って、入力トークン列に適合する右辺を持つ文法規則を
選択して適用する。
【0046】そして、右辺の各々のトークンに対応づけ
られた入力トークン列の部分を、対応するトークンとと
もに下のノードに与えていく。入力トークン列は、最後
は1個のトークンに分割される。こうして、入力トーク
ン列と、文法規則の集合から解析木が生成される。この
方法は再帰的下向き構文解析法として知られている。図
18は図3のプログラムBの左辺・右辺評価部B5−1
の処理における演算評価処理を示したフローチャートで
ある。この演算評価処理は、演算に対応するノードにお
いて、子ノードの値を使って演算を実行する処理であ
る。
られた入力トークン列の部分を、対応するトークンとと
もに下のノードに与えていく。入力トークン列は、最後
は1個のトークンに分割される。こうして、入力トーク
ン列と、文法規則の集合から解析木が生成される。この
方法は再帰的下向き構文解析法として知られている。図
18は図3のプログラムBの左辺・右辺評価部B5−1
の処理における演算評価処理を示したフローチャートで
ある。この演算評価処理は、演算に対応するノードにお
いて、子ノードの値を使って演算を実行する処理であ
る。
【0047】図18において、まずステップS1で、与
えられたノードの子ノードを左より探し、ステップS2
で子ノードがあることが判定されるとステップS3に進
んで子ノードを指定して図19の子ノード評価処理を呼
出し、子ノードの値を求める。一方、子ノードがなけれ
ばステップS4に進んで既に求められた各子ノードの評
価結果を使用して演算を実行し、結果を返す。
えられたノードの子ノードを左より探し、ステップS2
で子ノードがあることが判定されるとステップS3に進
んで子ノードを指定して図19の子ノード評価処理を呼
出し、子ノードの値を求める。一方、子ノードがなけれ
ばステップS4に進んで既に求められた各子ノードの評
価結果を使用して演算を実行し、結果を返す。
【0048】図19は図18のステップS3で呼出され
て実行されるプログラムBの左辺・右辺評価部B5−1
の子ノード評価処理を示したフローチャートである。図
19において、まずステップS1で与えられたノードが
解析木の葉(先端)であるかどうか調べる。葉でない場
合には、ステップS2からステップS3に進んで、ノー
ドに書かれている文法規則を処理する図8の演算評価処
理を呼出す。
て実行されるプログラムBの左辺・右辺評価部B5−1
の子ノード評価処理を示したフローチャートである。図
19において、まずステップS1で与えられたノードが
解析木の葉(先端)であるかどうか調べる。葉でない場
合には、ステップS2からステップS3に進んで、ノー
ドに書かれている文法規則を処理する図8の演算評価処
理を呼出す。
【0049】次にステップS4に進み、評価結果の値を
ノードに書かれている評価結果を格納するアドレス先に
格納する。葉であった場合には、ステップS2からステ
ップS5に進み、変数か定数かを氏らべる。変数であっ
た場合には、ステップS6からステップS7に進み、入
力トークン列より変数名を拾い、ステップS8で図13
に示した変数・アドレス対応情報28をサーチし、デー
タ部36の先頭アドレスを加えてデータ領域(データ部
36)内のアドレスを得る。
ノードに書かれている評価結果を格納するアドレス先に
格納する。葉であった場合には、ステップS2からステ
ップS5に進み、変数か定数かを氏らべる。変数であっ
た場合には、ステップS6からステップS7に進み、入
力トークン列より変数名を拾い、ステップS8で図13
に示した変数・アドレス対応情報28をサーチし、デー
タ部36の先頭アドレスを加えてデータ領域(データ部
36)内のアドレスを得る。
【0050】次にステップS9でデータ部アクセス手
段、即ちデータアクセス部B2により主記憶12内のプ
ログラムA用領域30に格納されている変数の値を得
る。続いてステップS10で主記憶12から得た変数の
値をノードに書かれている評価結果の格納アドレス先に
格納する。一方、定数であった場合には、ステップS6
からステップS11に進み、入力トークン列より文字列
を内部の定数に変換する。
段、即ちデータアクセス部B2により主記憶12内のプ
ログラムA用領域30に格納されている変数の値を得
る。続いてステップS10で主記憶12から得た変数の
値をノードに書かれている評価結果の格納アドレス先に
格納する。一方、定数であった場合には、ステップS6
からステップS11に進み、入力トークン列より文字列
を内部の定数に変換する。
【0051】評価部B5が式の左辺、右辺を評価すると
きには、それぞれに対応する解析木のノードを指定し
て、子ノード評価処理を呼び出すことによって評価す
る。図20はプログラムBの処理により最終的に得られ
たソースプログラムの中の式の成立部分を指すための付
加情報を図10のケース1について示した説明図であ
る。
きには、それぞれに対応する解析木のノードを指定し
て、子ノード評価処理を呼び出すことによって評価す
る。図20はプログラムBの処理により最終的に得られ
たソースプログラムの中の式の成立部分を指すための付
加情報を図10のケース1について示した説明図であ
る。
【0052】この付加情報は、 line > 66 については、ソースプログラムの110行目の4桁目か
ら同じ110行目の10桁目に記述されていることを示
す。また heads=1 については、ソースプログラムの114行目の9桁目か
ら同じ114行目の15桁目に記述されていることを示
す。
ら同じ110行目の10桁目に記述されていることを示
す。また heads=1 については、ソースプログラムの114行目の9桁目か
ら同じ114行目の15桁目に記述されていることを示
す。
【0053】尚、上記の実施例にあっては、被デバッグ
プログラム(プログラムA)の変数の値を主記憶12上
から直接読出していたが、メモリダンプ情報から読出す
ようにしてもよい。また上記の実施例においては、付加
情報を付したソースプログラムをディスプレイ画面に出
力したが、プリンタ装置に出力するようにしてもよいこ
とは勿論である。
プログラム(プログラムA)の変数の値を主記憶12上
から直接読出していたが、メモリダンプ情報から読出す
ようにしてもよい。また上記の実施例においては、付加
情報を付したソースプログラムをディスプレイ画面に出
力したが、プリンタ装置に出力するようにしてもよいこ
とは勿論である。
【0054】更に上記の実施例で示したC言語の文法に
ついては、B.W.カーニハン、D.M.リッチー著、
石田晴久訳「プログラミング言語C 第2版」(198
9年6月15日共立出版株式会社発行)を参照された
い。また解析木については、中田育男「コンパイラ」
(1981年9月10日、産業図書株式会社発行)を参
照されたい。
ついては、B.W.カーニハン、D.M.リッチー著、
石田晴久訳「プログラミング言語C 第2版」(198
9年6月15日共立出版株式会社発行)を参照された
い。また解析木については、中田育男「コンパイラ」
(1981年9月10日、産業図書株式会社発行)を参
照されたい。
【0055】
【発明の効果】以上説明したように本発明によれば、異
常終了したプログラムデータ部の変数の値に基づいてソ
ースプログラムの中の成立している式がアンダーライン
等の付加情報を付して出力されるため、トレース情報が
なくともプログラムの走行経路を推定するに有効な情報
が得られ、プログラムのエラー原因の調査を効率良く行
うことができる。
常終了したプログラムデータ部の変数の値に基づいてソ
ースプログラムの中の成立している式がアンダーライン
等の付加情報を付して出力されるため、トレース情報が
なくともプログラムの走行経路を推定するに有効な情報
が得られ、プログラムのエラー原因の調査を効率良く行
うことができる。
【図1】本発明の原理説明図
【図2】本発明の全体構成を示した実施例構成図
【図3】本発明によるプログラムBのモジュール構成説
明図
明図
【図4】本発明のプログラムBの構成要素説明図
【図5】本発明のプログラムBの構成要素説明図(続
き)
き)
【図6】本発明のプログラムBの流れを示したフローチ
ャート
ャート
【図7】本発明のプログラムBの流れを示したフローチ
ャート(続き)
ャート(続き)
【図8】C言語で記述されたプログラムAの一部を示し
た説明図
た説明図
【図9】図8のプログラムAの実行中断状態でのメモリ
上の変数の値を示した説明図
上の変数の値を示した説明図
【図10】図9の中断状態に対応したソースプログラム
の出力表示例を示した説明図
の出力表示例を示した説明図
【図11】本発明の変数・アドレス対応情報の説明図
【図12】本発明の評価式一覧表の説明図
【図13】図8の比較式の解析木の説明図
【図14】本発明における解析木のノードの形式説明図
【図15】図13のline<66の部分の解析木情報
の説明図
の説明図
【図16】本発明の分解済みトークン列の説明図
【図17】本発明における文法規則の例の説明図
【図18】本発明における左辺・右辺評価手段B5−1
の演算評価処理を示したフローチャート
の演算評価処理を示したフローチャート
【図19】本発明における左辺・右辺評価部B5−1の
子ノード評価処理を示したフローチャート
子ノード評価処理を示したフローチャート
【図20】本発明の付加情報の説明図
10:CPU 12:主記憶 14:外部記憶装置 16:ディスプレイ装置(キーボード付き) 18:プリンタ装置 20:OS領域 22:プログラムAのソースプログラム 24:プログラムAのロードモジュール 26:ロードモジュール部 28:変数・アドレス対応情報 30:プログラムA用領域 32:プログラムB用領域 34,38:手続部 36,40:データ部 42:付加情報 44:評価式一覧表 46:解析木 48:分解済みトークン列 50:全体制御部
───────────────────────────────────────────────────── フロントページの続き (58)調査した分野(Int.Cl.7,DB名) G06F 9/06 530 G06F 11/28 JICSTファイル(JOIS)
Claims (6)
- 【請求項1】プログラムエラー原因調査を支援する支援
装置に於いて、 プログラム内の代入式および比較式の右辺、左辺の値を
評価する評価部と、 代入式および比較式が、前記評価された右辺、左辺の値
により成立するか否かを判定する判定部と、 判定部により成立すると判定された代入式および比較式
を、プログラム上で識別可能に出力する出力部と、 を有することを特徴とする支援装置。 - 【請求項2】前記評価部は、主記憶上の変数の値を用い
て評価することを特徴とする請求項1記載の支援装置。 - 【請求項3】前記評価部は、メモリダンプ情報の変数の
値を用いて評価することを特徴とする請求項1記載の支
援装置。 - 【請求項4】前記出力部は、判定部により成立すると判
定された代入式および比較式に、アンダーラインを付け
て出力することを特徴とする請求項1記載の支援装置。 - 【請求項5】前記出力部は、前記代入式および比較式
を、ソースプログラム上に識別可能に出力することを特
徴とする請求項1記載の支援装置。 - 【請求項6】前記評価部は、前記プログラムが実行中に
エラーにより中断された場合に処理を行うことを特徴と
する請求項1記載の支援装置。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP3056711A JP3062266B2 (ja) | 1991-03-20 | 1991-03-20 | 支援装置 |
US07/854,563 US5408660A (en) | 1991-03-20 | 1992-03-20 | System for analyzing and displaying data in computer program |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP3056711A JP3062266B2 (ja) | 1991-03-20 | 1991-03-20 | 支援装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH0695866A JPH0695866A (ja) | 1994-04-08 |
JP3062266B2 true JP3062266B2 (ja) | 2000-07-10 |
Family
ID=13035067
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP3056711A Expired - Fee Related JP3062266B2 (ja) | 1991-03-20 | 1991-03-20 | 支援装置 |
Country Status (2)
Country | Link |
---|---|
US (1) | US5408660A (ja) |
JP (1) | JP3062266B2 (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8123065B2 (en) | 2004-03-16 | 2012-02-28 | Prescribe Genomics Co. | Container with lid |
USD941523S1 (en) | 2018-08-22 | 2022-01-18 | Sto Responsible, LLC | Child-resistant storage container |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH06124211A (ja) * | 1992-10-14 | 1994-05-06 | Fujitsu Ltd | プログラム解析装置 |
JP2741325B2 (ja) * | 1993-02-01 | 1998-04-15 | スター精密株式会社 | 印字装置 |
AUPM519694A0 (en) * | 1994-04-19 | 1994-05-12 | Griffith University | Method for testing and debugging computer programs |
US5603021A (en) * | 1994-09-02 | 1997-02-11 | Borland International, Inc. | Methods for composing formulas in an electronic spreadsheet system |
US5862382A (en) * | 1995-05-08 | 1999-01-19 | Kabushiki Kaisha Toshiba | Program analysis system and program analysis method |
US5999933A (en) * | 1995-12-14 | 1999-12-07 | Compaq Computer Corporation | Process and apparatus for collecting a data structure of a memory dump into a logical table |
CN101198930B (zh) * | 2005-04-13 | 2011-07-27 | 艾利森电话股份有限公司 | 用于支持计算机***中的数据值一致性的***和方法 |
US8015556B2 (en) * | 2006-10-12 | 2011-09-06 | International Business Machines Corporation | Efficient method of data reshaping for multidimensional dynamic array objects in the presence of multiple object instantiations |
US9043290B2 (en) | 2013-01-14 | 2015-05-26 | International Business Machines Corporation | Rewriting relational expressions for different type systems |
JP6471556B2 (ja) * | 2015-03-18 | 2019-02-20 | 日本電気株式会社 | デバッグ支援装置及びデバッグ支援方法 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0614320B2 (ja) * | 1984-10-17 | 1994-02-23 | 株式会社日立製作所 | 図式プログラム・テスト方法 |
CA1268557A (en) * | 1986-04-01 | 1990-05-01 | Mikio Tomioka | Method for displaying program executing circumstances and an apparatus using the same |
US5191646A (en) * | 1986-11-20 | 1993-03-02 | Hitachi, Ltd. | Display method in software development support system |
JP2749039B2 (ja) * | 1987-11-06 | 1998-05-13 | 株式会社日立製作所 | オブジェクト生成方法 |
US5038348A (en) * | 1988-07-01 | 1991-08-06 | Sharp Kabushiki Kaisha | Apparatus for debugging a data flow program |
US5255385A (en) * | 1990-02-26 | 1993-10-19 | Hitachi, Ltd. | Method of testing program, and compiler and program testing tool for the method |
US5293631A (en) * | 1991-08-06 | 1994-03-08 | Hewlett-Packard Company | Analysis and optimization of array variables in compiler for instruction level parallel processor |
-
1991
- 1991-03-20 JP JP3056711A patent/JP3062266B2/ja not_active Expired - Fee Related
-
1992
- 1992-03-20 US US07/854,563 patent/US5408660A/en not_active Expired - Lifetime
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8123065B2 (en) | 2004-03-16 | 2012-02-28 | Prescribe Genomics Co. | Container with lid |
USD941523S1 (en) | 2018-08-22 | 2022-01-18 | Sto Responsible, LLC | Child-resistant storage container |
Also Published As
Publication number | Publication date |
---|---|
JPH0695866A (ja) | 1994-04-08 |
US5408660A (en) | 1995-04-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6799718B2 (en) | Development assistance for mixed-language sources | |
US9710243B2 (en) | Parser that uses a reflection technique to build a program semantic tree | |
US6131189A (en) | System and method to efficiently represent aliases and indirect memory operations in static single assignment form during compilation | |
JP3062266B2 (ja) | 支援装置 | |
US20070226720A1 (en) | System and Method for Efficiently Passing Information Between Compiler and Post-Compile-Time Software | |
US20040153825A1 (en) | Device and method for monitoring a program execution | |
JPH0769832B2 (ja) | プログラミング演算の効果と従属性とを表現する方法及び装置 | |
US6330714B1 (en) | Method and computer program product for implementing redundant lock avoidance | |
JP3205406B2 (ja) | 参照対象変数決定処理方法および翻訳処理システム | |
JP4092750B2 (ja) | 冗長コード検査装置 | |
JP3029368B2 (ja) | プログラム誤り検出方法および誤り検出装置 | |
JP3338752B2 (ja) | 更新可能表の明示指定によるデッドロック削減方式 | |
JP2507676B2 (ja) | 索引入出力文実行処理方式 | |
JP2977642B2 (ja) | Fortranコンパイル処理装置 | |
JPH1195995A (ja) | データフロー解析装置、データフロー解析方法及びそのためのコンピュータプログラムを記録した記録媒体 | |
JP3903514B2 (ja) | 未定義変数検出の最適化コンパイラ装置 | |
KR100279731B1 (ko) | 칠 언어에 대한 제어 흐름 표시방법 | |
JP2002073370A (ja) | デバッグ支援装置およびその装置によるデバッグ方法 | |
CN116560761A (zh) | 全局函数的信息获取方法及装置、电子设备及存储介质 | |
CN113885854A (zh) | 一种Python外部函数的静态类型推断方法及*** | |
JP2002189613A (ja) | ソフトウェア開発支援装置、ソフトウェア開発支援方法及びソフトウェア開発支援プログラムを記録したコンピュータ読み取り可能な記録媒体 | |
JPH05204705A (ja) | 未定義変数検出処理方法 | |
JP2001034482A (ja) | コンパイル装置、プログラム最適化装置、コンパイル処理方法及び記録媒体 | |
JPH07141165A (ja) | 情報処理装置 | |
JPH08202538A (ja) | プログラム作成装置 |
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: 20000328 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20080428 Year of fee payment: 8 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090428 Year of fee payment: 9 |
|
LAPS | Cancellation because of no payment of annual fees |