KR930000633B1 - 능동 대처 컴퓨터 시스템 - Google Patents

능동 대처 컴퓨터 시스템 Download PDF

Info

Publication number
KR930000633B1
KR930000633B1 KR1019880014982A KR880014982A KR930000633B1 KR 930000633 B1 KR930000633 B1 KR 930000633B1 KR 1019880014982 A KR1019880014982 A KR 1019880014982A KR 880014982 A KR880014982 A KR 880014982A KR 930000633 B1 KR930000633 B1 KR 930000633B1
Authority
KR
South Korea
Prior art keywords
command
version
program
parameter
definition
Prior art date
Application number
KR1019880014982A
Other languages
English (en)
Other versions
KR890008684A (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 이터내셔널 비지네스 머신즈 코포레이션
Publication of KR890008684A publication Critical patent/KR890008684A/ko
Application granted granted Critical
Publication of KR930000633B1 publication Critical patent/KR930000633B1/ko

Links

Images

Classifications

    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • 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)
  • Computer Security & Cryptography (AREA)
  • Stored Programmes (AREA)

Abstract

내용 없음.

Description

능동 대처 컴퓨터 시스템
제1a또는 다수 버젼의 오퍼레이팅 시스템으로부터 명령을 단일 오퍼레이팅 시스템으로 실행하기 위한 본 발명의 적응 방법을 나타내는 설명도.
제1b또는 제1a도의 라이브러리에 기억된 명령 정의의 포맷.
제1c또는 명령 문자열의 포맷.
제2a또는 본 발명의 양호한 실시예의 데이타 흐름도.
제2b또는 제2a도에 도시된 QCL/QCMD의 순서도.
제3a도 및 제3b또는 제2a도의 명령 분석기 프로그램의 연산 순서도.
제4또는 제2a도의 명령 처리 프로그램용으로 일반화된 순서도.
제5또는 제2a도의 컴파일러 프로그램의 연산의 순서도.
제6또는 처리되어지는 프로그램의 버젼 속성에 따라 시스템 코맨드 버젼 라이브러리를 통한 순서를 도시하는 블럭도.
제7a도 내지 제7d도, 제8a도 내지 제8d도 및, 제9a도 내지 제9d또는 카우터파트 코맨드, 상기 코맨드의 상이한 버젼의 코맨드 정의 및 상기 명령의 상이한 구문의 예.
제10도는 다수의 상이한 버젼의 시스템 코맨드를 사용하는 응용에 내포된 프로그램의 블럭도의 예.
* 도면의 주요부분에 대한 부호의 설명
27, 28, 30 : 카운터파트 정의 34 : 컴파일러
36 : 코맨드 분석기 74 : 코맨드 엔트리 스크린 프로그램
본 발명은 오퍼레이팅 시스템 코맨드(operating system commands)에 관한 것으로서, 특히, 단일(single) 오퍼레이팅 시스템에 상이한 오퍼레이팅 시스템 (different operating system)에 관한 다수 버젼의 시스템 코맨드(multiple rersions of system commands)를 적용시키는 것에 관한 것이다.
보다 양호한 하드웨어, 보다 양호한 유용성, 새로운 표준등의 잇점을 갖기 위해 신(new) 오퍼레이팅 시스템으로의 전환 결정이 컴퓨터 제조업자에 의해 행해진다면, 구(old) 오퍼레이팅 시스템을 사용하는 대 보수 근거(a large customer base)가 상기 신오퍼레이팅 시스템에 상기 응용을 실행할 수 있는 것이 중요하다.
상기는 상기 응용에 대한 보수 투자(the customer investment)를 보호할 것인데, 상기와 같은 투자를 대보수에 있어선 수백만 달러에 이를수 있다.
과거 방법중의 한 방법은 보수 응용의 소스 코드를 취하는 변환 프로그램 (conversion programs)을 사용하여 신 오퍼레이팅 시스템 코맨드를 사용할 수 있게 상기 소스 코드를 변환시켜왔다. 상기 방법의 한계는 코맨드가 없어졌거나 또는 일부 응용에 대해서는 상기 코맨드가 없다는 점이다. 덧붙여, 상기 소스의 변환은 신 시스템에 있어선 현행 응용의 실행을 지연시키는 긴 과정이다.
또 다른 해결책은 컴퓨터 메이커에 대한 다수의 환경의 실현이었다. 현행 인터페이스(existing interface ; 유저에 유효한 시스템 코맨드)는 유사한 기능을 실행하는 시스템 프로그램의 구 및 신 버젼 둘다를 보유하므로 유지된다. 상기 방법은 유저가 상기 응용이 사용될 환경을 선택할 것을 요구할 뿐만아니라 2세트의 오퍼레이팅 시스템 프로그램의 유지 및 기억을 필요로 한다. 유저는 또한 신 오퍼레이팅 시스템환경을 사용하기 위해 완전한 응용의 변환없이는 현행 응용에 상기 신 오프레이팅 시스템에 의하여 제공된 새로운 기능을 통합할 수 없다.
최신 해결책중 한예가 이와따씨에게 허여된 미합중국 특허 제4,691,278호에 제시되어 있는데, 상기 해결책으로는 다수의 시스템 아키텍쳐(multiple system architectural)가 제공된다. 레지스터는 모든 선택값을 포함한다. 프로그램의 한 명령은 상이한 모드에 대해서는 상이할 수도 있는 일련의 마이크로 명령을 구할 것이다. 마이크로 명령의 스타팅 어드레스는 상기 프로그램용으로 선택된 모드에 따라 동일한 명령에 대해서 다를수도 있다. 상이한 세트의 마이크로 명령이 상기 방법으로 유지되야 된다. 보다 높은 레벨 언어에 비해 이러한 낮은 레벨 언어로 프로그램하는 것이 통상 훨씬 더 어렵다.
컴퓨터는 상이한 오퍼레이팅 시스템에서 단일 오퍼레이팅 시스템으로의 다수 버젼의 시스템 코맨드에 능동 대처하도록 설계된다. 상기 단일 오퍼레이팅 시스템은 범용 포맷(universal format)을 가진 코맨드를 실행하는 다수의 코맨드 처리 프로그램을 포함한다. 상기 의미로, 이들 프로그램은 범용 코맨드 처리 프로그램이라 불린다. 유저가 필요로 하는 버젼은 상호 작용에 섹션에 의해서나 또는 유저가 가동시키길 원하는 프로그램의 속성에 의해 식별된다.
주어진 다수 버젼의 시스템 코맨드는 단일 오퍼레이팅 시스템에 의하여 실행될 수 있다. 상기는 각 버젼의 코맨드에 관해서 코맨드 정의를 가지므로 이루어지는데, 상기 정의는 모든 버젼의 코맨드에 관해서 범용 파라미터를 갖는다. 그후에, 각 버젼의 코맨드는 상기 버젼에 관해서 코맨드 정의에 의해 범용 코맨드 처리 프로그램에 적합한 포맷의 변형될 수 있다.
코맨드 정의의 다수 세트가 호출된 라이브러리를 분리 기억 디렉토리(separate storage directories)에 위치된다. 그후에 상기 라이브러리는 대응하는 코맨드가 처리될시에 각 코맨드 정의에 관해서 탐색된다. 상기 라이브러리의 탐색 순서는 희망 시스템 코맨드의 버젼을 근거로 하여 제어된다.
코맨드 정의는 코맨드 처리 프로그램 및, 상기 프로그램에 부속된 파라미터 정의의 명칭으로 구성된다. 상이한 버젼의 코맨드가 파라미터의 수를 변화시키므로 제공된 기능의 한계도 변화시킨다. 각 버젼의 코맨드는 같은 수의 파라미터가 코맨드 처리 프로그램으로 양도되도록 상기 코맨드의 코맨드 정의를 사용하여 변형된다. 상기는 상이한 버젼에서 빠진 파라미터값으로 정수를 사용하므로 행해진다. 따라서, 오퍼레이팅 시스템의 범용 코맨드 처리 프로그램중 하나가 동일 시스템 코맨드의 상이한 버젼을 가동시킨다.
유저 응용은 일반적으로 다수의 프로그램으로 구성된다. 각 프로그램은 희망 버젼의 시스템 코맨드를 정의하는 속성을 포함하기 때문에, 상기 응용 프로그램은 상이한 버젼의 시스템 코맨드를 사용하는 프로그램의 혼합(a mix of programs)을 포함할 수 있다. 유저가, 통상, 개선된 버젼의 오퍼레이팅 시스템으로 진행하면, 현행 응용에 관해서 신프로그램은 실 버젼의 시스템 코맨드를 사용하여 기록됐을 수 있다. 상기 응용에 있어서 현행 프로그램은 개선된 기능의 잇점을 취하기 위해 동시에 재기록됐거나 또는 구 버젼의 시스템 명령을 사용하여 그대로 남아있을 수 있다.
통상 개선된 기능을 가진 보다 새로운 버젼의 시스템 코맨드는 다수의 부가적인 신 코맨드를 갖는다. 상기 신 코맨드는 구 버젼의 시스템 코맨드를 상술하는 프로그램에 사용될 수 있다. 상기는 구 버젼의 시스템 코맨드 정의를 포함하는 라이브러리가 우선적으로 탐색될 것이고, 상기 코맨드가 발견되지 않으면, 보다 새로운 버젼의 코맨드 정의가 상기 코맨드에 관해서 탐색될 것이다. 그후에, 희망 코맨드에 매치하는 제1코맨드 정의가 처리된다. 그러므로, 유저는 신 기능을 구 프로그램에 부가하기 위해 상기 구 프로그램전체를 변환시킬 필요가 없다.
원래 기록되었던 바와 같이, 각 응용 프로그램은 상기 프로그램의 본래 오퍼레이팅 시스템에 관해서 기록되었던 특정 버젼의 시스템 코맨드를 사용하는 것을 요구할 것이다. 1개의 시스템 코맨드가 다양한 오퍼레이팅 시스템으로부터의 시스템 코맨드에 필적한다면, 한 오퍼레이팅 시스템에 관해서 많은 시스템 코맨드가 다른 오퍼레이팅 시스템의 카운터 파트 코맨드(counterpart commands)와 유사할 것이다. 상기 카운터 파트 시스템 코맨드는 동일하거나 또는 상이한 코맨드 명칭을 사용할 수도 있고 코맨드마다 상이한 파라미터 또는 상이한 수의 파라미터를 사용할 수도 있다.
한 오퍼레이팅 시스템에 관해서 완전한 코맨드이 한 예는 "IBM System/38 Contorl Language Reference Manual(SC21-7731) 1986"이라 명명된 IBM System/38용 매뉴얼에서 찾아볼 수 있다. 상기 코맨드 세트는 이하 본원에서 버젼 1(V1) 코맨드 세트라 언급된다. 대략 500개의 버젼 1코맨드의 거의 모두를 포함하며, 그외에 약 200개의 신 코맨드를 포함하는 제2코맨드 세트는 버젼 2(V2)코맨드 세트이다. 상기 버젼의 1코맨드와 유사한 상기 버젼 2코맨드는 동일 명칭이나, 또는 상이한 명칭을 가질 수도 있다. 이들은 더 많은 수의 파라미터, 동수의 파라미터 또는, 더 적은 수의 파라미터를 가질 수도 있다.
제1a또는, 코맨드가 어느 세트 또는 버젼으로부터 오는지에 개의치 않고, 시스템코맨드(11)에 관해서 요구된 타스크 또는 타스크들을 싱행하기 위한 명령 처리 프로그램(16)의 사용을 그림으로 나타낸다. 각 코맨드(11)에 대해 한 프로그램(16)이 존재한다. 버젼(1, 2 또는 N)에 관해서 기록된 코맨드는 동일 코맨드 처리 프로그램에 의해 처리 될수 있다(몇몇 경우에, 각 카운터파트 코맨드가 그 자신의 코맨드 처리 프로그램을 가질만큼, 카운터파트 코맨드간의 기능차이가 다르다). 상기는, 상이한 버젼에 대한 모든 카운터파트 코맨드가 동일 명칭 및 동수의 파라미터를 갖도록, 코맨드 데이타를 변형된 데이타로 변형시키므로 이루어진다.
코맨드 분석기 프로그램(36)은 각 카운터파트 버젼의 코맨드에 관해서 코맨드 정의를 근거로하여 상기 변형을 실행한다. 카운터파트 코맨드 정의는 동수의 파라미터와 버젼에서 버젼까지의 파라미터간의 동일 위치관계 또는 순차 관계를 갖는다. 카운터파트 코맨드 정의에 관한 상기 범용 포맷은 실제 코맨드 문자열을 상기 코맨드의 명칭 코맨드 처리 프로그램(16)과 양립할 수 있는 형태로 변형시키기 위해 사용된다.
제1a도에서, 분리 버젼의 시스템 코맨드 정의는 라이브러리(12, 14 및 15)에 기억된다. 라이브러리(12)에 있어서 제1버젼은 상기 IBM System/38용 버젼의 오퍼레이팅 시스템으로부터의 시스템 코맨드에 관한 한 세트의 정의이다. 버젼(14)에 있어서의 제2버젼은 개선된 버젼의 상기 System/38 오퍼레이팅 시스템에 관한 시스템 코맨드의 한 세트의 코맨드 정의이다. 라이브러리(15)에 있어서 "N번째"버젼은 고객 취향에 맞춰진 시스템 또는 또다른 오퍼레이팅 시스템의 시스템 코맨드에 관한 한 세트의 코맨드 정의이고 임의의 수의 버젼이 사용될 수도 있음을 예시한다.
제1a도에는, 카운터파트 명령 정의의 명칭이 각버젼 라이브러리에 도시되었다. 라이브러리(12)에 있어서 캔슬 라이터(Cancel Writer) 코맨드 정의(18)는 명칭 CNLWTR을 사용한다. 동일 기능은 코맨드 정의가 버젼 2라이브러리(14)에 기억되는 카운터파트 코맨드 ENDWTR와 정의가 버젼 N라이브러리(15)에 기억되는 카운터 파트코맨드 STOPWTR에 의해 이루어진다. 상기 예에서 상기 코맨드 명칭은 버젼에서 버젼까지 변하지 않으나, 상기 카운터파트 정의로 인해 모드 상기 코맨드는 End Writer이라 명칭이 붙은 동일 코맨드 처리 프로그램(16A)을 호출할 것이다.
크리에이트 죠브 큐(Create Job Queue)는 라이브러리(12, 15, 14)에 있어서 각각의 상기 라이브러리의 카운터파트 정의(22, 23, 24)에 관해서 동일 명칭 CRTJOBQ를 사용한다. CRTJOBQ에 관해서는, 각 정의에 있어서의 파라미터의 수는 비록 키워드가 상이하다 할지라도, 동일하다. 크리어 디스켓(Clear Distette) 코맨드는 상기 라이브러리에 있어서 각각의 상기 라이브러리의 카운터파트 정의(25, 26, 29)에 관해서 동일 명칭 CLRDKT을 사용하나, 각 버젼의 상기 코맨드는 상이한 수의 파라미터를 갖는다. 상기 카운터파트 코맨드는 상이한 구문(different syntax)를 사용하고 버젼 1 및 버젼 2에 상이한 정의를 갖는다. 이들이 제7도 내지 제9도에 도시되었고 이후 본원에서 보다 상세히 설명된다.
크리에이트 제어 랭귀지 프로그램(Create Control Language Program) 코맨드는 각 버젼에 대해 동일 명칭 CRTCLPGM을 사용하고 라이브러리에 있어서 각각의 상기 라이브러리의 카운터파트 정의(27, 28, 30)에 상이한 수의 파라미터를 갖는다. 상기 코맨드에 관한 코맨드 처리 프로그램이 컴파일러(compiler, 34)인데, 상기 컴파일러의 기능 및 동작은 제5도에서 상세히 설명될 것이다.
코맨드 정의 및 코맨드의 실제 포맷이 제1b도 및 제1c도에 각기 도시되었다. 제1c도에서, 각 코맨드는 ENDWTR 또는 CRTJOBQ와 같은 코맨드 명칭으로 시작된다. 상기는 키보드 및 상기 코맨드에 있어서 각 파라미터에 대한 값에 의해 계속된다. 상기 파라미터의 시퀀스는 통상 중요하지 않고, 제1c도에 있어서 상기 파라미터는 제1b도에 있어서의 코맨드 정의의 파라미터와 동일한 순서로 배열되지 않는다. 제1c도에서, 상기 코맨드 정의 포맷은 실행에 관해서 호출 되어질 코맨드 처리 프로그램의 명칭과 상기 코맨드에 관한 파라미터 정의로 구성된다. 상기 파라키터 정의는 코맨드 및 코맨드 파라미터를 포함하는 수신된 코맨드 문자열을 해석하기 위해 상기 코맨드 분석기(36, 제2도)에 의해 사용된다. 상기 분석기는 상기 코맨드 문자열의 구문을 체크하고 호출된 코맨드 처리 프로그램에 의해 사용되어질 파라미터 정보를 가르키기 위해 포이터 테이블(pointer table)을 작성한다. 상기 과정은 제2a도와 관련하여 이하 본원에서 보다 상세히 설명될 것이다.
버젼 라이브러리에 있어서 각 코맨드 정의의 각 파라미터에 대해 기억된 파리미터 정의 요소는 키워드, 길이 데이타 형태, 디폴트(default) 또는 정수 및, 매핑 논리(mapping logic)이다. 상기 미워드는 상기 파라미터를 식별한다. 상기 길이는 상기 파라미터의 적합한 길이를 상술한다. 상기 적합한 길이의 길이 경계를 초과하는 파라미터는 상기 코맨드가 거절되게 할것이다. 상기 데이타 형태는 상기 데이타 형태가 명칭, 10진, 2진등 인지에 따라 변하는 상기 데이타에 관한 규칙을 상술한다. 디폴트는, 상기 파라미터에 관한 키워드가 상기 코맨드로부터 빠졌다면, 삽입되어질 실제 파라미터 값을 상술한다. 상수는 상기 시스템에 의해 파라미터에 관해서 삽입되는 값을 상술하며, 정수는 유저에 의해 삽입될 수 없다. 매핑 논리는 명칭에서 상기 명칭을 나타내는 값으로의 논리 변환을 지시한다.
제2a도, 제2b도, 제3a도, 제3b도 및, 제4또는 서로 작용하게 엔터된 다양한 버젼의 코맨드 또는 선택된 프로그램의 일부로서 가동될 본 발명의 양호한 실시예를 도시한다. 명령은 상기 코맨드 및 상기 코맨드의 파라미터에 관한 문자열을 타이핑하므로 유저에 의해 단자에 상호 작용하게 엔터된다. 상호 작용 섹션(70)으로서 표현된 한 유저는 상호 작용 섹션에 버젼 1코맨드를 사용할 수 있는 반면에, 동시에 그리고 동일 시스템에, 상호 작용 섹션(72)으로서 표현된 제2유저는 버젼 2코맨드를 발할 수 있다. 상기 제1유저는 QCL명칭이 붙은 코맨드 엔트리 스크린 프로그램(command entry screen program, 74)에 의해 제어된 섹션에 버젼 1명령을 발한다. 상기 프로그램은 유저에 의해 호출될 수 있거나 또는 시스템 프로그래머에 의해 시스템 정의에 프리셋될 수 있거나 또는, 유저가 워크스테이션(workstation)을 통해 싸인 온 할때마다 상기 프로그램이 호출되도록 상기 유저에 의해 미리 상술될 수 있다.
상기 QCL(또는 QCMD) 프로그램의 기능은 워크스테이션 표시와 코맨드 분석기 프로그램(36)간을 인터페이스하는 것이다. QCL/QCMD 프로그램이 제2b도에 도시되었다. 오퍼레이팅 시스템이 QCL제어를 준다면, QCL은 스텝(102)에서 수신 메시지 신호를 발하는데, 상기 신호에 의해 메시지 큐가 상기 메시지 큐의 선두 메시지를 QCL로 이동되게 한다. 결정 스텝(104)은 상기 큐에 베시지가 존재하느냐, 상기 메시지가 코맨드이냐 또는, 상기 메시지가 코맨드와는 다르냐(예를들어, 에러 또는 진단메세지)에 따라 상기 프로그램 흐름을 분기시킨다. 메시지가 없다면, 스텝(106)은 코맨드 엔트리 스크린이 워크 스테이션에서 표시되게 한다. 그후에, QCL은 코맨드를 엔터하기 위해 유저가 입력시키는 스텝(107)을 기다린다. 유저가 코맨드에 응답한 후에, QCL은 스텝(108)에서 메시지 큐에 상기 코맨드를 기억시킨다. 상기 QCL프로그램은 수신 메시지(102)로 리턴되고 결정 스텝(104)에서 상기 뮤의 메시지에 관한 체크를 행한다. 상기 큐에 코맨드가 존재한다면, QCL은 스텝(112)로 분기된다. 스텝(112)은 코맨드 문자열 및 옵션 정보를 코맨드 분석기(36, 제2a도)로 이동시킨다. 상기 옵션 정보는 버젼 ID과 상기 코맨드가 실행되어지게할 인디케이터(indicator)를 포함한다. 상기 코맨드 및 옵션이 통과된 후에, QCL은 스텝(114)에서 코맨드 분석기 프로그램을 호출하고 그 후에 수신 메시지로 리턴시킨다.
메시지가 코맨드이라면, 본 발명에 관해서 가장 중요한, 스텝(112)은 코맨드 분석기를 호출하고 스텝(114)은 버젼 ID을 포함하는 코맨드(112A) 및 옵션(112B)을 상기 코맨드 분석기로 보낸다. 가동중인 프로그램이 QCL이면, 사이 이동된 버젼 ID은 버젼 I이다. 가동중인 프로그램이 QCMD이면, 상기 이동된 버젼 ID은 버젼 2이다. 버젼 ID을 이동시키기 위해 상이한 프로그램을 사용하여, 희망 버젼 ID을 상술하기 위해 유저 또는 시스템 엔지니어에 의해 프로파일이 변할 수 있는 단일 프로그램이 사용될 수도 있음이 종래의 기술에 숙련된 자에게는 명백할 것이다.
결정 스텝(104)으로부터의 마지막 분기는 "다른 메시지"이다. 메시지가 존재하나, 상기 메시지가 코맨드가 아니면, 스텝(108 및 110)은 워크 스테이션이 스텝(116)에서 상기 메시지를 표시하게 한다. 재차 QCL프로그램 제어는 수신 메시지 스텝(102)으로 리턴된다.
제2a도의 상호 작용 섹션(70, 71, 72)이 가동하는 것에 관계없이, V1, V2 또는 V상 N상버젼 지시에 따라 상기 코맨드는 코맨드 분석기(36)으로 보내지며, 상기 코맨드 분석기는 적당한 버젼 라이브러리로 부터의 코맨드 정의에 따라 문구 및 의미에 관한 코맨드를 체크한다. 앞서 설명된 바와 같이, 버젼 식별 V1, V2 또는 V상 N상은 코맨드 분석기로 보내지고 상기 분석기는 QCL(74)나, 또는 QCMD(76)중 어느 하나에 의해 호출되며, 코맨드 분석기(36)는 코맨드 정의에 대한 적당한 라이브러리 또는 라이브러리들(80, 81 또는 82)를 탐색한다.
코맨드 분석기(36)는 상기 적당한 라이브러리에 있어서 상기 기억된 코맨드로부터의 파라미터 정의와 QCL 또는 QCMD에 의해 이동된 공통 문자열의 실제 파라미터를 사용한다. 상기 분석기는 파라미터 정의를 이용하여 정확한 의미 및 문구에 관한 상기 명령열을 체크한다. 상기 열이 에러를 포함한다면, 에러 메시지는 유저 워크 스테이션에서의 표시를 위해 QCL(74) 또는 QCMD(76)로 리턴된다. 상기 열이 정확하다면, 코맨드 분석기는 코맨드를 실행하기 위해 코맨드 처리 프로그램에 의해 사용되어질 포인터 테이블(84)을 작성한다.
포인터 테이블(84)은 분석되어진 코맨드에 관한 코맨드 정의에 있어서 파라미터(PARM 1 내지 PARMX)의 미리 정해진 순차에 따라 구성된다. 상기 테이블에 있어서 각 엔트리는 메모리 작업 영역(86)에서의 기억 장소를 가르킬 것인데, 상기 테이블에는 코맨드 문자열과 함께 수신되고 코맨드 분석기에 의해 부가된 파라미터 정보가 기억된다. 정수 또는 디폴트 파라미터를 가르키는 포인터가 테이블(84)에 부가되고 파라미터 데이타는 선택된 버젼으로부터의 코맨드가 코맨드 처리 프로그램과 양립할 수 있도록 라이브러리로부터의 파라미터 정의에 따라 작업 영역(86)에 부가된다.
코맨드 분석기(36)가 포인터 테이블을 작성한 후에, 프로그램 제어는 선택된 코맨드 처리 프로그램(16)으로 이동된다. 제어가 이동되면, 코맨드 분석기 프로그램이 프로그램의 호출 스택(invocation stack)으로부터 사라져, 상기 코맨드 처리 프로그램으로부터의 모든 메시지는 QCL 또는 QCMD로 이동된다. 코맨드 처리 프로그램(CPP)는 포인터 테이블(84)에 의해 지시된 파라미터를 검색하고 상기 코맨드를 실행한다. 그후에 CCP는 워크 스테이션에서 유저에게의 표시를 위해 적당한 메시지를 QCL로 리턴시킨다.
처리되어질 코맨드의 또 다른 소스가 기억된 프로그램이다. 다양한 버젼의 오퍼레이팅 시스템에 관해서 기록된 프로그램용 소스 코드는 통상 디스크 파이상에 기억될 것이다. 제2a도에서, 3개의 소스 코드 버젼의 프로그램이 31, 32 및 33으로 지시된다. 이들은 동일하거나 또는 상이한 프로그램일 수 있다. 31의 소스 명령문이 버젼 1프로그램에 대해 기록되었으며, 32의 소스 명령문이 버젼 2프로그램에 기록되었고, 33의 소스 명령문이 버젼 N프로그램에 대해 기록되었다. 이들 소스 코드 프로그램이 가동될 수 있기 전에 이들이 컴파일되어야 한다.
프로그램을 컴파일하기 위해, 유저는 컴파일되어질 소스 프로그램을 식별하는 파라미터를 상술하는 CRTCLPGM(create comtrol langrage program) 코맨드를 엔터시킨다. 상기 CRTCLPGM 코맨트 버젼은 유저가 상기 CRTCLPGM을 엔터하는 QCL 또는 QCMD 프로그램에 의해 이동되어진 옴션 태그에 의해 식별된다. 상기 옴션 태그도 또한 상기 CRTCLPGM 코맨드 처리 프로그램이 실행되어질 것을 지시한다.
임의의 다른 코맨드에 대해서와 같이, 코맨드 분석기(36)는 옴션 태그내의 버젼 ID로부터 CRTCLPGM에 관한 코맨드 정의를 검색한다. 그후에, 상기 분석기는 포인터 테이블(84)과 CRTCLPGM에 관한 작업영역(86)의 파라미터 데이타를 작성한다. 상기 포인터 테이블과 파라미터 데이타가 완전하면, CRTCLPGM 프로그램이 실행을 위해 호출된다. 상기 CRTCLPGM 코맨드에 관한 파라미터 데이타는 컴파일되어진 버젼의 소스 명령문 파일을 지시하는 정수를 상술한다.
상기 CRTCLPGM 코맨드 프로그램은 CRTCLPGM의 프로그램이 컴파일러 프로그램(34)인 다른 코맨드 처리 프로그램(16)과는 다르다. 그후에 컴파일러(34)는 포인터 테이블과 파라미터로부터 작성된 파라미터 데이타와 CRTCLPGM에 관한 파라미터의 정의를 사용하여 가동된다.
컴파일러(34)에 관한 순소도(CRTCLPGM 코맨드 처리 프로그램)가 제5도에 도시되었다. 스텝(200)에서 상기 컴파일러는 포인터 테이블을 사용하는 작업 영역으로부터의 입력 파라미터를 얻는다. 상기 파라미터 다음의 것을 포함한다.
ㆍ 작성되어진 프로그램의 명칭 200A(보통, 컴파일 되어진 소스 코드 파일과
동일한 명칭) ;
ㆍ 코드가 컴파일 되어진 소스 파일의 명칭 200B
ㆍ 작성되어지고 컴파일 되어진 프로그램에 관한 소스 코드를 컴파일 할시에
사용되어질 버젼의 코맨드를 지시하는 버젼 번호 또는 식별기 200C
컴파일러(34)는 200B 파라미터에 의해 식별된 소스 파일(31, 32 또는 33)을 스텝(212)에서 개방시킨다. 완전한 코맨드(소스 명령문)가 코맨드 분석기로 이동될 수 있을때까지, 상기 컴파일러는 스텝(214)에서 소스 파일을 판독한다. 결정 스텝(216)에서는 소스 파일의 끝이 도달되었는지를 알아보기 위한 테스트가 행해진다. 만약 도달되지 않았다면, 프로그램 흐름은 스텝(218)으로 이동된다.
스텝(218)에서 소스 파일로부터의 단일 코맨드 판독이 일시적인 파라미터 기구 영역내로 이동된다. 상기 옴션은 컴파일에만 세트되고 코맨드 분석기가 스텝(220)에서 호출된다. 상기 코맨드 분석기는 코맨드 문자열을 주사하고 컴파일러(34)로 리턴되는 코맨드의 해석되고 유효화된 형태를 작성한다. 에러가 상기 명령문에서 발견되면, 에러의 발생은 스텝(232 및 234)에서 더 먼 기준에 대해 주의되고 결정 스텝(222)에서는 그 다음 명령문을 판독하기 위해 흐름을 스텝(214)으로 리턴시킨다. 아무런 에러도 코맨드 분석기에 의해 발견되지 않으면, 결정 스텝(222)에서는 상기 흐름을 스텝(224)으로 분기하는데, 상기 스텝(224)에서 컴파일러는 상기 코맨드에 관한 프로그램 명령내로 상기 코맨드의 해석된 형태를 확장시킨다. 그후에, 상기 프로그램 명령은 스텝(225)에서 작성되어진 프로그램의 컴파일된 버젼(38, 39 또는 40)에 기억된다. 대부분의 경우에, 프로그램 명령은 단순히 상기 코맨드의 해석된 형태이다.
상기 컴파일러는 스텝(214)에서, 파일의 끝이 소스파일에 관해 검출될 때까지, 소스 명령문을 계속 판독한다. 스텝(216)에서, 파일의 끝이 검출되면, 그후에 상기 컴파일러는 스텝(230)에서 소스파일을 폐쇄한다. 결정 스텝(232)에서, 소스에 에러가 있음에 지시한다면, 스텝(234)에 의해 메시지가 호출기, QCL 또는 QCMD에 발해지고 아무런 프로그램도 작성되지 않는다.
소스의 처리 동안 아무런 에러도 검출되지 않으면, 컴파일러는 스텝(236)에서 컴파일된 프로그램에 관한 명칭으로서 입력 파라미터 200A를 사용하여 프로그램을 작성할 것이다. 버젼 ID 200C도 또한 컴파일된 프로그램에 기억되며 따라서, 프로그램이 호출되면, 프로그램은 상기 버젼 ID을 코맨드 분석기로 이동시킬수 있다. 상기 프로그램의 일부로서 버젼 ID을 기억한다는 것은 한 버젼 프로그램이 또다른 버젼 프로그램을 호출하게 한다. 따라서 시스템은 프로그램에 기억된 버젼에 능동 대처할 것이다.
프로그램이 실행을 위해 선택되면, 컴파일된 버젼은 코맨드 분석기를 통해 재차 가동된다. 이때, 옴션 정보는 "실행"을 지시한다. 코맨드가 처리됨에 따라, 상기 코맨드 분석기(36)는 문자 열 데이타를 변형시키며, 작업 영역(86)에 파라미터 데이타를 로드시키며, 포인터 테이블(84)을 작성하고 명칭이 붙은 코맨드 처리 프로그램(16)을 호출한다.
프로그램 제어가 상기 명칭이 붙은 코맨드 처리 프로그램(16)으로 이동된다. 상기 코맨드 처리 프로그램(CPP)은 포인터 테이블을 사용하며, 가르켜진 파라미터를 검색하고 코맨드를 실행한다. 그후에 CPP는 적당한 메시지를 가동되어진 컴파일된 프로그램(38, 39 또는 40)으로 리턴시킨다. 상기 CPP가 제어를 상기 컴파일된 프로그램으로 리턴시킬시에, 그다음 코맨드는 실행을 위해 코맨드 분석기로 보내진다. 그러나, 실행에 에러가 있으면, 상기 컴파일된 프로그램으로 되돌려진 메시지는 워크 스테이션에서 유저에게 표시를 위해 에러 메시지를 QCL 또는 Q(M1) 되돌려 보낼수도 있게 한다.
코맨드 분석기 프로그램(36)의 동작이 제3a도 및 제3b도에 보다 상세히 도시되었다. 상기 프로그램은 스텝(120)에서 코맨드 문자 열 및 옴션 태그(버젼 ID, 컴파일, 실행)을 검색하므로 시작된다. 결정 스텝(122)은 버젼 ID에 따라 프로그램 흐름을 해석 루틴(124, 126 또는 128)중 한 루틴으로 분기시킨다. 상기 선택된 해석 루틴은 코맨드 문자 열을 워드로 분할시키고로 선택된 버젼 V1, V2 및 V "N"의 구문 규칙에 따라 이들 워드를 해석한다.
코맨드가 상기 코맨드의 파라미터로 해석되어졌던 후에, 상기 프로그매은 처리되어진 코맨드의 코맨드 정의에 관한 적합한 버젼 라이브러리를 스텝(130, 132, 134)에서 탐색한다. 코맨드 정의가 선택된 버젼 라이브러리에서 발견된다면, 결정 스텝(138)은 프로그램 흐름을 제3b도의 스텝(142)으로 분기시키는데, 그후에 상기 스텝(142)에서 상기 라이브러리로부터 상기 정의를 검색한다. 코맨드 결정이 상기 선택된 라이브러리에서 발견되지 않으면, 그후에 결정 스텝(138)은 상기 프로그램 흐름을 탐색 루틴(144)으로 분기시킨다.
탐색 루틴(144)은 다양한 라이브러리에 있어서 코맨드 정의에 대해서 탐색을 행한다. 상기 라이브러리는 라이브러리 리스트에 있어서 이들의 순차에 따라 실제로 탐색된다. 상기 라이브러리 및 상기 리스트가 유저에 의해 작성된다. 유저는 한 리스트나 또는 각 리스트가 상이한 순차의 라이브러리를 가진 다수의 리스트를 갖기 위해 선택할 수도 있다. 상기 리스트는 버젼 ID를 근거로 선택될 수 있다.
예를들어, 결정 스텝(122)에 의해 2으로부터와 같이 지시되나 스텝(132)에서 버젼 2라이브러리에서 발견되지 않는 코맨드는 V1 라이브러리, V "N"라이브러리, 유저 라이브러리 1, 유저 라이브러리 2등과 같은 버젼 우선 순위에 따라 버젼을 탐색하기 위해 탐색 루틴(144)을 사용할 수 있다. 상기 우선 순위 또는 리스트된 라이브러리의 순차는 각 버젼에 대해서 상이할 수 있고 결정 스텝(122)에서 탐색되어질 제 1라이브러리가 탐색되는 것과 동일한 방식으로 버젼 ID의 함수로서 선택될 수 있다.
버젼 라이브러리에 대한 논리 탐색 순서가 제6도에 도시되었다. 버젼 1프로그램이 가동되어질 것을 지시하는 프로그램 속성을 프로그램이 가질시에, 상기 라이브러리의 탐색 순서는 60으로 지시된 바와같다. 버젼 1라이브러리가 우선 탐색된다. 탐색되는 코맨드가 버젼 1라이브러리 12에서 발견하지 못하면, 버젼 2라이브러리 14가 탐색된다. 그후에도 여전히 발견하지 못하면, 제 1유저 라이브러리가 탐색되면, 그후에 제 2유저라이브러리가 탐색된다. 유저 라이브러리는 유저에 의해 상술되는 라이브러리이고 보통, 유저 응용 프로그램, 파일 코맨드 및, 다른 대상을 포함한다.
프로그램이 버젼 2프로그램인 것을 프로그램 속성이 지시하면, 상기 프로그램에 대한 라이브러리 탐색 순서는 제6도에 62로 지시된 라이브러리의 순차이다. 제 1버젼의 코맨드 정의가 버젼 2프로그램에 대해 탐색되지 않음을 명심하라. 이는 특정 실시예에서 몇몇 버젼 2코맨드는 버젼 1코맨드와 동일한 명칭을 갖기 때문이다. 버젼 2코맨드가 실제 처리되는 것을 보상하기 위해선, 버젼 2라이브러리를 우선 탐색할 필요가 있다.
라이브러리의 탐색 순서는 버젼 ID에 의해 상술된 제 1라이브러리와 라이브러리 리스트내의 후속 라이브러리에 의해 제어된다. 제6도의 라이브러리 리스트 63가 각 프로그램에 대해 발생된다. 제6도의 상기 라이브러리 리스트는 System/38에 사용된 것과 동일 형태의 구조이다. 상기는 프로그램을 가동할 시에 시스템에 의해 사용되어질 라이브러리에 대한 포인터의 리스트를 포함한다. 상기 리스트는 고객의 취향에 맞춰진 응용에 의해 결정된다.
제3a도을 참조하면, 탐색 루틴(144)이 성공적이면, 결정 스텝(146)은 코맨드 정의를 검색하기 위해 프로그램 흐름을 제3b도의 스텝(142)으로 분기시킨다. 탐색 루틴이 성공적이지 않으며, 프로그램 흐름은 스텝(148)으로 분기되는데, 상기 스텝 (148)에서는 에러 메시지를 호출자에게 되돌려 보낸다. 상기 호출자는 QCL, QCMD 또는 컴파일되거나 또는 실행된 프로그램일 수도 있다.
제3b또는, 코맨드 분석기가 코맨드 정의를 발견한 후에, 코맨드 분석기 프로그램이 코맨드 문자 열을 어떻게 처리하는지를 도시한다. 스텝(142)에서 상기 정의의 검색 후에, 스텝(150)에서 타당성 검사 루틴이 상기 정의에 대하여 상기 코맨드를 체크한다. 타당성 검사는 코맨드 정의에 있어서 파라미터에 관한 상기 정의에 대하여 파라미터 데이타의 각워드를 검사하는 것으로 이루어져 있다. 제1b도에 관련하여 초기에 서술한 바와같이, 각 파라미터는 키워드, 길이, 데이타, 형태, 디폴트 또는 정수 및, 매핑 논리에 의해 규정된다. 타당성 검사가 상술되고 어떤 파라미터도 한번 이상 상술되지 않는다.
타당성 검사 루틴(150)은 상기 파라미터에 관한 정의에 대하여 코맨드 문자 열에 있어서의 각 파라미터를 체크한다. 루틴(150)은 코맨드 정의로부터 각각 파라미터를 연속으로 취하고 상기 파라미터의 키워드 조사하므로 코맨드 문자 열에 있어서 대응하는 파라미터에 관해 체크한다. 키워드가 상기 파라미터에 대해 엔터시킬 아무런 값도 가지지 않았다면, 타당성 검사 루틴은 상기 파라미터 정으로부터 키워드에 관한 디폴트 값을 지시할 것이다. 키워드가 상기 코맨드로부터 사라지면, 상기 타당성 검사 루틴은 상기 코맨드 정의로부터 상기 사라진 파라미터에 대해 상기 디폴트 값을 삽입할 것이다. 각 파라미터는 코맨드 정의에 있어서 파라미터의 순차에 대응하는 순차로 일시적으로 기억된다.
파라미터 데이타는 자신이 정의에 대하여 체크 아웃되지 않으면, 그후에 결정 스텝(152)은 상기 프로그램을 스텝(154)으로 분기시킨다. 스텝(154)은 에러 메시지를 호출 프로그램으로 되돌려 보내고, 프로그램 제어가 상기 호출 프로그램으로 리턴된다.
코맨드의 파라미터에 에러가 없으면, 결정 스텝(152)은 결정 스텝(156)으로의 분기를 야기시킨다. 결정 스텝(156)은, 코맨드와 함께 이동된 옴션 정보가 상기 코맨드를 실행시킬것인지 또는 컴파일시킬 것인지를 지시하는냐에 따라, 2가지 방식중 한 방시으로 프로그램 흐름을 분기시킬 것이다. 상기 코맨드가 컴파일되어지면 프로그램 제어가 컴파일러로 리턴된다. 상기 코맨드가 실행되어지면, 제어는 포인터 테이블(84, 제2a도)을 작성하는 루프(158)로 이동된다.
루프(158)는 디폴트 및 정수를 포함한 타당성 검사된 코맨드를 코맨드 처리 프로그램에 의해 사용되기 위한 파라미터 데이타로 변형시킨다. 또한 상기 루프는 각 파라미터를 구성하는 데이타의 기억 장소를 가르키기 위한 포인터 테이블을 작성시킨다.
상기 루프에 엔터링하기 전에, 코맨드 분석기 프로그램은 스텝(160)에서 코맨드 정의중 최초 파라미터 가르키기 위한 그 자신의 포인터를 세트한다. 결정 스텝(162)은 상기 코맨드 정의중 최종 파라미터가 처리되었는지를 상기 포인터가 지시하는가를 알아보기 위해, 상기 포인터를 테스트한다. 만약 그렇지 않다면, 프로그램 제어는 변형 루틴(164)으로 통과된다.
변형 루틴(164)은 가르켜질 파라미터 정의와 타당성 검사 루틴에 의해 일시적으로 기억된 바와같은 파라미터에 대한 대응하는 타당성 검사된 값을 검색한다. 상기 변경 루틴(164)은 상기 파라미터의 값을 코맨드 정의에 의해 지시된 바와같이 코맨드 처리 프로그램에 의해 예기된 형태로 변환시키기 위해 파라미터의 정의를 사용한다. 상기 파라미터의 정의를 근거로 하여, 상기 파라미터 데이타가 블랭크를 메우게 할 수도 있어 상기 파라미터 데이타는 정확한 길이를 갖거나 또는 매핑 논리를 근거로 하여 상기 파라미터 데이타를 또다른 형태로 변형시킬 수도 있다. 따라서, 각 파라미터 정의는 변형 루틴(164)이 코맨드 정의에 대해 호출된 각 파라미터에 관해 변형된 파라미터 데이타를 발생기키게 된다.
상기 변형된 파라미터 데이타가 발생된 후에, 그것이 스텝(166)에서 메모리의 작업 영역(86, 제2a도)에 기억된다. 그러므로, 코맨드 분석기 프로그램은 스텝(168)에서, 포인터 테이블(84)에 코맨드 처리 프로그램(command processing program, CPP)포인터를 기억시킨다. 이제 상기 파라미터가 상기 코맨드 처리 프로그램에 대해 준비되어 그 다음 파라미터가 루프(158)에 의해 처리될 수 있다.
그 다음 파라미터 정의에 이루기 위해, 각 파라미터 정의는 상기 그 다음 파라미터 정의의 시각에 포인터를 끝낸다. 스텝(170)에서 루프(158)로, 상기 프로그램은 그다음 파라미터 정의(PD)포인터를 얻고 상기 프로그램 루프는 결정 스텝(162)으로 후퇴된다. 상기 PD포인터가 제로이면, 결정 스텝(162)은 최종 파라미터 정의가 처기외었는지를 알려주고 프로그램 제어는 스텝(172)에서 코맨드 분석기 프로그램으로부너 코맨드 처리 프로그램으로 이동된다. 상기 PD 포인터가 그 다음 파라미터 정의를 가르키면, 변형 루틴(164)은 상기 문자열로부터의 파라미터를 코맨드 처리 프로그램에 적합한 형태로 재차 처리한다.
각 코맨드 처리 프로그램은 실행될거라 예기되는 기능에 따라 상이하다. 따라서 상기 프로그램의 일반적인 순서또는 제4도에 도시된 바와같이 고 레벨로만 행해졌을 수 있다. 상기 CPP는 상기 포인터 테이블을 사용하여 스텝(176)에서 변형된 데이타를 얻는다. 상기는 상기 코맨드에 있어서 모든 상기 변형된 파라미터에 대해 행해진다. 결국, 상기 변형된 파라미터 데이타가 검색되어져, 결정 스텝(178)은 장치, 파일, 코맨드 프로그램등과 같은 모든 상기 대상이 존재하는지를 결정한다. 상기가 행해지면, 프로그램 흐름은 스텝(180)으로 분기된다. 그후에 상기 코맨드는 모든 상기 파라미터 데이타를 사용하여 실행된다. 그러므로 프로그램 제어는, 코맨드 소스, QCL, QCMD 또는 가동되어진 컴파일된 프로그램으로 리턴된다. 하나 또는 그 이상의 대상이 상기 시스템에 존재하지 않으면, 결정 스텝(178)은 상기 프로그램 흐름을 스텝(182)으로 분기시킨다.
스텝(182)은 에러 메시지를 코맨드 실행 레지스터, QCL, QCMD 또는 컴파일된 프로그램으로 되돌려 보낸다.
선택된 버젼 1 및 버젼 2코맨드의 설명
버젼 1 : CNLWTR(Cancel Writer)Command
버젼 2 : ENDWTR(End Writer)Command
제1a도에 18로 지시된 버젼 1코맨드 CNLWTR(Cancel Writer)가 프로그램 또는 상호작용 유저 섹션에 의해 사용되며 ; 제7a도를 참조하면, 상기 코맨드의 코맨드 정의가 버젼 1라이브러리 12로부터 억세스되고 처리를 위해 코맨드 처리 프로그램(16A)으로 보내진다. 상기 코맨드 처리 프로그램은 상기 코맨드의 명칭에 관계 없으며, 따라서 CNLWTR 또는 ENDWTR의 명칭이 동일 기능을 수행한다.
상기 CNLWTR코맨드 정의가 제7a도 및 제7b도에 도시되었다. 이들 코맨드의 목적은 스플링 라이터(Spoling writers)를 종료시켜 스플링라이터와 관련된 출력 장치를 상기 시스템에 유효하게 하는 것이다. 양 버젼에 있어서, 라이터는 즉시 종료되거나 또는 CNTRLD(제어됨), IMMED(즉시) 및, PAGEEND의 잠재값을 가진 옴션 키워드의 사용에 의해 제어되는 방식으로 제어될 수 있다. 즉시 종료되면, 상기 라이터가 파일을 기록하는 것을 스톱시키고 상기 파일은 출력 큐에 재차 유효하게 만들어진다. 제어된 방식으로 종료되면, 상기 라이터를 현 파일(또는 파일의 카피)을 기록하는 것을 종료시키거나 또는, 상기가 종료되기 전에 파일의 한 페이지를 프린팅하는 것을 완료시킨다. 버젼 2코맨드 ENDWTR은 부가된 기능을 갖는다. 이제, 시스템의 모든 라이터가 종료되야 하거나, 또는, 동조 파라미터가 몇몇 라이터를 종료시키기 위해 사용될 수 있다. 버젼 1코맨드는 상기 키워드 WTR에 대한 값으로서 라이터-명칭만을 식별할 수 있다.
제7c또는 버젼 1CNLWTR의 구문을 도시한다. WTR은 희망 파라미터이고 유저는, 상기 코맨드를 사용할시에, 상기 키워드 WTR다음에 장치 명칭을 엔터시켜야 한다. 옴션은, 유저가 상기 키워드를 엔터시키지 않으면, 디폴트 값 *CNTRLD을 사용하는 임의 선택 파라미터이다.
제7d또는 버젼 2ENDWTR의 구문을 도시한다. 명칭 변화외에도, 더많은 값이 버젼 2에 있어서의 WTR 파라미터에 대해 유효하다.
버젼 1 : CRTJOBQ(Create Job Queue)Command
버젼 2 : CRTJOBQ(Create Job Queue)Command
코드 명칭 CRTJOBQ(Create Job Queue)을 가진 한쌍의 코맨드는 22 및 24로 제1a도의 코맨드 정의 라이브러리에 또한 도시되었다. 비록 상기 명칭이 양 버젼에 대해 동일하다 할지라도, 상기 파라미터는 제8a도 및 제8b도에서 알수 있듯이 완전히 상이하다. 버젼 1코맨드와 상기 코맨드의 파라미터의 완전한 설명이 앞서 언급된 System/38매뉴얼에 나타난다.
상기 CRTJOBQ 코맨드는 신 죠브큐(a new job queue)를 발생한다. 죠브 큐브는 상기 시스템에 의해 처리되어질 죠브에 대한 엔트리를 포함한다. 상기 큐에 있어서 죠브를 처리하는 몇몇 코맨드는 Submit Job(SBMJOB), Submit Date Base Jobs (SBMDBJOB), Submit Diskette Jobs(SBMDKJOB) 및 Transfer Job(TFRJOB)이다. 제8a도 및 제8b도에서, 상기 CRTJOBQ 코맨드의 양 버젼에 대한 코맨드 정의는 차이를 보여준다. 상기 차이를 감지할 최초 변화는 키워드 "죠브-큐-명칭 (job-queue-name)"이 키워드 값 "라이브러리-명칭/(library-name/)" 다음에 나타난다는 것이다. 따라서, 버젼 1 코맨드에 있어서 상기 죠브큐의 명칭이 "BOJ. LIB"인 반면에, 버젼 2코맨드 셋트에 있어서, 상기 큐의 명칭은 "LIB/OBJ"이다. 상기 명칭 문구에서의 차이는 제3a도의 상이한 해석 루틴(124, 126)에 의해 조정된다.
상기 라이브러리 명칭에 대한 디폴트 값은 버젼 1에 있어선 QGPL이고 버젼 2에 있어선 CURLIB이다. 또다른 변화는 임의선택 키워드 및 이들 값으로 만들어진다. 버젼 1에 있어서의 상기 키워드 PUBAUT는 버젼 2에 있어선 AUT로 변경된다. ALL값만이 상기 버젼간에 동일해짐에 따라, 상기 값이 또한 변경됨을 명심하자. 상기 파라미터는 제12도에 지시된 바와같은 키워드 명칭없이도 위치적으로 코맨드 처리 프로그램으로 이동된다. 따라서, 상기 키워드 명칭은 상기 코맨드 처리 프로그램자는 관계없다.
제8c도 및 제8d또는 버젼 1과 버젼 2 CRTJOBQ 코맨드 간의 구문의 차이를 도시한다. 라이브러리에 대한 디폴트가 QGPL로부터 *CURLIB로 변경된다. 라이브러리 명칭 규칙은 XXX.lib에서 lib/XXX로 변경된다. 키워드 PUBAUT는 AUT로 변경된다. 마지막으로, PUBAUT에서 AUT로 상기값의 수가 또한 변경된다.
버젼 1 : CLRDKT(Clear Diskette)
버젼 2 : CLRDKT(Clear Diskette)
상기 명칭 CLRDKT(Clear Diskette)을 가진 한쌍의 코맨드가 제1a도에 25 및 26으로 코맨드 정의 라이브러리에 또한 도시되었다. 상기 명칭이 양 버젼에 대해 동일하다 하더라도, 상기 파라미터는 제9a도 및 제9b도에 있어서의 이들의 코맨드 정의에서 알수 있듯이 전혀 다르다. 정수는 코맨드 처리 프로그램(16C, 제1a도)에 가동되기에 적합한 파라미터의 수를 만들기 위해 제2버젼의 코맨드에 사용된다. 상기 정수는 설계 시간에 부가되고, 유저에 대해서는 명료하다. 상기는 "LOC 및 SUFFIX"키워드가 상기 제2버젼상에 은익되게 한다. 즉, 버젼 1코맨드에 기록된 다수의 프로그램을 포함하는 응용은 버젼 1 및 버젼 2코맨드 셋트 양자를 가지 컴퓨터에 대서도 변경되지 않고도 동작될 것이다.
버젼 1CLRDKT 코맨드는 각 디스켓의 디스켓 레벨 영역으로부터 데이타 파일 식별자를 제거하므로 하나 또는 그 이상의 디스켓으로부터 활성 및 비활성 상태에 있는 모든 파일을 제거시킨다. 버젼 2코맨드에 있어서, 버젼 1코맨드에 나타난 키워드 LOC 및 SUFFIX는 생략된다. 상기 키워드 LOC는 버젼 2라이브러리의 내부 설명에 있어서 *S1의 정수(슬롯 1, 컴퓨터 시스템에 있어서의 물리적 위치)로 주어진다. 상기 코맨드 SUFFIX는 버젼 2코맨드에 있어선 *NO의 정수로 주어진 상기 코맨드에 대응하는 코맨드 처리 프로그램을 DEV, LOC, VOL, CHECK 및, SUFFIX와 같이 5개의 파라미터를 기대할 것이라고 따라서 이들은 제9a도 및 제9b도에 있어서의 상기 5개의 파라미터이다.
제9c도 및 제9d도 버젼 1 및 버젼 2 CLRDKT 명령간의 구문에 있어서의 차이를 보여준다. 키워드 DEV만이 버젼 2에 존재하고 키워드 LOC 및 SUFFIX만이 버젼 2에 존재한다. 또한 VOL 키워드에 대하여 상이한 디폴트가 존재한다. 또한, 버젼 2코맨드 정의(제9b도)에 부가된 정수가 유저에게는 보이지 않을 수 있음을 명심하자. 이하 기술된 것은 양 버젼에 대한 CLRDKT 코맨드의 단순화된 버젼이다. 정수의 사용이 도시되었다. 이하 표 1에서 "… "는 유저의 입력이 허용되는 장소를 도시한다.
Figure kpo00002
각 파라미터에 대해 이동된 것의 세부는 1986년에 발행된 IBM System/38 프로그래머 가이드 제10판 제14장에 설명되어 있다. CLRDKT 코맨드에 대한 예는 다음에 계속된다. 상기 예는 매핑 논리를 식별하기 위해 키워드 SPCVAL(특정 값)을 사용한다. 매핑 논리인 특정값은 외부 항이 프로그램에 의해 예기된 내부값으로 어떻게 맵되는 지를 보여준다.
* LAST가 상술되면 프로그램은 -5를 얻는다.
* ONLY가 상술되면 프로그램은 -3을 얻는다.
코맨드 처리 프로그램은 워드 *LAST 및 *ONLY와 관계없다. 특정값의 사용은 상기 외부향이 응용 프로그램에 영향을 미치지않고도 변경되게 한다. 파라미터 및 특정값의 모든 매핑은 코맨드 분석기에 의해 조정되며 따라서, 코맨드 처리 프로그램이 얻은 파라미터는 상기 매핑 논리를 근거로 하여 변환된 값이다.
버젼 1의 CLRDKT 코맨드에 대한 예는 다음과 같다.
CLRDKT : CMD
PARM KWD(DEV)+TYPE(*NAME) LEN(10) MIN(1) MAX(1)+
PARM KWD(LOC)+TYPE(E1)
PARM KWD(VOL)+TYPE(*CHAR) LEN(8) RSTD(*NO)+DFT(*MOUN TED)
PARM KWD(CHECK)+TYPE(*CHAR) LEN(1) DER(*YES) SPCVAL((* YES Y )(*NO N))
PARM KWD(SUFFIX)+TYPE(*CHAR) LEN(1) CONSTANT(*NO) SPC VAL ((*NO N)(*YES Y))
E1
ELEM TYPE(*CHAR) LEN(5) CONSTANT(*S1)
ELEM TYPE(*INT2) RSTD(*NO)+SPCVAL((*FIRST-4)) CONSTANT (*FIRST)
ELEM TYPE(*INT) REST(*NO) SPCVAL((*LAST-5)(*ONLY-3) +CO NSTANT(*LAST)
버젼 2의 CLRDKT코맨드에 대한 예는 다음과 같다.
CLRDKT : CMD
PARM KWD(DEV)+TYPE(*NAME) LEN(10) CONSTANT(QDKT)
PARM KWD(LOC)+TYPE(E1)
PARM KWD(VOL)+TYPE(*CHAR) LEN(8) DFT(*LOC)+SPCVAL((*L OC *MOUNTED))
PARM KWD(CHECK)+TYPE(*CHAR) LEN(1)+DER(*YES) SPCVAL(( *YES Y)(*NO N))
PARM KWD(SUFFIX)+TYPE(*CHAR) LEN(1)+RSTD(*YES) DFT(*NO ) SPCVAL((*NO N)(*YES Y))
E1
ELEM TYPE(*CHAR) LEN(5) MIN(0) MAX(1)+VALUES(8M112 *M1 *M2 *S1 *S2 *S3 *S12 *S23 *S123)
ELEM TYPE(*INT2) RSTD(*NO)+DEF(*FIRST) RNAGE(1 10) SPCV AL((*FIRST-4))
ELEM TYPE(*INT2) REST(*NO) DFT(*LAST) RANGE(1 10) SPCVA L((*LAST-5)(*ONLY-3))
제10도를 참조하면, 본 발명은 2개 이상의 버젼 코맨드 세트로 쉽게 확장될 수 있다. 3개 또는 그 이상의 버젼은 충분히 큰 프로그램 속성 필트를 가지므로 수반될 수 있다. 라이브러리의 버젼의 논리 구성은 임의의 버젼 라이브러리를 우선적으로 탐색하게 한다. 각 프로그램이 그 자신의 속성을 갖고 있기 때문에, 응용은 많은 상이한 버젼의 코맨드 셋트를 사용하는 프로그램을 가질수 있다.
제10도에서, 응용은 블럭(81)에서 버젼 1을 사용하는 엔트리 프로그램을 갖는 것이 도시되었다. 엔트리 프로그램은 블럭(183)의 프로그램을 호출하는데, 상기 블럭(183)의 프로그램은 프로그램 속성이 버젼 2프로그램인 것을 나타내는 프로그램 속성을 갖는다. 블럭(181)의 프로그램에 의해 호출 가능한 블럭(185)의 또다른 프로그램은 버젼(3)을 사용한다. 블럭(185)의 프로그램 자신은 버젼 2에 기록된 블럭(187)의 프로그램을 호출할 수 있다.
본 발명을 사용하는 상이한 코맨드 셋트에 기록된 프로그램의 내포(nesting)에 대한 개념적 제한은 존재치 않는다.
버젼 1에 기록된 응용에 있어서 거대한 금액의 투자는 버젼 2 또는 3로 변환될 필요가 없다. 상기 응용은 보다 개선된 기능을 포함하는 버젼에 기록된 것에 부가된 부가적인 프로그램을 가질 수 조차도 있다. 유저의 형편이 좋은때에, 상기 응용은 동시에 한 프로그램에 재기록될 수도 있으며 따라서, 동시에 모든 전체 응용을 개량하는 것보다는 오히려 단계적으로 개선된 성능을 얻는다.

Claims (6)

  1. 오퍼레이팅 시스템에 의하여 상이한 버젼의 시스템 코맨드를 포함하며, 상기 시스템 코맨드에 대해 상이한 버젼을 나타내는 버젼 식별자에 의해 수반되어진 하나 또는 그 이상의 프로그램을 실행하는 능동 대처 컴퓨터 시스템에 있어서, 상기 시스템은 상기 상이한 버젼의 시스템 코맨드에 대한 다수의 코맨드 정의를 기억하는 수단(12, 14, 15)과 ; 실행되어진 프로그램에 대한 각 버젼 식별자에 응답하여, 상기 기억하는 수단으로부터의 상기 코맨드 정의중 대응하는 한 정의를 검색하는 수단(36)과 ; 상기 실행되어진 프로그램으로부터의 각 시스템 코맨드에 응답하고 상기 시스템 코맨드를 범용 포맷을 가진 코맨드로 변환시키는 수단(36) 및 ; 상기 변형된 코맨드에 의해 규정된 기능을 실행하는 상기 변형된 포맷에 응답하는 상기 오퍼레이팅 시스템에 포함된 코맨드 처리 수단(16)을 포함하는 것을 특징으로 하는 능동 대처 컴퓨터 시스템.
  2. 제1항에 있어서, 상기 시스템 코맨드는 하나 또는 그 이상의 파라미터를 포함하는데, 각 파라미터는 특정 작용을 상술하는 키워드 및 ; 상기 키워드와 관련된 옴션을 규정하는 상기 키워드와 관련된 적어도 하나의 값을 포함하는 것을 특징으로 하는 능동 대처 컴퓨터 시스템.
  3. 제2항에 있어서, 시스템 코맨드에 있어서의 파라미터의 수는 상이한 버젼의 시스템 코맨드간에 가변하고 ; 상기 변형하는 수단은 검색된 코맨드 정의의 파라미터에 대하여 각 시스템 코맨드를 타당성 검사하는 수단 및 ; 상기 시스템 코맨드가 상기 시스템 코맨드의 범용 포맷보다 더 소수의 파라미터를 가져, 상기 시스템 코맨드가 범용 포맷을 가진 코맨드로 변형될시에, 코맨드 정의에 따라 상기 시스템 코맨드에 디폴트 또는 정수 파라미터를 부가하는 수단을 포함하는 것을 특징으로 하는 능동 대처 컴퓨터 시스템.
  4. 제3항에 있어서, 상기 기억하는 수단은 미리 정해진 순차로 상기 코맨드 정의의 파라미터를 상기 검색하는 수단으로 이동시키는 것을 특징으로 하는 능동 대처 컴퓨터 시스템.
  5. 제1항에 있어서, 상기 코맨드 정의는 상기 시스템 코맨드를 처리하는 희망 결과를 식별하는 코맨드 파라미터를 포함하는 범용 포맷에 기억되고 ; 상기 변형시키는 수단은 시스템 코맨드에 대해 지시된 버젼에 대한 구문 규칙에 따라 상기 시스템 코맨드를 파라미터로 해석하는 수단과 ; 상기 시스템 코맨드의 상기 지시된 버젼에 대한 코맨드 정의에 대하여 상기 시스템 코맨드에 있어서의 파라미터를 타당성 검사하는 수단과 ; 상기 해석된 코맨드가 파라미터를 빠뜨렸을시에 상기 해석된 코맨드에 상기 코맨드 정의로부터의 정수 파라미터를 부가하기 위해 상기 타당성 검사하는 수단에 응답하는 수단 및 ; 코맨드 파라미터를 범용 포맷으로 변형시키는 수단을 포함하는 것을 특징으로 하는 능동 대처 컴퓨터 시스템.
  6. 제5항에 있어서, 상기 코맨드 처리 수단에 있어서의 상기 프로그램의 명칭은 시스템 코맨드의 하나 이상의 버젼에 대해 동일한 것을 특징으로 하는 능동 대처 컴퓨터 시스템.
KR1019880014982A 1987-11-17 1988-11-15 능동 대처 컴퓨터 시스템 KR930000633B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12196587A 1987-11-17 1987-11-17
US121,965 1987-11-17
US121965 1987-11-17

Publications (2)

Publication Number Publication Date
KR890008684A KR890008684A (ko) 1989-07-12
KR930000633B1 true KR930000633B1 (ko) 1993-01-28

Family

ID=22399781

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019880014982A KR930000633B1 (ko) 1987-11-17 1988-11-15 능동 대처 컴퓨터 시스템

Country Status (11)

Country Link
EP (1) EP0317478B1 (ko)
JP (1) JPH01161563A (ko)
KR (1) KR930000633B1 (ko)
CN (1) CN1013316B (ko)
CA (1) CA1286777C (ko)
DE (1) DE3853806T2 (ko)
ES (1) ES2072866T3 (ko)
GB (1) GB8814630D0 (ko)
HK (1) HK23596A (ko)
MY (1) MY103451A (ko)
PH (1) PH27430A (ko)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2240861A (en) * 1990-02-09 1991-08-14 Hewlett Packard Co Apparatus and method for adapting computer program from one operating environment to another
EP0667573A1 (en) * 1994-02-14 1995-08-16 International Business Machines Corporation Incorporation of services written in one operating system environment into another operating system environment
US6272521B1 (en) * 1997-12-08 2001-08-07 Object Technology Licensing Corporation Apparatus and method for allowing object-oriented programs created with different framework versions to communicate
US6973560B1 (en) 1999-07-16 2005-12-06 Lamarck, Inc. Fault tolerant and combinatorial software environment system, method and medium
EP1204920A1 (en) * 1999-07-16 2002-05-15 Lamarck, Inc. Fault tolerant and combinatorial software environment system, method and medium
US6634019B1 (en) 1999-07-16 2003-10-14 Lamarck, Inc. Toggling software characteristics in a fault tolerant and combinatorial software environment system, method and medium
US6404539B1 (en) 1999-11-09 2002-06-11 Giorgos Kotrotsios Light source for optical data transmission
US7120652B2 (en) * 2002-04-25 2006-10-10 Sun Microsystems, Inc. Method, system and program for determining version of storage devices and programs indicated in the resource information installed in the computer system
EP1387268A3 (en) * 2002-07-31 2005-03-02 Ricoh Company Image forming apparatus, information processing apparatus and version check method
CN100373339C (zh) * 2004-12-20 2008-03-05 英业达股份有限公司 计算机平台操作系统兼容处理方法及装置
US20070174823A1 (en) * 2006-01-25 2007-07-26 Microsoft Corporation Compile-time interpretable code error detection
EP1857929A1 (en) 2006-05-18 2007-11-21 Alcatel Lucent Method to create a set of instructions applicable to distinct versions of a software application
US10754315B2 (en) 2016-02-24 2020-08-25 Kyocera Corporation Management system and management method for transmitting a command including a code value for controlling an apparatus

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4597044A (en) * 1982-10-14 1986-06-24 Honeywell Information Systems, Inc. Apparatus and method for providing a composite descriptor in a data processing system
JPH0762828B2 (ja) * 1984-02-10 1995-07-05 株式会社日立製作所 エミュレーション方法
US4691278A (en) * 1984-04-23 1987-09-01 Nec Corporation Data processor executing microprograms according to a plurality of system architectures

Also Published As

Publication number Publication date
EP0317478A3 (en) 1991-09-11
EP0317478A2 (en) 1989-05-24
CN1013316B (zh) 1991-07-24
MY103451A (en) 1993-06-30
JPH01161563A (ja) 1989-06-26
KR890008684A (ko) 1989-07-12
HK23596A (en) 1996-02-16
DE3853806T2 (de) 1995-11-30
EP0317478B1 (en) 1995-05-17
DE3853806D1 (de) 1995-06-22
GB8814630D0 (en) 1988-07-27
CN1035374A (zh) 1989-09-06
PH27430A (en) 1993-06-21
CA1286777C (en) 1991-07-23
ES2072866T3 (es) 1995-08-01

Similar Documents

Publication Publication Date Title
US5179703A (en) Dynamically adaptive environment for computer programs
US5146593A (en) Procedure call interface
US5673390A (en) Method and system for displaying error messages
EP0785510B1 (en) Program debugging system for debugging a program having a graphical user interface
US5446900A (en) Method and apparatus for statement level debugging of a computer program
US5761510A (en) Method for error identification in a program interface
US5715463A (en) Installation utility for device drivers and utility programs
US5905892A (en) Error correcting compiler
US5442779A (en) System and method for enabling an interpreted programming language to be executed in a database management system environment
US5754755A (en) Method and system for generating test scripts
US6305008B1 (en) Automatic statement completion
US8185878B2 (en) Program maintenance support device, program maintenance supporting method, and program for the same
KR930000633B1 (ko) 능동 대처 컴퓨터 시스템
US5394546A (en) Database management system and method of extending system functions
US5862378A (en) Passing arrays to stored procedures
US6240546B1 (en) Identifying date fields for runtime year 2000 system solution process, method and article of manufacture
EP0202421A2 (en) Batch file processing
US6877156B2 (en) Recognition of command related items in object code
US6625807B1 (en) Apparatus and method for efficiently obtaining and utilizing register usage information during software binary translation
US20040216138A1 (en) Method and system for processing input from a command line interface
US5819276A (en) Method for supporting multiple file-systems in file input/output operations
US5495613A (en) Method and apparatus for extending the capability of a system editor using high-level language transforms
US7318221B2 (en) Windows™ F-language interpreter
Johnson Dispel: A run-time debugging language
EP0202007A2 (en) A generator of program generators

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
G160 Decision to publish patent application
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 19981229

Year of fee payment: 7

LAPS Lapse due to unpaid annual fee