개요
본 장에서는 OpenFrame OSC 시스템에서 제공하는 서비스와 인터페이스에 관하여 소개한다.
1. OSC 프로그래밍 소개
사용자는 OpenFrame OSC(이하 OSC) 시스템에서 운영되는 새로운 애플리케이션 프로그램을 개발하거나, 기존 CICS에서 운영하던 애플리케이션 프로그램들을 마이그레이션하여 트랜잭션 서비스를 구성한다. OSC 시스템에서 제공하는 많은 리소스들은 CICS가 제공하는 기능 및 서비스를 그대로 제공한다.
OSC 프로그래밍 서비스
OSC 애플리케이션 프로그램 개발을 위하여 OSC에서 기본적으로 제공하는 서비스는 다음과 같다. 각 항목에 대한 자세한 내용은 OSC 프로그래밍 서비스에서 설명한다.
OSC 관리 서비스
OSC 애플리케이션 프로그램의 구성을 위하여 OSC 시스템의 리소스는 다음과 같은 서비스를 제공한다. 각 항목에 대한 자세한 내용은 OSC 관리 서비스에서 설명한다.
구분 | 설명 |
---|---|
프로그램 |
프로그램 실행 처리 기능을 제공한다. |
인터벌 컨트롤 |
시간과 관련된 기능을 제공한다. |
태스크 |
태스크 간의 연결 처리 기능을 제공한다. |
동적 영역 |
동적 메모리 할당 또는 반환 처리 기능을 제공한다. |
임시 저장 큐(TSQ) |
임시로 데이터를 저장하기 위한 큐 기능을 제공한다. |
데이터 전송 큐(TDQ) |
데이터 전송을 위한 큐 기능을 제공한다. |
채널과 컨테이너 |
애플리케이션 프로그램 사이에 데이터를 주고 받을 수 있는 기능을 제공한다. |
저널 |
시스템의 이벤트나 변경 사항을 기록할 수 있는 기능을 제공한다. |
데이터 관리 서비스
다음은 OSC 애플리케이션 프로그램이 데이터를 관리할 수 있도록 제공하는 리소스이다. 각 항목에 대한 자세한 내용은 데이터 관리 서비스에서 설명한다.
구분 | 설명 |
---|---|
파일 |
TSAM(Tmax VSAM) 데이터셋 접근 관리 기능을 제공한다. |
Named Counter Services |
카운터 관리 기능을 제공한다. |
데이터 통신 서비스
다음은 OSC 애플리케이션 프로그램과 클라이언트 혹은 다른 제품과의 연결 기능을 제공하는 리소스이다. 각 항목에 대한 자세한 내용은 데이터 통신 서비스에서 설명한다.
구분 | 설명 |
---|---|
터미널 |
터미널 연결 관리 기능을 제공한다. |
Mapping Support |
Map 처리 기능을 제공한다. |
SPOOL |
TJES(Tmax Job Entry Subsystem) 시스템의 인터페이스 기능을 제공한다. |
보안 서비스
OpenFrame 제품군 중 보안 기능을 담당하는 TACF(Tmax Access Control Facility)를 바탕으로, 사용자의 시스템 접근 및 리소스 접근 관리 서비스를 제공한다. 자세한 내용은 보안 서비스에서 설명한다.
데이터베이스 서비스
OpenFrame 시스템이 제공하는 계층형 데이터베이스이면서, DL/I 데이터베이스인 HiDB에 OSC 애플리케이션 프로그램이 접근하는 기능을 제공한다.
OSC 시스템은 애플리케이션 프로그램이 앞에서 설명한 서비스들을 제공할 수 있도록 다음과 같은 인터페이스를 지원한다.
-
EXEC CICS 인터페이스
-
EXEC DLI 인터페이스
-
CBLTDLI 인터페이스
OSC 사용자 애플리케이션 프로그램은 대부분의 서비스를 EXEC 인터페이스를 통해 제공한다. IMS/DB에 대응하는 계층형 데이터베이스 OpenFrame HiDB의 경우 특별히 EXEC DLI 인터페이스 혹은 CBLTDLI 호출 인터페이스를 이용할 수 있다.
OSC 애플리케이션 프로그램에서 관계형 데이터베이스에 접근할 때에는 EXEC SQL 인터페이스를 이용한다. OSC 애플리케이션 서버에서 관계형 데이터베이스에의 접근은 해당 데이터베이스의 EXEC SQL 인터페이스와 TP-Monitor인 Tmax의 데이터베이스 관리 기능에 의해 이루어지므로 본 안내서에서 다루지 않는다. 다만, 애플리케이션 서버의 바이너리 생성할 때 oscbuild 툴에서 사용하려는 데이터베이스를 지정해야 사용이 가능하다.
|
2. OSC 애플리케이션 프로그램 동작
개발된 OSC 애플리케이션 프로그램 소스는 소스 전처리 및 컴파일 과정을 거쳐 바이너리로 생성된다. 새로운 프로그램인 경우 PROGRAM 및 TRANSACTION 리소스 정의 등록이 필요하며, 이 바이너리는 배치 과정을 거쳐 실제 시스템에서 Hot Deploy된다. 이 과정까지 완료되면 애플리케이션 프로그램은 OSC 애플리케이션 서버가 제공하는 환경을 기반으로 동작할 준비가 완료된다.
애플리케이션 프로그램이 동작되는 과정은 다음과 같다.
-
클라이언트에서 트랜잭션을 요청한다.
-
애플리케이션 서버가 트랜잭션 요청에 따라 로딩될 프로그램을 결정한다.
-
결정된 프로그램을 바탕으로 디스크에 프로그램 로딩을 요청한다.
-
해당 프로그램이 디스크로부터 로딩한다.
-
서비스 제공자인 리소스 매니저와 프로그램이 연결된다.
3. EXEC CICS 인터페이스
EXEC CICS 인터페이스는 다시 애플리케이션 프로그래밍 명령어와 시스템 프로그래밍 명령어로 나뉜다.
-
애플리케이션 프로그래밍 명령어
사용자가 애플리케이션을 개발하는 데 사용하는 명령어로, 리소스 접근을 목적으로 한다.
-
시스템 프로그래밍 명령어
시스템 프로그래머들을 위한 명령어로, INQUIRE 또는 SET 중 하나로 시작하며 리소스에 대한 정보를 가져오기 위한 목적으로 사용된다.
EXEC CICS 인터페이스 문법를 먼저 설명한 뒤 모든 명령어에 공통으로 적용되는 RESP 옵션과 NOHANDLE 옵션을 설명한다. 또한 OSC 애플리케이션 서버는 사용자가 보다 쉽게 EXEC CICS 인터페이스를 사용할 수 있도록 추가적인 시스템 컨트롤 블록인 EIB(EXEC Interface Block)와 시스템 제공 데이터 값인 CVDA(CICS Value Data Area)를 제공한다. 이에 대해서도 본 절의 마지막 부분에서 설명한다.
3.1. EXEC CICS 인터페이스 문법
EXEC CICS 인터페이스는 COBOL 프로그래밍 언어로 구성된 프로그램 소스에서 다음과 같은 문법으로 사용한다.
EXEC CICS command [option …] END-EXEC.
항목 | 설명 |
---|---|
command |
필수 항목으로, 원하는 명령어를 입력하는 항목이다. |
option |
command의 명령어에 따라 사용할 수 있는 항목이 정해져 있고 명령어에 따라 필수 옵션과 선택 옵션으로 나뉜다. 또한 인자가 필요한 옵션과 필요하지 않은 옵션으로 구분된다. |
다음은 FILE01이라는 파일에서 KEY-01에 담긴 RIDFLD에 맞는 레코드를 UPDATE 방식으로 AREA-01에 읽어오는 예제이다. 이 예제에서는 앞에서 설명한 command에 READ 명령어를 입력하고, option에 FILE, INTO, RIDFLD, UPDATE를 입력한다.
EXEC CICS READ FILE('FILE01') INTO(AREA-01) RIDFLD(KEY-01) UPDATE END-EXEC.
OSC 애플리케이션 서버가 지원하는 EXEC CICS 명령어의 문법과 지원하는 옵션 목록은 애플리케이션 프로그래밍 인터페이스를 참고한다. |
3.2. RESP 옵션
EXEC CICS 명령어를 실행할 때마다 OSC 애플리케이션 서버는 사용자에게 명령어 실행에 대한 응답 코드를 알려주는데 이 코드를 RESP 값이라 한다. RESP 값은 이미 시스템이 약속한 값에 따라 지정된다. NORMAL을 제외한 모든 값은 예외 조건에 해당한다. 먼저 RESP 값으로 예외 조건을 구분하고, 보다 자세한 정보를 제공할 목적으로 RESP2 값을 사용한다.
RESP, RESP2 값은 명령어 옵션을 통해 사용자가 지정한 변수에 설정되도록 하거나, EIB에 설정된 EIBRESP, EIBRESP2 필드를 통하여 접근할 수 있다. 이렇게 얻은 RESP, RESP2 값은 시스템 매크로 함수 DFHRESP의 결과값과 비교하여 정상적으로 실행되었는지, 아니면 특정 예외 조건이 발생했는지 확인할 수 있다. DFHRESP 함수는 미리 약속된 심볼을 인자로 받아 적절한 바이너리 값을 반환한다.
다음은 NOTFND라는 예외 조건이 발생한 경우 사용자가 해당 조건을 처리하는 예제이다. DFHRESP 매크로 함수는 예외 조건값을 지정해주는 역할을 한다.
EXEC CICS ... RESP(MY-RESP) END-EXEC. IF MY-RESP=DFHRESP(NOTFND) THEN ... END-IF
명령어에 RESP 옵션을 지정하면 예외 조건이 발생했을 때 시스템이 자동으로 지정된 디폴트 동작을 수행하지 않는다.
OSC 애플리케이션 서버는 기본적으로 CICS와 동일한 디폴트 동작을 수행하도록 되어 있다. 이에 대한 자세한 내용은 "IBM CICS Application Programming Reference" 또는 "IBM CICS System Application Programming Reference"를 참고한다. |
3.3. NOHANDLE 옵션
EXEC CICS 인터페이스를 통하여 요청이 들어온 명령어를 실행하는 도중 예외 조건이 발생하는 경우 시스템은 디폴트 동작을 수행하도록 되어 있다. 대부분의 경우 디폴트 동작은 비정상 종료이지만 조건에 따라 다른 동작을 수행하기도 한다.
사용자가 EXEC CICS 인터페이스의 특정 명령어를 사용하여 디폴트 동작을 직접 수정할 수도 있다. 이에 대한 자세한 내용은 예외 조건 처리 명령어와 비정상 종료 처리 명령어를 참고한다.
명령어에 RESP나 NOHANDLE 옵션을 사용한 경우 시스템은 예외 조건 발생해도 사용자가 이를 처리한다고 가정하고 약속된 디폴트 동작을 수행하지 않는다.
3.4. EIB
EIB(EXEC Interface Block)는 시스템 컨트롤 블록으로 사용자 프로그램과 시스템을 연결하는 역할을 한다. EIB에는 트랜잭션 식별자, 트랜잭션 시작 시각, 터미널 식별자를 비롯하여 명령어의 실행 결과값 등이 필드별로 저장되며 사용자는 EIB의 모든 필드에 접근이 가능하다. 따라서 사용자는 EIB에 저장된 값으로부터 현재 처리 중인 트랜잭션에 대한 자세한 정보를 쉽게 얻을 수 있다.
다음은 현재 OSC 애플리케이션 서버에서 지원하는 EIB 필드이다.
필드 | 설명 |
---|---|
EIBAID |
터미널로부터 받은 마지막 AID(Attention Identifier) 값이다. |
EIBCALEN |
해당 프로그램으로 넘겨진 COMMAREA 길이를 의미한다. |
EIBCOMPL |
RECEIVE 명령어에서 데이터를 모두 다 받았는지를 알려준다. |
EIBCPOSN |
터미널로부터 받은 커서 주소(position)이다. |
EIBDATE |
태스크의 시작 날짜로 ASKTIME 명령어에 의하여 업데이트된다. |
EIBFN |
EXEC CICS 인터페이스를 사용하여 가장 최근에 실행된 명령어를 의미한다. |
EIBRCODE |
가장 최근에 실행된 EXEC CICS 명령어의 반환 코드이다. |
EIBRECV |
애플리케이션 프로그램이 RECEIVE 명령어로 데이터를 받을 수 있는지 지정한다. |
EIBREQID |
인터벌 컨트롤 명령어에 의하여 지정된 요청 식별자이다. |
EIBRESP |
가장 최근에 실행된 EXEC CICS 명령어의 RESP 값이다. |
EIBRESP2 |
가장 최근에 실행된 EXEC CICS 명령어의 RESP2 값이다. |
EIBRSRCE |
가장 최근에 접근한 리소스의 식별자이다. |
EIBTASKN |
시스템에 의하여 해당 해당 태스크에 할당된 태스크 번호이다. |
EIBTIME |
태스크의 시작 시각으로 ASKTIME 명령어에 의하여 업데이트된다. |
EIBTRMID |
태스크와 연결된 주 터미널(principal facility)의 식별자이다. |
EIBTRNID |
태스크의 트랜잭션 식별자이다. |
4. EXEC DLI 명령어 및 CBLTDLI 호출 인터페이스
OSC 애플리케이션 프로그램에서 HiDB에 접근하려면 DL/I 인터페이스를 이용해야 한다. DL/I 인터페이스는 EXEC DLI라는 명령어 레벨의 인터페이스와 CBLTDLI라는 COBOL 호출 레벨의 인터페이스로 나뉘어진다.
DL/I 인터페이스에 대한 자세한 내용은 DL/I 데이터베이스 서비스를 참고한다. |