JP6091471B2 - ソースコード解析装置、ソースコード解析方法およびソースコード解析プログラム - Google Patents
ソースコード解析装置、ソースコード解析方法およびソースコード解析プログラム Download PDFInfo
- Publication number
- JP6091471B2 JP6091471B2 JP2014162986A JP2014162986A JP6091471B2 JP 6091471 B2 JP6091471 B2 JP 6091471B2 JP 2014162986 A JP2014162986 A JP 2014162986A JP 2014162986 A JP2014162986 A JP 2014162986A JP 6091471 B2 JP6091471 B2 JP 6091471B2
- Authority
- JP
- Japan
- Prior art keywords
- numerical value
- source code
- unit
- communication command
- storage unit
- 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.)
- Active
Links
- 238000004458 analytical method Methods 0.000 title claims description 27
- 238000004891 communication Methods 0.000 claims description 292
- 238000000034 method Methods 0.000 claims description 182
- 238000000605 extraction Methods 0.000 claims description 158
- 230000006870 function Effects 0.000 claims description 128
- 239000000284 extract Substances 0.000 claims description 26
- 238000012360 testing method Methods 0.000 description 65
- 238000012545 processing Methods 0.000 description 32
- 238000012986 modification Methods 0.000 description 6
- 230000004048 modification Effects 0.000 description 6
- 238000010586 diagram Methods 0.000 description 4
- 238000011835 investigation Methods 0.000 description 3
- 230000001629 suppression Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
Landscapes
- Debugging And Monitoring (AREA)
- Stored Programmes (AREA)
Description
特許文献1に記載されたソフトウェアテスト支援システムでは、ソースコードを複数の単位サブルーチンに分類し、各単位サブルーチンの呼び出し関係を解析し、全ての呼び出しパターンを網羅するように、複数の試験項目を作成する。
ソースコード群を記憶するソースコード記憶部と、
前記ソースコード記憶部に記憶された前記ソースコード群の中から1つのソースコードを取得するソースコード取得部と、
前記ソースコードにおいて、通信メソッド関数を表す対象文字列を探索し、探索した通信メソッド関数の前記ソースコードにおける位置を検出するメソッド探索部と、
前記通信メソッド関数の引数の少なくとも一部を通信コマンドとして抽出し、抽出した前記通信コマンドが変数または数値のいずれであるかを判定する引数抽出・判定部と、
数値記憶部と、
前記引数抽出・判定部により数値であると判定された前記通信コマンドの数値を前記数値記憶部に記憶させ、前記引数抽出・判定部により変数であると判定された前記通信コマンドに基づいて、前記ソースコードにおいて前記通信コマンドに代入される数値を検索して抽出し、抽出した数値を前記数値記憶部に記憶させる数値抽出部と、
前記メソッド探索部により探索された通信メソッド関数の位置と、前記数値記憶部に記憶された前記通信コマンドの数値と、を出力する位置・数値出力部と、を備える。
記憶部17は、ソースコード群を記憶するソースコード記憶部171と、後述の通信メソッド関数の引数である通信コマンドを記憶する引数記憶部173と、分岐部分内に存在すると判定された通信コマンドを記憶する分岐判定結果記憶部174と、第1数値記憶部175と、第2数値記憶部176と、第3数値記憶部177と、通信メソッド関数を記憶する関数記憶部172と、通信メソッド関数のソースコードにおける位置を示す行の識別情報並びに同一行に存在する通信メソッド関数の個数を記憶する識別情報・個数記憶部178と、フォーマット記憶部179と、分岐判定文字列記憶部180と、を有する。
通信メソッド関数の形状に関する情報は、「send();」、「write();」等の通信メソッド関数の形状を表す文字列から構成される。
通信メソッド関数の引数に関する情報は、通信メソッド関数の引数フィールドの何番目の引数が通信コマンドに相当するかを示す情報から構成される。ここで、「通信コマンド」とは、例えば組み込みシステムにおいて、マイクロコンピュータとメモリとの間で通信するための通信メソッド関数の引数フィールドに入力する数値等から構成される。例えば、通信メソッド関数「send(socket,msg,msgLength,flag);」の場合、通信コマンドが、2番目に相当することを示す情報である。また、関数記憶部172は、この引数に関する情報を、当該通信コマンド関数に対応づけた形で記憶している。
制御部14は、図2に示すように、ソースコード取得部141、メソッド探索部142、引数抽出・判定部143、分岐判定部144、数値抽出部145、結果表示部146として機能する。なお、図2において、実線矢印は動作フローを表し、破線矢印はデータフローを表す。
ソースコード指定用画面は、例えば試験対象の組み込みシステムのソースコードが記述されたファイルのファイルパスを表示する画面から構成される。例えば、ソースコード指定用画面には、組み込み機器の各種ソースコードが記述されたファイルが保管されているフォルダ(ディレクトリ)の内容が表示される。
ここで、ユーザは、出力装置5に表示されたソースコード指定用画面を確認しながら、入力装置3を操作することにより、入力部11を介して試験対象のソースコードが記述されたファイルを選択することができる。
ソースコード取得部141は、ユーザにより試験対象のソースコードが記述されたファイルが選択されると、選択されたファイルをソースコード記憶部171から取得することによりソースコードを取得する。このとき、ソースコード取得部141は、取得したソースコードを、RAM16に形成された作業領域に読み込む。
ソースコードは、例えばC言語等の高級プログラミング言語で記述されている。なお、図3では、ソースコードの構造を理解しやすくするために、左端に行番号を付してある。
図3に示すソースコードでは、51行目、61行目、62行目、81行目および181行目それぞれに、通信コマンドを示す数値「0101」、「1111」、「1000」、「0001」、「1110」が記述されている。81行目の通信コマンドを示す数値は、通信メソッド関数の引数として記述されている。
引数抽出・判定部143は、関数記憶部172から通信メソッドの引数に関する情報を取得し、取得した引数に関する情報に基づいて、通信コマンドを抽出する。例えば図3の101行目に存在する通信メソッド関数「send(sockfd,POWER_ON,len,0);」の場合、引数抽出・判定部143は、第一検索文字列「(」から第二検索文字列「)」までの間の文字列を抽出し、更に、抽出した文字列の中から、2番目の引数「POWER_ON」を通信コマンドとして抽出する。
例えばC言語の場合、文字フォーマットは、a乃至zの文字を含む文字列であり、数値フォーマットは、数字0乃至9のみから構成される文字列である。そして、引数抽出・判定部143は、通信コマンドがa乃至zの文字を含む場合、当該通信コマンドを変数と判定する。一方、引数抽出・判定部143は、通信コマンドが0乃至9のみから構成される場合、当該通信コマンドを数値と判定する。
なお、引数抽出・判定部143の動作の詳細は、後述する。
なお、分岐判定部144の動作の詳細は、後述する。
また、数値抽出部145は、通信コマンドを引数記憶部173から取得した場合、抽出した数値を第2数値記憶部176に記憶する。一方、数値抽出部145は、通信コマンドを分岐判定結果記憶部174から取得した場合、抽出した数値を第3数値記憶部177に記憶する。
出力装置5には、図4に示すように、3つのフィールドF1、F2、F3が表示される。フィールドF1には、「通信メソッド関数の場所、通信メソッド関数の個数」が表示され、フィールドF2には、「通信メソッド関数に数値として入力された通信コマンド」が表示される。また、フィールドF3には、「通信メソッド関数に変数を介して入力された通信コマンド」が表示される。ここで、フィールドF3は、更に、2つのフィールドF31、F32に区分けされている。フィールドF31には、「必ず実行される通信コマンド」が表示され、フィールドF32には、「条件に応じて実行される通信コマンド」が表示される。フィールドF31には、分岐条件に関わらず必ず実行される通信コマンドを示す数値が表示され、フィールドF32には、分岐条件に応じて実行されたり実行されなかったりする通信コマンドを示す数値が表示される。
図3に示すソースコードでは、81行目に通信メソッド関数「send(・・・);」および「write(・・・);」が存在し、101行目に通信メソッド関数「send(・・・);」が存在する。すると、メソッド探索部142は、行番号「0081」に含まれる対象文字列の個数を「2」、行番号「0101」に含まれる対象文字列の個数を「1」として識別情報・個数記憶部178に記憶させる。
一方、ステップS108において、次の第1リストのアドレスが存在しないと判定されると(ステップS108:Yes)、通信コマンド抽出処理に戻る。
一方、ステップS203において、対象文字列の検索対象となっている文字列の中に対象文字列が有ると判定されると(ステップS203:Yes)、引数抽出・判定部143は、対象文字列の中から、第1検索文字列を検索する(ステップS204)。ここで、第1検索文字列は、通信メソッド関数の引数を入力するフィールドの左端を示す「(」に設定されている。
一方、ステップS210において、第1リストの検索が終了したと判定されると(ステップS210:Yes)、引数抽出・判定部143は、対象文字列の検索を終了した第1リストの次の第1リストのアドレスを特定する(ステップS212)。具体的には、引数抽出・判定部143は、次の第1リストのアドレスを示すポインタの内容を取得する。
一方、ステップS213において、次の第1リストのアドレスが存在しないと判定されると(ステップS213:Yes)、通信コマンド抽出処理に戻る。
その後、分岐判定部144は、再びステップS302の処理を行う。
一方、ステップS311において、次の第1リストのアドレスが存在しないと判定されると(ステップS311:Yes)、分岐判定部144は、先頭の第2リストのアドレスを特定する(ステップS312)。
ステップS314において、代入文が無いと判定されると(ステップS314:No)、数値抽出部145が、数値抽出処理を行う(ステップS319)。分岐判定部144は、例えば図3に示すソースコードの71行目から74行目の分岐部分(図3の破線で囲まれた部分B1参照)の分岐部内文字列について、代入文が無いと判定する。また、分岐判定部144は、201行目から211行目の分岐部分(図3の破線で囲まれた部分B5)の分岐部内文字列についても、代入文が無いと判定する。
一方、ステップS314において、代入文が有ると判定されると(ステップS314:Yes)、分岐判定部144は、代入文の左辺と、引数記憶部173に記憶されている通信コマンドとを比較する(ステップS315)。具体的には、分岐判定部144は、パターンマッチングを利用して比較を行う。
一方、ステップS316において、数式の左辺が通信コマンドに一致すると判定されると(ステップS316:Yes)、分岐判定部144は、数式の左辺に一致する通信コマンド(以下、「分岐部内通信コマンド」と称する。)を分岐判定結果記憶部174に記憶させる(ステップS317)。
その後、分岐判定部144は、次の第2リストのアドレスが存在しない(NULL)か否かを判定する(ステップS321)。具体的には、分岐判定部144は、次の第2リストのアドレスを示すポインタの内容がNULLに設定されているか否かを判定する。
一方、ステップS321において、次の第2リストのアドレスが存在しないと判定されると(ステップS321:Yes)、通信コマンド抽出処理に戻る。
図3に示すソースコードに記述されている通信コマンド「POWER_ON」は、引数記憶部173に記憶されている。そして、数値抽出部145は、51行目の代入文「POWER_ON=0101」(破線で囲まれた部分D4参照)を特定する。
また、数値抽出部145は、通信コマンドに数値が代入されている位置を複数検出した場合、引数抽出・判定部143が通信コマンドを抽出した位置よりも前であり、当該抽出した位置に最も近い位置を特定する。
図3に示すソースコードにおいて、例えば、45行目に代入文「POWER_ON=0111」(図示せず)が記述されていたとする。この場合、引数抽出・判定部143は、通信コマンド「POWER_ON」を抽出した位置が101行目であるので、数値抽出部145は、101行目に最も近い51行目の代入文を特定する。
数値抽出部145は、例えば図3に示すソースコードの121行目の代入文「a=b」(破線で囲まれた部分D1参照)から、分岐部内通信コマンドが変数であると判定する。一方、数値抽出部145は、図3に示すソースコードの181行目の代入文「a=1110」(破線で囲まれた部分D3参照)から、分岐部内通信コマンドが数値であると判定する。
一方、ステップS406において、分岐部内通信コマンドに変数が代入されていると判定されると(ステップS406:Yes)、数値抽出部145は、変数に数値が代入されている位置を特定する(ステップS408)。ここでは、数値抽出部145が、ソースコードが格納されている全ての第1リストについて、パターンマッチングを利用して順に検索していき、変数に数値が代入されている位置を特定する。
数値抽出部145は、例えば図3に示すソースコードについて、61行目の代入文「b=1111」および62行目の代入文「c=1000」(破線で囲まれた部分D5、D6)の位置(行番号)を特定する。
これにより、分岐部分で使用されている通信コマンドの数値が、分岐部分以外で使用されている通信コマンドと区別できる形で出力されるので、ユーザは、各通信コマンドが分岐部分内または分岐部分外のいずれで使用されているかを考慮しながら試験項目を作成することができる。従って、実施すべき試験項目の妥当性向上を図ることができる。
ステップS505において、処理インデックスmが対象文字列の個数Mよりも1だけ小さい値以下と判定されると(ステップS505:No)、引数抽出・判定部143は、ステップS202の処理を行う。
ステップS506において、未処理の対象文字列を含む第1リストが存在すると判定されると(ステップS506:Yes)、引数抽出・判定部143は、再びステップS501の処理に戻る。
分岐判定部144は、先頭の第2リストのアドレスを特定した後(ステップS312)、特定した第2リストに格納された文字列において、通信コマンドを検索する(ステップS601)。
一方、ステップS602において、通信コマンドが有ると判定されると(ステップS602:Yes)、分岐判定部144は、検出した通信コマンドの右隣の文字列を抽出する(ステップS603)。通信コマンドを検出した位置において、通信コマンドが通信メソッド関数の引数として記述されている場合(例えば、「write(sockfd,a,len)」)、分岐判定部144は、「,」を抽出する。
ステップS604において、抽出した文字列が「=」ではないと判定されると(ステップS604:No)、数値抽出部145が、数値抽出処理を行い(ステップS319)、その後、分岐判定部144は、ステップS320以降の処理を行う。
一方、ステップS604において、抽出した文字列が「=」であると判定されると(ステップS604:Yes)、分岐判定部144は、通信コマンドを分岐判定結果記憶部174に記憶させ(ステップS317)、ステップS318以降の処理を行う。
具体的には、サブルーチン判別部が、ソースコードにおけるサブルーチンに対応する関数宣言文を検索し、検出した関数宣言文からサブルーチンを示す関数の形状および引数に関する情報を抽出する。次に、サブルーチン判別部は、抽出したサブルーチンを示す関数の形状および引数に関する情報を、例えば関数記憶部172に記憶させる。
図13は、変形例に係るソースコード解析装置201と、試験装置301とから構成される試験システムの機能構成を示すブロック図である。図13において、図2と同一の構成については図9と同一の符号を付してある。また、図13において、実線矢印は動作フローを表し、破線矢印はデータフローを表す。なお、ソースコード解析装置201と試験装置301とは、1つの装置で実現されていてもよい。また、ソースコード解析装置201と試験装置301とが別体であり、ソースコード解析装置201が、外部I/F部13を介して試験装置301に接続されていてもよい。
分岐部内メソッド検索部313は、分岐部分検索部312により特定された各分岐部分の位置と、ソースコード解析装置201から取得した通信メソッド関数の位置を示す識別情報(行番号)に基づいて、通信メソッド関数を含む分岐部分の位置を特定する。
テスト結果出力部316は、テスト実施部315がテストケースを実行して得られる結果を出力する。
Claims (6)
- ソースコード群を記憶するソースコード記憶部と、
前記ソースコード記憶部に記憶された前記ソースコード群の中から1つのソースコードを取得するソースコード取得部と、
前記ソースコードにおいて、通信メソッド関数を表す対象文字列を探索し、探索した通信メソッド関数の前記ソースコードにおける位置を検出するメソッド探索部と、
前記通信メソッド関数の引数の少なくとも一部を通信コマンドとして抽出し、抽出した前記通信コマンドが変数または数値のいずれであるかを判定する引数抽出・判定部と、
数値記憶部と、
前記引数抽出・判定部により数値であると判定された前記通信コマンドの数値を前記数値記憶部に記憶させ、前記引数抽出・判定部により変数であると判定された前記通信コマンドに基づいて、前記ソースコードにおいて前記通信コマンドに代入される数値を検索して抽出し、抽出した数値を前記数値記憶部に記憶させる数値抽出部と、
前記メソッド探索部により探索された通信メソッド関数の位置と、前記数値記憶部に記憶された前記通信コマンドの数値と、を出力する位置・数値出力部と、を備える、
ソースコード解析装置。 - 前記引数抽出・判定部が抽出した前記通信コマンドを記憶する引数記憶部を更に備え、
前記ソースコードにおける分岐部分を検索するとともに、前記引数記憶部に記憶された前記通信コマンドに基づいて、前記分岐部分において前記通信コマンドに変数または数値を代入されているか否かを判定する分岐判定部と、
前記分岐判定部により、前記分岐部分において変数または数値が代入されると判定された前記通信コマンドを記憶する分岐判定結果記憶部と、を備える、
請求項1に記載のソースコード解析装置。 - 前記数値抽出部は、更に、前記分岐部分において前記通信コマンドに変数または数値のいずれが代入されているかを判定し、変数が代入されていると判定した場合、前記ソースコード内において前記変数に代入される数値を検索して抽出し、数値が代入されていると判定した場合、前記通信コマンドに代入される数値を抽出する、
請求項2に記載のソースコード解析装置。 - ソースコードに使用されるプログラミング言語の文字列フォーマットおよび数値フォーマットを記憶するフォーマット記憶部を更に備え、
前記数値抽出部は、前記フォーマット記憶部から取得した文字列フォーマットおよび数値フォーマットに基づいて、前記通信コマンドに変数または数値のいずれが代入されているかを判定する、
請求項1から3に記載のソースコード解析装置。 - ソースコード群の中から1つのソースコードを取得するステップと、
前記ソースコードにおいて、通信メソッド関数を表す対象文字列を探索し、探索した通信メソッド関数の位置を検出するステップと、
前記通信メソッド関数の引数の少なくとも一部を通信コマンドとして抽出し、抽出した前記通信コマンドが変数または数値のいずれであるかを判定するステップと、
数値であると判定された通信コマンドの数値を抽出するステップと、
変数であると判定された通信コマンドに基づいて、前記ソースコードにおいて前記通信コマンドに代入される数値を検索して抽出するステップと、
前記通信メソッド関数のソースコードにおける位置と、抽出した前記通信コマンドの数値と、を出力するステップと、を含む、
ソースコード解析方法。 - コンピュータを、
ソースコード群の中から1つのソースコードを取得するソースコード取得部、
前記ソースコードにおいて、通信メソッド関数を表す対象文字列を探索し、前記通信メソッド関数のソースコードにおける位置を検出するメソッド探索部、
前記通信メソッド関数の引数の少なくとも一部を通信コマンドとして抽出し、抽出した前記通信コマンドが変数または数値のいずれであるかを判定する引数抽出・判定部、
数値であると判定された通信コマンドの数値を数値記憶部に記憶させ、変数であると判定された通信コマンドに基づいて、前記ソースコードにおいて前記通信コマンドに代入される数値を検索して抽出し、抽出した数値を前記数値記憶部に記憶させる数値抽出部、
前記通信メソッド関数の位置と、前記数値記憶部に記憶された前記通信コマンドの数値と、を出力する位置・数値出力部、
として機能させる、
ソースコード解析プログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2014162986A JP6091471B2 (ja) | 2014-08-08 | 2014-08-08 | ソースコード解析装置、ソースコード解析方法およびソースコード解析プログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2014162986A JP6091471B2 (ja) | 2014-08-08 | 2014-08-08 | ソースコード解析装置、ソースコード解析方法およびソースコード解析プログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2016038800A JP2016038800A (ja) | 2016-03-22 |
JP6091471B2 true JP6091471B2 (ja) | 2017-03-08 |
Family
ID=55529799
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2014162986A Active JP6091471B2 (ja) | 2014-08-08 | 2014-08-08 | ソースコード解析装置、ソースコード解析方法およびソースコード解析プログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP6091471B2 (ja) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111581094B (zh) * | 2020-05-08 | 2023-06-23 | 贝壳技术有限公司 | 头文件名检测方法、装置、存储介质及电子设备 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH064344A (ja) * | 1992-06-17 | 1994-01-14 | Hokkaido Nippon Denki Software Kk | プログラム中の参照された変数の型表示方式 |
JP2000020293A (ja) * | 1998-07-03 | 2000-01-21 | Ffc:Kk | プログラムソース中の特定関数の検索方法 |
JP2002108653A (ja) * | 2000-10-02 | 2002-04-12 | Ntt Comware Corp | 単体試験項目票作成支援方法ならびにそのシステム |
-
2014
- 2014-08-08 JP JP2014162986A patent/JP6091471B2/ja active Active
Also Published As
Publication number | Publication date |
---|---|
JP2016038800A (ja) | 2016-03-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4395761B2 (ja) | プログラムテスト支援装置およびその方法 | |
JP6440895B2 (ja) | ソフトウェア分析装置及びソフトウェア分析方法 | |
US8745521B2 (en) | System and method for annotating graphical user interface | |
US20210208996A1 (en) | Verification automation apparatus, verification automation method, and computer-readable recording medium | |
US11556317B2 (en) | Instruction translation support method and information processing apparatus | |
JP2005107597A (ja) | 類似文検索装置、類似文検索方法、およびプログラム | |
JP2009169689A (ja) | データ分類方法およびデータ処理装置 | |
JP6091471B2 (ja) | ソースコード解析装置、ソースコード解析方法およびソースコード解析プログラム | |
US20200342169A1 (en) | Information processing apparatus and non-transitory computer readable medium storing program | |
KR101996009B1 (ko) | 테스트케이스 작성 지원 방법 및 이를 수행하는 서버 및 사용자 단말 | |
JP2019148859A (ja) | フローダイアグラムを用いたモデル開発環境におけるデザインパターンの発見を支援する装置および方法 | |
US11635947B2 (en) | Instruction translation support method and information processing apparatus | |
JP5758262B2 (ja) | 類似文書可視化装置、類似文書可視化方法およびプログラム | |
JP5578625B2 (ja) | プログラム分析装置、プログラム分析方法、及びプログラム | |
JP2018116517A (ja) | 開発支援装置、開発支援方法、およびプログラム | |
CN111813749A (zh) | 文件过滤方法及装置、电子设备、存储介质 | |
JP2006309611A (ja) | 解析装置、プログラム及び記録媒体 | |
JP6455087B2 (ja) | 帳票情報処理プログラム、帳票情報処理装置、および帳票情報処理方法 | |
JP2015130040A (ja) | 名寄せ装置、名寄せシステム、方法及びプログラム | |
JPWO2004107203A1 (ja) | 対訳文対応付け装置 | |
WO2021084807A1 (ja) | 情報提供システム | |
JP6902513B2 (ja) | ソースコード生成支援装置およびソースコード生成支援方法 | |
JP2014241071A (ja) | 分析システム、分析方法および分析用プログラム | |
JP2024130691A (ja) | プログラム検証支援システム、及びプログラム検証支援方法 | |
JP6553461B2 (ja) | 既存システム処理仕様抽出装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20160115 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20161115 |
|
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: 20170110 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20170207 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 6091471 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
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 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |