애플리케이션 인터페이스

본 장에서는 OpenFrame/OSI 환경에서 작성하는 COBOL 프로그램이 사용하는 인터페이스의 종류와 사용법에 대해서 설명한다.

1. 개요

OSI 환경에서 애플리케이션은 데이터베이스나 MQ에 접근을 하기 위해서 반드시 정해진 인터페이스(DL/I Call 함수)를 지켜야 한다. 각 함수는 데이터베이스뿐만 아니라 OSI 영역(Online 프로그램)에서도 사용되며 사용 방식은 동일하다. SSA(Segment Search Argument)와 같은 특정한 옵션은 Online에서는 사용되지 않는다. 데이터베이스를 Online에서는 MQ(Message Queue)라고 생각하고 함수의 기능을 대입하면 된다.

인터페이스를 지키지 않았을 경우에는 사용자가 인식할 수 있는 Status code를 반환값으로 돌려준다. Status code에 대한 자세한 내용은 DL/I Status code를 참고한다.

DL/I Call 함수에 대한 자세한 사항은 OpenFrame HiDB "HiDB 안내서"를 참고한다.

2. 데이터베이스 Call 함수

다음은 애플리케이션이 데이터베이스에 접근하기 위하여 사용하는 함수의 사용법이다.

  • 사용법

    CALL 'CBLTDLI' USING argument 1, argument 2, ..., argument n
  • argument

    • argument 1

      CBLTDLI의 DL/I 함수를 지칭한다. 함수 코드는 데이터베이스 세그먼트의 처리의 종류를 결정하는 코드이며, 이 필드는 4Byte 길이의 영역으로서 애플리케이션 내에서 선언한다.

      다음은 argument 1에 지정할 수 있는 함수이다.

      함수 설명

      GU(GET UNIQUE) /

      GHU(GET HOLD UNIQUE)

      데이터베이스의 특정의 세그먼트를 검색하는 함수 코드이며, SSA(argument 4번째부터 n번째까지 지정)를 지정하여 세그먼트를 얻을 수 있다.

      Online 프로그램에서는 MQ에 적재되어 있는 메시지를 읽어오도록 지시한다.

      GN(GET NEXT) /

      GHN(GET HOLD NEXT)

      현재 포지셔닝되고 있는 세그먼트(Call 발행 직전에 검색된 세그먼트)의 다음 세그먼트를 검색하는 함수 코드로, 데이터베이스의 세그먼트를 계층 순서에 검색하는 경우에 사용한다.

      Online 프로그램에서는 MQ가 데이터베이스 역할을 하며, 함수의 기능 또한 데이터베이스가 아닌 MQ를 타겟으로 한다.

      GNP(GET NEXT WITHIN PARENT) /

      GHNP(GET HOLD NEXT WITHIN PARENT)

      데이터 구조의 특정 세그먼트 타입을 부모로 하고 그 세그먼트의 하위 레벨에 있는 세그먼트를 포함할 수 있다. 이것을 패밀리 세그먼트라고 하는데 GNP, GHNP 함수 코드는 이 패밀리 세그먼트의 계층 순서에 검색한다.

      Online 프로그램(IO-PCB)를 사용하는 경우에는 사용하지 않는 함수이다.

      ISRT(INSERT)

      argument 3에 입력하는 데이터를 지정한 위치의 데이터베이스 혹은 MQ에 Insert 한다.

      DLET(DELETE)

      세그먼트를 삭제하는 경우에 사용하는 함수 코드이다.

      세그먼트를 삭제하는 경우 홀드계의 검색 Call을 사용해 세그먼트의 포지셔닝을 한 후에 DLET Call을 사용한다. 삭제되는 세그먼트는 데이터베이스로부터 삭제 규칙에 따라 삭제된다.

      REPL(REPLACE)

      세그먼트의 치환을 수행하는 경우에 사용하는 함수 코드이다. 세그먼트를 치환하는 경우도 DLET Call과 동일하게 홀드계의 검색 Call을 사용해 포지셔닝을 한 후에 REPL Call을 사용한다. REPL Call에 의해 세그먼트의 키를 변경하면 안된다.

      Online 프로그램(IO-PCB)를 사용하는 경우에는 사용하지 않는 함수이다.

    • argument 2

      애플리케이션이 데이터 액세스와 인터페이스를 사용하기 위해서 PCB Mask를 DB-PCB, IO-PCB, ALT-PCB 중 하나로 정의한다. PCB는 애플리케이션이 COBOL 언어인 경우 LINKAGE 절에 정의한다. 애플리케이션에 정의된 PCB가 Call 기능을 실행하는 경우에는 OSI 내의 CONTROL 절과 링크된다.

      PCB Mask 설명

      DB-PCB

      데이터베이스 Call 기능에 대해 정의된 PCB를 DB-PCB라고 한다.

      IO-PCB

      Online 기능을 사용할 경우에 사용한다.

      ALT-PCB

      다른 트랜잭션 혹은 터미널로 보내고 싶을 경우에 사용한다.

    • argument 3

      애플리케이션 내의 데이터 영역을 지정한다. 애플리케이션과 데이터 액세스의 데이터의 처리는 모두 데이터 영역에 지정해서 사용한다. 사용자는 세그먼트의 길이와 SSA의 Command Code에 의해 필요한 길이를 애플리케이션 내에 XX 영역에 선언해야 한다.

    • argument 4

      SSA의 처리의 대상이 되는 세그먼트와 Sensitive 세그먼트에 대한 조건을 규정하는 영역이다. SSA의 선두 명칭을 데이터 구조로 정의한 계층 레벨에 따라서 지정한다. n의 값은 최대 18까지이다. IO-PCB Mask를 사용할 경우에는 MOD 명칭을 설정하여 단말에 표시되는 화면을 변경할 수 있다.

      SSA는 데이터베이스 Call 기능의 특유 argument이며, 세그먼트에게 전달하는 조건의 유무에 의해 unqualified SSA와 qualified SSA로 분류된다.

      SSA 설명

      unqualified SSA

      처리하는 세그먼트의 명칭만으로 SSA 처리를 하고 세그먼트 내의 필드 내용에 조건을 붙이지 않는 SSA이다.

      qualified SSA

      세그먼트 내의 필드 내용에 조건을 붙이는 SSA이다.

데이터베이스 Call 함수의 자세한 정보는 "IBM IMS Application Programming:Database Manual"을 참고한다.

3. 데이터 통신 Call 함수

다음은 데이터 통신 Call 함수의 기능이다.

  • 메시지 세그먼트의 송수신

  • 메시지의 송신 목표의 변경

  • SPA(Scratch Pad Area)의 송신

데이터 통신 Call 함수는 데이터베이스 Call 함수와 기능면에서는 동일하다. 하지만 Online에서 MQ에 적재되어 있는 메시지와 SPA 영역의 메시지는 계층 구조(OpenFrame/HiDB가 가지는 특징적인 구조)를 가지고 있지 않기 때문에 계층적 검색 조건인 데이터베이스 Call의 SSA는 필요하지 않다.

SPA(Scratch Pad Area)에 대한 자세한 정보는 "IBM IMS Conversational Transactions"를 참고한다.

  • 사용법

    Function Code(argument 1) PCB(argument 2) 데이터 영역(argument 3) MOD 명칭(argument 4)
  • argument

    • argument 1

      함수 코드를 지정하는 argument로, 함수 코드는 메시지 세그먼트, SPA 처리의 종별을 지정하는 코드이다. 데이터베이스 Call 기능과 동일하게 4Byte의 영역으로 애플리케이션에서 선언한다.

      다음은 argument 1에 지정할 수 있는 함수이다.

      함수 설명

      GU(GET UNIQUE)

      메시지의 최초의 세그먼트(헤더 세그먼트)를 수신한다. 애플리케이션은 메시지의 수신에 있어서 GU를 최초로 호출해야 한다.

      대화 모드(Conversation Mode)로 처리되는 경우는 SPA가 수신된다.

      GN(GET NEXT)

      헤더 세그먼트에 이어지는 메시지 세그먼트를 수신한다.

      ISRT(INSERT)

      메시지 세그먼트 혹은 SPA를 송신한다.

      PURG(PURGE)

      ISRT에 의해 송신된 메시지 세그먼트를 1개의 메시지로 단말에 출력한다.

      CHNG(CHANGE)

      ALT-PCB를 사용하고, 다른 터미널 혹은 트랜잭션에 메시지를 보내고 싶을 때 사용한다.

    • argument 2

      데이터 통신 Call 함수를 위한 PCB는 데이터베이스 PCB와 같은 방법으로 정의하고 논리 단말 PCB라고 한다.

      다음은 argument 2에 지정할 수 있는 논리 단말 PCB의 종류이다.

      PCB 설명

      IO-PCB

      트랜잭션을 요청한 논리 단말의 메시지 입/출력을 위해서 사용한다.

      Alternative PCB

      기본 단말 이외의 다른 단말로 메시지 송신하기 위해서 사용한다.

      Alternative Program PCB

      메시지를 다른 프로그램으로 송신하기 위해서 사용한다.

      1. Alternative Program PCB는 ALT-PCB라고 한다. 애플리케이션 내에서 이러한 논리 단말 PCB는 IO-PCB, ALT-PCB의 순서로 정의해야 한다.

      2. IO-PCB는 OSI 시스템에서 자동으로 관리되고 ALT-PCB는 프로그램 정의 유틸리티로 정의된다.

    • argument 3

      메시지 세그먼트, Command, SPA의 송수신을 위해 사용되는 데이터 영역이다.

    • argument 4

      MFS를 수행하는 단말에 대해 송신하는 메시지의 포맷을 미리 메시지 포맷 정의 유틸리티로 정의한 MOD 명칭(8Byte)이 설정된 영역의 주소를 지정한다. MOD 명칭이 지정되는 것은 ISRT하는 경우 뿐이다.

데이터 통신 Call 함수의 자세한 정보는 "IBM IMS Application Programming: Transaction Manager Manual"을 참고한다.