JP3327674B2 - プログラム翻訳装置及び方法 - Google Patents

プログラム翻訳装置及び方法

Info

Publication number
JP3327674B2
JP3327674B2 JP06490094A JP6490094A JP3327674B2 JP 3327674 B2 JP3327674 B2 JP 3327674B2 JP 06490094 A JP06490094 A JP 06490094A JP 6490094 A JP6490094 A JP 6490094A JP 3327674 B2 JP3327674 B2 JP 3327674B2
Authority
JP
Japan
Prior art keywords
line
information
source
variable
program
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 - Lifetime
Application number
JP06490094A
Other languages
English (en)
Other versions
JPH07271606A (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.)
Panasonic Corp
Panasonic Holdings Corp
Original Assignee
Panasonic Corp
Matsushita Electric Industrial Co 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 Panasonic Corp, Matsushita Electric Industrial Co Ltd filed Critical Panasonic Corp
Priority to JP06490094A priority Critical patent/JP3327674B2/ja
Publication of JPH07271606A publication Critical patent/JPH07271606A/ja
Application granted granted Critical
Publication of JP3327674B2 publication Critical patent/JP3327674B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、高級言語で記述された
ソースプログラムを、目的コードに翻訳すると同時に、
高級言語レベルでのデバッグを行なうためにソースプロ
グラムの情報を目的コードに付加するプログラム翻訳装
及び方法に関するものである。
【0002】
【従来の技術】一般にプログラム翻訳装置は、ソースプ
ログラムを目的コードに変換するという機能(これをコ
ンパイルという。)を有する装置をいう。その際、ソー
スプログラムの変数は資源に割り付けられる。ここでの
資源とはプロセッサのレジスタ、メモリ等の変数の割り
付け先となる記憶媒体のことである。
【0003】またコンパイルに際して、ユーザーは各種
のオプションを指定することができる。このオプション
は、コンパイルの仕方を指示するもので、例えば、シン
ボリックデバッガー用のコンパイルなどがある。ここ
で、シンボリックデバッガーとは、プログラム開発者
が、ソースレベルの変数などのシンボルを用いてデバッ
グすることができる装置である。そのため、プログラム
翻訳装置は、シンボリックデバッガー用のコンパイル時
に、コンパイル結果にソースプログラムの変数などのシ
ンボルと、それが割当てられた資源との対応関係を表す
変数情報をシンボリックデバッガーに出力する。
【0004】ところで、シンボリックデバッカー用のコ
ンパイル結果と、それ以外のコンパイル結果(プロセッ
サで実行すべくコンパイルする通常のコンパイル結果)
では、資源の割り付け方法の点で異なっていた。その理
由として、シンボリックデバッカーに対するコンパイル
の仕方を選択した際には、シンボリックデバッカーがソ
ースプログラムの開始から終了までソースプログラムの
変数は同一の資源に割り付けられることを前提としてい
るため、一つの変数に対して一つの資源を割り付ける資
源の割り付け方法をとる。それに対して、シンボリック
デバッカーに対するコンパイルの仕方を選択しなかった
た際、つまりプロセッサで実行すべくコンパイルする際
には、資源の割り付けに関して最適化を行うため、必ず
しも一つの変数に対して一つの資源が割り付けられず、
一つの資源に対して割り付けた資源が途中で変化するこ
とがあるからである。
【0005】図12は従来のプログラム翻訳装置の構成
を示すものである。同図は、構文解析部111と、資源
割り付け部112と、変数資源情報出力部113と、コ
ード生成部114から構成されている。構文解析部11
1は、ソースプログラムの構文を解析して中間言語に変
換するとともに変換された中間行1行毎に対応して行番
号である中間行番号を添付する。図2はC言語によるソ
ースプログラムの例の図であり、図3は図2のソースプ
ログラムが構文解析部111よって中間言語に変換され
かつ中間行番号が添付された例の図である。図3におい
て、L: はラベル、arg は関数呼びだしの引数、jcc は
直前の比較の結果が真ならば、指定したラベルに分岐命
令、jsr は関数への分岐命令、ret は関数呼びだしの戻
り値を表している。
【0006】資源割り付け部112は、中間言語中のソ
ースプログラムの変数にプロセッサの資源を割り付け
る。具体的には、まず各変数について生存区間を求め
る。変数名と求められた生存区間との対応関係は、図1
3(a)に示される。同図は、変数名と、生存期間であ
る中間行番号とが対応している様子を示す。次に資源割
り付け部112は、各資源を生存区間毎に割り付ける。
割り付けられた資源と生存区間及び変数名との対応表
は、図13(b)に示す。また中間言語中のソースプロ
グラムの変数にプロセッサの資源を割り付けられた例
は、図14に示す。同図は図4の中間言語に対する資源
割り付け部112の動作後の中間言語である。変数の直
後に続く(R0), (R1), (R2)は変数に割り付けられた資源
(この例ではレジスタ)を表す。
【0007】変数資源情報出力部113で、資源割り付
け部112が変数に割り付けた資源の情報を表す変数情
報を図15に示すように中間言語に付加する。図15に
おいて .STAB i R1と.STAB a R2は、付加された変数情
報を示し、.STAB i R1は変数i がレジスタ R1 に割り付
けられたことを表す。.STAB a R2 は変数 a がレジスタ
R2 に割り付けられたことを表す。
【0008】コード生成部114は、中間言語を目的コ
ードに変換する。図16は図15の中間言語に対する目
的コードである。以上のように従来のプログラム翻訳装
置では、変数に対して資源を1対1に対応するように割
り付けている。
【0009】
【発明が解決しようとする課題】しかしながら上記のよ
うな構成は、デバッカーに対してコンパイルする際は変
数に割り付けた資源が途中で変わらないことを前提とし
ている。そのため資源の割り付けに関して最適化してコ
ンパイルしたコンパイル結果は変数に割り付けた資源が
途中で変わる場合があり、デバックする際に用いること
ができない場合があった。その場合は、実際に使用する
資源の割り付けに関して最適化してコンパイルしたコン
パイル結果の実行と、デバッカーで使用するためにコン
パイルしたコンパイル結果の実行では、動作面等で差異
が生じデバックする際に不都合があった。
【0010】本発明は上記問題点に鑑み、資源の割り付
けに関して最適化してコンパイルした場合にも、常にデ
バッカーがデバックすることができるコンパイルを行う
ことができるプログラム翻訳装置及び方法を提供するこ
とを目的とする。
【0011】
【課題を解決するための手段】上記目的を達成するた
め、本発明におけるプロラム翻訳装置は、高級言語レベ
ルのソースプログラムを目的コードプログラムに翻訳
し、前記高級言語レベルでのデバッグを行うためにデバ
ッグ装置に渡すべき前記ソースプログラムの情報を前記
目的コードプログラムに付加するプログラム翻訳装置で
あって、目的コードの直前に、対応する行番号を示す識
別情報を配することにより、目的コードが前記ソースプ
ログラムのどの行に対応するかを表現したデバッグ情報
を前記目的コードプログラムに付加するデバッグ情報付
加手段を備え、前記デバッグ情報付加手段は、ソースプ
ログラムの構文を解析して中間言語に変換するとともに
変換された中間言語1行毎に行番号である中間行番号を
添付する構文解析手段と、前記中間言語中の各変数を各
資源に割り付けると共に、変数名と資源との組と、その
組が存続している範囲に属する中間行番号との対応表を
出力する資源割り付け手段と、前記中間言語における変
数を含む行がソースプログラムのどの行に該当するかを
示すソース行番号とソース行番号の識別情報とからなる
ソース情報行を前記中間言語における変数を含む行の直
前に挿入するソース情報行出力手段と、前記資源割り付
け手段からの対応表のおいて、中間行番号から識別情報
を導き出して、変数名と資源と識別情報との対応関係を
表す変数情報を表す行を前記中間言語に付加する変数情
報付加手段と、前記中間言語からソース情報行と変数情
報とに基づいて、ソースプログラム中の変数名と、その
変数に割り当てられた資源と、その変数を含むソースプ
ログラムの行番号を表すソース情報行に付加された識別
情報との対応関係を表すデバック情報を含む目的コード
を生成するコード生成手段とを備えている。
【0012】
【0013】
【0014】
【0015】
【実施例】図1は本発明の実施例におけるプログラム翻
訳装置の構成を示す図である。同図は、構文解析部1
1、資源割り付け部12、変数資源情報出力部13、ソ
ース情報行出力部14、変数資源範囲出力部15、コー
ド生成部16から構成されている。
【0016】構文解析部11は、ソースプログラムの構
文を解析して中間言語に変換するとともに変換された中
間行1行毎に対応して行番号である中間行番号を添付す
る。図2はC言語によるソースプログラムの例の図であ
り、図3は図2のソースプログラムが構文解析部11に
よって中間言語に変換されかつ中間行番号が添付された
中間言語の例の図である。
【0017】資源割り付け部12は、図3に示すような
中間言語に付いて、まず各変数について生存区間と生存
区間の属する中間行番号を求める。それに基づいて、変
数名と中間行番号の対応関係を図4(a)に示すように
求める。次に各資源を生存区間毎に変数を割り付ける。
さらに変数名と中間行番号と割り付けられた資源との対
応表を図4(b)に示すように作成する。同図では、従
来例とは違い、同じ変数名であっても割当てられている
資源が異なっていることが分かる。また図3の中間言語
中の変数に資源を割り付けた中間言語の例の図は、図5
に示す。変数の直後に続く(R0), (R1), (R2)は変数に割
り付けられた資源(この例ではレジスタ)を表す。
【0018】変数資源情報出力部13は、資源割り付け
部12が変数に割り付けた資源の情報を表す変数情報を
中間言語に付加する。具体的には、図4(b)に示す変
数名に従って変数情報を作成し中間言語に付加する。図
6は変数情報が付加された例を示す図である。ここ
で、.STAB i R1 は変数 i がレジスタ R1 に割り付けら
れたことを示す。.STAB a R2 は変数 a がレジスタ R2
に割り付けられたことを示す.STAB a R0 は変数 a がレ
ジスタ R0 に割り付けられたことを示す。
【0019】ソース情報行出力部14は、中間言語中の
命令が相当するソースプログラムの実行文の行番号と識
別番号からなるソース情報行を図6に示すような中間言
語に付加することにより図6から図7のように中間言語
が変化する。具体的には、図8の動作フロー図に示すよ
うに、変数を含む行に該当するソースプログラムの行を
構文解析部11の解析結果を用いて求める(ステップS
701からステップS705)。次に求められたソース
プログラムのの番号及びソース情報行の通し番号であ
るソース情報行を、変数を含む行の前に挿入する(ステ
ップS706)。また図7において、.LINE 5 ID 1 〜
.LINE 13 ID 8 は、挿入された情報行であり、このう
ち.LINE 5 〜 .LINE 13 は、このソース情報行に続く中
間言語の行が対応しているソースプログラムおいて
する行の行番号を表す。また、IDに続く数字は、ソー
ス情報行の通し番号である識別番号である。
【0020】変数資源範囲出力部15は、資源割り付け
部12で、変数名と中間行番号と割り付けられた資源と
の対応表である図4(b)のうち中間行番号に基づいて
識別番号を求める。次に求められた識別番号を変数資源
情報出力部13によって中間言語に付加された変数情報
に更に付加する。よって、変数名と資源と識別番号との
対応関係を図9に示すように中間言語に付加される。具
体的には、図10の動作フロー図に示すように、対応表
の中間行番号の欄より一つ中間行番号を取り出し(ステ
ップS101からステップS103)、中間言語におい
てその中間行番号の示す行より一行手前の行を読み込み
(ステップS104)。さらにその行がソース情報行で
あれば識別番号である.LINE の ID 番号を取り出し出力
する(ステップS105からステップS106)。図9
において、.STAB i R1 ID 1 2 34 5 は ID 1 の .LINE
から ID 5 の .LINE の間で変数 i が R1 に割り付けら
れていることを表す。他についても同様である。
【0021】コード生成部16は、中間言語を目的コー
ドに変換する。図11は、図9の中間言語がコード生成
部16によって目的コードに変換された例の図である。
以上のように構成されたプログラム翻訳装置において、
以下その動作を説明する。まず、図2に示すようなソー
スプログラムが入力される。入力されたソースプログラ
ムは、構文解析部11によって構文を解析され中間言語
に変換等され、図3に示すようになる。次に中間言語
は、資源割り付け部12によって資源が割り付けられ図
5に示すような状態となる。このとき図4(b)に示す
ような資源と変数名と中間行番号の対応表も作成され
る。次に図6に示すように、変数資源情報出力部13に
よって変数資源情報が中間言語中に出力される。さらに
図7に示すようにソース情報行出力部14によって、中
間言語中の命令が相当するソースプログラムの実行文の
行番号と識別番号からなるソース情報行が中間言語に付
加される。次に図9に示すように、変数資源範囲出力部
15によって中間言語中に変数名と資源と識別番号との
対応関係が付加される。さらにこれが図11に示すよう
に、コード生成部16によって中間言語に変換される。
【0022】尚、本実施例では全ての変数はレジスタに
割り付けられていたが、メモリに割り付けられる場合も
同様に適用可能である。尚、本実施例においては、ソー
スプログラムがC言語によって記述されている例を示し
たが、本発明は他のプログラミング言語の翻訳装置に対
しても同様に適用可能である。
【0023】
【発明の効果】以上のように本発明によれば、目的コー
ド中で変数に割り付けられた資源が変化する場合にも、
常にデバッカーがデバックすることができる。
【図面の簡単な説明】
【図1】本発明の実施例におけるプログラム翻訳装置の
構成図である。
【図2】ソースプログラムの例の図である。
【図3】中間言語の例の図である。
【図4】変数名と中間行番号と資源との対応表である。
【図5】資源割り付け後の中間言語の例の図である。
【図6】変数情報出力後の中間言語の例の図である。
【図7】ソース情報行出力後の中間言語の例の図であ
る。
【図8】ソース情報行出力における動作フロー図であ
る。
【図9】有効範囲出力後の中間言語の例の図である。
【図10】有効範囲行出力における動作フロー図であ
る。
【図11】目的コードの例の図である。
【図12】従来例におけるプログラム翻訳装置の構成図
である。
【図13】変数名と中間行番号と資源との対応表であ
る。
【図14】従来例における資源割り付け後の中間言語の
例の図である。
【図15】従来例における変数情報出力後の中間言語の
例の図である。
【図16】従来例における目的コードの例の図である。
【符号の説明】
11 構文解析部 12 資源割り付け部 13 変数資源情報出力部 14 ソース情報行出力部 15 変数資源有効範囲出力部 16 コード生成部 111 構文解析部 112 資源割り付け部 113 変数資源情報出力部 114 コード生成部
フロントページの続き (56)参考文献 特開 平3−161843(JP,A) 特開 平3−240837(JP,A) 特開 平5−108372(JP,A) 特開 平4−263339(JP,A) 特開 平5−81002(JP,A) 特開 平1−188956(JP,A) 特開 平7−219782(JP,A) 特開 平6−274369(JP,A) (58)調査した分野(Int.Cl.7,DB名) G06F 9/45 G06F 11/28 G06F 9/06 JSTファイル(JOIS) CSDB(日本国特許庁)

