[go: up one dir, main page]
More Web Proxy on the site http://driver.im/

KR100279731B1 - 칠 언어에 대한 제어 흐름 표시방법 - Google Patents

칠 언어에 대한 제어 흐름 표시방법 Download PDF

Info

Publication number
KR100279731B1
KR100279731B1 KR1019970065708A KR19970065708A KR100279731B1 KR 100279731 B1 KR100279731 B1 KR 100279731B1 KR 1019970065708 A KR1019970065708 A KR 1019970065708A KR 19970065708 A KR19970065708 A KR 19970065708A KR 100279731 B1 KR100279731 B1 KR 100279731B1
Authority
KR
South Korea
Prior art keywords
node
information
program
null
control flow
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
KR1019970065708A
Other languages
English (en)
Other versions
KR19990047347A (ko
Inventor
이동길
이수현
김상국
정민수
Original Assignee
이계철
한국전기통신공사
정선종
한국전자통신연구원
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 이계철, 한국전기통신공사, 정선종, 한국전자통신연구원 filed Critical 이계철
Priority to KR1019970065708A priority Critical patent/KR100279731B1/ko
Publication of KR19990047347A publication Critical patent/KR19990047347A/ko
Application granted granted Critical
Publication of KR100279731B1 publication Critical patent/KR100279731B1/ko
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)
  • Stored Programmes (AREA)
  • Computing Systems (AREA)

Abstract

본 발명은 칠(CHILL) 언어로 프로그램 되는 교환기용 소프트웨어에서 프로그램의 실행 순서를 분석할 수 있는 제어 흐름을 표시해 주는 칠 언어에 대한 제어 흐름 표시방법에 관한 것으로서, 단위 프로그램 내의 모듈리언과 블록에 대한 처리를 하고, 모듈리언과 블록 내의 실행문에 대한 처리를 한 후, 각 노드에 대한 인덴테이션 처리를 하고, 연결 리스트의 각 노드에 대한 출력을 하는 칠 언어에 대한 제어 흐름 표시방법을 제공함으로써, 입력 칠 소스 프로그램의 가시성 구조와 병행성에 따른 제어 흐름 그리고, 실행문들간의 내포 관계를 시각적으로 인덴테이션하여 개발자로 하여금 프로그램의 전체 흐름 및 실행문들간의 관계를 명확하게 이해할 수 있도록하여, 보다 신뢰성 높은 칠 프로그램을 작성할 수 있고, 제어 흐름 분석을 통해 소프트웨어의 품질을 향상시킬 수 있는 효과가 있다.

Description

