KR20040063837A - 언어 독립 구문으로 매크로를 기록하기 위한 방법 및 시스템 - Google Patents

언어 독립 구문으로 매크로를 기록하기 위한 방법 및 시스템 Download PDF

Info

Publication number
KR20040063837A
KR20040063837A KR1020040001118A KR20040001118A KR20040063837A KR 20040063837 A KR20040063837 A KR 20040063837A KR 1020040001118 A KR1020040001118 A KR 1020040001118A KR 20040001118 A KR20040001118 A KR 20040001118A KR 20040063837 A KR20040063837 A KR 20040063837A
Authority
KR
South Korea
Prior art keywords
computer
instruction
list
command
language independent
Prior art date
Application number
KR1020040001118A
Other languages
English (en)
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 마이크로소프트 코포레이션
Publication of KR20040063837A publication Critical patent/KR20040063837A/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/51Source to source
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • G06F9/45508Runtime interpretation or emulation, e g. emulator loops, bytecode interpretation
    • G06F9/45512Command shells

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)
  • Devices For Executing Special Programs (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Valve-Gear Or Valve Arrangements (AREA)

Abstract

오브젝트 명령 언어(OIL)는 매크로를 재기록하거나 기록된 언어로부터 대안적 언어로 매크로를 번역할 필요 없이 매크로가 다수의 컴퓨터 언어들의 소스 코드로 변환되고, 이에 의해 다수의 컴퓨터 언어에 대한 매크로를 생성하는 데 필요한 시간을 감소시키고, 단일 태스크 다중 시간 반복시에 고유한 에러 가능성을 감소시키고, 사용자가 선호하는 언어로 매크로를 기록할 기회를 소프트웨어 사용자에게 제공하도록 컴퓨터 언어 독립 구문으로 매크로를 기록하는 방법을 제공한다.

Description

언어 독립 구문으로 매크로를 기록하기 위한 방법 및 시스템{METHOD AND SYSTEM FOR RECORDING MACROS IN A LANGUAGE INDEPENDENT SYNTAX}
본 발명은 컴퓨팅 환경 내의 매크로 기록 시스템에 관한 것이다. 보다 구체적으로, 본 발명은 매크로를 재생성할 필요 없이 소스 코드의 다수의 언어로 매크로가 처리될 수 있도록, 매크로가 기록될 컴퓨터 언어와 독립된 구문(syntax)으로 매크로 명령을 생성하기 위한 방법 및 시스템에 관한 것이다.
컴퓨팅 장치는 당해 기술 분야에서 널리 공지 및 실시되고 있다. 예를 들어, 컴퓨팅 장치는 개인용 컴퓨터, 컴퓨터 단말 액세스를 갖는 중앙 집중형 컴퓨터단말 또는 인터넷 등의 네트워크에 접속된 컴퓨팅 장치를 갖는 광역 분산형 시스템의 형태를 취할 수 있다. 일부 컴퓨팅 장치는 사람이 거의 개입하지 않거나 사람의 개입이 전혀 없이 동작될 수 있지만, 다수의 컴퓨팅 장치는 동작을 위해서 사람의 입력을 필요로 한다. 개인용 컴퓨터 등의 컴퓨팅 장치는 통상적으로 수식 및 문자 정보를 입력하기 위한 키보드를 갖는다.
컴퓨팅 장치에 의해 수행되는 작업 타입에 따라, 컴퓨팅 장치는 다른 입력 타입을 가질 수도 있다. 예를 들어, 그래픽 사용자 인터페이스의 대중화로, 그래픽 입력 장치의 사용은 엄청나게 증가되었다. 그래픽 입력 장치는 컴퓨터 마우스, 그래픽 타블렛, 디지타이저 및 광전 펜 등의 장치를 포함한다. 이들 장치는 커서 등의 그래픽 엘리먼트가 컴퓨터 스크린 상에서 이동되고 위치 설정되는 것을 가능하게 한다. 이 그래픽 엘리먼트는 컴퓨터의 동작을 지시하는 기능적 커맨드를 선택하는데 사용될 수 있거나 정보의 입력에 도움이 될 수 있다.
전술한 컴퓨터 마우스는 가장 보편화된 그래픽 입력 장치 중 하나이다. 마우스는 컴퓨팅 장치에 접속되고 커맨드를 선택하여 그래픽 정보를 입력하는데 사용된다. 표면에 걸쳐 마우스를 이동시킴으로써, 마우스의 관련된 움직임은 컴퓨팅 장치에 전송(communicate)되고, 이에 의해 그래픽 커서가 이동된다. 커서를 위치시키고 마우스 상의 버튼이 커맨드를 액세스하여 활성화시키고 그래픽 정보를 입력시킨다.
컴퓨팅 장치는 또한 음성 입력, 디지털 카메라로부터의 입력, 비디오 레코더로부터의 입력 및 근거리 또는 광역 통신망 접속을 통해 컴퓨팅 장치에 결합되는다른 컴퓨팅 리소스로부터의 입력을 포함하는, 컴퓨팅 장치 상에서 동작하는 애플리케이션에 기초하여 사용자로부터의 다른 형태의 입력을 수신할 수 있다.
컴퓨팅 장치를 동작시킬 때, 사용자는 입력 장치와 상호 작용하여 컴퓨팅 장치의 동작을 지시할 수 있다. 컴퓨팅 장치는 특정 동작을 수행하기 위해서 동일한 일련의 입력을 여러 번 필요로 한다. 이러한 반복적인 동작 세트를 수행하는 것은 하나 이상의 장치로부터의 복수의 입력을 포함할 수 있다. 예를 들어, 특정 동작은 프로그램을 시작한 후, 키보드를 이용하여 액세스 패스워드를 문장으로 입력하기 위해 마우스 조작을 필요로 할 수 있다. 키보드, 마우스 및 다른 입력 장치는 종종 반복적인 동작을 수행하도록 요구된다. 사용자가 이 반복적인 동작을 수행하기를 원할 때마다, 사용자는 동일한 입력 장치를 이용하여 동일한 시퀀스를 거쳐야 한다. 이것은 시간이 소요될 뿐만 아니라, 상기 시퀀스는 에러 발생이 쉬운 경향이 있다. 일부 상황에서, 반복적인 동작은 매크로로 단순화될 수 있다.
매크로는 특정 애플리케이션에서 반복적인 키보드, 마우스 및 다른 입력 장치를 자동화하는 데 사용된다. 일반적으로, 매크로는 반복 명령을 포함하는 파일들이다. 일단 생성되면, 매크로는 컴퓨팅 장치에 의해 재생될 수 있다. 예를 들어, 다수의 소프트웨어 애플리케이션은 매크로의 기록 및 재생 능력을 갖는다. 예를 들어, 이들 소프트웨어 애플리케이션에서, 사용자는 매크로를 기록하고 특정 동작 또는 일련의 동작을 수행하여 그 매크로에 이름을 부여할 수 있다. 이후에, 그 동작 또는 일련의 동작은 명명된 매크로를 실행함으로써 수행될 수 있고, 이에 의해 사용자가 매크로의 모든 단계를 반복하는 시간 및 노력이 절약된다. 매크로를실행하기 위하여, 소프트웨어 애플리케이션은 통상적으로 매크로 재생 기능(facility)을 가지며, 이 기능은 커맨드에 의해 또는 단축(shortcut) 커맨드의 사용을 통해 시작될 수 있다.
현재의 매크로 레코더 기술로는, 단지 하나의 언어, 즉 애플리케이션용 비주얼 베이직(VBA)으로만 매크로를 기록하는 것이 일반적으로 가능하다. 그러나, 매크로를 다른 방식으로 기록하고 실행하는 데 사용될 수 있는 다른 많은 프로그래밍 언어들이 존재한다. 아울러, 사용자는 사용자의 개인 선호도, 기술 및 능력 수준에 기초하여 그들이 선택한 언어로 매크로를 기록하는 것을 선호한다. VBA 이외의 언어로 매크로를 기록하기 위하여, 애플리케이션 개발자는 사용자가 매크로를 기록하기 원하는 각 언어에 대해 매크로-레코더를 재기입해야 한다. 이러한 프로세스는 고가이고 시간이 소요될 뿐만 아니라, 에러가 발생되기 쉬워 다른 언어로 기록된 매크로들 간의 일관되지 않은 동작을 유발할 수 있다. 소프트웨어 애플레케이션을 통한 최소 노력으로 다수의 언어를 이용하여 매크로를 기록하는 방법 및 시스템을 제공함으로써 사용자 및 애플리케이션 개발자는 시간과 비용을 절약하게 된다.
도 1a는 본 발명의 각종 실시예의 실시를 위한 예시적 동작 환경을 도시한 블럭도.
도 1b는 본 발명의 실시예에 따라 구성된 오브젝트 명령 언어로 매크로를 기록하기 위한 매크로 구축 및 기록 시스템의 블럭도.
도 2는 본 발명의 실시예에 따른 오브젝트 명령 언어를 이용한 명령 리스트의 구성을 도시한 통합 모델링 언어 다이어그램의 블럭도.
도 3은 본 발명의 실시예에 따른 오브젝트 명령 언어를 이용하여 매크로를 기록하는 프로세스를 도시한 흐름도.
도 4는 본 발명의 실시예에 따른 오브젝트 명령 언어를 이용하여 매크로에 대한 명령 리스트를 생성하는 프로세스를 도시한 흐름도.
도 5는 본 발명의 실시예에 따른 오브젝트 명령 언어로 기입된 명령의 적절한 구성을 검증하는 프로세스를 도시한 흐름도.
<도면의 주요 부분에 대한 간단한 설명>
205 : 명령
210 : callvirt
215 : ldloc
220 : stloc
225 : idc_i4
230 : ldc_r8
235 : ldstr
240 : 팝
245 : 코멘트
250 : 피연산자
255 : 변수
260 : 메쏘드
265 : 리터럴
본 명세서에 개시된 발명의 방법 및 시스템은 컴퓨터 언어 독립 구문(computer language independent syntax)으로 컴퓨터 매크로를 기록하고, 이에 의해 소프트웨어 애플리케이션이 명령을 한번만 기록한 후 그 명령을 다수의 컴퓨터 언어 중 임의의 언어의 소스 코드로 변환하는 수단을 제공한다. 따라서, 본 발명의 일 측면은 하나 이상의 상이한 컴퓨터 언어들로 매크로를 기록하기 원하는 사용자가 컴퓨터 시스템 내의 기록 시스템을 턴 온함으로써 매크로의 기록을 시작하는 것을 가능하게 하는 것이다. 기록 시스템은 통상적으로 매크로 기록 엔진에 위치한 매크로 레코더를 포함한다. 매크로 레코더 및 매크로 기록 엔진 모두 컴퓨터 시스템 상의 소프트웨어 애플리케이션 내에 위치할 수 있다.
이 때, 사용자는 하나 이상의 조작을 수행함으로써 처리할 수 있으며, 사용자는 컴퓨터 시스템 상에 기록하기를 원한다. 상기 조작은 통상적으로 컴퓨터 시스템 내에 상주하는 소프트웨어 애플리케이션 상에서 수행된다. 이들 조작은 사용자가 소프트웨어 애플리케이션과 상호 작용하는 동안 발생되는 커맨드 시퀀스 또는 키보드 스트로크(stroke)를 포함한다. 상기 조작은 통상적으로 소프트웨어 애플리케이션에 의해 컴퓨터 언어 독립 구문을 갖는 명령 리스트라 하는 일련의 명령들로 변환된다. 명령 리스트는 통상적으로 사용자에 의해 수행되고 기록 시스템에 의해 기록되는 조작의 컴퓨터 판독 가능 해석(interpretation)을 나타낸다. 명령들의 컴퓨터 언어 독립 구문은 일단 생성된 명령이 다른 컴퓨터 언어의 하나 이상의 소스 코드로 변환되는 것을 가능하게 한다. 컴퓨터 언어 독립 구문은 통상적으로 소프트웨어 애플리케이션에 의해 사용된 컴퓨터 언어를 반영하지 않는다.
명령 리스트는 통상적으로 각각 원-투-원(one-to-one) 또는 원-투-제로(one-to-zero) 관계의 명령 및 피연산자 모두를 포함한다. 피연산자는 통상적으로 동작되거나 조작될 정보를 열거(specify)한다. 사용자 조작은 빌더(builder)의 도움으로 소프트웨어 애플리케이션에 의해 명령 리스트로 변환되며, 빌더는 소프트웨어 애플리케이션에 위치할 수 있다. 명령은 컴퓨터 언어 독립 구문으로 구성된다. 일단 완성되면, 명령 리스트는 하나 이상의 프로세서로 전송되어 특정 컴퓨터 언어의 소스 코드로 변환될 수 있다. 명령 리스트가 컴퓨터 언어 독립 구문으로 기입되기 때문에, 명령 리스트는 개발자 및 사용자 선호도를 기초로 다른 애플리케이션 개발자 및 사용자에 의해 다른 컴퓨터 언어로 변환될 수 있다. 예를 들어, 사용자 A는 언어 A로 매크로를 기록하는 것을 선택할 수 있는 반면, 사용자 B는 언어 B로 매크로를 기록하는 것을 선택할 수 있다. 양 사용자 모두 동일한 조작을 기록하는 경우, 언어 독립 구문을 이용하여 동일한 명령 리스트가 생성되지만, 명령 리스트는 상이한 프로세스에 의해 언어 A 및 언어 B로 처리된다. 다른 실시예에서, 언어 독립 구문을 이용하여 생성된 명령 리스트가 각각의 상이한 프로세서로 전송되기 전에 명령 및 명령 리스트를 재생성할 필요 없이, 한 번에 다수의 컴퓨터 언어로 변환될 수 있다.
본 발명과 그 이점은 첨부된 도면과 함께 다음의 설명을 참조로 보다 완전하게 이해될 것이다.
실시예
본 발명은 컴퓨터 언어 독립 구문인 오브젝트 명령 언어("OIL")로 매크로를 기록하기 위한 컴퓨터 실행 방법을 제공한다. 이 독립 구문은 하나의 언어로 매크로를 기록한 후 다수의 다른 프로그래밍 언어로 매크로를 실행하는 데 사용될 수 있다. 독립 구문 OIL은 특정 언어로 매크로의 명령 스텝을 다수의 언어에 적합한범용 명령 세트로 변환함으로써 프로그래머를 지원한다. OIL 언어를 이용함으로써, 프로그래머는 다수의 상이한 언어로 동일한 매크로를 재생성할 필요가 없다. 본 발명은 첨부된 도면으로 참조로 보다 용이하게 이해될 수 있다.
본 발명의 실시예가 전반적으로 개인용 컴퓨터 상에서 실행되는 소프트웨어 모듈 및 운영 체계의 상황으로 기술되지만, 당업자는 다른 타입의 컴퓨터를 위한 다른 프로그램 모듈과 함께 실행될 수 있다. 아울러, 당업자는 본 발명이 독립형 또는 분산형 컴퓨팅 환경에서 실행될 수 있다는 것을 인식할 것이다. 분산형 컴퓨팅 환경에서, 프로그램 모듈은 상이한 근거리 및 원격 메모리 기억 장치 내에 물리적으로 위치할 수 있다. 프로그램 모듈은 독립형 방식으로 근거리에서 또는 클라이언트/서버 방식으로 원격에서 실행될 수 있다. 상기 분산형 컴퓨팅 환경의 예는 사무실의 근거리 네트워크, 전사적 컴퓨터 네트워크 및 글로벌 인터넷을 포함한다.
다음의 상세한 설명은 프로세싱 유닛, 메모리 기억 장치, 디스플레이 장치 및 입력 장치를 포함하는 통상의 컴퓨터 컴포넌트에 의한 프로세스 및 동작의 상징적 표현의 관점에서 주로 표현된다. 이들 프로세스 및 동작은 원격 파일 서버, 원격 컴퓨터 서버 및 원격 메모리 기억 장치를 포함하는 분산형 컴퓨팅 환경에서 통상의 컴퓨터 컴포넌트를 이용할 수 있다. 이들 통상의 분산형 컴퓨팅 컴포넌트 각각은 통신망을 통해 프로세싱 유닛에 의해 액세스될 수 있다.
컴퓨터에 의해 수행되는 프로세스 및 동작은 프로세싱 유닛 또는 원격 서버에 의한 신호 조작 및 하나 이상의 근거리 또는 원격 메모리 기억 장치에 상주하는 데이터 구조 내의 이들 신호의 유지를 포함한다. 이러한 데이터 구조는 메모리 기억 장치 내에 기억된 데이터의 수집 시의 물리적 구성(organization)을 제공하고 특정의 전기 또는 자기 엘리먼트를 나타낸다. 이들 상징적 표현은 컴퓨터 프로그래밍 및 컴퓨터 구성 분야의 당업자에 의해 사용되는 수단으로서 기술 사상 및 발명을 당업자에 가장 효율적으로 전달한다.
본 발명은 본 명세서에서 기술되고 첨부된 흐름도(또는 논리 흐름도)에서 도시된 기능을 구체화하는 컴퓨터 프로그램을 포함한다. 그러나, 컴퓨터 프로그래밍에서 본 발명을 실시하는 다수의 다른 방법이 존재하며, 본 발명은 컴퓨터 프로그램 명령들 중 임의의 하나의 세트로 제한되도록 구성되서는 아니된다는 것을 명확히 해야한다. 아울러, 숙련된 프로그래머는 예를 들어, 흐름도 및 상세한 설명의 해당 설명을 기초로 개시된 본 발명을 어려움 없이 실시하여 상기 컴퓨터 프로그램을 기입할 수 있을 것이다. 따라서, 특정 세트의 프로그램 코드 명령의 개시는 본 발명을 구성하고 실시하는 방법을 적절하게 이해하는 데 필수적으로 고려되지는 않는다. 청구된 컴퓨터 프로그램의 진보적 기능은 프로그램 흐름도를 도시하는 나머지 도면과 함께 다음의 설명에서 보다 상세히 설명될 것이다.
이제 도면을 참조하면, 동일한 부호는 다수의 도면 전체에 걸쳐 동일한 엘리먼트를 나타내며, 본 발명의 측면 및 본 발명의 실시를 위한 예시적 동작 환경이 기술될 것이다.
도 1a는 본 발명의 각종 실시예의 실시를 위한 예시적 동작 환경(1)을 도시한 블럭도이다. 당업자는 도 1a 및 관련된 설명이 컴퓨터 하드웨어 및 프로그램 모듈의 하나의 실시예에 대한 간략하고 일반적인 설명을 제공하기 위한 것이며, 추가의 정보가 적절한 프로그래밍 메뉴얼, 사용자 안내문 및 유사한 공보에서 용이하게 입수될 수 있다는 것을 인지할 것이다.
도 1a에 도시된 예시적 동작 환경(1)은 통상의 개인용 컴퓨터(10)의 형태일 수 있는 범용 컴퓨팅 장치를 포함한다. 도 1a에 도시된 바와 같이, 개인용 컴퓨터(10)는 원격 서버(110)에 논리적으로 접속된 네트워크 환경에서 동작된다. 개인용 컴퓨터(10)와 원격 서버(110) 간의 논리적 접속은 근거리 통싱망(12) 및 광역 통신망(13)으로 표현된다. 당업자는 이 클라이언트/서버 구성에서, 원격 서버(110)가 파일 서버 또는 컴퓨터 서버로서 기능할 수 있다는 것을 인지할 것이다.
개인용 컴퓨터(10)는 캘리포니아주, 산타 클라라에 소재한 Intel Corporation에 의해 제조된 "펜티엄" 마이크로프로세서 등의 프로세싱 유닛(14)을 포함한다. 개인용 컴퓨터는 또한 ROM(Read Only Memory :16) 및 RAM(Random Access Memory :17)을 구비한 시스템 메모리(15)를 포함하며, 상기 시스템 메모리는 시스템 버스(18)에 의해 프로세서(14)에 접속된다. 컴퓨터(10)의 실시예는 ROM(16)에 기억되어 있는 기본 입/출력 시스템(BIOS : 19)을 이용한다. 당업자는 BIOS(19)가 개인용 컴퓨터(10)의 엘리먼트들 간에 정보를 전송하는데 도움이 되는 기본 루틴 세트라는 것을 인지할 것이다. 당업자는 또한 본 발명이 BIOS(19)를 이용하지 않는 컴퓨터 및 프로세싱 유닛(14)을 위한 다른 타입의 마이크로프로세서를 이용하는 컴퓨터 등의 다른 아키텍쳐를 갖는 컴퓨터 상에서 실행될 수 있다는 것을 인지할 것이다.
개인용 컴퓨터(10) 내에서, 로컬 하드 디스크 드라이브(20)는 하드 디스크 드라이브 인터페이스(21)를 통해 시스템 버스(18)에 접속된다. 플로피 디스크(23)에서의 판독 또는 기입을 위해 사용되는 플로피 디스크 드라이브(22)는 플로피 디스크 드라이브 인터페이스(24)를 통해 시스템 버스(18)에 접속된다. CD-ROM 또는 DVD 디스크(26)를 판독하는 데 사용되는 CD-ROM 또는 DVD 드라이브(25)는 CD-ROM 또는 DVD 인터페이스(27)를 통해 시스템 버스(18)에 접속된다.
사용자는 직렬 포트 인터페이스(30)를 통해 시스템 버스(18)에 접속된, 키보드(28) 등의 입력 장치 및/또는 마우스(29) 등의 포인팅 장치를 이용하여 개인용 컴퓨터(10)로 커맨드 및 정보를 입력할 수 있다. 다른 타입의 포인팅 장치(도 1에서 미도시됨)는 트랙 패드, 트랙 볼, 디지타이저 펜, 헤드 트래커(tracker), 데이터 글로브(glove) 및 모니터(105) 상에 커서의 위치를 설정하기에 적절한 다른 장치를 포함한다. 모니터(105) 또는 다른 종류의 디스플레이 장치는 비디오 어댑터(32)를 통해 시스템 버스(18)에 접속된다.
도 1a에 도시된 바와 같이, 운영 체계(36), 응용 프로그램 모듈(117), 브라우저 프로그램 모듈(37) 및 문서 프로그램(38) 등의 다수의 프로그램 모듈은 ROM(16), RAM(17), 하드 디스크(21), 플로피 디스크(23) 또는 CD-ROM/DVD 디스크(26) 상에 기억될 수 있다. 프로그램 모듈은 루틴, 서브루틴, 프로그램, 오브젝트, 컴포넌트, 데이터 구조 등을 포함하며, 이것은 특정 태스크를 수행하거나 특정의 추상 데이터형(abstract data type)을 실행한다.
이 네트워크 환경의 원격 서버(110)는 원격 메모리 기억 장치(33)에 접속된다. 이 원격 메모리 기억 장치(33)는 통상적으로 하드 디스크 드라이브, CD-ROM 또는 DVD 드라이브, 자기-광학 드라이브 등의 대용량 장치이다. 당업자는 응용 프로그램 모듈(117) 등의 프로그램 모듈이 컴퓨터 판독 가능 매체를 통해 원격 서버(110)에 제공된다는 것을 인지할 것이다. 개인용 컴퓨터(10)는 네트워크 인터페이스(34)에 의해 원격 서버(110)에 접속되며, 네트워크 인터페이스는 근거리 통신망(LAN : 12)을 통해 통신하는 데 사용된다.
일부 실시예에서, 개인용 컴퓨터(10)는 또한 모뎀(35)에 의해 원격 서버(110)에 접속되며, 모뎀은 인터넷 등의 광역 통신망(WAN :13)을 통해 통신하는 데 사용된다. 모뎀(35)은 직렬 포트 인터페이스(30)를 통해 시스템 버스(18)에 접속된다. 모뎀(35)은 또한 공중 전화망(PSTN) 또는 공동 시청 안테나 텔레비젼(CATV) 망에 접속될 수 있다. 개인용 컴퓨터(10)에 외장된 것으로 도 1a에서 도시되었지만, 당업자는 모뎀(35)이 개인용 컴퓨터(10)에 내장되어, 시스템 버스(18)를 통해 직접 통신할 수도 있다는 것을 인지할 수 있다. LAN(12) 및 WAN(13) 모두를 통한 원격 서버(11)로의 접속이 요구되지 않지만, 상기 접속이 단순히 개인용 컴퓨터(10)와 원격 서버(110) 간의 통신 경로를 제공하는 대안적 방법을 예시한다는 것을 주지하는 것이 중요하다.
당업자는 운영 체계(36), 응용 프로그램 모듈(117), 브라우저 프로그램 모듈(37) 및 문서 프로그램(38) 등의 프로그램 모듈이 컴퓨터 판독 가능 매체를 통해 개인용 컴퓨터(10)에 제공될 수 있다는 것을 인지할 것이다. 동작 환경(1)의 실시예에서, 컴퓨터 판독 가능 매체는 로컬 하드 디스크 드라이브(20), 플로피 디스크(23), CD-ROM/DVD(26), RAM(17), ROM(16) 및 원격 메모리 기억 장치(33)를 포함할 수 있는 근거리 또는 원격 메모리 기억 장치를 포함할 수 있다. 개인용 컴퓨터(10)의 일부 실시예에서, 로컬 하드 디스크 드라이브(20)는 데이터 및 프로그램을 기억하는 데 사용된다.
개인용 컴퓨터(10)와 동작 환경(1)의 다른 엘리먼트가 도시되지 않지만, 당업자는 그들 간의 이러한 컴포넌트 및 상호 접속이 공지되어 있다는 것을 인지할 것이다. 따라서, 개인용 컴퓨터(10)와 동작 환경(1)의 엘리먼트에 관한 추가의 세부 사항은 당업자에 의해 실시될 수 있기 때문에 본 발명과 함께 개시될 필요는 없다.
도 1b를 참조하면, 블럭도는 본 발명의 실시예에 따라 구성된 OIL 언어(100)로 매크로를 기록하는 매크로 구축 및 기록 시스템이 도시된다. 예시적 매크로 구축 및 기록 시스템(100)은 사용자 인터페이스(105), 서버(110), 데이터베이스(115) 및 애플리케이션(117)을 포함한다. 애플리케이션(117)은 매크로 라이브러리(120), 애플리케이션용 비주얼 스튜디오(VSA) 서브시스템(125) 및/또는 애플리케이션용 비주얼 베이직(VBA) 서브시스템(130)을 포함한다. 매크로 라이브러리(120)는 프로세서(135) 및 매크로 레코더 엔진(140)을 포함한다. 매크로 레코더 엔진(140)은 레코더(145), 빌더(150), 명령 리스트(155), 검증기(verifier : 160) 및 변수 맵(165)을 포함한다. VSA 서브시스템(125)은 VSA 레코더(175)를 포함한다. VBA 서브시스템(130)은 VBA 레코더(170)를 포함한다.
사용자 인터페이스(105)는 컴퓨터 네트워크를 통해 서버(110)에 통신 가능하도록 결합된다. 사용자 인터페이스(105)는 사용자에게 서버(110), 데이터베이스(115) 및 애플리케이션(117)과 통신하기 위한 수단을 제공한다. 예를 들어, 사용자 인터페이스105)는 서버(11)를 통해 애플리케이션(117) 및 데이터베이스(115)로 데이터 및 질의(query)를 포함하는 정보를 전송할 수 있다. 사용자 인터페이스(105)는 서버(110)를 통해 데이터베이스(115) 및 애플리케이션(117)으로부터 정보를 수신할 수 있다. 하나의 실시예에서, 사용자 인터페이스(105)는 개인용 컴퓨터이다.
서버(110)는 컴퓨터 네트워크를 통해 사용자 인터페이스(105) 및 데이터베이스(115)에 통신 가능하도록 결합된다. 서버(110)는 통상적으로 사용자 인터페이스(105)를 통해 사용자로부터의 커맨드에 응답하는 컴퓨터 또는 프로그램을 나타낸다.
데이터베이스(115)는 컴퓨터 네트워크를 통해 서버(110) 및 애플리케이션(117)에 통신 가능하도록 결합된다. 데이터베이스(115)는 소프트웨어 애플리케이션, 언어 프로세서 및 매크로 레코더에 관련된 정보를 포함한다. 하나의 실시예에서, 데이터베이스(115)는 구조화 질의 언어(SQL) 서버 데이터베이스이다.
애플리케이션(117)은 워드 프로세싱, 회계 또는 재고 관리를 포함하는 특정 태스크 수행시 사용자를 지원하도록 설계된 소프트웨어 애플리케이션이다.
매크로 라이브러리(120)는 동적 링크 라이브러리이다. 하나의 실시예에서, 매크로 라이브러리(120)는 애플리케이션(117) 내에 포함되지만, 애플리케이션(117)에 독립되어 상주할 수 있어, 매크로 라이브러리가 다수의 애플리케이션(117)에 의해 액세스되는 것을 가능하게 한다. 프로세서(135)는 C 플러스 플러스(C++) 프로세서, C 샵(C#) 프로세서, VBA 프로세서 및 비주얼 베이직.넷(VB.Net) 프로세서를 포함하는 하나 이상의 다수의 코드 프로세서를 포함한다. 프로세서(135)는 통상적으로 매크로 레코더 엔진(140)으로부터 수신된 명령을 언어 특정 소스 코드로 변환시킨다.
레코더(145), 빌더(150), 명령 리스트(155), 검증기(160) 및 변수 맵(165)은 통상적으로 컴포넌트 오브젝트 모델(COM) 컴포넌트이다. 하나의 실시예에서, 레코더(145), 빌더(150), 명령 리스트(155) 검증기(160) 및 변수 맵(165)은 애플리케이션(117) 내에 상주한다. 그러나, 대안적 실시예에서, 이들 COM 컴포넌트는 애플리케이션(117)에 독립적으로 상주할 수 있으며, 그 결과 다수의 애플리케이션(117)이 하나의 빌더(150)에 액세스될 수 있다. 레코더(145)는 사용자 인터페이스(105)에서 사용자 조작에 의해 생성된 매크로를 기록 및 기억하는 프로그램을 나타낸다. 빌더(150)는 빈(empty) 명령 리스트(155)를 생성하고, 레코더(145)로부터 정보를 수신하고, 언어 독립 구문을 이용하여 명령을 구축하고, 검증기(160) 및 변수 맵(165)에 명령을 전송하여 적절한 명령 구성을 보장하며, 상기 명령을 명령 리스트(155)에 부가할 수 있다. 다음으로, 레코더(145)는 명령 리스트(155)를 프로세서(135)로 전송하여 명령 리스트(155)를 언어 특정 소스 코드로 변환시킬 수 있다.
명령 리스트(155)는 명령 및 피연산자 쌍의 리스트이며, 여기서 피연산자는 명령의 형식에 의존하는 명령의 선택부분일 수 있다. 하나의 실시예에서, 명령 리스트는 각각 원-투-원 또는 원-투-제로의 관계로 명령 및 피연산자 모두를 포함한다. 일단 완성되면, 명령 리스트(115)는 통상적으로 컴퓨터 언어 독립 구문의 명령 세트를 포함한다. 완성된 명령 리스트는 레코더(145)에 의해 프로세서(135)로 전송된다. 검증기(160)는 명령 리스트(155)에서의 명령이 정확한 숫자와 타입의 피연산자를 포함하는 지를 결정한다. 예를 들어, 검증기(160)는 프로세서(135)가 수신된 명령 리스트(155)로부터 문제가 발생된 소스 코드를 갖지 않는 것을 보장할 수 있다. 일단 적절한 구성이 결정되면, 검증기(160)는 명령을 빌더(150)로 역전송(send back)한다. 변수 맵(165)은 빌더(150)로부터 명령을 수신하고, 명령 내의 변수의 이름과 타입을 기억하고, 사용자가 이름은 동일하지만 타입이 다른 변수를 생성하도록 시도하지 않고, 상기 명령을 빌더(150)로 복귀시키는 것을 보장할 수 있다.
VSA 서브시스템(125)은 VSA 레코더(175)를 포함하는 동적 링크 라이브러리이다. VSA 레코더(175)는 통상적으로 VSA 프로세서(135)로부터 매크로 소스 코드를 수신하며 매크로가 생성되는 문서와 관련된 VSA 애플리케이션(117) 내에 소스 코드를 저장한다.
VBA 서브시스템(130)은 VBA 레코더(170)를 포함하는 동적 링크 라이브러리이다. VBA 레코더(170)는 통상적으로 VBA 프로세서(135)로부터 매크로 소스 코드를 수신하고 매크로가 생성되는 문서와 관련된 VBA 애플리케이션(117) 내에 소스 코드를 저장한다. 하나의 실시예에서, 시스템(100)의 목적은 각 명령이 정확한 타입과 숫자의 대응 피연산자를 갖는 프로세싱 스택을 목표로 하는 명령 리스트(155)를 생성하는 것이다.
도 2는 본 발명의 실시예에 따라 구성된, 컴퓨터 언어 독립 구문을 이용하여 생성된, 명령 리스트(200)의 내부 구조를 예시한 통합 모델링 언어(UML) 다이어그램이다. 도 1b 및 2를 참조하면, 예시적 명령 리스트(200)는 빌더(150)의 명령 리스트(155)에 상주하는 명령(205) 및 피연산자(250)을 포함한다. 명령(205)은 callvirt(210), ldloc(210), stloc(220), idc_i4(225), ldc_r8(230), ldstr(235), 팝(240) 및 코멘트(245)을 포함한다. 피연산자(250)는 변수(255), 메쏘드(method : 260) 및 리터럴(literal : 265)를 포함한다. 다이어몬드 형태(207) 및 지정 0..1(designation : 252)은 통상적으로 0 또는 1의 피연산자(250)가 명령 리스트(155)의 각각의 명령(205)과 관련된다는 것을 나타낸다.
변수(255)는 일종의 피연산자(250)이고 통상적으로 프로그램 실행 동안 수정될 수 있는 데이터를 포함하는 명명된 기억 위치로서 정의된다. 메쏘드(260)는 메시지를 수신하는 경우 오브젝트에 의해 수행된 프로세스로서 정의된 일종의 피연산자(250)이다. 리터럴(265)는 애플리케이션(117)에서 사용된, 변수 값 또는 수식의 결과로서라기 보다는 그 자체로서 표현된 값으로서 정의된 일종의 피연산자(250)이다. 예를 들어, 숫자 "25", 문자 "a" 및 문자열 "hello"는 리터럴(265)의 모든 예이다.
명령 callvirt(210)은 가상의 메쏘드에 대한 호(call)를 나타낸다. callvirt(210)는 그 피연산자(250)로서 메쏘드(260)를 취한다. callvirt(210)는 또한 메쏘드(260)와 관련된 임의의 아규먼트(argument)가 프로세싱 스택 상에 이미배치되었을 것을 요구한다. 프로세싱 스택은 명령 리스트(155)의 프로세싱 동안 사용되며, 명령 리스트(155)가 프로세싱되는 동안 프로세싱 스택의 크기는 증가 및 감소된다. 하나의 실시예에서, 명령 리스트(155)에서의 일부 명령은 프로세싱 스택 상에 엘리먼트를 배치하고, 또 일부 명령은 프로세싱 스택에서 엘리먼트를 제거하며, 또 일부 명령은 프로세싱 스택만을 남겨둔다. 다음으로, callvirt(210)는 프로세싱 스택에서 아규먼트를 소비하고 메쏘드(260)를 실행한다. 메쏘드(260)가 모든 것을 복귀시키는 경우, caalvirt(210)는 복귀된 정보를 프로세싱 스택으로 다시 푸쉬한다. ldloc(215)는 로컬 변수를 로딩시키는 동작을 나타내며, 이것은 ldloc(215)의 명령에 의해 참조되는 변수(255)를 취하고, 다른 것, 즉 다른 기억 동작 또는 호에 의한 소비를 위한 프로세싱 스택으로 상기 변수(255)를 푸쉬(push)한다. stloc(220)는 로컬 변수를 기억하는 조작을 나타내며, 이것은 프로세싱 스택 상에 존재하는 값을 취하고 그 값을 변수(255)에 할당한다.
ldc_i4(225)는 프로세싱 스택 상에 4바이트 정수를 로딩하는 것을 나타내며 그 대응 피연산자로서 리터럴(265)을 취한다. 예를 들어, 명령(205)의 ldc_i4(225)가 사용되는 경우, 4, 8 및 12를 포함하는 숫자를 취하여야 한다. ldc_r8(230)은 프로세싱 스택 상에 2개의 8바이트 값을 로딩하는 것을 나타낸다. ldc_i4와 마찬가지로, ldc_r8은 그 대응 피연산자로서 리터럴(265)을 취한다. ldstr(235)은 스택 상에 문자열을 로딩하고 그 피연산자(250)로서 리터럴(265)을 취한다. 팝(240)은 대응 피연산자를 취하지 않고, 팝 명령(240)이 제공될 때 프로세싱 스택의 최상부에 존재하는 모든 피연산자(250)를 버린다. 코멘트 명령(245)은 리터럴(265)을 취하고 코멘트의 문자열으로서 리터럴을 제시한다. 프로세서(135)는 문자열을 수정하고 상기 문자열을 상기 언어에 대한 적절한 형식으로 나타낼 수 있다.
당업자는 명령 리스트(200)의 일부로서 나타난 명령이 산술 및 논리 명령을 포함하는 단순히 가능한 전체 명령 세트의 작은 서브세트만이며, 이것은 언어 독립 구문을 이용하여 처리될 수 있다.
도 3-5는 컴퓨터 언어 독립 구문으로 매크로를 기록하기 위한 예시적 방법에 의해 완료되는 컴퓨터 실행된 프로세스를 도시하는 논리 흐름도이다. 도 3은 도 1의 예시적 매크로 기록 시스템(100)의 동작 환경 내에서 컴퓨터 언어 독립 구문으로 매크로를 기록하기 위한 예시적 프로세스의 전체 단계를 도시하도록 표현된 논리 흐름도(300)이다.
이제 도 1b 및 3을 참조하면, 예시적 방법(300)은 시작(START) 단계에서 시작되어 단계 305로 진행되며, 여기서 사용자는 사용자 인터페이스(105)로부터 애플리케이션(117)을 연다. 사용자 인터페이스(105)는 통상적으로 클라이언트가 서버(110) 및 데이터베이스(115)를 통해 애플리케이션(117)에 액세스할 수 있는 포인트를 나타낸다. 사용자는 통상적으로 사용자 인터페이스(105)의 모니터 상에서 애플리케이션(117)에 대응하는 아이콘을 선택함으로써 애플리케이션(117)을 연다.
단계 310에서, 사용자는 매크로 기록을 시작한다. 하나의 실시예에서, 사용자는 애플리케이션(117)의 드롭-다운 박스(drop-down box)로부터 "매크로 기록"을 선택함으로써 매크로 기록을 시작한다. 다음으로, 사용자가 기록될 매크로를 명명하고, 데이터베이스(115) 내의 매크로 기록 위치를 선택하며, 매크로 또는 매크로 함수를 생성할 목적 등의 매크로의 간단한 설명을 제공하도록 대화 상자가 나타난다. 일단 사용자가 매크로의 설명을 완료하면, 사용자는 대화 상자를 닫을 수 있으며 애플리케이션(117)은 매크로 기록을 시작한다.
단계 315에서, 사용자는 판독 가능 조작을 수행하며 애플리케이션(117)은 단계 320에서 판독 가능 조작을 수행한다. 판독 가능 조작은 키스트로크(keystroke), 애플리케이션(117)의 특정 영역으로부터의 데이터의 선택 또는 수학적 판별을 포함하는, 애플리케이션(117)에서 사용자가 수행하는 임의의 동작이다. 단계 325에서, 사용자에 의해 수행된 판독 가능 조작이 기록되는 지를 결정하기 위해 질의가 수행된다. 기록되지 않는 경우, "아니오" 분기(branch)가 단계 365로 진행되며, 여기서 사용자가 다른 판독 가능 조작을 수행하는 지를 결정하기 위해 다른 질의가 수행된다. 조작이 기록되는 경우, "예" 분기가 단계 330으로 진행된다.
단계 330에서, 애플리케이션(117)은 매크로 레코더 엔진(140) 내에 명령 리스트(155)를 구축한다. 명령 리스트(155)는 통상적으로 컴퓨터 언어 독립 구문으로 매크로 동작을 아웃라인(outline)하는 일련의 명령을 포함한다. 명령은 컴퓨터 언어 독립 구문에서의 사용자의 기록된 조작의 해석이다. 단계 335에서, 애플리케이션(117)은 명령 리스트(155)를 매크로 레코더 엔진(140)으로 전송한다. 매크로 레코더 엔진(140)은 단계 345에서 명령 리스트(155)를 하나 이상의 프로세서(135)로 전송한다. 명령 리스트(155)를 하나 이상의 프로세서(135)로 전송하는 시점에대한 결정은 통상적으로 애플리케이션(117)에 의해 결정된다. 예를 들어, 소스 코드의 대응 라인을 생성하는 조작을 사용자가 완료하면, 애플리케이션(117)은 일반적으로 사용자 조작으로부터 생성된 명령 리스트(155)를 프로세서(135)로 전송할 것이다. 프로세서(135)는 애플리케이션 내외에 상주할 수 있으며 C++, C#, VBA 및 VB.Net 등의 다수의 컴퓨터 언어로 코드를 생성할 수 있는 프로세서를 포함할 수 있다. 매크로 레코더(145)는 단계 345에서 하나의 명령 리스트(155)를 하나 이상의 프로세서(135)로 전송하여 사용자의 의도된 매크로 사용 및 사용자의 언어 선호에 기초하여 하나 이상의 타입의 언어 특정 소스 코드를 생성할 수 있다.
단계 350에서, 프로세서(135)는 컴퓨터 언어 독립 구문으로부터의 명령 리스트(155)를 C++, C#, VBA 또는 VB.Net 등의 언어 특정 소스 코드로 변환시킨다. 프로세서(135)는 단계 355에서 언어 특정 소스 코드를 매크로 레코더 엔진(140)으로 전송한다. 단계 360에서, 매크로 레코더 엔진(140)은 적절한 위치에 언어 특정 소스 코드를 저장시킨다. 하나의 실시예에서, 소스 코드를 저정하기에 적절한 위치는 데이터베이스(115), VSA 서브시스템(125), VBA 서브시스템(130) 또는 애플리케이션(117)을 포함한다. 예를 들어, 레코더(145)는 명령 리스트(155)를 VBA 프로세서(135)로 전송하여 명령 리스트(155)를 VBA 코드로 프로세싱할 수 있다. 일단 처리되면, VBA 코드는 매크로 레코더 엔진(140)으로 전송된 후, 상기 엔진은 VBA 코드를 VBA 서브시스템(130) 내의 VBA 레코더(170)으로 전송한다. 하나의 실시예에서, 애플리케이션(117)은 적절한 위치를 결정하고 사용자 인터페이스(105)를 통해 사용자에게 선택 사항을 나타낸다. 다음으로, 사용자는 제공된 선택 사항에 기초하여 적절한 위치를 결정한다. 단계 361에서, 빌더(150)는 명령 리스트(155)를 삭제한다. 애플리케이션(117)은 단계 362에서 빌더(150)를 삭제한다.
단계 365에서, 사용자가 애플리케이션(117)에서 다른 판독 가능 조작을 수행하는 지를 결정하기 위해 질의가 수행된다. 조작을 수행하는 경우, "예" 분기가 단계 325로 진행되어 조작이 기록될 지를 결정한다. 사용자가 다른 판독 가능 조작을 수행하지 않은 경우, "아니오" 분기가 단계 370으로 진행된다. 단계 370에서, 사용자는 애플리케이션(117)에서 매크로 기록을 중단한다. 사용자는 사용자 인터페이스(105)의 모니터 상에 나타나는, 애플리케이션(117) 내의 드롭-다운 박스로부터 "매크로 기록 중단"을 선택함으로써 매크로 기록을 중단할 수 있다. 매크로는 언어 특정 코드이며 애플리케이션(117)에서 사용자에 의해 액세스될 수 있다. 다음으로, 방법(300)은 종료(END) 단계에서 종료된다.
도 4는 도 3의 단계 330에 의해 완료된 컴퓨터 언터 독립 구문으로 명령 리스트(155)를 구축하기 위한 예시적 컴퓨터 실행 방법을 도시한 논리 흐름도이다. 도 1b, 3 및 4를 참조하면, 방법(330)은 단계 405에서 애플리케이션(117)에서 사용자가 판독 가능 조작을 수행함으로써 시작된다. 단계 410에서, 애플리케이션(117)은 매크로 레코더 엔진(140)에서 빌더(150)를 생성한다. 빌더(150)는 통상적으로 애플리케이션(117)에서 각각 기록된 사용자 조작에 대해 생성된다. 그러나, 대안의 실시예에서, 빌더(150)는 이전의 명령 리스트(155)가 프로세서(135)에 의해 처리된 후 빈 명령 리스트(155)로 리셋되고, 이에 의해 각각 기록된 사용자 조작을 위해 새로운 빌더(150)를 생성할 필요성을 제거할 수 있다.
빌더(150)는 단계 415에서 매크로 레코더 엔진(140) 내에 빈 명령 리스트(155), 변수 맵(165) 및 검증기(160)를 생성한다. 명령 리스트(155), 변수 맵(165) 및 검증기(160)는 통상적으로 애플리케이션(117)에서 각각의 판독 가능 사용자 조작을 위해 생성된다. 그러나, 대안의 실시예에서, 명령 리스트(155), 변수 맵(165) 및 검증기(160)는 리셋되고, 명령 리스트(155)가 프로세서(135)에 의해 처리된 후, 명령 리스트는 비어질 수 있으며, 이에 의해 새로운 명령 리스트(155), 변수 맵(165) 및 검증기(160)를 각각의 기록된 사용자 조작을 위해 생성할 필요성을 제거한다.
단계 420에서, 애플리케이션(117)은 기록된 사용자 조작의 일부를 컴퓨터 언어 독립 구문을 갖는 명령으로 번역한다. 빌더(150)는 명령으로부터의 정보를 단계 425에서 요구되는 바와 같은 변수 맵(165)에 부가한다. 명령이 이전의 명령에서는 사용되지 않던 변수를 포함하는 경우, 정보는 빌더(150)로부터 변수 맵(165)에 부가될 것이다. 단계 445에서, 빌더(150)는 검증기(160)으로 명령을 전송한다. 검증기(160)는 상기 명령이 단계 450에서 적절하게 생성되는지를 결정한다. 명령이 적절하게 생성되는 지를 결정하기 위하여, 검증기(160)는 명령 코드를 검사하여 상기 명령이 호을 실행하기 위한 정확한 타입 및 숫자의 피연산자 또는 적절한 타입의 정보를 포함하는 지의 여부에 대한 결정을 포함하는 적절한 코드 구성을 검증한다.
단계 455에서, 현재의 명령이 명령 리스트(155)의 현재 콘텐츠에 대하여 적절하게 구성되어 있는 지를 결정하기 위하여 빌더(150)가 검증기(160)를 사용하는지를 결정하기 위해 질의가 수행된다. 만일 그런 경우, "예" 분기가 단계 460으로 진행되고, 여기서 빌더(150)는 명령 리스트(155)의 현재 콘텐츠가 제공된 것으로 명령이 의미를 갖는 지를 결정하기 위해 검증기(160)를 사용한다. 다음으로, 프로세스는 단계 470으로 진행된다. 현재 명령이 명령 리스트(155)의 현재 콘텐츠에 대하여 적절하게 구성되는 지를 결정함에 있어, 빌더(150)가 검증기(160)를 사용하지 않는 경우, "아니오" 분기가 단계 470으로 진행된다. 단계 470에서, 빌더(150)는 명령을 명령 리스트(155)에 부가한다.
단계 475에서, 명령 리스트(155)가 완료되는 지를 결정하기 위해 질의가 수행된다. 완료되지 않은 경우, "아니오" 분기는 단계 420으로 진행되며, 여기서 애플리케이션(117)은 사용자 조작의 다른 부분을 컴퓨터 언어 독립 구문을 갖는 명령으로 번역한다. 명령 리스트(155)가 완료되는 경우, "예" 분기가 도 3의 단계 335로 진행된다.
도 5는 도 4의 단계 450에 의해 완료된, 명령이 적절하게 생성되는 지를 결정하는 검증기(160)에 대한 예시적 컴퓨터 실행 방법을 도시한 논리 흐름도이다. 도 1b, 4 및 5를 참조하면, 방법(450)은 단계 510에서 검증기(160)가 빌더로부터 명령을 수신하여 시작된다. 단계 515에서, 검증기(160)에 의해 수신된 명령이 정확한 숫자 및 타입의 피연산자를 포함하는 지를 결정하기 위해 질의가 수행된다. 그렇지 않은 경우, "아니오" 분기는 단계 520으로 진행되며, 여기서 명령 리스트(155)가 생성되지 않고 프로세스가 종료된다. 명령이 정확한 숫자 및 타입의 피연산자를 포함하는 경우, "예" 분기가 도 4의 단계 455로 진행된다.
결론적으로, 본 발명은 사용자 및 개발자가 다수의 상이한 프로그래밍 언어로 매크로를 생성하고 사용하는 것을 가능하게 한다. OIL의 언어 독립 구문을 사용함으로써, 매크로는 하나의 언어로 생성될 수 있어 다른 언어로 별도로 생성될 필요는 없다. 대신, OIL 언어는 오리지널 매크로 명령을 다수의 상이한 언어로 변환될 수 있는 중성(neutral) 명령 세트로 변환시킨다.
본 발명이 기술된 종래 기술의 요구를 충족시키고 전술한 목적을 만족시키는 것이 이해될 것이다. 본 발명의 다수의 실시예가 예시되고 기술되었지만, 첨부된 청구범위 및 그 동등물에서 설명된 바와 같이, 본 발명이 기술적 사상 및 권리 범위를 벗어나지 않고 각종 수정 및 변형이 이루어질 수 있다는 것이 당업자에게 명확할 것이다. 예를 들어, 본 발명의 방법은 매크로로서 통상적으로 기술된 것 이외의 컴퓨터 판독 가능 명령에 적합할 수 있다.
본 발명은 매크로를 재기록하거나 기록된 언어로부터 대안적 언어로 매크로를 번역할 필요 없이 매크로가 다수의 컴퓨터 언어들의 소스 코드로 변환되고, 이에 의해 다수의 컴퓨터 언어에 대한 매크로를 생성하는 데 필요한 시간을 감소시키고, 단일 태스크 다중 시간 반복시에 고유 에러 가능성을 감소시키고, 사용자가 선호하는 언어로 매크로를 기록할 기회를 소프트웨어 사용자에게 제공할 수 있는 작용 효과를 나타낸다.

Claims (26)

  1. 컴퓨터 언어 독립 구문(computer language independent syntax)으로 명령들을 기록하기 위한 컴퓨터 실행 방법에 있어서,
    컴퓨터 시스템에서 적어도 하나의 조작의 기록 요청을 수신하는 단계;
    적어도 하나의 조작을 기록하기 위해 상기 컴퓨터 시스템 내의 기록 시스템을 시동시키는 단계;
    상기 컴퓨터 시스템 상에서 수행되는 적어도 하나의 조작을 수신하는 단게;
    상기 기록 시스템으로 상기 컴퓨터 시스템 상에서 수행되는 상기 적어도 하나의 조작을 기록하는 단계;
    상기 기록 시스템으로 기록된 상기 적어도 하나의 조작을 컴퓨터 언어 독립 구문을 갖는 적어도 하나의 명령으로 변환하는 단계;
    컴퓨터 언어 독립 구문을 갖는 상기 적어도 하나의 명령을 컴퓨터 언어 독립 구문을 갖는 명령 리스트로 변환하는 단계; 및
    상기 컴퓨터 언어 독립 구문을 갖는 상기 명령 리스트를 복수의 소스 코드 언어 중 하나로 변화하는 단계
    를 포함하는 컴퓨터 실행 방법.
  2. 제1항에 있어서,
    적어도 하나의 명령을 포함하는 다른 조작이 상기 컴퓨터 시스템에 의해 수신되는 지를 결정하는 단계;
    기록 중지 요청을 수신하는 단계; 및
    상기 기록 시스템에 의해 상기 기록을 종료하는 단계
    를 더 포함하는 컴퓨터 실행 방법.
  3. 제1항에 있어서, 상기 적어도 하나의 명령을 컴퓨터 독립 구문을 갖는 명령 리스트로 변환하는 단계는
    명령 리스트를 생성하는 단계;
    상기 컴퓨터 시스템 상에서 수행되는 적어도 하나의 조작을 컴퓨터 언어 독립 구문을 갖는 명령으로 번역하는 단계;
    상기 컴퓨터 언어 독립 구문을 갖는 상기 명령을 상기 컴퓨터 언어 독립 구문을 갖는 적어도 하나의 명령을 포함하는 명령 리스트에 부가하는 단계;
    상기 컴퓨터 언어 독립 구문을 갖는 적어도 하나의 명령을 포함하는 상기 명령 리스트를 복수의 프로세서 중 적어도 하나로 전송하는 단계; 및
    상기 컴퓨터 언어 독립 구문을 갖는 적어도 하나의 명령을 포함하는 상기 명령 리스트를 상기 복수의 프로세서 중 적어도 하나에서 언어 특정 소스 코드로 처리하는 단계
    를 포함하는 컴퓨터 실행 방법.
  4. 제3항에 있어서,
    상기 컴퓨터 언어 독립 구문을 갖는 상기 명령을 검증기(verifier)에서 수신하는 단계;
    상기 컴퓨터 언어 독립 구문을 갖는 상기 명령이 적절하게 구성되는 지를 상기 검증기가 결정 가능하게 하는 단계;
    상기 명령이 상기 명령 리스트의 콘텐츠에 기초하여 의미를 갖는 지를 결정하기 위하여 상기 검증기가 상기 컴퓨터 언어 독립 구문을 갖는 상기 명령을 평가하는 지를 질의하는 단계; 및
    긍정 결정에 기초하여, 상기 컴퓨터 언어 독립 구문을 갖는 상기 명령이 상기 명령 리스트의 콘텐츠에 기초하여 의미를 갖는 지를 상기 검증기가 결정하는 것을 가능하게 하는 단계
    를 더 포함하는 컴퓨터 실행 방법.
  5. 제3항에 있어서, 상기 명령 리스트는 각각의 매크로가 기록되는 소프트웨어 애플리케이션에 상주하는 빌더에 의해 생성되는 컴퓨터 실행 방법.
  6. 제5항에 있어서, 상기 빌더는 각각의 매크로가 기록되는 상기 소프트웨어 애플리케이션에 의해 생성되는 컴퓨터 실행 방법.
  7. 제3항에 있어서, 상기 빌더는 상기 소프트웨어 애플리케이션에 기록되는 각각의 매크로에 대해 상기 검증기, 변수 맵 및 상기 명령 리스트를 생성하는 컴퓨터실행 방법.
  8. 제1항에 있어서, 상기 적어도 하나의 조작에 응답하여 복수의 소스 코드 언어 중 하나에서 배출된 소스 코드는 매크로를 포함하는 컴퓨터 실행 방법.
  9. 제1항에 있어서, 상기 복수의 소스 코드 언어 중 하나는 복수의 프로세서 중 적어도 하나에서 생성되는 컴퓨터 실행 방법.
  10. 제9항에 있어서, 상기 복수의 프로세서 중 적어도 하나는 C 샵(C#) 프로세서, C 플러스 플러스(C++) 프로세서, VBA 프로세서 및 VB.Net 프로세서를 포함하는 컴퓨터 실행 방법.
  11. 제1항에 있어서, 상기 명령 리스트는
    프로세서에 의해 인지되고 컴퓨터 시스템에서 소스 코드로 변환될 수 있는 적어도 하나의 명령; 및
    상기 명령이 상기 컴퓨터 시스템에서 동작 또는 조작하는 정보를 열거하는 피연산자
    를 포함하는 컴퓨터 실행 방법.
  12. 제1항의 상기 단계들을 수행하는 컴퓨터 실행 가능 명령들을 갖는 컴퓨터 판독 가능 매체.
  13. 컴퓨터 언어 독립 구문으로 명령들을 기록하기 위한 시스템에 있어서,
    사용자 인터페이스;
    상기 사용자 인터페이스에 결합된 서버;
    상기 사용자 인터페이스에서 시작되는 조작들을 기록하는 수단을 제공하는 데이터베이스에 결합된 레코더;
    상기 레코더에 결합되어, 상기 레코더로부터 상기 기록된 조작을 수신하고 상기 기록된 조작에 기초하여 적어도 하나의 명령을 생성하도록 동작하는 빌더;
    상기 빌더에 결합되어, 상기 빌더로부터 생성된 상기 적어도 하나의 명령을 수신하도록 동작하는 명령 리스트; 및
    상기 빌더에 결합되어, 상기 명령 리스트를 수신하고 적어도 하나의 소스 코드를 생성하도록 동작하는 복수의 프로세서 중 적어도 하나
    를 포함하는 시스템.
  14. 제13항에 있어서,
    데이터베이스 및 복수의 동적 링크 라이브러리에 결합된 소프트웨어 애플리케이션;
    상기 명령 리스트가 적절하게 구성되어 있는 지를 결정하도록 동작되는 상기 빌더 및 복수의 프로세서 중 적어도 하나에 결합된 검증기; 및
    상기 명령에 포함된 변수에 대한 상기 명령 리스트를 평가하도록 동작되는 상기 빌더 및 상기 복수의 프로세서 중 적어도 하나에 결합된 변수 맵
    을 더 포함하는 시스템.
  15. 제14항에 있어서, 상기 생성된 소스 코드를 수신하고 상기 생성된 소스 코드를 필요할 때까지 기억하는 서브시스템을 더 포함하는 시스템.
  16. 제13항에 있어서, 상기 복수의 프로세서 중 하나는 애플리케이션용 비주얼 베이직(VBA) 프로세서를 포함하는 시스템.
  17. 제13항에 있어서, 상기 복수의 프로세서 중 하나는 C 플러스 플러스(C++) 프로세서를 포함하는 시스템.
  18. 제13항에 있어서, 상기 복수의 프로세서 중 하나는 C 샵(C#) 프로세서를 포함하는 시스템.
  19. 제13항에 있어서, 상기 복수의 프로세서 중 하나는 비주얼 베이직.Net(VB.Net) 프로세서를 포함하는 시스템.
  20. 제13항에 있어서, 상기 빌더는 상기 소프트웨어 애플리케이션에 위치하는 시스템.
  21. 제13항에 있어서, 상기 빌더는 복수의 소프트웨어 애플리케이션에 대한 컴퓨터 언어 독립 구문으로 명령들을 구축할 수 있는 상기 복수의 소프트웨어 애플리케이션에 결합되는 시스템.
  22. 컴퓨터 언어 독립 구문의 명령들을 포함하는 명령 리스트에 있어서,
    컴퓨터 시스템 또는 소프트웨어 애플리케이션이 인지하고 작용하는 적어도 하나의 명령을 포함하는 명령 리스트.
  23. 제22항에 있어서, 상기 명령이 동작 또는 조작하는 명령을 열거하는 피연산자를 더 포함하는 명령 리스트.
  24. 제22항에 있어서, 상기 피연산자가 변수, 메쏘드(method) 및 리터럴(literal)의 군으로부터 선택되는 명령 리스트.
  25. 제22항에 있어서, 상기 적어도 하나의 명령들은 각각이 관련되는 하나의 피연산자를 갖는 명령 리스트.
  26. 컴퓨터 언어 독립 구문으로 명령들을 기록하기 위한 컴퓨터 판독 가능 매체에 있어서,
    컴퓨터 시스템에서 적어도 하나의 조작의 기록 요청을 수신하는 단계;
    적어도 하나의 조작을 기록하기 위해 상기 컴퓨터 시스템내의 기록 시스템을 시동시키는 단계;
    상기 컴퓨터 시스템 상에서 수행되는 적어도 하나의 조작을 수신하는 단계;
    상기 컴퓨터 시스템 상에서 수행되는 상기 적어도 하나의 조작을 상기 컴퓨터 언어 독립 구문을 갖는 적어도 하나의 명령으로 변환하는 단계;
    상기 적어도 하나의 명령을 상기 컴퓨터 언어 독립 구문을 갖는 명령 리스트로 변환하는 단계; 및
    상기 컴퓨터 언어 독립 구문을 갖는 상기 명령 리스트를 복수의 소스 코드 중 하나로 변환하는 단계
    를 포함하는 컴퓨터 판독 가능 매체.
KR1020040001118A 2003-01-08 2004-01-08 언어 독립 구문으로 매크로를 기록하기 위한 방법 및 시스템 KR20040063837A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/338,295 2003-01-08
US10/338,295 US7275240B2 (en) 2003-01-08 2003-01-08 Method and system for recording macros in a language independent syntax

Publications (1)

Publication Number Publication Date
KR20040063837A true KR20040063837A (ko) 2004-07-14

Family

ID=32655441

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020040001118A KR20040063837A (ko) 2003-01-08 2004-01-08 언어 독립 구문으로 매크로를 기록하기 위한 방법 및 시스템

Country Status (12)

Country Link
US (1) US7275240B2 (ko)
KR (1) KR20040063837A (ko)
CN (1) CN100350381C (ko)
AU (1) AU2004200048A1 (ko)
BR (1) BR0305978A (ko)
CA (1) CA2454843A1 (ko)
MX (1) MXPA03012019A (ko)
MY (1) MY137030A (ko)
PL (1) PL364276A1 (ko)
RU (1) RU2347262C2 (ko)
TW (1) TW200419449A (ko)
ZA (1) ZA200309903B (ko)

Families Citing this family (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050268291A1 (en) * 2004-05-27 2005-12-01 International Business Machines Corporation Specifying user interface interactions for controls in a data driven system
US7627821B2 (en) * 2004-06-15 2009-12-01 Microsoft Corporation Recording/playback tools for UI-based applications
US7653896B2 (en) * 2004-06-30 2010-01-26 Microsoft Corporation Smart UI recording and playback framework
US7478367B2 (en) * 2005-01-11 2009-01-13 International Business Machines Corporation Dynamic source code analyzer
US20080091409A1 (en) * 2006-10-16 2008-04-17 Microsoft Corporation Customizable mathematic expression parser and evaluator
US20080147453A1 (en) * 2006-12-19 2008-06-19 Kogan Sandra L System and method for end users to create a workflow from unstructured work
US8281234B2 (en) * 2007-03-20 2012-10-02 Microsoft Corporation Definable application assistant
US20090138846A1 (en) * 2007-11-23 2009-05-28 Microsoft Corporation Extended macro recording
US8397207B2 (en) * 2007-11-26 2013-03-12 Microsoft Corporation Logical structure design surface
US20090265719A1 (en) * 2008-04-18 2009-10-22 Microsoft Corporation Application macro recording utilizing method interception
US8869028B2 (en) * 2009-05-18 2014-10-21 Xerox Corporation Interface structures and associated method for automated mining of legacy systems using visual configuration tools
US8826304B2 (en) * 2009-08-13 2014-09-02 Google Inc. Virtual object indirection in a hosted computer environment
US8271461B2 (en) * 2010-01-18 2012-09-18 Battelle Memorial Institute Storing and managing information artifacts collected by information analysts using a computing device
US9081626B2 (en) * 2010-05-03 2015-07-14 Renesas Electronics America Inc. Method and apparatus for converting software
KR102004986B1 (ko) * 2012-09-17 2019-07-29 삼성전자주식회사 어플리케이션 실행 방법 및 시스템, 단말과 그 기록 매체
RU2546058C1 (ru) * 2013-11-11 2015-04-10 Сергей Михайлович Назаров Способ формирования реляционного описания синтаксиса команды
CN104571575A (zh) * 2013-10-25 2015-04-29 技嘉科技股份有限公司 具有宏录制功能的输入装置、具有宏录制功能的输入系统及宏录制方法
US10664404B2 (en) * 2016-02-04 2020-05-26 Sap Se User interface state transitions
US10140105B2 (en) * 2016-03-10 2018-11-27 Wowza Media Systems, LLC Converting source code
RU2697796C1 (ru) * 2018-11-26 2019-08-20 Общество с ограниченной ответственностью "АЙХАЙ" Логический конструктор макросов
US11204789B2 (en) 2019-08-20 2021-12-21 Hyland Software Inc. Graphical user interface for macro generation, modification, and verification
US11144338B2 (en) * 2019-08-20 2021-10-12 Hyland Software, Inc. Computing system for macro generation, modification, verification, and execution
CN112541033B (zh) * 2020-12-01 2023-05-05 山东师范大学 Vba栈结构的演示方法、系统、存储介质及计算机设备
CN117151061B (zh) * 2023-10-30 2024-02-02 建信金融科技有限责任公司 宏开启提示的过滤方法、装置、设备及存储介质

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5822587A (en) 1995-10-20 1998-10-13 Design Intelligence, Inc. Method and system for implementing software objects
US5903859A (en) * 1996-03-27 1999-05-11 Dell Usa, L.P. Dynamic multi-lingual software module system
US6105043A (en) 1997-12-16 2000-08-15 International Business Machines Corporation Creating macro language files for executing structured query language (SQL) queries in a relational database via a network
US6389590B1 (en) 1999-06-22 2002-05-14 Microsoft Corporation Indefinite-size variables within an intermediate language
US6481008B1 (en) 1999-06-30 2002-11-12 Microsoft Corporation Instrumentation and optimization tools for heterogeneous programs
US6405365B1 (en) * 1999-07-02 2002-06-11 Cisco Technology, Inc. Computer program command generator and parser
JP2003510681A (ja) * 1999-09-21 2003-03-18 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ 仮想マシン命令の最適化されたバイトコードインタープリタ
US6697754B1 (en) * 2000-08-09 2004-02-24 Agilent Technologies, Inc. Generation and execution of instrument control macro files for controlling a signal measurement system
US20030018719A1 (en) * 2000-12-27 2003-01-23 Ruths Derek Augustus Samuel Data-centric collaborative computing platform
US20040015843A1 (en) * 2001-05-15 2004-01-22 International Business Machines Corporation Method and program product for structured comment assists in computer programming

Also Published As

Publication number Publication date
AU2004200048A1 (en) 2004-07-29
ZA200309903B (en) 2005-02-23
RU2004100525A (ru) 2005-06-20
MXPA03012019A (es) 2005-04-11
TW200419449A (en) 2004-10-01
CN100350381C (zh) 2007-11-21
RU2347262C2 (ru) 2009-02-20
CN1519710A (zh) 2004-08-11
PL364276A1 (en) 2004-07-12
CA2454843A1 (en) 2004-07-08
MY137030A (en) 2008-12-31
US7275240B2 (en) 2007-09-25
BR0305978A (pt) 2005-05-17
US20040133878A1 (en) 2004-07-08

Similar Documents

Publication Publication Date Title
KR20040063837A (ko) 언어 독립 구문으로 매크로를 기록하기 위한 방법 및 시스템
JP4366065B2 (ja) リソース・ファイル・ビルダ・ツール及びコンピュータ可読コード
Deitel Java how to program
US6112304A (en) Distributed computing architecture
US7398474B2 (en) Method and system for a digital device menu editor
US7676787B2 (en) Component based design time architecture
US10592211B2 (en) Generation of application behaviors
US20050060719A1 (en) Capturing and processing user events on a computer system for recording and playback
JPH11509654A (ja) アプリケーションプログラムにおけるビフェイビアの自動的実施
WO2007027815A1 (en) Method and computer-readable medium for commanding
Ditzel et al. Retrospective on high-level language computer architecture
CN108399068B (zh) 函数程序持久化的方法、电子设备及存储介质
US8136087B2 (en) In-line processing of standardized text values
EP1437647B1 (en) Method and system for recording macros in a language independent syntax
Stephens Start Here! Fundamentals of Microsoft. NET Programming
CN114911541A (zh) 配置信息的处理方法、装置、电子设备及存储介质
JP2000347875A (ja) ファイル移植技術
JP2004213529A (ja) 言語非依存の構文でマクロを記録する方法およびシステム
CN116088933A (zh) 图形化物联网开发平台通信模式可移植性方法
Newton et al. CODE 2.0 User and Reference Manual
CN111273956A (zh) 一种程序模块加载方法、装置、设备及存储介质
Bird et al. A practical approach to software engineering by using an interaction handler and skeleton code generator
Wilson The Absolute Beginner’s Guide to Python Programming
Barron Scripting languages
Weller Report of session on transferability

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E601 Decision to refuse application