Claims (2)

    (57)【特許請求の範囲】
  1. 【請求項1】 高級言語レベルのソースプログラムを目
    的コードプログラムに翻訳し、前記高級言語レベルでの
    デバッグを行うためにデバッグ装置に渡すべき前記ソー
    スプログラムの情報を前記目的コードプログラムに付加
    するプログラム翻訳装置であって、目的コードの直前に、対応する行番号を示す識別情報を
    配することにより、目的コードが前記ソースプログラム
    のどの行に対応するかを表現したデバッグ情報を前記目
    的コードプログラムに付加するデバッグ情報付加手段を
    備え、 前記デバッグ情報付加手段は、 ソースプログラムの構文を解析して中間言語に変換する
    とともに、変換された中間言語1行毎に行番号である中
    間行番号を添付する構文解析手段と、 前記中間言語中の各変数を各資源に割り付けると共に、
    変数名と資源との組と、その組が存続している範囲に属
    する中間行番号との対応表を出力する資源割り付け手段
    と、 前記中間言語における変数を含む行がソースプログラム
    のどの行に該当するかを示すソース行番号を含み、識別
    情報が付加されたソース情報行を前記中間言語における
    変数を含む行の直前に挿入するソース情報行出力手段
    と、 前記資源割り付け手段から出力された対応表から中間行
    番号を取り出し、その中間行番号の示す行の直前の行が
    ソース情報行であれば、その識別情報を導き出して、変
    数名と資源と識別情報との対応関係を表す変数情報を前
    記中間言語に付加する変数情報付加手段と、 前記中間言語からソース情報行と変数情報とに基づい
    て、ソースプログラム中の変数名と、その変数に割り当
    てられた資源と、その変数を含むソースプログラムの行
    番号を表すソース情報行に付加された識別情報との対応
    関係を表すデバック情報を含む目的コードを生成するコ
    ード生成手段と からなることを特徴とするプログラム翻
    訳装置。
  2. 【請求項2】 高級言語レベルのソースプログラムを目
    的コードプログラムに翻訳し、前記高級言語レベルでの
    デバッグを行うためにデバッグ装置に渡すべき前記ソー
    スプログラムの情報を前記目的コードプログラムに付加
    するプログラム翻訳方法であって、目的コードの直前に、対応する行番号を示す識別情報を
    配することにより、目的コードが前記ソースプログラム
    のどの行に対応するかを表現したデバッグ情報を前記目
    的コードプログラムに付加するデバッグ情報付加ステッ
    プを有し、 前記デバッグ情報付加ステップは、 ソースプログラムの構文を解析して中間言語に変換する
    とともに、変換された中間言語1行毎に行番号である中
    間行番号を添付する構文解析ステップと、 前記中間言語中の各変数を各資源に割り付けると共に、
    変数名と資源との組と、その組が存続している範囲に属
    する中間行番号との対応表を出力する資源割り付けステ
    ップと、 前記中間言語における変数を含む行がソースプログラム
    のどの行に該当するかを示すソース行番号を含み、識別
    情報が付加されたソース情報行を前記中間言語における
    変数を含む行の直前に挿入するソース情報行出力ステッ
    プと、 前記資源割り付けステップから出力された対応表から中
    間行番号を取り出し、その中間行番号の示す行の直前の
    行がソース情報行であれば、その識別情報を導き出し
    て、変数名と資源と識別情報との対応関係を表す変数情
    報を前記中間言語に付加する変数情報付加ステップと、 前記中間言語からソース情報行と変数情報とに基づい
    て、ソースプログラム中の変数名と、その変数に割り当
    てられた資源と、その変数を含むソースプログラムの行
    番号を表すソース情報行に付加された識別情報との対応
    関係を表すデバック情報を含む目的コードを生成するコ
    ード生成ステップと からなることを特徴とするプログラ
    ム翻訳方法。
JP06490094A 1994-04-01 1994-04-01 プログラム翻訳装置及び方法 Expired - Lifetime JP3327674B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP06490094A JP3327674B2 (ja) 1994-04-01 1994-04-01 プログラム翻訳装置及び方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP06490094A JP3327674B2 (ja) 1994-04-01 1994-04-01 プログラム翻訳装置及び方法

Publications (2)

Publication Number Publication Date
JPH07271606A JPH07271606A (ja) 1995-10-20
JP3327674B2 true JP3327674B2 (ja) 2002-09-24

Family

ID=13271417

Family Applications (1)

Application Number Title Priority Date Filing Date
JP06490094A Expired - Lifetime JP3327674B2 (ja) 1994-04-01 1994-04-01 プログラム翻訳装置及び方法

Country Status (1)

Country Link
JP (1) JP3327674B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20170141970A (ko) * 2016-06-16 2017-12-27 삼성전자주식회사 번역 서비스를 제공하는 전자 장치 및 방법

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3196675B2 (ja) * 1996-12-27 2001-08-06 日本電気株式会社 言語処理方式
JP3612294B2 (ja) 2001-08-06 2005-01-19 松下電器産業株式会社 デバッグ方法およびデバッグ装置
JP2008305337A (ja) * 2007-06-11 2008-12-18 Panasonic Corp プログラム変換装置、プログラム変換方法、プログラム、記憶媒体、デバッグ装置、デバッグ方法及びプログラム開発システム
JP7163697B2 (ja) * 2018-09-28 2022-11-01 富士通株式会社 生成プログラム,情報処理装置及び生成方法

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20170141970A (ko) * 2016-06-16 2017-12-27 삼성전자주식회사 번역 서비스를 제공하는 전자 장치 및 방법
KR102251832B1 (ko) 2016-06-16 2021-05-13 삼성전자주식회사 번역 서비스를 제공하는 전자 장치 및 방법

Also Published As

Publication number Publication date
JPH07271606A (ja) 1995-10-20

Similar Documents

Publication Publication Date Title
US5815720A (en) Use of dynamic translation to collect and exploit run-time information in an optimizing compilation system
USRE38104E1 (en) Method and apparatus for resolving data references in generated code
Fernandez Simple and effective link-time optimization of Modula-3 programs
US5606697A (en) Compiler system for language processing program
US8522222B2 (en) Tracing just-in-time compilation with pointers to local variables
JPH08202545A (ja) ターゲット言語コードを生成するためのオブジェクト指向システム及びその方法
JPH05257709A (ja) 並列化判別方法およびそれを用いた並列化支援方法
JP2003050715A (ja) コンパイラおよびデバッグ装置
JP2007304840A (ja) コンパイル方法、デバッグ方法、コンパイルプログラムおよびデバッグプログラム
JP3327674B2 (ja) プログラム翻訳装置及び方法
US20010039653A1 (en) Program conversion method, program conversion apparatus, storage medium for storing program conversion program and program conversion program
JP2008305337A (ja) プログラム変換装置、プログラム変換方法、プログラム、記憶媒体、デバッグ装置、デバッグ方法及びプログラム開発システム
JPH07182179A (ja) オブジェクト指向データベース管理装置
JPH10187461A (ja) 言語処理方式
JPH11110256A (ja) プログラムデバッグ装置、プログラムデバッグ方法及びその方法を記録したコンピュータ読取り可能な記録媒体
JP2009515243A (ja) ホストコンピュータ上で実行可能なシミュレーションプログラムを生成する方法
JP3596570B2 (ja) クラスの主記憶装置への配置方法
KR100248434B1 (ko) 객체지향 칠 디버깅 정보 생성방법
JP2662533B2 (ja) ロジック・アナライザ
Karjalainen A Lisp-based High-level Programming Environment for the TMS320C30
JPH08161179A (ja) 一文実行方法
JP3018783B2 (ja) コンパイル方式
JPH1195995A (ja) データフロー解析装置、データフロー解析方法及びそのためのコンピュータプログラムを記録した記録媒体
JPH04250530A (ja) プログラム変換/翻訳装置
JP2002108628A (ja) プログラム変換装置

Legal Events

Date Code Title Description
FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20070712

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20080712

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20090712

Year of fee payment: 7

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

Free format text: PAYMENT UNTIL: 20090712

Year of fee payment: 7

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

Free format text: PAYMENT UNTIL: 20100712

Year of fee payment: 8

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

Free format text: PAYMENT UNTIL: 20110712

Year of fee payment: 9

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

Free format text: PAYMENT UNTIL: 20110712

Year of fee payment: 9

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

Free format text: PAYMENT UNTIL: 20120712

Year of fee payment: 10

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

Free format text: PAYMENT UNTIL: 20120712

Year of fee payment: 10

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

Free format text: PAYMENT UNTIL: 20130712

Year of fee payment: 11

EXPY Cancellation because of completion of term