칠 언어에 대한 제어 흐름 표시방법
본 발명은 칠(CHILL) 언어로 프로그램 되는 교환기용 소프트웨어의 제어 흐름을 표시해 주는 방법에 관한 것으로서, 특히, 프로그램의 실행 순서를 분석할 수 있는 제어 흐름을 표시해 주는 칠 언어에 대한 제어 흐름 표시방법에 관한 것이다.
교환기용 소프트웨어 제작을 위한 고급 프로그래밍 언어인 칠은 기존의 프로그래밍 언어가 가지는 대부분의 기능을 포함하는 크고 복잡한 언어로서, 신뢰성 보장, 효율적인 목적 코드의 생성과 변경 및 추가의 용이성을 고려하여 설계되었다. 현재 교환기에 사용되는 소프트웨어의 많은 부분이 칠 언어로 작성되고 있다. 교환기는 신뢰성이 높아야 한다는 제약이 있으므로 칠 프로그램 역시 오류를 포함해서는 안된다. 신뢰성이 높은 프로그램을 작성하기 위해서는 오류 발생 가능성이 있는 부분을 찾아서 수정하는 작업이 필요하다.
종래에는 상기와 같은 오류 발생의 방지 및 수정을 위해서, 올바르지 않게 작동하는 프로그램의 오류를 찾아내는 방법으로 디버거(debugger)를 사용하였다. 디버거는 오류 수정을 위한 강력하고 필수적인 도구이기는 하지만, 프로그램의 실행을 추적하면서 오류 수정을 해야 하는 부담을 가진다. 따라서, 상기 디버거의 단점을 개선하여 프로그램의 신뢰성을 높이는 또 다른 방법으로 프로그램 내의 호출 관계나 제어 구조를 분석하여 출력해 주는 프로그램들을 사용하여 프로그램을 구조화(structuring)하였다. 구조화된 프로그램은 이해하기 쉽고 오류의 가능성을 줄여 준다.
그러나, 상기와 같은 종래의 디버거 또는 프로그램을 구조화하는 프로그램들은 칠 언어가 갖는 가시성 구조나 병행성 구조를 고려하지 않아 소프트웨어 개발자가 프로그램의 전체 흐름 및 실행문들간의 관계를 이해하는데 어려움이 있다.
상기 문제점을 해결하기 위해 본 발명은, 단위 프로그램 내의 모듈리언과 블록에 대한 처리를 하고, 모듈리언과 블록 내의 실행문에 대한 처리를 한 후, 각 노드에 대한 인덴테이션 처리를 하고, 연결 리스트의 각 노드에 대한 출력을 하는 칠 언어에 대한 제어 흐름 표시방법을 제공하여, 입력 칠 소스 프로그램의 가시성 구조와 병행성에 따른 제어 흐름 그리고, 실행문들간의 내포 관계를 시각적으로 인덴테이션하여 개발자로 하여금 프로그램의 전체 흐름 및 샐행문들간의 관계를 명확하게 이해할 수 있도록하는데 그 목적이 있다.
도 1은 본 발명이 적용되는 하드웨어 시스템 구성도,
도 2는 본 발명에 따른 칠 컴파일러 전단부의 내부 구성도,
도 3은 도 2의 제어 흐름 분석부에 있는 제어 흐름 표시기의 전체적인 흐름도,
도 4는 도 3의 모듈리언과 블록 정보 탐색 단계에 대한 상세 처리 흐름도,
도 5는 도 3의 모듈리언과 블록내 실행문의 정보 탐색 단계에 대한 상세 처리 흐름도,
도 6은 도 3의 각 노드에 대한 인덴트 값 설정 단계에 대한 상세 처리 흐름도,
도 7은 도 3의 제어 흐름 구조에 대한 진단 결과 출력 단계의 상세 처리 흐름도.
〈도면의 주요 부분에 대한 부호의 설명〉
101 : 메인 메모리 102 : 중앙 처리장치
103 : 보조 기억장치 104 : 입/출력 장치
105 : 유닉스 운영체제 106 : 시스템 버스
본 발명은 칠(CHILL) 언어로 프로그램 되는 교환기용 소프트웨어의 제어 흐름을 표시해 주는 방법에 관한 것으로서, 특히, 프로그램의 실행 순서를 분석할 수 있는 제어 흐름을 표시해 주는 칠 언어에 대한 제어 흐름 표시방법에 관한 것이다.
이하, 첨부된 도면을 참조하여 본 발명의 실시예를 상세히 설명한다.
도 1은 본 발명이 적용되는 하드웨어 시스템 구성도로서, 제어 흐름 표시기를 개발하기 위한 칠 컴파일러가 탑재된 메인 메모리 보드(101)와, 상기 메인 메모리 보드(101)에 탑재된 파일을 실행시키는 중앙 처리 보드(102)와, 하드웨어 시스템의 각 보드 및 장치에서 사용하는 파일 및 데이터 등을 저장하는 보조 기억장치(103)와, 모든 오류 메시지 및 진단 결과들을 입/출력하는 입/출력 장치(104)와, 상기 각 보드 및 장치들을 제어하는 유닉스 운영체제(105)와, 상기 각 보드 및 장치간에 상호 주고받는 메시지나 정보들을 전송해 주는 시스템 버스(106)로 구성된다.
도 2는 본 발명에 따른 칠 컴파일러 전단부의 내부 구성도이다.
먼저, 구문 분석부(201)가 입력 프로그램을 어휘 분석하고 LALR(1) 파싱 방법을 이용하여 구문 분석하면서 심볼 테이블과 추상 구문 트리(Abstract Syntax Tree : AST)를 생성하여 전체 프로그램 구조부(205)에 저장시키고, 가시성 제어부(202)로 출력하면, 가시성 제어부(202)에서는 상기 구문 분석부(201)로부터 출력된 심볼 테이블과 추상 구문 트리의 가시성을 분석하고, GRANT/SEIZE 정보를 이용하여 심볼 테이블을 재구성하며, 의미 분석부(203)는 상기 가시성 제어부(202)에서 출력된 심볼 테이블을 이용하여 프로그램의 의미 분석을 수행한다. 그리고, 제어 흐름 분석부(204)는 컴파일러 전단부에 추가된 형태로 프로그램의 제어 구조에 관하여 입력 소스 프로그램에 대한 호출 관계나 제어 흐름의 골격(skeleton)과 무한 루프나 도달 불능 코드, 불변 부분, 위험한 제어 이동 등에 관한 내용을 정적 시간에 분석하고, 최종적으로 진단 결과 출력부(206)에서 상기 제어 흐름 분석부(204)의 진단 결과를 화면이나 파일로 출력한다.
도 3은 도 2의 제어 흐름 분석부에 있는 제어 흐름 표시기의 전체적인 흐름도이다.
입력된 소스 프로그램은 컴파일러 전단부에 의해 심볼 테이블과 추상 구문 트리 구조가 만들어지는데 추상 구문 트리는 20개의 단위 프로그램 구조로 구성된다. 제어 흐름 표시기에서는 먼저, 20개의 단위 프로그램 탐색이 완료되었는가의 여부를 판단하여(300), 단위 프로그램 탐색이 완료되지 않았을 경우에는 각각의 단위 프로그램 구조를 읽어, 한 개의 단위 프로그램 정보를 읽는다(400). 다음으로, 상기 단계(400)에서 읽은 단위 프로그램과 연관된 추상 구문 트리를 순회하면서 추상 구문 트리를 구성하는 단위 프로그램 내의 모듈리언과 블록의 정보를 탐색하여 연결 리스트에 저장하며(500), 상기 단계(500)와 같은 방법으로 각 모듈리언과 블록 내의 실행문의 첫 위치를 검색하여 실행문중 제어에 영향을 주는 요소들만 탐색하여 그 정보를 연결 리스트에 저장한(600) 후, 상기 단계(300)로 귀환하여 상기 단계들을 반복하여 수행한다. 그리고, 상기 단계(300)에서 단위 프로그램의 탐색이 완료된 경우에는 다음 연결 리스트에 저장된 노드들의 연결 특성을 고려하여 인덴트 값을 설정하고(700), 다음 연결 리스트의 각 노드를 차례대로 읽어서 전체적인 소스 프로그램의 제어 흐름을 시각적으로 인덴테이션 하여 리스트 형식으로 출력한다(800).
도 4는 도 3의 모듈리언과 블록 정보 탐색 단계에 대한 상세 처리 흐름도이다.
먼저, 추상 구문 트리를 처음부터 검색하여 각 노드의 노드 종류가 모듈리언과 블록인지를 검사하여 현재 노드에 대한 그룹명을 정의한다(501). 여기서, 모듈리언과 블록은 내포 관계 구조이므로 시작 지점과 끝지점을 가진다. 다음으로, 현재 노드의 시작 포인트에 대한 정보를 연결 리스트로 구성할 노드를 생성하여 저장하고, 그 포인트를 연결 리스트에 삽입하며(502), 상기 단계(502)와 같은 방법으로 마지막 포인트에 대한 정보를 연결 리스트로 구성할 노드를 생성하여 연결 리스트에 삽입한다(503).
도 5는 도 3의 모듈리언과 블록내 실행문의 정보 탐색 단계에 대한 상세 처리 흐름도이다.
먼저, 노드 엔트리가 널인가의 여부를 판단하여, 널일 경우에는 종료하고(601), 널이 아닐 경우에는 노드 엔트리가 넌터미널인가의 여부를 판단한다(602). 여기에서 상기 단계(601)에서 노드 엔트리가 널인가의 여부를 판단하는 것은, 추상 구문 트리상의 모든 노드를 검색하여 추상 구문 트리를 구성하는 모듈리언과 블록에 대해서 각각에 대한 실행문의 시작 포인트를 찾기 위한 것이다. 따라서, 상기 단계(602)에서는 상기 단계(601)에서 찾은 시작 포인트를 시발점으로 하여 각 노드 중 넌터미널인 노드만을 찾게 된다. 다음으로, 상기 단계(602)에서 넌터미널일 경우에는 제어에 영향을 주는 요소들만을 탐색하여, 엔트리에 대한 노드를 생성하고, 연결 리스트에 삽입하고(603), 형제 엔트리로 포인트를 재설정하여 추상 구문 트리상의 형제 노드들을 차례로 탐색하면서 나머지 실행에 영향을 주는 노드를 탐색하고, 다시 상기 단계(601)로 귀환하여 노드 엔트리가 널이 될 때까지 상기 단계들을 반복한다(604). 그리고, 상기 단계(602)에서 노드엔트리가 넌터미널이 아닐 경우에도 상기 단계(604)를 수행한다.
도 6은 도 3의 각 노드에 대한 인덴트 값 설정 단계에 대한 상세 처리 흐름도이다.
먼저, 이전 노드의 인덴트 값과 노드의 종류에 따라서 현재 노드의 인덴트 값이 달라지므로, 연결 리스트에서 현재 노드와 현재 노드에 대한 깊이 정보를 탐색한다(701). 또한, 현재 노드가 다중 제어문인지의 여부에 따라서도 인덴트 값이 달라지므로, 현재 노드가 단일 제어문인가의 여부를 판단하여(702), 단일 제어문일 경우에는 기본적인 형태의 인덴트 처리를 하며(703), 단일 제어문이 아닐 경우(즉, 다중 제어문일 경우)에는 제어문의 처음과 끝에 대해 인덴트 처리를 해야하므로 특수한 형태의 인덴트 처리를 한다(704). 여기서, 만일 IF문이나 CASE문과 같은 다중 제어문이 중첩될 경우에는 추상 구문 트리 구조가 일반 제어문에 비해 복잡한 구조를 가지므로, 여러 가지 상태 값을 고려하여 인덴트를 처리해야 한다. 또한, 연결 리스트의 처음부터 하나씩 노드를 검색하여 각각에 대한 인덴트를 부여한다.
도 7은 도 3의 제어 흐름 구조에 대한 진단 결과 출력 단계의 상세 처리 흐름도이다.
먼저, 연결 리스트가 널인가의 여부를 판단하여 널일 경우에는 종료하고(801), 널이 아닐 경우에는 모듈리언, 블록 그리고 제어에 영향을 주는 실행문들의 정보로 구성된 연결 리스트의 각 노드를 차례대로 읽고, 읽은 노드의 인덴트 값에 따라서 인덴테이션하여 각 노드들간의 내포 관계를 시각적으로 출력하고, 다시 상기 단계(801)로 귀환하여 연결 리스트가 널일때까지 반복하여 수행한다(802).
본 발명은 단위 프로그램 내의 모듈리언과 블록에 대한 처리를 하고, 모듈리언과 블록 내의 실행문에 대한 처리를 한 후, 각 노드에 대한 인덴테이션 처리를 하고, 연결 리스트의 각 노드에 대한 출력을 하는 칠 언어에 대한 제어 흐름 표시방법을 제공함으로써, 입력 칠 소스 프로그램의 가시성 구조와 병행성에 따른 제어 흐름 그리고, 실행문들간의 내포 관계를 시각적으로 인덴테이션하여 개발자로 하여금 프로그램의 전체 흐름 및 실행문들간의 관계를 명확하게 이해할 수 있도록하여, 보다 신뢰성 높은 칠 프로그램을 작성할 수 있고, 제어 흐름 분석을 통해 소프트웨어의 품질을 향상시킬 수 있는 효과가 있다.

