JP4092750B2 - 冗長コード検査装置 - Google Patents

冗長コード検査装置 Download PDF

Info

Publication number
JP4092750B2
JP4092750B2 JP25884297A JP25884297A JP4092750B2 JP 4092750 B2 JP4092750 B2 JP 4092750B2 JP 25884297 A JP25884297 A JP 25884297A JP 25884297 A JP25884297 A JP 25884297A JP 4092750 B2 JP4092750 B2 JP 4092750B2
Authority
JP
Japan
Prior art keywords
program
output
source code
code
input
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
Application number
JP25884297A
Other languages
English (en)
Other versions
JPH1195996A (ja
Inventor
優美子 松井
正浩 野口
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.)
NS Solutions Corp
Original Assignee
NS Solutions Corp
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 NS Solutions Corp filed Critical NS Solutions Corp
Priority to JP25884297A priority Critical patent/JP4092750B2/ja
Publication of JPH1195996A publication Critical patent/JPH1195996A/ja
Application granted granted Critical
Publication of JP4092750B2 publication Critical patent/JP4092750B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Landscapes

  • Devices For Executing Special Programs (AREA)
  • Stored Programmes (AREA)

Description

【0001】
【発明の属する技術分野】
本発明は、コンピュータのソースプログラム中の冗長コードを検出する冗長コード検査装置に関する。
【0002】
【従来の技術】
実際のプログラム開発においては、プログラマが、後に使用することを意図して変数を定義したが、実際には、その変数を使用せずにプログラムができてしまった場合や、一旦、その変数を使ってプログラムを作成したが、後の修正でそれが不要となり、その定義したコードを削除せずにそのまま残した場合などに冗長コードが発生する。このような冗長コードは、プログラム中に存在しても、プログラムの動作上は問題はない。しかし、冗長コードがプログラム中に残っていると、後にそのプログラムを保守したり、プログラム内容を解析しようとする場合に、これらの作業を難しくし、作業効率を低下させる。したがって、冗長コードはできる限り削除しておくことが望ましい。
【0003】
【発明が解決しようとする課題】
ところで、簡単なソースプログラムの場合は、それを人間が見て、どれが冗長コードであるかを見つけだすことができる。しかし、多くの大規模で複雑なプログラムの場合には、たとえプログラムの専門家であっもすべての冗長コードを確実に見つけ出すことは容易でない。
【0004】
本発明は、上記事情に基づいてなされたものであり、コンピュータのソースプログラム内にある冗長コードを自動的に検出し、必要に応じて自動的に当該冗長コードを削除する冗長コード検査装置を提供することを目的とする。
【0005】
【課題を解決するための手段】
上記の目的を達成するための請求項1記載の発明に係る冗長コード検査装置は、プログラムの出力を特定するためのソースコードに関する基準を記憶する記憶部と、読み込まれたコンピュータプログラムのソースコードの中から、前記記憶部を参照して、前記基準に合致するソースコードを探索する入出力探索手段と、前記探索されたソースコード以外であって、且つ、前記探索されたソースコードで表現されたプログラムの出力に影響を与えないソースコードを特定し、これをプログラムの出力に影響を与えないソースコードである冗長コードとして特定する冗長コード特定手段と、を具備し、前記記憶部は、プログラムの出力を特定するためのソースコードに関する基準に加えて、プログラムの入力を特定するためのソースコードに関する基準を記憶しており、前記入出力探索手段は、前記読み込まれたコンピュータプログラムのソースコードの中から、前記記憶部を参照して、前記基準に合致するソースコードを探索し、前記冗長コード特定手段は、プログラムの出力を特定するための前記基準を用いて探索されたソースコードで表現されたプログラムの出力に影響を与えないソースコードであって、且つ、プログラムの入力を特定するための前記基準を用いて探索されたソースコードを冗長コードとして特定することを特徴とする。
【0008】
請求項2記載の発明は、請求項1記載の冗長コード検査装置において、前記記憶部は前記読み込まれたコンピュータプログラムのソースコードの言語に対応した前記プログラムの出力と入力とを特定するための基準を記憶するものであり、前記入出力探索手段は、前記読み込まれたコンピュータプログラムのソースコードの中から、前記記憶部を参照し、前記記憶部に記憶された前記基準のうちの何れかと合致するソースコードを探索することを特徴とする。
【0009】
上記の目的を達成するための請求項3記載の発明に係るコンピュータ読み取り可能な記録媒体は、請求項1又は2に記載の冗長コード検査装置としてコンピュータを動作させるためのプログラムを記録したものである。
【0010】
請求項1記載の発明は、前記より、入出力探索手段は、予め定められた基準に基づいて読み込まれたコンピュータプログラムのソースコードについて入力と出力を探索する。入力と出力とが分かれば、それに基づいて冗長コードを特定することができる。かかる冗長コードをソースプログラムから削除することによって、プログラムの保守効率が向上する。
【0011】
【発明の実施の形態】
以下に本発明の実施の形態について説明する。図1は、冗長コードについて説明するためのC言語によるコンピュータプログラムの一例を示す図、図2は、図1に示すプログラムに基づいて作成されたフローグラフを示す図、図3は、C言語で記述されたプログラムにおける入出力をまとめた表、図4は、FORTRAN言語で記述されたプログラムにおける入出力をまとめた表、図5は本発明の一実施形態の冗長コード検査装置の機能ブロック図、図6は、FORTRAN言語によるソースプログラムの一例を示した図である。
【0012】
まず、具体的な例を用いて、ソースプログラムの冗長コードについて説明する。冗長コードとは、ソースプログラムの命令を記載したコードのうち、出力に影響を与えないコードをいう。図2において、ノード109は、図1のプログラムの18行目に対応するノードであり、「return j;」という実行文によって、変数jが返される。すなわち、このノードに対応する「return j;」という実行文は、このプログラムの実行結果を表すものである。したがって、jはこのプログラムの出力に該当する。
【0013】
そこで、このフローグラフを逆に下から上へ辿って、出力変数jに影響を与えるのはどこかを調べる。まず、ノード104(プログラムの10行目)においてjが定義されている(j=0)。また、ノード104とは異なる経路のノード107(プログラムの15行目)においてもjが定義されている。したがって、これらのノードは、ノード109の出力に影響を与える。また、ノード103(プログラムの9行目)の分岐も、ノード109の出力に影響を与える。更に、プログラムの2行目に対応するノード100の「entry」ノードでは、引数としてn,mが定義されている。このnは分岐ノード103に影響を与えている。その結果、ノード100はノード109の出力jにも影響を与える。
【0014】
つまり、ノード109に影響を与えるのは、ノード100、ノード103、ノード104、ノード107であり、これ以外のノード101、ノード102、ノード105、ノード106、ノード108は、ノード109に影響を与えない。したがって、図1のプログラムにおいては、6行目、7行目、11行目、12行目、16行目が冗長なコードであることが分かる。
【0015】
次に、図1のプログラムの入力について考える。図1のプログラムにおいて、入力変数n及びmは、2行目にあるように、関数sample1の引数である。この場合は、図1のプログラムの上から下に向かう方向で解析し、nとmがどこに影響するかを調べる。この場合、ノード109が出力であることを認識しておく。
【0016】
まず、nについて考えると、ノード100において定義され、ノード103の分岐において使用されている。ある入力変数が分岐において使用されている場合には、その分岐した直後のノードでもその入力変数は使用された、すなわちnが影響を与えていると考える。この場合、分岐した直後のノードはノード104とノード107であり、これらのノードではjが定義されているので、それ以降jが使用されている部分には、nが影響を与えることになる。すなわち、出力ノード109においてjが使用されているが、このjは出力なので、入力変数nは出力に影響を与えている。
【0017】
次に、mについて影響を調べる。まず、mは、ノード101、ノード102において使用されている。ノード101では「i=m」というiの定義にmが使用されており、このiは、ノード106(プログラムの12行目)及びノード108(プログラムの16行目)において使用されている。しかしながら、出力ノード109において使用されているのは、jだけであって、iは使用されていない。ということは、iに関係するmは出力に影響を与えない。次に、ノード102では「j=m」というjの定義にmが使用されている。しかしながら、分岐ノード103(プログラムの9行目)で使用されているのはnのみであって、mは使用されていない。さらに、ノード104においては「j=0」と、ノード107においては「j=1」と、それぞれの分岐経路において再度jが定義されている。したがって、出力ノード109においてjが使用されているが、このjには、mは無関係である。結局、入力変数mは、出力変数jには影響を与えない。したがって、入力変数mは、冗長であることが分かる。
【0018】
上の結果をまとめると、図1のプログラムにおいて、6行目、7行目、11行目、12行目、16行目の文は冗長コードであり、入力変数mは冗長である。このような冗長コードがプログラム中に存在しても、そのコード自体は実行されるがそのプログラムの実行結果には影響を与えないので、冗長コードの存在はプログラムの実行上は問題とならない。しかしながら、冗長コードの存在は、プログラムを保守するという観点から考えると望ましくない。特に、後にそのプログラムを作成した者以外のものが、そのプログラムの内容を解析しなければならない場合には、冗長コードはプログラムの理解の妨げとなり、保守効率を低下させる原因となる。また、冗長コードが存在することによって、予想しえない何らかの誤動作の原因になるかもしれない。したがって、冗長コードが見つかった場合には、それを削除しておくのが望ましい。
【0019】
以上が、冗長コードについての説明である。尚、この冗長コードについては、B.Korel著「The Program Depencance Grahp In Static Program Testing」(Information Processig Letters 30,Jan.1987)を参照することができる。
【0020】
次に、どういうものを入力とし、どういうものを出力とするかについて説明する。図3は、C言語の場合の入力及び出力に該当する判断基準をまとめた表である。本実施形態では、図3の表に示すように、
「引数」
「非局所変数の参照」
「scanf関数などの入力関数で定義される変数」
を入力とする。ここで、「非局所変数」のうち代表的なものは大域変数である。大域変数は、一つの関数だけでなく、色々な関数が使うことができる変数である。したがって、大域変数を使う関数は、その関数以外の部分を見ることになるので、大域変数の参照は入力とする。また、入口ノードとは、ソースプログラムをフローグラフに直した場合のentryノードのことを指す。「scanf関数」とは、ある情報をオペレータがキーボードから打ち込んだ場合、その情報がプログラムに読み込まれるという関数である。このため、scanf関数のように、関数の外からの情報で定義される変数も入力とする。
【0021】
次に、出力については、
「出口ノードで有効な非局所変数の定義」
「出口ノードで有効であり、外部に影響する引数の定義」
「return文で返される変数」
「printf関数などの出力関数で使用される変数」
を出力とする。ここで、「出口ノードで有効な非局所変数の定義」は、例えばその関数において大域変数をある値に定義し、それがその関数の最後の部分、すなわちフローグラフに直したときのexitノードにおいて有効な場合である。ここでは、関数の中では、大域変数を複数回定義する場合もあるが、最後に有効なものを指している。この場合、他の関数がその大域変数を使おうとすると、その定義された値として使うことになるので、これはその関数についての出力となる。また、「外部に影響する引数の定義」は、C言語の場合、ある関数の中で引数を定義したときに、その定義された値を他の関数で使える場合(ポインタなど)と使えない場合があるので、外部に影響するものだけを出力としている。「return文で返される変数」は、その関数を外部から呼び出したときに、その値を決定することになるので、これも出力とする。「printf関数」とは、コンピュータの画面に指定した情報が表示されるという関数である。このため、このような関数から書き出される変数も出力とする。
【0022】
図4は、FORTRAN言語の場合の入力及び出力に該当する判断基準をまとめた表である。本実施形態では、図4の表に示すように、
「引数」
「非局所変数の参照」
「READ文で定義される変数」
を入力とする。これを見ると、図3に示すC言語の場合と同じものもあるので、それらについては、説明を省略する。「READ」文は、C言語におけるscanf関数に相当するもので、キーボードから打ち込んだ情報あるいは指定したファイルの情報がコンピュータに伝えられ、これが入力として捉えられる命令であり、したがって、「READ文で定義される変数」も入力とする。
【0023】
次に、出力については、
「出口ノードで有効な非局所変数の定義」
「出口ノードで有効な引数の定義」
「RETURN文で使用される変数」
「WRITE文およびPRINT文で使用される変数」
を出力とする。ここで、2つめの「出口ノードで有効な引数の定義」は、C言語の場合と異なる。これは、FORTRAN言語の場合には、ある関数の中で引数を定義したときに、その定義された値を他の手続きで使うことができるという点でC言語と異なるので、上のように規定することができる。「RETURN」文は、制御をどの文へ戻すかを指定する文であり、通常の出力と異なるが、手続きの外部に影響するという意味で、ここでは出力とみなす。また、「WRITE文」および「PRINT文」は、コンピュータの画面あるいは指定したファイルに情報が伝達されるという命令文である。したがって、これも出力とする。
【0024】
以上のように、何を入力とし、何を出力とすべきかは、プログラム言語の種類によって異なる。C言語の場合には、図3の表によって、また、FORTRAN言語の場合には、図4の表によって入力と出力は特定されるが、これ以外のプログラム言語を用いる場合には、予め、何を入力とし、何を出力とするかを明確に特定しておく必要がある。
【0025】
図5は、本実施形態の冗長コード検査装置の機能ブロック図である。ソースプログラム読み込み部10は、冗長コード検査を行おうとするソースプログラムのファイルを読み込む。入出力探索部11は、そのソースプログラムがC言語による場合には図3に示した基準に基づいて、また、そのソースプログラムがFORTRAN言語による場合には図4に示した基準に基づいて、そのソースプログラムの中から入力と出力を探索する。冗長コード特定部12は、見いだされた入力と出力に応じて、上で説明した考え方のアルゴリズムによって冗長コードを特定する。
【0026】
尚、上記のソースプログラム読み込み部10、入出力探索部11、冗長コード特定部12は、コンピュータ上で動作するソフトウェアとして実現される。
図1に示したC言語のプログラムには、関数の呼び出しが含まれていないが、C言語の標準ライブラリのように、ソースコードの内容が分かっていない関数が呼び出される場合がある。また、FORTRAN言語の場合にも、ソースコードの内容が分かっていないサブルーチンが呼び出される場合がある。このような場合に、上の考え方をそのまま用いて冗長コード検査を行うと、冗長コードが発見できなかったり、誤った結論が導かれる場合がある。
【0027】
図6は、FORTRAN言語で記述されたプログラム例である。このプログラムを見ると、CHANGEというサブルーチンの中で、INITというサブルーチンが呼び出されている。このサブルーチンは、コンパイルされてライブラリとして用意されているものであって、そのソースコードは、図6のプログラムの中には含まれていないものとする。プログラマに分かるのは、コンパイルされたプログラムの仕様だけである。
【0028】
そこで、本実施形態では、プログラムが呼び出す手続き(FORTRANの場合はサブルーチンなど、C言語の場合は関数)が、標準ライブラリのようなソースコードを持たないものである場合には、予め入力と出力に関するテーブルを用意しておく。図6のソースプログラムの場合、サブルーチンINITについては、具体的には、
「INIT(N)・・・ 参照:なし 定義:N」
という情報を記載しておく。ここで、「参照:なし」とは、サブルーチンINITの中では、INITの外部の変数が参照されないことを意味し、「定義:N」とは、サブルーチンINITがINIT(N)という形で現れたときには引数Nが定義されるということを意味する。このように、ソースコードを持たない手続きについては、予め、テーブルを用意しておき、これをデータベースとして格納しておく。そして、冗長コード解析を行うときに、必要に応じて、図5の入出力探索部11がこのデータベースにアクセスし、必要なテーブルを読み出すことによって、当該手続きについての入力と出力を特定できるようにする。
【0029】
図6のプログラムにおいて、仮に、予め用意したデータベースにアクセスせずに通常どおりに冗長コード検査を行うと、入力は1行目のIとJ、出力は7行目のIとなり、出力に影響を与える部分を解析したときに、3行目で「K=0」と定義された部分が7行目のKに影響を与えると判断される。しかしながら、サブルーチンINITについて予め上記のようなテーブルを用意しておき、サブルーチンや関数などの手続きの呼び出しがあったときには図5の入出力探索部11がこれを参照する、というようにしておけば、Kについての影響解析を行うときに、サブルーチンの中でKがある値に定義されているということが分かる。これにより、3行目の「K=0」という実行文は、冗長コードであり、このプログラムでは不要であることが分かる。
【0030】
このように、ソースコードが存在しない手続きの呼び出しがあった場合に、これについての所定のテーブルを予め用意しておくことによって、冗長コード検査を確実に、かつ迅速に行うことができる。
尚、本発明は、上記実施形態に限定されるものではなく、その要旨の範囲内で種々の変更が可能である。
【0031】
【発明の効果】
以上説明したように、本発明によれば、ソースプログラムに冗長コードが存在しているときに、これを自動的に見いだすことができるので、プログラマが冗長コードを見つけ出す場合の労力が軽減され、また、冗長コードを確実に削除することができるので、その後のプログラムの保守効率が向上する。また、ソースコードが存在しない手続きの呼び出しがあったときに、予め当該手続きについて所定の情報を記載したテーブルを用意しておき、呼び出しがあったときにそのテーブルを参照することによって、ソースコードが存在しない手続きの呼び出しがあった場合でも正確に冗長コード検査を行うことができる。
【図面の簡単な説明】
【図1】冗長コードについて説明するためのC言語によるコンピュータプログラムの一例を示す図である。
【図2】図1に示すプログラムに基づいて作成されたフローグラフを示す図である。
【図3】C言語で記述されたプログラムにおける入出力をまとめた表を示す図である。
【図4】FORTRAN言語で記述されたプログラムにおける入出力をまとめた表を示す図である。
【図5】本発明の一実施形態の冗長コード検査装置の機能ブロック図である。
【図6】FORTRAN言語によるソースプログラムの一例を示した図である。
【符号の説明】
10 ソースプログラム読み込み部
11 入出力探索部
12 冗長コード特定部

