JPH09128240A - クラスの主記憶装置への配置方法 - Google Patents
クラスの主記憶装置への配置方法Info
- Publication number
- JPH09128240A JPH09128240A JP7306584A JP30658495A JPH09128240A JP H09128240 A JPH09128240 A JP H09128240A JP 7306584 A JP7306584 A JP 7306584A JP 30658495 A JP30658495 A JP 30658495A JP H09128240 A JPH09128240 A JP H09128240A
- Authority
- JP
- Japan
- Prior art keywords
- address
- class
- variable
- absolute
- correction
- 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
Links
Landscapes
- Devices For Executing Special Programs (AREA)
Abstract
クラス定義を主記憶装置上に配置する場合に、プログラ
ムカウンタ相対アドレシング方式を採用する場合には、
クラス定義中の静的変数に対する絶対アドレスがそのま
まにされ、参照が不能になる。そこで、コンパイル中に
クラス定義から静的変数を参照する絶対アドレスを抽出
し、主記憶装置上にクラスを配置する場合に、同時にア
ドレス補正を行う。 【効果】 プログラムカウンタ相対アドレシング方式に
おいても静的変数のアドレスを参照することが可能にな
り、木構造のデータ使用等が可能になり、効率的なプロ
グラムが作成できる。
Description
技術で開発されたプログラムのクラスの主記憶装置への
配置方法に関する。
て、例えばよく知られたC言語によりプログラムを作成
する場合、オブジェクトの性質を抽出して宣言するため
にクラス定義を行う。このクラスの内部には、ある変数
のアドレスを参照するような変数を含めることができ
る。この変数の中に静的変数というものがあり、これは
クラスから生成される全てのインスタンスより共通に参
照することができる変数である。この静的変数のアドレ
スは、クラスの先頭アドレスを基準とした絶対アドレス
で表現される。従って、クラスをコンパイル/リンク
し、主記憶装置上に配置する場合、静的変数に対しては
絶対アドレスが割り付けられる。
な従来のクラスの主記憶装置への配置方法には次のよう
な解決すべき課題があった。オブジェクト指向プログラ
ミング技術で開発されたシステムにおいて、プログラム
の修正や機能追加の際には、システムを停止することな
く新しいクラスを動的にメモリ上の空き領域に配置する
仕組みが要求される。この要求に応えるため、プログラ
ムカウンタ相対アドレシングによる方式が知られてい
る。この方式では、コンパイル/リンクを行うと、クラ
ス内部で参照するアドレスは、プログラムカウンタの値
をオフセット値とした相対アドレスに換算され、実行時
に参照される。従って、クラスを主記憶装置上の任意の
場所に再配置することが可能になる。
が含まれている場合には、その静的変数が参照している
他の静的変数のアドレスまでは補正をしない。従って、
実際にはアドレスが不正となり、参照が不能になる。こ
のため、従来はプログラムカウンタ相対アドレシング方
式を採用する場合には、静的変数による参照を避けてプ
ログラミングを行っていた。ところが、これでは例え
ば、アドレスを参照する木構造データを静的に作ること
はできなかった。なお、この木構造データというのは、
枝から順番に幹に向かって変数を辿り、目的とするデー
タを参照するようなデータ構造をいう。
いくつかのメソッドを選択し分岐する仕組みが含められ
ることがある。この場合、一般のプログラムで行われて
いるような条件文等を伴う分岐関数を設けるとよい。し
かしながら、分岐するメソッドの数が多くなると、メソ
ッドを選択して分岐するまでの手順が増えて効率が低下
し、クラス定義のコードサイズが大きくなるというデメ
リットがある。そこで、メソッドのアドレスを参照する
ジャンプテーブルを用いて、該当するメソッドをコール
する方が効率のよいプログラムとなる。ところが、先に
説明したプログラムカウンタ相対アドレシングを用いた
場合には、やはりクラスの再配置の際にジャンプテーブ
ル中のメソッドのアドレスが補正の対象にならない。従
って、絶対アドレスで表示されたメソッドの呼び出しが
できなくなってしまう。このため、従来このようなジャ
ンプテーブルを静的に作ることはできなかった。
するため次の構成を採用する。 〈構成1〉ソースコードにより記述されたクラス定義を
実行可能形式ファイルにコンパイルする際に、クラス定
義中で、他の静的変数の絶対アドレスを指定して参照す
る静的変数を抽出し、主記憶装置上の任意の領域に実行
可能形式ファイルを配置するとともに、抽出した絶対ア
ドレスに対し、そのクラスの先頭アドレスによって定ま
るオフセットアドレスを、絶対アドレスに加算する補正
を行う。
ング方式では、クラス定義中に含まれる静的変数に対し
て、コンパイル、リンク時に、メモリ即ち主記憶装置上
の絶対アドレスが割りつけられる。なお、静的変数と
は、オブジェクト指向プログラムにおいて、あるクラス
から生成される全てのインスタンスより共通に参照する
ことができ、実記憶上では絶対アドレスにより特定され
るデータセグメントに配置された変更不可能な変数のこ
とをいう。このようなクラスをコンパイルした実行可能
形式ファイルが、主記憶装置上の任意の空き領域に再配
置されると、ある静的変数が他の静的変数の絶対アドレ
スを指定して参照しているような場合に、参照するアド
レスが不正になる。そこで、コンパイル時に該当する静
的変数を予め抽出する。
って定まるオフセットアドレスを、絶対アドレスに加算
する補正をして新たな絶対アドレスに置き換えれば、そ
の新たな絶対アドレスにより、再配置後の静的変数が参
照できるようになる。補正はコンパイル直後でも、主記
憶装置への再配置後であってもよい。これにより、個々
のクラスを主記憶装置上に自由に再配置することが可能
になる。また、クラス中では専ら静的なアドレス参照を
採用すればよいことから、静的変数を頻繁に参照するよ
うな場合に、動的なアドレス変換を伴う参照を行う場合
に比べて効率の良いプログラミングが可能となる。
クラス定義を実行可能形式ファイルにコンパイルする際
に、クラスの中で、メソッドのアドレスを参照するため
にジャンプテーブルを設けている場合に、ジャンブテー
ブルに含まれるメソッドの絶対アドレスを抽出し、メモ
リ上の任意の領域に実行可能形式ファイルを配置し、抽
出した絶対アドレスに対し、そのクラスの先頭アドレス
によって定まるオフセットアドレスを、絶対アドレスに
加算する補正を行う。
スを参照するためにジャンプテーブルを設けている場合
に、そのクラスをメモリ上の任意の領域に再配置したと
き、ジャンプテーブル中の絶対アドレスは変化しない。
従って、あるメソッドの絶対アドレスを指定してジャン
プするような場合に、ジャンプ先アドレスが不正にな
る。そこで、静的変数の場合と同様にして絶対アドレス
の補正を行う。その結果、この場合にも、ジャンプテー
ブルによる静的なアドレス指定を採用すればよいことか
ら、条件分岐やその他の演算による動的なアドレス変換
を伴う指定を行う場合に比べて効率の良いプログラミン
グが可能となる。
例を用いて説明する。 〈具体例1〉図1は、本発明の具体例1の方法を説明す
るブロック図である。この方法では、クラス定義1をコ
ンパイルする際に、コンパイラ/リンカ2とアドレス補
正情報生成装置4とを使用する。クラス定義1はオブジ
ェクト指向プログラミング技術により記述されたよく知
られた内容のものである。コンパイラ/リンカ2はソー
スコードで作成されたクラス定義1をコンパイルし、実
行可能形式ファイル3を生成するためのよく知られた装
置から構成される。一方、アドレス補正情報生成装置4
は、構文解析装置5と、意味解析装置6と、補正アドレ
ス抽出装置7と、構文解析木情報8を備え、クラス定義
1の中から静的変数の絶対アドレスを指定して参照する
ような静的変数を抽出する。構文解析装置5はクラス定
義1の各文の要素を検出し、その構文を解析する部分
で、意味解析装置6は各要素の意味を解析する部分であ
る。補正アドレス抽出装置7は、構文解析の結果得られ
た構文解析木情報8を用いて、その内部に含まれる他の
静的変数の絶対アドレスを指定して参照する静的変数を
抽出する部分である。この具体的な説明は後で述べる
が、この補正アドレス抽出装置7によってアドレス補正
情報9が得られる。実行可能形式ファイル3は、配置装
置11によって主記憶装置13の任意の位置に配置され
る。このとき、アドレス補正装置12は、アドレス補正
情報9を参照しながら、主記憶装置13に配置された実
行可能形式ファイル3中の先に説明した静的変数を参照
する絶対アドレス部分を取り出し、これを補正する。ク
ラス配置装置10は、このような配置装置11とアドレ
ス補正装置12とから構成されている。
ドの内容を解析しないよう構文解析木情報8に変換し、
構文上の誤り等をチェックする部分で、意味解析装置6
は構文解析装置によって得られた構文解析木を元に意味
上の誤り等をチェックする部分である。また、補正アド
レス抽出装置7は、構文解析木を元に静的変数及び静的
変数のアドレスを参照する静的変数の絶対アドレスを抽
出し、抽出された情報をテーブル形式でアドレス補正情
報としてファイルに出力する部分である。
は実行形式モジュールをメモリ上にプログラムカウンタ
相対アドレシング方式によって配置する装置である。こ
のとき、先に説明したように、静的変数を参照する静的
変数の内容は修正されずにそのまま主記憶装置上に割り
付けられる。アドレス補正装置12は配置装置によって
主記憶装置上に配置されたクラスの該当する静的変数部
分を検出し、アドレス補正情報9及びそのクラスの主記
憶装置上での先頭アドレス(オフセット)を用いて該当
する部分の補正を行う装置である。
に、PC相対アドレシング方式とアドレス補正情報の内
容、アドレス補正動作の概要等を説明する。図2は、P
C相対アドレシング方式の説明図である。図に示すフェ
ーズ1には、クラスAのソースファイルが表示されてい
る。このソースファイルには、例えば変数bのアドレス
を参照する静的変数aが含められているとする。フェー
ズ2では、これがコンパイルされて、実行可能形式ファ
イルに変換されている。この図を見て分かるように、実
行可能形式ファイルの先頭アドレスを0番地とした場合
に、変数aは変数bのアドレスを参照している。
主記憶装置上に実行可能形式ファイルを配置すると、フ
ェーズ3に示すようになる。このとき、クラスAの先頭
アドレスは、必ずしもメモリの0番地とは一致しない。
従って、変数aはクラスAの先頭アドレスに変数aのア
ドレスを加えた位置に存在する。また、変数bはクラス
Aの先頭アドレスに変数bのアドレスを加えた位置に存
在する。ところが、変数aは静的変数であって、こうし
てメモリ上に配置される際にも内容が変更されず、フェ
ーズ2に示した通り、変数bの絶対アドレスを表示して
いる。これではフェーズ3においてクラスをメモリ上に
配置した後、変数aは変数bを参照することができな
い。本発明では、この変数aを変数bのアドレスを参照
するように変換する操作を行う。
ス補正情報の説明図を示す。まず、クラス定義1は先に
説明したように、コンパイラ/リンカ2によって実行可
能形式ファイル15に変換される。この場合の実行可能
形式ファイル15の構造は図2を用いて説明したフェー
ズ2に示すものと同様である。一方、図3において、ク
ラス定義1からアドレス補正情報生成装置4によってア
ドレス補正情報が抽出される。これはソースコードの段
階で構文解析等を行うことによって、静的変数の絶対ア
ドレスを参照する静的変数を抽出することにより行われ
る。即ち、アドレス補正情報16は、他の静的変数のア
ドレスを参照する静的変数aの絶対アドレス等により構
成される。
す。上記のように生成された実行可能形式ファイル3と
アドレス補正情報9は、図1に示したクラス配置装置1
0に入力する。そして、配置装置11が実行可能形式フ
ァイル3を主記憶装置の所定の場所に配置する。このと
き、主記憶装置上でクラスの先頭アドレスが決定する。
配置装置11はこの先頭アドレスをアドレス補正装置1
2に通知する。アドレス補正装置12はアドレス補正情
報9を用いて、既に主記憶装置上に配置されたクラスの
該当するアドレスの内容を補正する。即ち、変数aの値
をクラスの先頭アドレス+bの絶対アドレスになるよう
に書き換える。
憶装置に実行可能形式ファイルを配置してしまった後で
行う必要はない。例えば、配置装置11が予め主記憶装
置上にクラスを配置する際の先頭アドレスを認識してい
れば、これをアドレス補正装置12に通知し、アドレス
補正装置12は実行可能形式ファイル3の補正を行う。
そして、補正後の実行可能形式ファイル3を配置装置1
1が主記憶装置中に配置するという方法を採用すること
もできる。前者の方法を、後者の方法をというよう
に区別してこの図中に示している。
である。本発明の方法をより具体的に説明するために、
この図によって静的変数のコンパイルと補正時の内容に
ついて詳細に説明する。まず、例えばこの図の左上に示
すように、クラス定義2に含まれる静的変数をa=10
0といった内容のものとする。これをステップS1でコ
ンパイルすると、例えばこの図に示すように“XXX
X”となるものとする。ここで、ステップS2におい
て、先に説明したように、この静的変数aのアドレス5
0を抽出し、補正情報としておく。次に、ステップS3
においてコンパイルされた静的変数が主記憶装置に配置
される。この場合のクラスの先頭アドレスを、例えばこ
の図に示すように300とする。ここで、アドレス補正
処理が開始されると、まずアドレスが50の静的変数a
が参照する絶対アドレスの内容を先頭アドレスを用いて
補正する。即ち、当初参照していた絶対アドレス100
に先頭アドレス300を加算する。そして、正しいアド
レスを参照する静的変数をコンパイルした“YYYY”
を生成する。そして、主記憶装置上に記憶したクラスの
“XXXX”を“YYYY”に置き換える補正を実行す
る(ステップS5)。以上のようにして静的変数の参照
する絶対アドレスがクラスの配置結果に基づいて補正さ
れる。
グラムカウンタ相対アドレシング方式を採用した場合に
おいても、他の静的変数の絶対アドレスを参照する静的
変数を適正に補正するので、このような静的変数の使用
が可能となる。従って、例えば頻繁に参照のみを行う静
的データのアドレスを参照するような静的変数を定義す
ることができ、あるいは木構造のデータを採用すること
もでき、メソッド毎にアドレス変換等を行うダイナミッ
クなアドレス参照を行う場合に比べて、効率よいプログ
ラミングを実施することができる。
在する静的変数を問題としたが、クラス中にメソッドの
アドレスを参照するジャンプテーブルが設けられること
がある。このジャンプテーブルに入っているメソッドの
アドレスは、そのクラスの先頭からカウントした絶対ア
ドレスになっている。プログラムカウンタ相対アドレシ
ングにより実行可能形式ファイルにファイル化され、主
記憶装置上に配置される際にこのジャンプテーブルに表
示された絶対アドレスも変換されない。そこで、上記の
静的変数が参照する絶対アドレスと同様に、この具体例
においてジャンプテーブルの絶対アドレスを補正する。
ック図を示す。クラス定義1は、具体例1と同様にコン
パイラ/リンカ2によってコンパイルされ、実行可能形
式ファイル3とされる。また、クラス定義1は、ジャン
プテーブル補正情報生成装置20によって処理され、ジ
ャンプテーブル補正情報22が抽出される。ジャンプテ
ーブル補正情報生成装置20には、構文解析装置5、意
味解析装置6、ジャンプテーブル抽出装置21及び構文
解析木情報8が設けられる。上記ジャンプテーブル補正
情報生成装置20は、クラス定義1を解析し、ジャンプ
テーブル上のメソッドのアドレスが格納される領域の絶
対アドレスを抽出し、そのテーブルを作成する。このテ
ーブルがジャンプテーブル補正情報22となる。これは
具体例1の場合とよく類似している。構文解析装置5、
意味解析装置6の構成や役割は、具体例1に示したもの
と同様である。ジャンプテーブル抽出装置21は、構文
解析木情報8を元にテーブル上のメソッドのアドレスが
格納される領域の絶対アドレスを抽出する処理を行う部
分である。クラス配置装置10は、具体例1で説明した
と同様の構成の配置装置11やアドレス補正装置12を
備えている。その他の部分は具体例1で説明したものと
同様である。
図を示す。図に示すように、クラス定義1はコンパイラ
/リンカ2によって実行可能形式ファイル25に変換さ
れる。このとき、例えばアドレスaにはメソッドAの絶
対アドレスが格納され、アドレスbにはメソッドBの絶
対アドレスが格納され、アドレスcにはメソッドCの絶
対アドレスが格納されているものとする。これらがジャ
ンプテーブルを構成する。図に示すように、メソッド
A,B,Cには、実行可能形式ファイル25の該当する
アドレスに格納されている。ジャンプテーブル補正情報
生成装置20はジャンプテーブルを参照し、図に示すよ
うなジャンプテーブル補正情報26を生成する。その内
容は、ジャンプテーブルの各部のアドレスa,b,cと
なっている。このような補正情報の生成方法は具体例1
と同様である。
す。上記のようにして生成された実行可能形式ファイル
25とジャンプテーブル補正情報26は、この図に示す
ようにして主記憶装置へ配置される際の補正処理に使用
される。まず、配置装置11は実行可能形式ファイル2
5を所定の主記憶装置上のアドレスに配置する。この場
合に、アドレス補正装置12は、ジャンプテーブルにお
いて指定しているメソッドAの絶対アドレス、メソッド
Bの絶対アドレス、メソッドCの絶対アドレスをそれぞ
れ補正して該当するメソッドを参照できるようにする。
この場合の補正はクラスの先頭アドレスを各絶対アドレ
スに加算することにより行われる。
具体例1を用いて説明した場合と同様である。また、実
行可能形式ファイルを主記憶装置上に配置した後でアド
レス補正を行ってもよいし、また実行可能形式ファイル
25の状態でアドレス補正を行うようにしてもよい。こ
れも具体例1の場合と同様である。
上で、あるメソッドへジャンプするアドレスを検出し、
これを補正することによって、メソッドの絶対アドレス
を持つジャンプテーブルを静的に作ることができる。そ
して、プログラムカウンタ相対アドレシングでクラスを
再配置した場合にも、このジャンプテーブルの内容が適
正に補正されるため、このような方式においてもジャン
プテーブルを利用できる。従って、例えばメソッドを選
択して分岐するような処理に一般的なプログラミング言
語の持つ分岐機構等を記述することによってコードサイ
ズを増加させたり、記述自体を複雑にし、プログラミン
グの効率を低下させるといったことを防止できる。
Claims (2)
- 【請求項1】 ソースコードにより記述されたクラス定
義を実行可能形式ファイルにコンパイルする際に、 前記クラス定義中で、他の静的変数の絶対アドレスを指
定して参照する静的変数を抽出し、 主記憶装置上の任意の領域に前記実行可能形式ファイル
を配置するとともに、 抽出した絶対アドレスに対し、そのクラスの先頭アドレ
スによって定まるオフセットアドレスを、前記絶対アド
レスに加算する補正を行うことを特徴とするクラスの主
記憶装置への配置方法。 - 【請求項2】 ソースコードにより記述されたクラス定
義を実行可能形式ファイルにコンパイルする際に、 前記クラスの中で、メソッドのアドレスを参照するため
にジャンプテーブルを設けている場合に、前記ジャンブ
テーブルに含まれるメソッドの絶対アドレスを抽出し、 メモリ上の任意の領域に前記実行可能形式ファイルを配
置し、 抽出した絶対アドレスに対し、そのクラスの先頭アドレ
スによって定まるオフセットアドレスを、前記絶対アド
レスに加算する補正を行うことを特徴とするクラスの主
記憶装置への配置方法。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP30658495A JP3596570B2 (ja) | 1995-10-31 | 1995-10-31 | クラスの主記憶装置への配置方法 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP30658495A JP3596570B2 (ja) | 1995-10-31 | 1995-10-31 | クラスの主記憶装置への配置方法 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| JPH09128240A true JPH09128240A (ja) | 1997-05-16 |
| JP3596570B2 JP3596570B2 (ja) | 2004-12-02 |
Family
ID=17958830
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP30658495A Expired - Fee Related JP3596570B2 (ja) | 1995-10-31 | 1995-10-31 | クラスの主記憶装置への配置方法 |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JP3596570B2 (ja) |
Cited By (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US5938835A (en) * | 1993-09-14 | 1999-08-17 | W. R. Grace & Co.-Conn. | Cement composition |
-
1995
- 1995-10-31 JP JP30658495A patent/JP3596570B2/ja not_active Expired - Fee Related
Cited By (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US5938835A (en) * | 1993-09-14 | 1999-08-17 | W. R. Grace & Co.-Conn. | Cement composition |
Also Published As
| Publication number | Publication date |
|---|---|
| JP3596570B2 (ja) | 2004-12-02 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US6877155B1 (en) | System and method for generating target language code utilizing an object oriented code generator | |
| USRE38104E1 (en) | Method and apparatus for resolving data references in generated code | |
| US6381737B1 (en) | Automatic adapter/stub generator | |
| US5361351A (en) | System and method for supporting run-time data type identification of objects within a computer program | |
| US6490695B1 (en) | Platform independent memory image analysis architecture for debugging a computer program | |
| US5230049A (en) | Program source code translator | |
| US20020099845A1 (en) | Java embedded server module for forte for java IDE | |
| EP0520708B1 (en) | Method and apparatus for converting high level form abstract syntaxes into an intermediate form | |
| US5758163A (en) | Method and apparatus for record fields usage checking at compile time | |
| JP7391983B2 (ja) | プログラム論理の表現を生成する方法、逆コンパイル装置、再コンパイルシステムおよびコンピュータプログラム製品 | |
| JP3596570B2 (ja) | クラスの主記憶装置への配置方法 | |
| JPH01277934A (ja) | パラメータリスト参照方法の切換え方式 | |
| JP3327674B2 (ja) | プログラム翻訳装置及び方法 | |
| JP3266097B2 (ja) | 非リエントラントプログラムの自動リエントラント化方法及びシステム | |
| JP2002508866A (ja) | データ処理装置の制御方法 | |
| JPH0455945A (ja) | 非局所出口関数フレーム生成コンパイルドコード出力方式 | |
| KR100261281B1 (ko) | 엠헥-5의 선언적 기법을 이용한 제이에이브이에이 응용 서비스개발방법 및 시스템 | |
| JP2001014172A (ja) | プログラム変換装置 | |
| JPS6326730A (ja) | プログラム修正方式 | |
| JP3141945B2 (ja) | コンパイル装置 | |
| JP2720643B2 (ja) | プログラムジェネレータ生成装置 | |
| JPH0196741A (ja) | デバッガにおける共通セクション方式 | |
| JPH06266562A (ja) | オブジェクト指向言語処理システムにおける目的コードサイズ最適化方式 | |
| JP2001005655A (ja) | アプリケーションジェネレータ開発支援装置及びアプリケーションジェネレータ開発支援方法 | |
| JPH056278A (ja) | Fortranコンパイル処理装置 |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20040608 |
|
| A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20040727 |
|
| 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: 20040824 |
|
| A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20040831 |
|
| 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: 20070917 Year of fee payment: 3 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20080917 Year of fee payment: 4 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20080917 Year of fee payment: 4 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090917 Year of fee payment: 5 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090917 Year of fee payment: 5 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100917 Year of fee payment: 6 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110917 Year of fee payment: 7 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110917 Year of fee payment: 7 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120917 Year of fee payment: 8 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120917 Year of fee payment: 8 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130917 Year of fee payment: 9 |
|
| LAPS | Cancellation because of no payment of annual fees |