JP3970373B2 - プログラム解析装置、プログラム解析方法及びソースプログラム解析用プログラムを記録したコンピュータ読み取り可能な記録媒体 - Google Patents
プログラム解析装置、プログラム解析方法及びソースプログラム解析用プログラムを記録したコンピュータ読み取り可能な記録媒体 Download PDFInfo
- Publication number
- JP3970373B2 JP3970373B2 JP08250297A JP8250297A JP3970373B2 JP 3970373 B2 JP3970373 B2 JP 3970373B2 JP 08250297 A JP08250297 A JP 08250297A JP 8250297 A JP8250297 A JP 8250297A JP 3970373 B2 JP3970373 B2 JP 3970373B2
- Authority
- JP
- Japan
- Prior art keywords
- program
- statement
- subroutine
- expansion
- access
- 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
Images
Landscapes
- Stored Programmes (AREA)
Description
【発明の属する技術分野】
本発明はプログラム解析装置、プログラム解析方法及びコンピュータをプログラム解析装置として機能させるためのプログラムを記録したコンピュータ読み取り可能な記録媒体に関し、特にプログラム言語にて記述されたソースプログラムを解析するプログラム解析装置、プログラム言語にて記述されたソースプログラムを解析するプログラム解析方法及びコンピュータを、プログラム言語にて記述されたソースプログラムを解析するプログラム解析装置として機能させるためのソースプログラム解析用プログラムを記録したコンピュータ読み取り可能な記録媒体に関する。
【0002】
【従来の技術】
データファイルとのアクセスを含むプログラムを実行する場合、その実行にかかる時間は、ファイルアクセスのための時間に左右されることが多い。このためデータファイルは、記憶装置の中でも同時にアクセスされる他のデータファイルと近い場所に格納されたり、アクセス頻度の高い順に速くアクセスできる場所に格納されたりする。
【0003】
プログラムやデータファイルの量が増えるにつれ、ファイルの効率的な格納は難しくなる。そして、ファイルを効率的に格納し直したい場合には、その記憶装置にアクセスするすべてのプログラムが、どのような順番でどのファイルにアクセスするかを調べなければならない。従来この解析作業は、人間の手作業でのみ行っていた。
【0004】
【発明が解決しようとする課題】
しかし、対象となるプログラムすべてを人間の手作業で解析し、そのアクセス状況を調べると、莫大な時間や費用がかかったり、正確性を欠いたりしてしまうという問題点があった。
【0005】
本発明はこのような点に鑑みてなされたものであり、プログラムのソースファイルからファイルアクセスの状況を、正確に、かつ高速に、さらに人間が理解しやすいように出力するプログラム解析装置を提供することを目的とする。
【0006】
また、本発明の他の目的は、プログラムのソースファイルからファイルアクセスの状況を、正確に、かつ高速に、さらに人間が理解しやすいように出力するプログラム解析方法を提供することである。
【0007】
さらに、本発明の他の目的は、コンピュータを、プログラムのソースファイルからファイルアクセスの状況を、正確に、かつ高速に、さらに人間が理解しやすいように出力するプログラム解析装置として機能させるためのソースプログラム解析用プログラムを記録したコンピュータ読み取り可能な記録媒体を提供することである。
【0008】
【課題を解決するための手段】
本発明では上記課題を解決するために、プログラム言語にて記述されたソースプログラムを解析するプログラム解析装置において、ソースプログラムが入力されるとソースプログラムから、分岐制御および反復制御を行う制御文と、記憶装置に格納されたファイルにアクセスする入出力文と、サブルーチンに含まれる文を特定するための1以上の句で構成されており少なくともサブルーチン名を含む手続き定義文と、サブルーチンを呼び出す手続き呼出文とを抽出し、抽出した文をソースプログラムにおける出現順序に従って並べたプログラム基本構造を生成する構造抽出手段と、構造抽出手段が生成したプログラム基本構造を操作して、手続き呼出文の呼出先のサブルーチンに含まれる文を、手続き呼出文とサブルーチンからの復帰直後に実行される位置にある文との間に挿入したプログラム展開構造を生成する構造展開手段と、構造展開手段が生成したプログラム展開構造から、入出力文と、制御文のうち入出力文を対象として反復制御を行う文とを選択し、選択しなかった文をプログラム展開構造から削除したアクセス構造を生成する削除手段と、削除手段が生成したアクセス構造に基づいて、記憶装置に格納されたファイルへのアクセスの順序を示す情報を出力する出力手段と、を有することを特徴とするプログラム解析装置が提供される。
【0009】
このようなプログラム解析装置で、プログラム言語にて記述されたソースプログラムを解析する場合、構造抽出手段が、入力されたソースプログラムから、制御文と入出力文と手続き定義文と手続き呼出文とを抽出し、プログラム基本構造を生成する。構造展開手段は、プログラム基本構造を操作して、手続き呼出文の呼出先のサブルーチンに含まれる文を、手続き呼出文とサブルーチンからの復帰直後に実行される位置にある文との間に挿入してプログラム展開構造を生成する。削除手段は、プログラム展開構造から入出力文と入出力文を対象として反復制御を行う制御文とを選択し、選択しなかった文をプログラム展開構造から削除したアクセス構造を生成する。そして、出力手段はアクセス構造に基づいてファイルへのアクセスの順序を示す情報を出力する。
【0010】
このようなプログラム解析装置にてソースプログラムを解析すると、ソースプログラム中に手続き呼出文が含まれている場合でも、その手続き順序に対応してアクセス状況を解析、出力することができる。
【0011】
また、本発明では上記課題を解決するために、プログラム受付手段と構造抽出手段と構造展開手段と削除手段と出力手段とを有し、プログラム言語にて記述されたソースプログラムを解析するプログラム解析装置によるプログラム解析方法において、プログラム受付手段が、ソースプログラムの入力を受け付けるステップと、構造抽出手段が、ソースプログラムから、分岐制御および反復制御を行う制御文と、記憶装置に格納されたファイルにアクセスする入出力文と、サブルーチンに含まれる文を特定するための1以上の句で構成されており少なくともサブルーチン名を含む手続き定義文と、サブルーチンを呼び出す手続き呼出文とを抽出し、抽出した文をソースプログラムにおける出現順序に従って並べたプログラム基本構造を生成するステップと、構造展開手段が、構造抽出手段が生成したプログラム基本構造を操作して、手続き呼出文の呼出先のサブルーチンに含まれる文を、手続き呼出文とサブルーチンからの復帰直後に実行される位置にある文との間に挿入したプログラム展開構造を生成するステップと、削除手段が、構造展開手段が生成したプログラム展開構造から、入出力文と、制御文のうち入出力文を対象として反復制御を行う文とを選択し、選択しなかった文をプログラム展開構造から削除したアクセス構造を生成するステップと、出力手段が、削除手段が生成したアクセス構造に基づいて、記憶装置に格納されたファイルへのアクセスの順序を示す情報を出力するステップと、を有することを特徴とするプログラム解析方法が提供される。
【0012】
このようなプログラム解析方法にて、プログラム言語にて記述されたソースプログラムを解析する場合、まずソースプログラムの入力を受け付け、入力されたソースプログラムから、制御文と入出力文と手続き定義文と手続き呼出文とを抽出し、プログラム基本構造を生成する。次にプログラム基本構造を操作して、手続き呼出文の呼出先のサブルーチンに含まれる文を、手続き呼出文とサブルーチンからの復帰直後に実行される位置にある文との間に挿入したプログラム展開構造を生成する。そしてプログラム展開構造から入出力文と入出力文を対象として反復制御を行う制御文とを選択し、選択しなかった文をプログラム展開構造から削除したアクセス構造を生成し、アクセス構造に基づいてファイルへのアクセスの順序を示す情報を出力する。
【0013】
このようなプログラム解析方法にてソースプログラムを解析すると、ソースプログラム中に手続き呼出文が含まれている場合でも、その手続き順序に対応してアクセス状況を解析、出力することができる。
【0014】
さらに、本発明では上記課題を解決するために、コンピュータを、プログラム言語にて記述されたソースプログラムを解析するプログラム解析装置として機能させるためのソースプログラム解析用プログラムを記録したコンピュータ読み取り可能な記録媒体において、コンピュータを、ソースプログラムの入力を受け付けるプログラム受付手段、ソースプログラムが入力されるとソースプログラムから、分岐制御および反復制御を行う制御文と、記憶装置に格納されたファイルにアクセスする入出力文と、サブルーチンに含まれる文を特定するための1以上の句で構成されており少なくともサブルーチン名を含む手続き定義文と、サブルーチンを呼び出す手続き呼出文とを抽出し、抽出した文をソースプログラムにおける出現順序に従って並べたプログラム基本構造を生成する構造抽出手段、構造抽出手段が生成したプログラム基本構造を操作して、手続き呼出文の呼出先のサブルーチンに含まれる文を、手続き呼出文とサブルーチンからの復帰直後に実行される位置にある文との間に挿入したプログラム展開構造を生成する構造展開手段、構造展開手段が生成したプログラム展開構造から、入出力文と、制御文のうち入出力文を対象として反復制御を行う文とを選択し、選択しなかった文をプログラム展開構造から削除したアクセス構造を生成する削除手段、削除手段が生成したアクセス構造に基づいて、記憶手段に格納されたファイルへのアクセスの順序を示す情報を出力する出力手段、として機能させるためのソースプログラム解析用プログラムを記録したコンピュータ読み取り可能な記録媒体が提供される。
【0015】
このような記録媒体に記録されたソースプログラム解析用プログラムにて、コンピュータを、プログラム言語にて記述されたソースプログラムを解析するプログラム解析装置として機能させる場合、コンピュータは、入力されたソースプログラムから、制御文と入出力文と手続き定義文と手続き呼出文とを抽出し、プログラム基本構造を生成する機能と、プログラム基本構造を操作して、手続き呼出文の呼出先のサブルーチンに含まれる文を、手続き呼出文とサブルーチンからの復帰直後に実行される位置にある文との間に挿入したプログラム展開構造を生成する機能と、プログラム展開構造から入出力文と入出力文を対象として反復制御を行う制御文とを選択し、選択しなかった文をプログラム展開構造から削除したアクセス構造を生成する機能と、アクセス構造に基づいてファイルへのアクセスの順序を示す情報を出力する機能とを実現する。
【0016】
このようなソースプログラム解析用プログラムを記録した記録媒体にてコンピュータをプログラム解析装置として機能させると、ソースプログラム中に手続き呼出文が含まれている場合でも、その手続き順序に対応してアクセス状況を解析、出力することができる。
【0017】
【発明の実施の形態】
以下、本発明の実施の形態を図面を参照して説明する。
図1は、本発明のプログラム解析装置の原理構成を示したブロック図である。
【0018】
本発明のプログラム解析装置は、プログラム受付手段2と、構造抽出手段3と、構造展開手段5と、削除手段7と、出力手段9とから構成される。
プログラム受付手段2は、プログラム言語にて記述されたソースプログラム1の入力を受け付ける。構造抽出手段3は、受け付けたソースプログラム1から、ソースプログラム1の制御構造を決定する文と入出力文と手続きとを抽出して、プログラム基本構造4を生成する。構造展開手段5は、プログラム基本構造4に、離れて記述された手続きを呼び出す手続き呼出部が含まれている場合に、その手続きを手続き呼出部の直後に挿入して、プログラム展開構造6を生成する。削除手段7は、プログラム展開構造6から入出力文に関与しない文を削除して、アクセス構造8を生成する。出力手段9は、生成されたアクセス構造8を出力する。
【0019】
ここで構造展開手段5は、置換部5aと、挿入部5bとから構成される。置換部5aは、プログラムの制御構造を決定する文に含まれる手続き呼出にて指定される手続き名を、その手続き名の行番号に置き換える。そして、挿入部5bは、呼び出されている手続きを、手続き呼出の直後に挿入する。
【0020】
なお、生成したアクセス構造8を出力手段9から出力する際、プログラム言語のまま出力する方法と、アクセス構造8からファイルアクセスの様子を示すアクセス表を生成して、このアクセス表を出力する方法とが選択できる。
【0021】
このようなプログラム解析装置にてソースプログラム1の解析を行うと、ソースプログラム1の中に、離れた手続きを呼び出す手続き呼出が含まれている場合でも、その手続き順序に対応してアクセス状況を解析、出力することができる。
【0022】
ここで、本発明のプログラム解析装置にて実際にプログラム解析を行う場合の解析の様子を、例を挙げて説明する。
図2〜図5は、ソースプログラム1の例を示す図である。
【0023】
プログラム10(1/4)〜プログラム10(4/4)は、プログラム言語「COBOL」にて記述されている。プログラム10の各行左側に添えてあるのは行番号で、プログラム10が行番号「000100」〜行番号「014200」にて構成されていることが判る。
【0024】
ここで、行番号「000200」〜「000300」は、プログラム10全体の概要を示す見出し部11である。見出し部11に含まれた行番号「000300」の「PROFGRAM-ID PROG001 」にて、プログラム10の名称「PROG001 」を宣言している。
【0025】
行番号「000400」〜「001100」は、使用する計算機の機器構成やハードウェアに依存する内容を示す環境部12であり、行番号「001200」〜「002900」は、手続き対象のデータやファイルの構造を示すデータ部13である。そして、行番号「003100」以降が、実行すべき内容を示す手続き部14である。なお、行番号の直後に「*」が示してある文はコメント文である。
【0026】
手続き部14の中においてプログラム10は細かく分かれている。すなわち、行番号「003100」〜「004200」は、このプログラム10の主体部141である。また、行番号「004400」〜「005100」は、このプログラム10の第1のサブルーチン142であって、名称「PROC-RTN」を持つ。行番号「005300」〜「007300」は、このプログラム10の第2のサブルーチン143であって、名称「PROC-S-RTN」を持つ。以下同様に、行番号「007500」〜「008700」は、第3のサブルーチン144であって、名称「READ-F01-RTN」を持つ。また、行番号「008900」〜「010000」は、第4のサブルーチン145であって、名称「SEARCH-KYMD-RTN 」を持つ。行番号「010200」〜「012300」は、第5のサブルーチン146であって、名称「READ-MST-RTN」を持つ。行番号「012500」〜「013800」は、第6のサブルーチン147であって、名称「GET-YMD-RTN 」を持つ。そして、行番号「014000」〜「014100」は、第7のサブルーチン148であって、名称「DBECD-CLEAR 」を持つ。
【0027】
このような構成のプログラム10を本発明のプログラム解析装置にて解析する場合、まずプログラム受付手段2がプログラム10を受け付ける。そして、受け付けられたプログラム10から、構造抽出手段3が、プログラム10の制御構造を決定する文と入出力文とサブルーチンとを抽出して、プログラム基本構造を生成する。
【0028】
プログラム10からプログラム基本構造20を生成する場合、見出し部11、環境部12、データ部13は抽出されない。また、コメント文やDISPLAY(表示)文、MOVE(転記)文、算術文等も抽出されない。
【0029】
図6、7は、図2〜図5にて示したプログラム10から生成したプログラム基本構造を示した図である。
プログラム基本構造20(1/2)〜プログラム基本構造20(2/2)は、プログラムの主体部141から抽出された領域21と、第1〜第7のサブルーチン142〜148から抽出された領域22〜28とから構成されている。
【0030】
ここで領域23は、プログラム10の第2のサブルーチン143から、行番号「006000」〜「006200」のMOVE文や、行番号「006400」〜「006800」のMOVE文のみを含むIF(条件)文以外の部分が抽出されて生成される。
【0031】
同様に、領域24は、第3のサブルーチン144から、行番号「007800」のADD(加算)文や、行番号「008300」のMOVE文以外の部分が抽出されて生成される。
【0032】
領域25は、第4のサブルーチン145から、行番号「009000」〜「010000」の変数Jを増加させるPERFORM(実行)文や、この変数Jが一定の条件を満たした時点でMOVE文を実行するIF文以外の部分が抽出されて生成される。
【0033】
領域26は、第5のサブルーチン146から、行番号「010700」や行番号「011800」のMOVE文、行番号「012100」〜「012200」のDISPLAY文以外の部分が抽出されて生成される。
【0034】
領域27は、第6のサブルーチン147から、行番号「013000」〜「013200」のMOVE文及びADD文、行番号「0013400 」〜「0013500 」のDISPLAY文以外の部分が抽出されて生成される。
【0035】
そして、領域28は、第7のサブルーチン148から、行番号「014100」のMOVE文以外の部分が抽出されて生成される。
生成されたプログラム基本構造20は次に、構造展開手段5にて、離れて記述された手続きを呼び出す手続き呼出部が含まれている場合に、その手続きを手続き呼出部の直後に挿入されて、プログラム展開構造6が生成される。
【0036】
但し、構造展開手段5には、プログラム基本構造中の手続き呼出にて指定される手続き名をその手続き名の行番号に置き換える置換部5aと、行番号を含んだ手続き呼出の直後にその行番号の手続きを挿入する挿入部5bとから構成されている。そこで、まず置換部5aにてプログラム第1展開構造が生成される様子を説明した後、挿入部5bにてプログラム第2展開構造が生成される様子を説明する。このプログラム第2展開構造がプログラム展開構造6にあたる。
【0037】
図8、9は、図2〜図5にて示したプログラム10から生成されたプログラム第1展開構造の様子を示した図である。
図において、プログラム第1展開構造30(1/2)〜プログラム第1展開構造30(2/2)は、プログラム基本構造20の領域21に含まれた手続き呼出にて指定された手続き名をその手続き名の行番号に置き換えた領域31と、領域22〜28を同様に置き換えた領域32〜38とから構成されている。
【0038】
ここで、領域31では、領域21の行番号「003700」の「PERFORM DBECD-CREAR.」が、「PERFORM SEQ-014000. 」に置き換えられている。これは、行番号「014000」に名称「DBECD-CREAR 」のサブルーチンが存在するためである。同様に行番号「003800」の「PERFORM PROC-RTN. 」が、「PERFORM SEQ-004400. 」に置き換えられている。なお、「SEQ-」にて行番号を示す。
【0039】
領域32では、領域22の行番号「004500」の「PERFORM READ-F01-RTN THRU READ-F01-EXIT.」が「PERFORM SEQ-007500 THRU SEQ-008700. 」に、行番号「004700」の「PERFORM PROC-S-RTN THRU PROC-S-EXIT.」が「PERFORM SEQ-005300 THRU SEQ-007300. 」に、さらに行番号「005100」の「PERFORM DBECD-CREAR.」が「PERFORM SEQ-014000. 」に、置き換えられている。
【0040】
領域33では、領域23の行番号「005400」の「PERFORM READ-MST-RTN THRU READ-MST-EXIT.」が「PERFORM SEQ-010200 THRU SEQ-012300. 」に、行番号「005600」の「GO TO PROC-S-001. 」が「GO TO SEQ-007100. 」に置き換えられている。また、行番号「006300」の「PERFORM SEARCH-KYMD-RTN.」が「PERFORM SEQ-008900. 」に、行番号「007200」の「PERFORM READ-F01-RTN THRU READ-F01-EXIT.」が「PERFORM SEQ-007500 THRU SEQ-008700. 」に置き換えられている。
【0041】
領域34では、領域24の行番号「007700」の「AT END GO TO READ-F01-EXIT. 」が「AT END GO TO SEQ-008700.」に、行番号「008400」の「GO TO READ-F01-EXIT.」が「GO TO SEQ-008700. 」に、行番号「008600」の「GO TO READ-F01-RTN. 」が「GO TO SEQ-007500. 」に置き換えられている。
【0042】
領域35では、置き換えはない。
領域36では、行番号「010400」の「AT END GO TO READ-MST-ERR.」が「AT END GO TO SEQ-012000.」に、行番号「0010600 」の「AT END GO TO READ-MST-ERR.」が「AT END GO TO SEQ-012000.」に置き換えられている。また、行番号「011000」の「GO TO READ-MST-ERR. 」が「GO TO SEQ-012000. 」に、行番号「011200」の「AT END GO TO READ-MST-ERR.」が「AT END GO TO SEQ-012000.」に、行番号「011400」の「AT END GO TO READ-MST-ERR.」が「AT END GO TO SEQ-012000.」に置き換えられている。さらに、行番号「011600」の「PERFORM GET-YMD-RTN THRU GET-YMD-END. 」が「PERFORM SEQ-012500THRU SEQ-013800.」に、行番号「011900」の「GO TO READ-MYST-EXIT. 」が「GO TO SEQ-012300. 」に置き換えられている。
【0043】
領域37では、行番号「012700」の「AT END GO TO GET-YMD-END. 」が「AT END GO TO SEQ-013800.」に、行番号「012900」の「GO TO GET-YMD-RTN.」が「GO TO SEQ-012500. 」に置き換えられている。また、行番号「013600」の「GO TO GET-YMD-END.」が「GO TO GET SEQ-013800. 」に、行番号「013700」の「GO TO GET-YMD-RTN.」が「GO TO SEQ-012500. 」に置き換えられている。
【0044】
そして、領域38では、置き換えはない。
ここで、各領域に含まれる手続き呼出を確認しておく。
領域31に含まれる手続き呼出は、行番号「003700」の「PERFORM SEQ-014000. 」と、行番号「003800」の「PERFORM SEQ-004400. 」である。なお、この領域31に含まれた行番号「003200」の「START-001.」は、他からの呼出のない段落名であるので、以降の処理では不要である。よって、この時点で削除する。
【0045】
領域32に含まれる手続き呼出は、行番号「004500」の「PERFORM SEQ-007500 THRU SEQ-008700. 」、行番号「004700」の「PERFORM SEQ-005300 THRU SEQ-007300. 」、及び行番号「005100」の「PERFORM SEQ-014000. 」である。
【0046】
領域33に含まれる手続き呼出は、行番号「005400」の「PERFORM SEQ-010200 THRU SEQ-012300. 」、行番号「006300」の「PERFORM SEQ-008900. 」、及び行番号「007200」の「PERFORM SEQ-007500 THRU SEQ-008700. 」である。
【0047】
領域34にはGOTO(飛び越し)文や入出力文は含まれているが、手続き呼出は含まれていない。
なお、領域35には手続き呼出も入出力文も含まれておらず、以降の処理では不要である。よって、領域35はこの時点で削除する。
【0048】
領域36に含まれる手続き呼出は、行番号「011600」の「PERFORM SEQ-012500 THRU SEQ-013800. 」である。
領域37には、GOTO文や入出力文は含まれているが、手続き呼出は含まれていない。
【0049】
なお、領域38には手続き呼出も入出力文も含まれておらず、以降の処理では不要である。よって、領域38はこの時点で削除する。
図10、11は、構造展開手段5の挿入部5bにて、図8、9にて示したプログラム第1展開構造30からプログラム第2展開構造40が生成された様子を示した図である。
【0050】
図において、プログラム第2展開構造40(1/2)〜プログラム第2展開構造40(2/2)は、プログラム第1展開構造30に含まれた手続き呼出の直後に、呼び出されている手続きを挿入した構成となっている。
【0051】
なお、ここでは挿入の繰り返しにより処理の流れが不明瞭になるのを防ぐために、展開番号という項目を設けてある。これは、新たに手続きを挿入する度に、その手続きによる処理の流れに逐次番号を付加していくもので、最初は展開番号01である。この流れの途中で手続き呼出があり、手続きを挿入した場合、その手続きには展開番号02を付加する。また、展開番号02の途中でさらに手続き呼出があったり、展開番号02の処理が終了して展開番号01の処理の再開中に別の手続き呼出があったりした場合には、展開番号03、04・・・を付加していく。また、ここでは、手続き呼出を意味している行に「*」を付加して、その他の行と区別してある。
【0052】
まず行番号「003700」の「PERFORM SEQ-014000. 」であるが、行番号「014000」の手続きは削除されており、存在しない。よって、挿入は行われない。
次に、行番号「003800」の「PERFORM SEQ-004400. 」及び行番号「003900」にの「UNTIL DBSCB=01」に基づいて、この直後に行番号「004400」の「PROC-RTN. 」以下が挿入される。以降、展開番号02が付加される。
【0053】
展開番号02の流れでは、行番号「004500」の「PERFORM SEQ-007500 THRU SEQ-008700. 」が手続き呼出を意味しているので、この直後に行番号「007500」の「READ-F01-RTN. 」以下が挿入されている。以降、展開番号03が付加される。
【0054】
展開番号03の流れには手続き呼出は存在しないので、行番号「008700」までで、この流れは終了する。展開番号02の流れに戻ると、行番号「004700」の「PERFORM SEQ-005300 THRU SEQ-007300. 」及び行番号「004800」の「UNTIL DBSCB=01」が、手続き呼出を意味している。よって、この直後に行番号「005300」の「PROC-S-RTN. 」以下が挿入される。以降、展開番号04が付加される。
【0055】
展開番号04の流れでは、行番号「005400」の「PERFORM SEQ-010200 THRU SEQ-012300. 」が手続き呼出を意味しているので、この直後に行番号「010200」の「READ-MST-RTN. 」以下が挿入される。以降、展開番号05が付加される。
【0056】
展開番号05の流れでは、行番号「011600」の「PERFORM SEQ-012500 THRU SEQ-013800. 」が手続き呼出を意味しているので、この直後に行番号「012500」の「GET-YMD-RTN.」以下が挿入される。以降、展開番号06が付加される。
【0057】
展開番号06の流れには手続き呼出は存在しないので、行番号「013800」までで、この流れは終了する。展開番号05の流れに戻ると、ここにもこれ以上の手続き呼出は存在しないので、行番号「012300」までで、この流れは終了する。
【0058】
展開番号04の流れに戻ると、行番号「006300」の「PERFORM SEQ-008900. 」が手続き呼出を意味している。しかし、行番号「008900」の手続きは削除されており、存在しない。よって、挿入は行われない。
【0059】
次に、行番号「007200」の「PERFORM SEQ-007500 THRU SEQ-008700. 」が手続き呼出を意味しているので、この直後に行番号「007500」の「READ-F01-RTN. 」以下が挿入される。以降、展開番号07が付加される。
【0060】
展開番号07の流れには手続き呼出は存在しないので、行番号「008700」までで、この流れは終了する。展開番号04の流れに戻ると、ここにもこれ以上の手続き呼出は存在しないので、行番号「007300」までで、この流れは終了する。
【0061】
展開番号02の流れに戻ると、行番号「005100」の「PERFORM SEQ-014000. 」が手続き呼出を意味している。しかし、行番号「014000」の手続きは削除されており、存在しない。よって、挿入は行われない。
【0062】
展開番号01の流れに戻ると、これ以上の手続き呼出は存在しないので、行番号「004200」までで、この流れは終了する。
このようにして、構造展開手段5にてプログラム第2展開構造40が生成される。生成されたプログラム第2展開構造40は次に、削除手段7にて入出力に関与しない文を削除される。なお、入出力に関与するのは、データベースファイルとのアクセスを意味するGET文、WRITE(書込み)文、READ(読込み)文、及びこれらの文の繰り返しを意味する文である。
【0063】
図12は、図2〜図5に示されたプログラム10から生成したアクセス構造を示した図である。
アクセス構造50には、新たに相対番号が付加される。行番号「003500」は、GET文なので残され、相対番号「 001」を付加されている。相対番号「 002」のPERFORM文及び相対番号「 025」のEND−PERFIRM文は、プログラム10の行番号「003800」〜「003900」が意味していた処理の繰り返しに相当する。
【0064】
行番号「007500」は、GET文を含んだサブルーチンの名称を示しているので残され、相対番号「 003」を付加されている。行番号「007600」はGET文なので残され、相対番号「 004」を付加されている。行番号「008600」は、行番号「007600」のGET文の繰り返しを意味するGOTO文なので残され、相対番号「 005」を付加されている。相対番号「 006」のPERFORM文及び相対番号「 023」のEND−PERFIRM文は、プログラム10の行番号「004700」〜「004800」が意味していた処理の繰り返しに相当する。
【0065】
行番号「010200」は、GET文を含んだサブルーチンの名称を示しているので残され、相対番号「 007」を付加されている。行番号「010300」、「010500」、「010800」、「011100」、「011300」は、GET文なので残され、相対番号「 008」、「 009」、「 010」、「 011」、「 012」を付加されている。
【0066】
行番号「012500」は、GET文を含んだサブルーチンの名称を示しているので残され、相対番号「 013」を付加されている。行番号「012600」はGET文なので残され、相対番号「 014」を付加されている。行番号「012900」及び「013700」は、どちらも行番号「012600」のGET文の繰り返しを意味するGOTO文なので残され、相対番号「 015」及び「 016」を付加されている。相対番号「 017」のPERFORM文及び相対番号「 019」のEND−PERFIRM文は、プログラム10の行番号「005700」〜「007000」が意味していた処理の繰り返しに相当する。
【0067】
行番号「007500」は、GET文を含んだサブルーチンの名称を示しているので残され、相対番号「 020」を付加されている。行番号「007600」はGET文なので残され、相対番号「 021」を付加されている。行番号「008600」は、行番号「007600」のGET文の繰り返しを意味するGOTO文なので残され、相対番号「 022」を付加されている。そして、行番号「004900」はGET文なので残され、相対番号「 024」を付加されている。
【0068】
このようなアクセス構造50から、プログラム「PROG1」のファイルアクセスの状況が判る。
すなわち、相対番号「 001」より、まずファイル「F02」の最初のデータが読み込まれることが判る。以下、ここで読み込まれるファイル「F02」の最初のデータを、説明のため、「データA1」とする。
【0069】
次に、相対番号「 002」〜「 004」より、ファイル「F01」とのアクセスが行われ、先にファイル「F02」から読み込まれたデータ「データA1」に関連するデータが存在すれば、そのデータが読み込まれることが判る。データの読込みは、に関連するデータがすべて読み込まれるまで繰り返される。以下、ここで「データA1」に関連して読み込まれるファイル「F01」のデータを、「データB11」、「データB12」・・・「データB1X」とする。
次に、相対番号「 008」により、ファイル「F04」とのアクセスが行われ、先にファイル「F01」から読み込まれたデータ「データB11」の親にあたるデータが読み込まれることが判る。以下、ここで「データB11」の親として読み込まれるファイル「F04」のデータを、「データC11」とする。
【0070】
相対番号「 009」により、ファイル「F05」とのアクセスが行われ、先にファイル「F02」から読み込まれた「データA1」の親にあたるデータが読み込まれることが判る。以下、ここで「データA1」の親として読み込まれるファイル「F05」のデータを、「データD1」とする。
【0071】
相対番号「 010」により、ファイル「F06」とのアクセスが行われ、インデックスを指定してデータが読み込まれることが判る。以下、ここで読み込まれるファイル「F06」のデータを、「データEk」とする。
【0072】
相対番号「 011」により、ファイル「F07」とのアクセスが行われ、先にファイル「F06」から読み込まれた「データEk」の親にあたるデータが読み込まれることが判る。以下、ここで「データEk」の親として読み込まれるファイル「F07」のデータを、「データFk」とする。
【0073】
相対番号「 012」により、ファイル「F08」とのアクセスが行われ、先にファイル「F06」から読み込まれた「データEk」の親にあたるデータが読み込まれることが判る。以下、ここで「データEk」の親として読み込まれるファイル「F08」のデータを、「データGk」とする。
【0074】
相対番号「 013」〜「 016」により、ファイル「F03」とのアクセスが行われ、先にファイル「F01」から読み込まれた「データB11」に関連するデータが存在すれば、そのデータが読み込まれることが判る。データの読込みは、関連するデータがすべて読み込まれるまで繰り返される。以下、ここで「データB11」に関連して読み込まれるファイル「F03」のデータを、「データH111」、「データH112」・・・「データH11X」とする。
【0075】
相対番号「 017」〜「 019」により、ファイル「S01」とのアクセスが行われ、インデックスを指定してデータが書き込まれることが判る。データの書き込みは、必要に応じて繰り返される。
【0076】
相対番号「 020」〜「 022」により、ファイル「F01」とのアクセスが行われ、先にファイル「F02」から読み込まれた「データA1」に関連するデータが存在すれば、そのデータが読み込まれることが判る。ここで読み込まれるデータは、「データB11」、「データB12」・・・「データB1X」である。
【0077】
相対番号「 023」により、相対番号「 006」以下の流れに再度進むことが判る。すなわち、「データB11」に関する処理が終了したので、次は「データB12」に関する処理が行われる。相対番号「 006」〜「 023」の処理は、「データB1X」に関する処理が終了するまで繰り返される。
【0078】
相対番号「 024」〜「 025」により、ファイル「F02」の次のデータが読み込まれ、相対番号「 002」以下の流れに再度進むことが判る。すなわち、「データA1」に関する処理が終了したので、次はファイル「F02」に含まれた次のデータである「データA2」に関する処理が行われる。相対番号「 002」〜「 025」の処理は、ファイル「F02」のすべてのデータに関する処理が終了するまで繰り返される。
【0079】
このように、本発明のプログラム解析装置ではソースプログラムからアクセス構造が出力できるので、ファイルアクセスの状況を解析することができる。また、本発明ではアクセス構造を表形式で出力することもできる。
【0080】
図13は、図2〜図5に示されたプログラム10から生成した表形式のアクセス構造を示した図である。
アクセス構造60では、横軸にファイル名を記載し、縦軸で処理の流れを意味するようにして、アクセス構造を表形式で表わしている。繰り返し処理は矢印等で示せばよい。また、ファイルアクセスを意味する文を添付することで、必要に応じて修正の手掛かりとすることができる。
【0081】
本発明のプログラム解析装置では、このようにファイルアクセスの状況を表形式で表わすことができるので、プログラム形式のアクセス構造だけでは把握しづらいようなプログラムに関しても解析が容易となる。
【0082】
以上説明したように、本発明のプログラム解析装置では、プログラム中に、離れた手続きを呼び出す手続き呼出が含まれている場合でも、その手続き順序に対応してアクセス状況を解析、出力することが可能である。
【0083】
また、この解析結果は正確かつ高速に、さらに人間が理解しやすいように出力されるので、この解析結果をファイルの統廃合等を行う際の指針とすることができる。
【0084】
図14は、本発明のプログラム解析装置にて解析されたファイルのアクセス状況の解析結果を3例、示した図である。
解析結果71は、プログラム「PROG001」のファイルアクセス状況を、解析結果72は、プログラム「PROG002」のファイルアクセス状況を、解析結果73は、プログラム「PROG003」のファイルアクセス状況を、表形式で示している。
【0085】
解析結果71により、プログラム「PROG001」は、ファイル「F02」のレコードを読み込んだ後、ファイル「F01」の関連するレコードを読み、さらにファイル「F01」から読み込んだレコードの親レコードをファイル「F03」から読み込むという処理を繰り返すことが判る。
【0086】
また、解析結果72の内容が解析結果72の内容と同一であることから、プログラム「PROG002」がプログラム「PROG001」と同様の処理を繰り返すことが判る。
【0087】
さらに、解析結果73により、プログラム「PROG003」は、ファイル「F04」のレコードを指定に従って読み込むことが判る。
つまり、プログラム「PROG001」、「PROG002」、「PROG003」に関してのみ考えると、ファイル「F03」は独立して読み込まれることはなく、必ずファイル「F01」との関連に基づいて読み込まれている。従って、他に支障がなければファイル「F03」をファイル「F01」に統合してしまった方が、各プログラムのファイルへのアクセス回数を、減少させることができる。
【0088】
また、ファイル「F04」は、特に他のファイルと関連して読み込まれることはない。従って、他に支障がなければ、セット情報を意識させずに、独立したファイルとして記憶装置に格納させることができる。
【0089】
このように、本発明のプログラム解析装置にて、プログラムによるファイルのアクセス状況を解析し、その結果を人間に判りやすいように出力することで、記憶装置内のデータファイル整理等の指針とすることができる。
【0090】
なお、上記の説明では、本発明のプログラム解析装置をプログラム言語「COBOL」で記述されたソースプログラムに適用した例を示したが、「COBOL」以外のプログラム言語で記述されたソースプログラムに対しても本発明のプログラム解析装置は適用可能である。
【0091】
【発明の効果】
以上説明したように、本発明のプログラム解析装置には、ソースプログラム中に手続き呼出文が含まれている場合に、サブルーチンに含まれる文を手続き呼出文とサブルーチンからの復帰直後に実行される位置にある文との間に挿入する構造展開手段と、入出力文に関与しない文を削除する削除手段とを設けたので、ソースプログラム中に、手続き呼出文が含まれている場合でも、その手続き順序に対応してアクセス状況を解析、出力することができる。
【0092】
また、本発明のプログラム解析方法では、ソースプログラム中に手続き呼出文が含まれている場合に、サブルーチンに含まれる文を手続き呼出文とサブルーチンからの復帰直後に実行される位置にある文との間に挿入するので、ソースプログラム中に、手続き呼出文が含まれている場合でも、その手続き順序に対応してアクセス状況を解析、出力することができる。
【0093】
さらに、本発明のコンピュータをプログラム解析装置として機能させるためのプログラムを格納したソースプログラム解析用プログラムを記録したコンピュータ読み取り可能な記録媒体は、コンピュータを、ソースプログラム中に手続き呼出文が含まれている場合に、サブルーチンに含まれる文を手続き呼出文とサブルーチンからの復帰直後に実行される位置にある文との間に挿入する構造展開手段及び入出力文に関与しない文を削除する削除手段として機能させるので、ソースプログラム中に、手続き呼出文が含まれている場合でも、その手続き順序に対応してアクセス状況を解析、出力することができる。
【図面の簡単な説明】
【図1】本発明のプログラム解析装置の原理構成を示したブロック図である。
【図2】ソースプログラムの例を示す図(その1)である。
【図3】ソースプログラムの例を示す図(その2)である。
【図4】ソースプログラムの例を示す図(その3)である。
【図5】ソースプログラムの例を示す図(その4)である。
【図6】図2〜図5にて示したプログラムから生成したプログラム基本構造を示した図(その1)である。
【図7】図2〜図5にて示したプログラムから生成したプログラム基本構造を示した図(その2)である。
【図8】図2〜図5にて示したプログラムから生成されたプログラム第1展開構造の様子を示した図(その1)である。
【図9】図2〜図5にて示したプログラムから生成されたプログラム第1展開構造の様子を示した図(その2)である。
【図10】図8、9にて示したプログラム第1展開構造からプログラム第2展開構造が生成された様子を示した図(その1)である。
【図11】図8、9にて示したプログラム第1展開構造からプログラム第2展開構造が生成された様子を示した図(その2)である。
【図12】図2〜図5に示されたプログラムから生成したアクセス構造を示した図である。
【図13】図2〜図5に示されたプログラムから生成した表形式のアクセス構造を示した図である。
【図14】本発明のプログラム解析装置にて解析されたファイルのアクセス状況の解析結果を3例、示した図である。
【符号の説明】
1 ソースプログラム
2 プログラム受付手段
3 構造抽出手段
4 プログラム基本構造
5 構造展開手段
5a 置換部
5b 挿入部
6 プログラム展開構造
7 削除手段
8 アクセス構造
9 出力手段
Claims (7)
- プログラム言語にて記述されたソースプログラムを解析するプログラム解析装置において、
前記ソースプログラムが入力されると前記ソースプログラムから、分岐制御および反復制御を行う制御文と、記憶装置に格納されたファイルにアクセスする入出力文と、サブルーチンに含まれる文を特定するための1以上の句で構成されており少なくともサブルーチン名を含む手続き定義文と、サブルーチンを呼び出す手続き呼出文とを抽出し、抽出した文を前記ソースプログラムにおける出現順序に従って並べたプログラム基本構造を生成する構造抽出手段と、
前記構造抽出手段が生成した前記プログラム基本構造を操作して、前記手続き呼出文の呼出先のサブルーチンに含まれる文を、前記手続き呼出文とサブルーチンからの復帰直後に実行される位置にある文との間に挿入したプログラム展開構造を生成する構造展開手段と、
前記構造展開手段が生成した前記プログラム展開構造から、前記入出力文と、前記制御文のうち前記入出力文を対象として前記反復制御を行う文とを選択し、選択しなかった文を前記プログラム展開構造から削除したアクセス構造を生成する削除手段と、
前記削除手段が生成した前記アクセス構造に基づいて、前記記憶装置に格納されたファイルへのアクセスの順序を示す情報を出力する出力手段と、
を有することを特徴とするプログラム解析装置。 - 前記構造展開手段は、前記プログラム展開構造を生成する前に、前記入出力文および前記手続き呼出文のいずれも含まないサブルーチンに関して、前記手続き定義文および当該サブルーチンに含まれる文を前記プログラム基本構造から削除すると共に、呼出先のサブルーチンが前記プログラム展開構造から削除された前記手続き呼出文は、挿入の処理の対象から除外することを特徴とする請求項1記載のプログラム解析装置。
- 前記構造展開手段は、
前記プログラム基本構造に含まれる前記手続き呼出文にて指定されるサブルーチン名を、サブルーチン名で示されるサブルーチンに関する前記手続き定義文および当該サブルーチンに含まれる全ての文のうちの、先頭の文の行番号に置き換える置換部と、
前記置換部による置き換えが行われた後に、前記手続き呼出文にて指定された行番号を用いて挿入すべき文を特定し、挿入の処理を行う挿入部と、
から構成されることを特徴とする請求項1記載のプログラム解析装置。 - 前記出力手段は、ファイルへのアクセスの順序を示す情報として、プログラム言語にて記述された文のリストを出力することを特徴とする請求項1記載のプログラム解析装置。
- 前記出力手段は、前記アクセス構造から、入出力の処理の実行順序とアクセス対象のファイルとの対応関係を表形式で表したアクセス表を生成し、生成した前記アクセス表をファイルへのアクセスの順序を示す情報として出力することを特徴とする請求項1記載のプログラム解析装置。
- プログラム受付手段と構造抽出手段と構造展開手段と削除手段と出力手段とを有し、プログラム言語にて記述されたソースプログラムを解析するプログラム解析装置によるプログラム解析方法において、
前記プログラム受付手段が、前記ソースプログラムの入力を受け付けるステップと、
前記構造抽出手段が、前記ソースプログラムから、分岐制御および反復制御を行う制御文と、記憶装置に格納されたファイルにアクセスする入出力文と、サブルーチンに含まれる文を特定するための1以上の句で構成されており少なくともサブルーチン名を含む手続き定義文と、サブルーチンを呼び出す手続き呼出文とを抽出し、抽出した文を前記ソースプログラムにおける出現順序に従って並べたプログラム基本構造を生成するステップと、
前記構造展開手段が、前記構造抽出手段が生成した前記プログラム基本構造を操作して、前記手続き呼出文の呼出先のサブルーチンに含まれる文を、前記手続き呼出文とサブルーチンからの復帰直後に実行される位置にある文との間に挿入したプログラム展開構造を生成するステップと、
前記削除手段が、前記構造展開手段が生成した前記プログラム展開構造から、前記入出力文と、前記制御文のうち前記入出力文を対象として前記反復制御を行う文とを選択し、選択しなかった文を前記プログラム展開構造から削除したアクセス構造を生成するステップと、
前記出力手段が、前記削除手段が生成した前記アクセス構造に基づいて、前記記憶装置に格納されたファイルへのアクセスの順序を示す情報を出力するステップと、
を有することを特徴とするプログラム解析方法。 - コンピュータを、プログラム言語にて記述されたソースプログラムを解析するプログラム解析装置として機能させるためのソースプログラム解析用プログラムを記録したコンピュータ読み取り可能な記録媒体において、コンピュータを、
前記ソースプログラムの入力を受け付けるプログラム受付手段、
前記ソースプログラムが入力されると前記ソースプログラムから、分岐制御および反復制御を行う制御文と、記憶装置に格納されたファイルにアクセスする入出力文と、サブルーチンに含まれる文を特定するための1以上の句で構成されており少なくともサブルーチン名を含む手続き定義文と、サブルーチンを呼び出す手続き呼出文とを抽出し、抽出した文を前記ソースプログラムにおける出現順序に従って並べたプログラム基本構造を生成する構造抽出手段、
前記構造抽出手段が生成した前記プログラム基本構造を操作して、前記手続き呼出文の呼出先のサブルーチンに含まれる文を、前記手続き呼出文とサブルーチンからの復帰直後に実行される位置にある文との間に挿入したプログラム展開構造を生成する構造展開手段、
前記構造展開手段が生成した前記プログラム展開構造から、前記入出力文と、前記制御文のうち前記入出力文を対象として前記反復制御を行う文とを選択し、選択しなかった文を前記プログラム展開構造から削除したアクセス構造を生成する削除手段、
前記削除手段が生成した前記アクセス構造に基づいて、前記記憶装置に格納されたファイルへのアクセスの順序を示す情報を出力する出力手段、
として機能させるためのソースプログラム解析用プログラムを記録したコンピュータ読み取り可能な記録媒体。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP08250297A JP3970373B2 (ja) | 1997-04-01 | 1997-04-01 | プログラム解析装置、プログラム解析方法及びソースプログラム解析用プログラムを記録したコンピュータ読み取り可能な記録媒体 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP08250297A JP3970373B2 (ja) | 1997-04-01 | 1997-04-01 | プログラム解析装置、プログラム解析方法及びソースプログラム解析用プログラムを記録したコンピュータ読み取り可能な記録媒体 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH10283175A JPH10283175A (ja) | 1998-10-23 |
JP3970373B2 true JP3970373B2 (ja) | 2007-09-05 |
Family
ID=13776283
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP08250297A Expired - Fee Related JP3970373B2 (ja) | 1997-04-01 | 1997-04-01 | プログラム解析装置、プログラム解析方法及びソースプログラム解析用プログラムを記録したコンピュータ読み取り可能な記録媒体 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3970373B2 (ja) |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH02112024A (ja) * | 1988-10-21 | 1990-04-24 | Hitachi Ltd | プログラム処理パターン推定方法 |
JPH0324639A (ja) * | 1989-06-21 | 1991-02-01 | Hitachi Ltd | プログラム理解支援方法 |
JPH0540616A (ja) * | 1991-08-02 | 1993-02-19 | Hitachi Ltd | プログラム仕様生成方法 |
JP3377836B2 (ja) * | 1993-09-30 | 2003-02-17 | 富士通株式会社 | ソースプログラムの業務仕様解析装置 |
-
1997
- 1997-04-01 JP JP08250297A patent/JP3970373B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JPH10283175A (ja) | 1998-10-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JPH04227550A (ja) | データ処理装置 | |
US20060150150A1 (en) | Editor support for modifying generated source code | |
US7251808B2 (en) | Graphical debugger with loadmap display manager and custom record display manager displaying user selected customized records from bound program objects | |
JPH04229364A (ja) | 強調特性変更方法及びシステム | |
US5926823A (en) | Document generic logical information editing apparatus | |
JP3970373B2 (ja) | プログラム解析装置、プログラム解析方法及びソースプログラム解析用プログラムを記録したコンピュータ読み取り可能な記録媒体 | |
US8898625B2 (en) | Optimized storage of function variables | |
US6151699A (en) | Computer apparatus and method for editing programs, and readable medium | |
EP2587380A1 (en) | Runtime environment and method for non-invasive monitoring of software applications | |
JPH11272503A (ja) | プログラムのテストデータ自動生成装置 | |
JP2000048024A (ja) | 構造化文書処理装置 | |
CN114022105A (zh) | 数据处理方法、装置、电子设备和可读存储介质 | |
CN113010400B (zh) | 计算机工程技术文档智能生成、复盘系统和方法 | |
JP4208591B2 (ja) | ブレイクポイント設定装置、ブレイクポイント設定方法及びブレイクポイント設定プログラム | |
JPS63288357A (ja) | デ−タ編集方式 | |
JPH04274519A (ja) | プログラム高速化自動実行方式 | |
JP3278637B2 (ja) | ログファイルのメンテナンス装置および方法 | |
JPH0816448A (ja) | データ群のデータ削除方法 | |
JP3419483B2 (ja) | 自然言語処理装置及びその方法 | |
JPH0375942A (ja) | ファイルの編集履歴制御方式 | |
JP2721377B2 (ja) | Basicプログラム圧縮方法 | |
JPH0773030A (ja) | 動的モデル設計支援方法 | |
JP2002082811A (ja) | コンパイル方法および記録媒体 | |
JPH03276227A (ja) | 実行用ジョブ制御言語の自動生成方式 | |
JPH04178829A (ja) | ロードモジュール内のファイル定義情報編集方式 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20060731 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20060808 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20061010 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20061107 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20070109 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20070130 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20070330 |
|
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: 20070605 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20070606 |
|
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: 20110615 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120615 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120615 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130615 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140615 Year of fee payment: 7 |
|
LAPS | Cancellation because of no payment of annual fees |