Claims (3)

  1. プログラムの出力を特定するためのソースコードに関する基準を記憶する記憶部と、
    読み込まれたコンピュータプログラムのソースコードの中から、前記記憶部を参照して、前記基準に合致するソースコードを探索する入出力探索手段と、
    前記探索されたソースコード以外であって、且つ、前記探索されたソースコードで表現されたプログラムの出力に影響を与えないソースコードを特定し、これをプログラムの出力に影響を与えないソースコードである冗長コードとして特定する冗長コード特定手段と、を具備し、
    前記記憶部は、プログラムの出力を特定するためのソースコードに関する基準に加えて、プログラムの入力を特定するためのソースコードに関する基準を記憶しており、
    前記入出力探索手段は、前記読み込まれたコンピュータプログラムのソースコードの中から、前記記憶部を参照して、前記基準に合致するソースコードを探索し、
    前記冗長コード特定手段は、プログラムの出力を特定するための前記基準を用いて探索されたソースコードで表現されたプログラムの出力に影響を与えないソースコードであって、且つ、プログラムの入力を特定するための前記基準を用いて探索されたソースコードを冗長コードとして特定することを特徴とする冗長コード検査装置。
  2. 前記記憶部は前記読み込まれたコンピュータプログラムのソースコードの言語に対応した前記プログラムの出力と入力とを特定するための基準を記憶するものであり、
    前記入出力探索手段は、前記読み込まれたコンピュータプログラムのソースコードの中から、前記記憶部を参照し、前記記憶部に記憶された前記基準のうちの何れかと合致するソースコードを探索することを特徴とする請求項1記載の冗長コード検査装置。
  3. 請求項1又は2に記載の冗長コード検査装置としてコンピュータを動作させるためのプログラムを記録したコンピュータ読み取り可能な記録媒体。
