DL/I Call
애플리케이션 프로그램에서 시스템 서비스 함수를 사용하기 위해서는 DL/I Call을 사용한다.
본 장에서는 OSI가 지원하는 시스템 서비스 Call에 대해 설명한다.
DL/I Call의 자세한 설명은 "IMS V7 Application Programming: Transaction Manager"을 참고한다. |
1. 시스템 서비스 DL/I Call
1.1. CHKP (basic)
Basic CHKP Call은 애플리케이션 프로그램이 변경 사항을 반영하거나 또는 애플리케이션 프로그램이 이상 종료했을 경우 복구 시점을 지정하기 위해 사용한다.
-
포맷
>>-CHKP--+-i/o pcb---+--i/o area-------------------------------><
-
파라미터
파라미터 설명 i/o pcb
입출력 매개변수로 해당 프로그램의 첫 번째 PCB로 전달할 IO-PCB를 지정한다.
i/o area
입력 매개변수로 8byte 크기의 checkpoint ID를 지정한다.
1.2. CHKP (symbolic)
Symbolic CHKP Call은 애플리케이션 프로그램이 변경 사항을 반영하려고 할 때 또는 애플리케이션 프로그램이 이상 종료했을 경우 복구 시점을 지정하기 위해 사용한다. 이상 종료한 프로그램 재시작하기 위해 Extended Restart(XRST) Call을 사용할 수 있다. 7개까지 데이터를 저장할 수 있으며 프로그램이 재시작될 때 복구된다.
-
포맷
>>-CHKP--+-i/o pcb---+--i/o area length--i/o area--+-----------------------+-->< | .-------------------. | | V | | '---area length--area-+-'
-
파라미터
파라미터 설명 i/o pcb
입출력 매개변수로 해당 프로그램의 첫 번째 PCB로 전달할 IO-PCB를 지정한다.
i/o area
입력 매개변수로 8byte 크기의 checkpoint ID를 지정한다.
area length
입력 매개변수로 area의 길이를 4byte크기로 지정한다.
area
입력 매개변수로 area length만큼 데이터를 저장한다.
1.3. INIT
IBM 메인프레임의 IMS/DC에서 INIT Call은 애플리케이션 프로그램은 각 DB PCB의 데이터 가용성을 확인하여 데이터 가용성 상태 코드를 확인할 수 있다.
OSI에서는 INIT Call은 애플리케이션 프로그램의 INIT Call 호출 여부 확인 플래그를 설정하는 용도로만 사용한다.
-
포맷
>>-INIT--+-i/o pcb---+--i/o area------------------------------->< '---aib-----'
-
파라미터
파라미터 설명 i/o pcb
입출력 매개변수로 해당 프로그램의 첫 번째 PCB로 전달할 IO-PCB를 지정한다.
aib
입출력 매개변수로 전달할 aib를 지정한다.
i/o area
입출력 매개변수로 세그먼트 송신에 충분한 크기의 I/O Area를 지정한다.
1.4. INQY
INQY Call은 실행 환경, 목적지 타입 및 상태, 그리고 세션 상태 등을 포함하는 정보를 요청하기 위해 사용한다. OSI에서는 AIBSFUNC으로 ENVIRON과 FIND를 사용할 수 있다.
-
포맷
>>-INQY--+-aib---+--i/o area-----------------------------------><
-
파라미터
파라미터 설명 aib
입출력 매개변수로 전달할 aib를 지정한다.
i/o area
입출력 매개변수로 세그먼트 송신에 충분한 크기의 I/O Area를 지정한다.
1.4.1. ENVIRON
ENVIRON Subfunction은 애플리케이션의 실행 환경 정보를 얻는다.
-
Output
타입 길이 값 설명 IMS ID
8
IMS ID를 나타낸다.
Release level
4
현재 지원하지 않는다.
CTL Reg Type
8
현재 지원하지 않는다.
App Reg Type
8
MPP, BMP
실행중인 애플리케이션의 타입을 나타낸다.
Reg ID
4
현재 지원하지 않는다.
App Pgm Name
8
실행 중인 애플리케이션의 이름을 나타낸다.
PSB Name
8
실행 중인 PSB 이름을 나타낸다.
Tran Name
8
실행 중인 트랜잭션의 이름을 나타낸다.
User ID
8
현재 지원하지 않는다.
Group Name
8
현재 지원하지 않는다.
Stat Grp Indicator
4
현재 지원하지 않는다.
Addr of Recovery Token
4
현재 지원하지 않는다.
Addr of the App Param Str
4
현재 지원하지 않는다.
Shared Queues Indicator
4
현재 지원하지 않는다.
User ID of Address Space
8
현재 지원하지 않는다.
User ID Indicator
1
현재 지원하지 않는다.
Res. Recov. Serv. Ind.
3
현재 지원하지 않는다.
catalog enablement indi.
8
현재 지원하지 않는다.
1.5. LOG
IBM 메인프레임의 IMS/DC에서 LOG call은 IMS system log에 정보를 저장하기 위해 사용한다.
OSI에서 LOG Call은 정보를 OFM_OSI_LOG TABLE에 저장한다. 현재 OSI에서는 AIB만 지원한다.
-
포맷
>>-LOG--+-aib---+------------------------------------------------><
-
파라미터
파라미터 설명 aib
입출력 매개변수로 전달할 aib를 지정한다.
1.6. ROLB
ROLB Call은 애플리케이션 프로그램에서 출력 메시지 및 데이터베이스 변경 사항을 취소하기 위해 사용한다.
-
포맷
>>-ROLB--+-i/o pcb---+-----------------------------------------><
-
파라미터
파라미터 설명 i/o pcb
입출력 매개변수로 해당 프로그램의 첫 번째 PCB로 전달할 IO-PCB를 지정한다.
-
제한사항
-
OSC 메시지는 ROLB Call을 사용할 수 없다.
-
1.7. SYNC
SYNC Call은 애플리케이션 프로그램이 commit 처리를 하기 위해 사용된다. BMP 프로그램에서만 적용된다.
-
포맷
>>-SYNC--+-i/o pcb---+----------------------------------------->< '-aib-------'
-
파라미터
파라미터 설명 i/o pcb
입출력 매개변수로 해당 프로그램의 첫 번째 PCB로 전달할 IO-PCB를 지정한다.
aib
입출력 매개변수로 전달할 aib를 지정한다.
1.8. XRST
XRST Call은 이전 애플리케이션 프로그램 동작의 symbolic checkpoint로 부터 재시작하기 위해 사용된다.
-
포맷
>>-XRST--+-i/o pcb---+--i/o area length--i/o area--+-----------------------+-->< | .-------------------. | | V | | '---area length--area-+-'
-
파라미터
파라미터 설명 i/o pcb
입출력 매개변수로 해당 프로그램의 첫 번째 PCB로 전달할 IO-PCB를 지정한다.
i/o area length
입출력 매개변수로 현재 사용되지 않는다.
i/o area
입력 매개변수로 checkpoint ID를 지정한다.
area length
입력 매개변수로 area의 길이를 4byte크기로 지정한다.
area
입출력 매개변수로 area length만큼 데이터를 복구한다.
2. 트랜잭션 관리 DL/I Call
2.1. CHNG
CHGN (Change) Call은 메시지 세그먼트 송신지를 변경하기 위하여 사용한다. CHNG Call로 modifiable ALT-PCB의 destination을 특정 Logical terminal, LU 6.2 descriptor, 또는 트랜잭션 코드로 지정할 수 있다.
-
포맷
>>-CHNG--+-alternate pcb-+--destination name-------------------><
-
파라미터
파라미터 설명 alternate pcb
CHNG Call을 사용하기 위해서는 입출력 매개변수로 modifiable ALT-PCB를 지정해야 한다.
destination name
변경할 메시지 세그먼트 송신지를 지정한다.
2.2. CMD
CMD Call은 애플리케이션 프로그램이 IMS 명령어를 입력하기 위해 사용한다. GCMD Call과 함께 사용하여 OSI 커맨드 서버로 명령어를 보내고 응답을 받을 수 있다. 명령어 응답 메시지의 첫번째 세그먼트를 가져온다.
-
포맷
>>-CMD--+-i/o pcb-+--i/o area----------------------------------><
-
파라미터
파라미터 설명 i/o pcb
입출력 매개변수로 해당 프로그램의 첫 번째 PCB로 전달할 IO-PCB를 지정한다.
i/o area
입출력 매개변수로 세그먼트 송신에 충분한 크기의 I/O Area를 지정한다.
2.3. GCMD
GCMD Call은 CMD Call을 통해 처리한 명령어 응답 메시지의 다음 세그먼트를 가져온다.
-
포맷
>>-GCMD--+-i/o pcb-+--i/o area---------------------------------><
-
파라미터
파라미터 설명 i/o pcb
입출력 매개변수로 해당 프로그램의 첫 번째 PCB로 전달할 IO-PCB를 지정한다.
i/o area
출력 매개변수로 세그먼트 송신에 충분한 크기의 I/O Area를 지정한다.
2.4. GN
입력된 메시지가 하나 이상의 세그먼트를 포함하고 있을 경우 GU Call을 이용하여 메시지의 첫 번째 세그먼트를 얻은 후 다음 세그먼트는 GN Call을 이용하여 가져온다.
-
포맷
>>-GN--+-i/o pcb-+--i/o area-----------------------------------><
-
파라미터
파라미터 설명 i/o pcb
입출력 매개변수로 해당 프로그램의 첫 번째 PCB로 전달할 IO-PCB를 지정한다.
i/o area
출력 매개변수로 세그먼트 송신에 충분한 크기의 I/O Area를 지정한다.
2.5. GU
GU Call은 메시지의 첫 번째 세그먼트를 가져온다.
-
포맷
>>-GU--+-i/o pcb-+--i/o area-----------------------------------><
-
파라미터
파라미터 설명 i/o pcb
입출력 매개변수로 해당 프로그램의 첫 번째 PCB로 전달할 IO-PCB를 지정한다.
i/o area
출력 매개변수로 세그먼트 송신에 충분한 크기의 I/O Area를 지정한다.
2.6. ISRT
ISRT Call은 특정 송신지로 하나의 메시지 세그먼트를 송신하기 위하여 사용한다. 송신지는 IO-PCB, alternate PCB의 지정에 따른다.
-
포맷
>>-ISRT--+-i/o pcb-------+--i/o area--+----------+------------->< '-alternate pcb-' '-mod name-'
-
파라미터
파라미터 설명 i/o pcb
입출력 매개변수로 해당 프로그램의 첫 번째 PCB로 전달할 IO-PCB를 지정한다.
alternate pcb
입출력 매개변수로 PCB를 지정한다.
i/o area
출력 매개변수로 세그먼트 송신에 충분한 크기의 I/O Area를 지정한다.
mod name
출력 메시지 송신을 위한 입력변수로 MOD 이름을 8Bytes로 지정한다. 지정한 MOD에 따라 출력 메시지가 포맷된다.
2.7. PURG
PURG Call은 ISRT Call로 송신한 메시지 세그먼트를 출력하는 기능을 가진다. 애플리케이션 프로그램에서 하나 이상의 메시지 세그먼트를 송신하는 경우 이전의 메시지를 Purge하거나 메시지 송신을 완료 처리하기 위해 사용한다.
-
포맷
>>-PURG--+-i/o pcb-------+--+------------------------+--------->< '-alternate pcb-' '-i/o area--+----------+-' '-mod name-'
-
파라미터
파라미터 설명 i/o pcb
입출력 매개변수로 해당 프로그램의 첫 번째 PCB로 전달할 IO-PCB를 지정한다.
alternate pcb
입출력 매개변수로 PCB를 지정한다.
i/o area
출력 매개변수로 세그먼트 송신에 충분한 크기의 I/O Area를 지정한다.
mod name
출력 메시지 송신을 위한 입력변수로 MOD 이름을 8Bytes로 지정한다. 지정한 MOD에 따라 출력 메시지가 포맷된다.
PURG Call은 출력 메시지의 첫 번째 세그먼트를 위한 MOD 이름을 지정한다.