Claims (5)

  1. 교환기용 소프트웨어를 프로그램 하는 칠(CHILL) 언어에 대한 프로그램 실행 순서를 분석하기 위한 제어 흐름의 표시방법에 있어서,
    20개의 단위 프로그램 탐색이 완료되었는가의 여부를 판단하는 제 1 과정과;
    상기 제 1 과정에서 완료되지 않은 경우 한 개의 단위 프로그램 정보를 읽는 제 2 과정과;
    상기 제 2 과정에서 읽은 단위 프로그램과 연관된 추상 구문 트리를 순회하면서 추상 구문 트리를 구성하는 단위 프로그램 내의 모듈리언과 블록의 정보를 탐색하여 연결 리스트에 저장하는 제 3 과정과;
    상기 제 3 과정에서 탐색된 모듈리언과 블록내 실행문중 제어에 영향을 주는 요소들만 탐색하여 그 정보를 연결 리스트에 저장하고, 제 1 과정으로 귀환하여 상기 과정들을 반복하여 수행하는 제 4 과정과;
    상기 제 1 과정에서 20개의 단위 프로그램 탐색이 완료된 경우, 각 노드에 대한 인덴트 값을 설정하는 제 5 과정과;
    상기 제 5 과정에서 인덴트 값이 설정된 각 노드를 차례대로 읽고 프로그램의 제어 흐름 구조 정보를 시각적으로 인덴테이션 하여 리스트 형식으로 출력하는 제 6 과정을 포함하는 것을 특징으로 하는 칠 언어에 대한 제어 흐름 표시방법.
  2. 제 1 항에 있어서,
    상기 제 3 과정은, 추상 구문 트리를 처음부터 검색하여 각 노드의 노드 종류가 모듈리언과 블록인지를 검사하여 현재 노드에 대한 그룹명을 정의하는 제 1 단계와;
    상기 제 1 단계의 현재 노드의 시작 포인트에 대한 정보를 연결 리스트로 구성할 노드를 생성하여 저장하고, 그 포인트를 연결 리스트에 삽입하는 제 2 단계와;
    마지막 포인트에 대한 정보를 연결 리스트로 구성할 노드를 생성하여 연결 리스트에 삽입하는 제 3 단계를 포함하는 것을 특징으로 하는 칠 언어에 대한 제어 흐름 표시방법.
  3. 제 1 항에 있어서,
    상기 제 4 과정은, 노드 엔트리가 널인가의 여부를 판단하여, 널일 경우에는 종료하는 제 1 단계와;
    상기 제 1 단계에서 널이 아닐 경우 노드 엔트리가 넌터미널인가의 여부를 판단하는 제 2 단계와;
    상기 제 2 단계에서 넌터미널일 경우 제어에 영향을 주는 요소들만을 탐색하고, 엔트리에 대한 노드를 생성하여 연결 리스트에 삽입하는 제 3 단계와;
    상기 제 3 단계를 수행한 후, 또는 상기 제 2 단계에서 노드 엔트리가 넌터미널이 아닐 경우 형제 엔트리로 포인트를 재설정하여 추상 구문 트리상의 형제 노드들을 차례로 탐색하면서 나머지 실행에 영향을 주는 노드를 탐색하고, 상기 제 1 단계로 귀환하여 노드 엔트리가 널이 될 때까지 상기 단계들을 반복하는 제 4 단계를 포함하는 것을 특징으로 하는 칠 언어에 대한 제어 흐름 표시방법.
  4. 제 1 항에 있어서,
    상기 제 5 과정은, 연결 리스트에서 현재 노드와 현재 노드에 대한 깊이 정보를 탐색하는 제 1 단계와;
    상기 제 1 단계에서 탐색된 현재 노드가 단일 제어문인가의 여부를 판단하는 제 2 단계와;
    상기 제 2 단계에서 단일 제어문일 경우 기본적인 형태의 인덴트 처리를 하는 제 3 단계와;
    상기 제 2 단계에서 단일 제어문이 아닐 경우(즉, 다중 제어문일 경우) 특수한 형태의 인덴트 처리를 하는 제 4 단계를 포함하는 것을 특징으로 하는 칠 언어에 대한 제어 흐름 표시방법.
  5. 제 1 항에 있어서,
    상기 제 5 과정은, 연결 리스트가 널인가의 여부를 판단하여 널일 경우에는 종료하는 제 1 단계와;
    상기 제 1 단계에서 널이 아닐 경우에는 모듈리언, 블록 그리고 제어에 영향을 주는 실행문들의 정보로 구성된 연결 리스트의 각 노드를 차례대로 읽고, 읽은 노드의 인덴트 값에 따라서 인덴테이션하여 각 노드들간의 내포 관계를 시각적으로 출력하고, 다시 상기 제 1 단계로 귀환하여 연결 리스트가 널일때까지 반복하여 수행하는 제 2 단계를 포함하는 것을 특징으로 하는 칠 언어에 대한 제어 흐름 표시방법.
KR1019970065708A 1997-12-03 1997-12-03 칠 언어에 대한 제어 흐름 표시방법 Expired - Fee Related KR100279731B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1019970065708A KR100279731B1 (ko) 1997-12-03 1997-12-03 칠 언어에 대한 제어 흐름 표시방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1019970065708A KR100279731B1 (ko) 1997-12-03 1997-12-03 칠 언어에 대한 제어 흐름 표시방법

Publications (2)

Publication Number Publication Date
KR19990047347A KR19990047347A (ko) 1999-07-05
KR100279731B1 true KR100279731B1 (ko) 2001-02-01

Family

ID=66095481

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019970065708A Expired - Fee Related KR100279731B1 (ko) 1997-12-03 1997-12-03 칠 언어에 대한 제어 흐름 표시방법

Country Status (1)

Country Link
KR (1) KR100279731B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100692172B1 (ko) 2005-03-30 2007-03-12 아이티플러스 주식회사 종합 문자열 분석기 및 그 분석 방법

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100692172B1 (ko) 2005-03-30 2007-03-12 아이티플러스 주식회사 종합 문자열 분석기 및 그 분석 방법

Also Published As

Publication number Publication date
KR19990047347A (ko) 1999-07-05

Similar Documents

Publication Publication Date Title
AU2003231305B2 (en) System and method for transformation of XML documents using stylesheets
EP0643851B1 (en) Debugger program which includes correlation of computer program source code with optimized objet code
US6353925B1 (en) System and method for lexing and parsing program annotations
US7308680B2 (en) Intermediate representation for multiple exception handling models
EP0406602B1 (en) Method and apparatus for debugging parallel programs by serialization
US5276880A (en) Method for parsing and representing multi-versioned computer programs, for simultaneous and synchronous processing of the plural parses
JPS61103247A (ja) 翻訳プログラム作成システム
US20150128114A1 (en) Parser
US20080320031A1 (en) Method and device for analyzing an expression to evaluate
US7313785B2 (en) Method and system for generating executable code for formatting and printing complex data structures
US5822592A (en) Method and system for determining source code location
KR100279731B1 (ko) 칠 언어에 대한 제어 흐름 표시방법
JPH0736680A (ja) 並列化プログラム開発支援装置
Bülow Proof visualization for the lean 4 theorem prover
Oorschot VCLLVM: A Transformation Tool for LLVM IR programs to aid Deductive Verification
CN120030083B (en) Document visualization method and device based on GQL grammar of graph database
JPH09288580A (ja) ソースプログラムの最適化装置および最適化方法
Mennicken Locating and presenting lexical references in a theorem prover
Elgh Bridging of complex data structures between xtUML domains
KR100276086B1 (ko) 로토스 명세로부터 씨 플러스 플러스 코드 생성방법
JPH05108372A (ja) コンパイラ最適化処理内容の出力方式
Maris FORTRAN 90 Programming Guidelines for PLANCK/LFI
Palanisamy Extended Metamodelica Based Integrated Copiler Generator
Weijnitz et al. Uppsala Chart Parser Light Improving Efficiency in a Chart Parser
Sawamiphakdi A multiprocess design for an integrated programming environment

Legal Events

Date Code Title Description
A201 Request for examination
PA0109 Patent application

Patent event code: PA01091R01D

Comment text: Patent Application

Patent event date: 19971203

PA0201 Request for examination

Patent event code: PA02012R01D

Patent event date: 19971203

Comment text: Request for Examination of Application

PG1501 Laying open of application
E701 Decision to grant or registration of patent right
PE0701 Decision of registration

Patent event code: PE07011S01D

Comment text: Decision to Grant Registration

Patent event date: 20000823

GRNT Written decision to grant
PR0701 Registration of establishment

Comment text: Registration of Establishment

Patent event date: 20001103

Patent event code: PR07011E01D

PR1002 Payment of registration fee

Payment date: 20001104

End annual number: 3

Start annual number: 1

PG1601 Publication of registration
PR1001 Payment of annual fee

Payment date: 20031030

Start annual number: 4

End annual number: 4

FPAY Annual fee payment

Payment date: 20041101

Year of fee payment: 5

PR1001 Payment of annual fee

Payment date: 20041101

Start annual number: 5

End annual number: 5

LAPS Lapse due to unpaid annual fee
PC1903 Unpaid annual fee