JP25884297A 1997-09-24 1997-09-24 冗長コード検査装置 Expired - Fee Related JP4092750B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP25884297A JP4092750B2 (ja) 1997-09-24 1997-09-24 冗長コード検査装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP25884297A JP4092750B2 (ja) 1997-09-24 1997-09-24 冗長コード検査装置

Publications (2)

Publication Number Publication Date
JPH1195996A JPH1195996A (ja) 1999-04-09
JP4092750B2 true JP4092750B2 (ja) 2008-05-28

Family

ID=17325793

Family Applications (1)

Application Number Title Priority Date Filing Date
JP25884297A Expired - Fee Related JP4092750B2 (ja) 1997-09-24 1997-09-24 冗長コード検査装置

Country Status (1)

Country Link
JP (1) JP4092750B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117171043B (zh) * 2023-09-18 2024-03-26 盐城柒壹网络科技有限公司 一种源代码智能检测方法、系统、设备及存储介质

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4722071A (en) * 1985-04-19 1988-01-26 Pertron Controls, Corporation Compiler for evaluating Boolean expressions
JPH06202905A (ja) * 1992-06-17 1994-07-22 Nippon Telegr & Teleph Corp <Ntt> クリティカルスライス・プログラムデバッグシステム
JPH07239788A (ja) * 1994-02-28 1995-09-12 Hokuriku Nippon Denki Software Kk 不要変数型宣言チェック機能付きコンパイラ
JPH0869380A (ja) * 1994-08-29 1996-03-12 Fujitsu Ltd ソースプログラムチェック装置
JPH08292881A (ja) * 1995-04-24 1996-11-05 Nec Corp プログラム影響範囲表示装置
JPH09101880A (ja) * 1995-10-04 1997-04-15 Fujitsu Ltd プログラム分析装置
JP4055197B2 (ja) * 1997-02-17 2008-03-05 新日鉄ソリューションズ株式会社 プログラムに含まれる手続きの解析装置

Also Published As

Publication number Publication date
JPH1195996A (ja) 1999-04-09

Similar Documents

Publication Publication Date Title
US5182806A (en) Incremental compiler for source-code development system
US5313387A (en) Re-execution of edit-compile-run cycles for changed lines of source code, with storage of associated data in buffers
US5170465A (en) Incremental-scanning compiler for source-code development system
US5325531A (en) Compiler using clean lines table with entries indicating unchanged text lines for incrementally compiling only changed source text lines
Korel et al. Dynamic slicing of computer programs
US5201050A (en) Line-skip compiler for source-code development system
US6519765B1 (en) Method and apparatus for eliminating redundant array range checks in a compiler
JP4181326B2 (ja) コード最適化のための方法、装置及びプログラム
US7950005B2 (en) Method and apparatus for performing versioning for loop, method and apparatus for collecting array range check information in basic blocks, method for modifying array range check information, method for optimizing array range checks, method for generating codes for array range checks, method and apparatus for eliminating redundant array range checks, method for selecting array range checks, method for modifying array range checks, method for collecting array range checks, and method for determining handling of array range checks
US6415436B1 (en) Mechanism for cross validating emulated states between different emulation technologies in a dynamic compiler
US5301327A (en) Virtual memory management for source-code development system
JP3062266B2 (ja) 支援装置
US5822589A (en) Method for locating errors in a computer program
EP0406028A2 (en) Incremental compiler for source code development system
JP4092750B2 (ja) 冗長コード検査装置
EP1202171A2 (en) Compile method and program recording medium
JP4200534B2 (ja) データフロー異常検査装置
US7627859B2 (en) Method for configuring non-script language library files to be run as scripts
JP3903514B2 (ja) 未定義変数検出の最適化コンパイラ装置
JP2002073370A (ja) デバッグ支援装置およびその装置によるデバッグ方法
JPH1195995A (ja) データフロー解析装置、データフロー解析方法及びそのためのコンピュータプログラムを記録した記録媒体
JPH05204705A (ja) 未定義変数検出処理方法
KR950005523B1 (ko) 프로그램어블 로직 콘트롤러의 스텝 런 처리방법
JP2507676B2 (ja) 索引入出力文実行処理方式
Brunswick LILK—Static analysis of REDUCE code

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20040421

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20070125

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20070208

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070409

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20070508

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070706

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20070731

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070928

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20071031

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20071122

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20080118

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20080212

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20080225

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

Free format text: PAYMENT UNTIL: 20110314

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20110314

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20120314

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20120314

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20130314

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20130314

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20140314

Year of fee payment: 6

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees