OSC 프로그래밍 서비스

본 장에서는 OSC 프로그래밍 서비스에 대해 설명한다.

1. 개요

EXEC CICS 인터페이스는 OSC 리소스에 접근하기 위한 명령어 외에 사용자가 OSC 애플리케이션 프로그래밍을 쉽고 편리하게 할 수 있도록 다음과 같은 프로그래밍 서비스들을 제공한다.

2. 시스템 환경

시스템 환경 서비스는 OSC가 제공하는 저장소에 대한 접근을 가능하게 하거나, 구조체 및 포인터 주소 지정 및 애플리케이션 프로그램이 다양하게 활용할 수 있는 환경변수값들을 가져오는 역할을 제공한다.

본 절에서는 프로그램 간 데이터 공유를 위한 COMMAREA, TWA를 비롯하여, 프로그램 및 트랜잭션 간 공유가 가능한 CWA, TCTUA 등에 대하여 설명하고, 이 영역들을 이용하기 위한 명령어에 대하여 기술한다.

OSC 저장소

OSC가 제공하는 저장소에 대하여 알아본다. OSC 애플리케이션 프로그램은 업무 로직에 필요한 데이터를 관리하기 위하여 프로그램의 로컬 저장 공간(COBOL의 경우 WORKING-STORAGE SECTION) 외에 서버가 제공하는 OSC 저장소를 임시로 이용할 수 있다. OSC 저장소는 프로그램 간 데이터 공유나 한 프로그램에서 수행된 결과를 다른 트랜잭션이나 프로그램으로 전달하는 목적으로도 사용할 수 있어서 사용자가 서로 연결된 업무를 구성하는 데 도움을 준다.

  • COMMAREA

    COMMAREA(Communication Area)는 한 트랜잭션으로 묶여 있는 두 프로그램 간 또는 한 터미널로부터 작동되는 두 트랜잭션 간에 데이터를 주고받을 때 사용한다.

    • 동일한 트랜잭션 내부에서의 두 프로그램 간의 연결

      LINK 또는 XCTL 명령어의 COMMAREA 옵션을 통하여 사용자는 원하는 길이(최대 32KB)의 데이터를 LINK 또는 XCTL되는 프로그램에 전달한다. 또한 DPL을 통한 애플리케이션 사이의 데이터 전달 및 OTG, EXCI 클라이언트와 애플리케이션 간의 데이터 전달에도 COMMAREA가 사용된다.

    • 같은 터미널에서 시작된 두 트랜잭션 간의 연결

      RETURN 명령어의 COMMAREA 옵션을 통해 전달한 데이터를 다음에 실행되는 트랜잭션에서 받을 수 있다. 의사 대화형(pseudo-conversational) 프로그램을 작성할 때 유용한 방법이다.

    사용자는 ADDRESS 명령어로 COMMAREA 주소값을 얻은 뒤 이 영역에 저장된 데이터에 접근할 수 있다. COBOL 애플리케이션 프로그램에서는 LINKAGE SECTION에 DFHCOMMAREA라는 이름으로 변수를 선언하면 ADDRESS 명령어를 실행하지 않아도 이 변수를 사용하여 COMMAREA 영역에 접근할 수 있다.

  • TWA

    TWA(Transaction Work Area)는 트랜잭션이 발생할 때마다 시스템에서 트랜잭션에 할당하는 영역으로 해당 트랜잭션이 활성화되어 있는 동안 접근이 가능하다. 이 공간은 트랜잭션 내부에서 적은 양의 데이터를 관리하기에 유용하며 다음과 같은 특징을 가지고 있다.

    • 해당 TRANSACTION 리소스 정의의 TWASIZE 항목에 지정된 크기만큼 공간이 할당된다.

    • 트랜잭션이 발생할 때마다 "0x00"으로 초기화된다.

    • WORKING-STORAGE SECTION과 같은 프로그램 영역처럼 사용자 처리 작업으로 인한 오버헤드가 거의 없다.

    • 영역에 대한 리소스 보호 기능이 없다.

  • CWA

    CWA(Common Work Area)는 OSC 애플리케이션 서버마다 할당되는 데이터 영역이다. OSC 애플리케이션 서버가 기동할 때 생성되어 시스템이 활성화되어 있는 동안만 존재한다.

    CWA 영역의 특징은 다음과 같다.

    • 설정 파일의 CWA_SIZE 항목에 크기를 지정한다.

    • TWA처럼 특정 값으로 초기화되지 않는다.

    • 사용자 처리로 인한 오버헤드가 거의 없다.

    • 영역에 대한 리소스 보호 기능이 없다.

    • 시스템 장애에 대한 복구 기능이 없다.

    • 모든 트랜잭션에서 동시 접근이 가능하다.

      위 상황에 대한 대비는 사용자가 직접 작업해야 한다. 그리고 단일 노드 내에서만 접근이 가능하므로 하나의 Region을 멀티노드로 구성하는 경우에는 제한적으로 사용이 가능하다.

  • TCTUA

    TCTUA(Terminal Control Table User Area)는 터미널이 제공하는 사용자 데이터 영역으로 해당 터미널에서 실행되는 모든 트랜잭션 간에 공유된다.

    TCTUA 영역의 특징은 다음과 같다.

    • 해당 TYPETERM 리소스 정의의 USERAREALEN 항목에 지정된 크기만큼 공간이 할당된다.

    • 특정 값으로 초기화되지 않는다.

    • 사용자 처리로 인한 오버헤드가 거의 없다.

    • 해당 터미널 사용자만 접근이 가능하다.

    • 시스템 장애에 대한 복구 기능이 없다.

시스템 환경 명령어

시스템 환경 명령어는 OSC 저장소에 대한 주소값을 받아오는 명령어(ADDRESS), 받아온 주소값을 변환, 지정할 수 있는 명령어(ADDRESS SET)와 시스템 환경 설정 값들을 가져오는 명령어(ASSIGN, INQUIRE SYSTEM)로 구성된다.

다음은 시스템 환경 명령어에 대한 설명이다. 각 명령어에 대한 자세한 설명은 해당 절을 참고한다.

명령어 설명

ADDRESS

각종 OSC 저장소의 주소값을 받는다.

ADDRESS SET

포인터 참조 파라미터를 주소에 지정하거나, 반대로 포인터 참조 파라미터에 메모리 주소를 저장하기 위해 사용된다.

ASSIGN

시스템 환경 변수값을 가져온다.

EXTRACT LOGONMSG

서버의 로그온 데이터에 액세스한다. 이 데이터는 시스템 초기화 매개 변수 LGNMSG가 YES로 지정된 경우에만 사용 가능하다.

INQUIRE SYSTEM

시스템 인터페이스 명령어로, 시스템 설정값을 가져온다.

INQUIRE CONNECTION

로컬 OSC Region에서 다른 OSC Region 또는 다른 시스템으로의 연결에 관한 정보를 검색한다.

SET CONNECTION

MRO 또는 ISC를 정의하는 일부 속성을 변경할 수 있다.

2.1. ADDRESS

각종 OSC 저장소의 주소값을 받는 명령어이다.

  • 문법

    EXEC CICS ADDRESS [option …] END-EXEC.
  • 옵션

    옵션 설명

    COMMAREA

    COMMAREA 주소를 반환한다.

    CWA

    CWA 주소를 반환한다.

    EIB

    EIB 주소를 반환한다.

    TCTUA

    TCTUA 주소를 반환한다.

    TWA

    TWA 주소를 반환한다.

    ACEE은 지원하지 않는 옵션이지만 파싱은 지원한다.

2.2. ADDRESS SET

포인터 참조 파라미터를 주소에 지정하거나, 반대로 포인터 참조 파라미터에 메모리 주소를 저장하기 위해 사용되는 명령어이다. USING 옵션이 가리키는 값을 SET 옵션이 가리키는 위치에 저장한다.

  • 문법

    EXEC CICS ADDRESS SET [option …] END-EXEC.
  • 옵션

    옵션 설명

    SET

    포인터 참조값을 반환한다.

    USING

    포인터값을 지정한다.

2.3. ASSIGN

시스템 환경 변수값을 가져오는 명령어이다.

  • 문법

    EXEC CICS ASSIGN [option …] END-EXEC.
  • 옵션

    • ASSIGN 명령어 옵션

      옵션 설명

      ABCODE

      현재 ABCODE 값이다.

      비정상 종료가 발생하지 않으면 빈 공간으로 채워진다.

      ABPROGRAM

      ABEND가 발생한 프로그램의 이름이다.

      비정상 종료가 발생하지 않으면 빈 공간으로 채워진다.

      ALTSCRNHT

      현재 터미널의 ALTRSCREEN 속성의 ROW 값을 반환한다.

      ALTSCRNWD

      현재 터미널의 ALTRSCREEN 속성의 COLUMN 값을 반환한다.

      APPLID

      서버의 APPLID 값이다.

      현재 프로그램이 동작하는 8자의 Region 이름과 동일하다.

      CHANNEL

      현재 프로그램의 채널 이름을 반환한다.

      COLOR

      현재 연결된 터미널의 COLOR 속성값이다.

      CWALENG

      CWA 영역의 길이이다.

      DS3270

      현재 연결된 터미널이 3270 device 여부를 반환한다.

      EXTDS

      터미널이 3270 확장 데이터 스트림을 수용하는지의 여부를 반환한다.

      FACILITY

      현재 트랜잭션을 실행시킨 터미널 이름 혹은 TDQ 이름을 반환한다.

      FCI

      Facility Control Indicator 코드를 반환한다.

      현재 트랜잭션이 터미널에서 실행되었다면 X'01’을 반환하고 TDQ에서 실행될 경우 X'08’을 반환한다. 이외의 경우에는 X'00’을 반환한다.

      HILIGHT

      현재 연결된 터미널의 HILIGHT 속성값이다.

      INVOKINGPROG

      현재 프로그램을 실행한 상위 프로그램명을 반환한다.

      KATAKANA

      가타카나 지원 여부를 반환한다.

      NETNAME

      현재 연결된 터미널의 NETNAME이다.

      NEXTTRANSID

      RETURN TRANSID에 의해 설정된 대로 트랜잭션 이름을 반환한다. 설정된 트랜잭션이 없으면 공백을 반환한다.

      OUTLINE

      현재 연결된 터미널의 OUTLINE 속성값이다.

      OPID

      운영자의 식별 정보를 반환한다.

      PROGRAM

      현재 실행 중인 PROGRAM 이름을 반환한다.

      PS

      현재 연결된 터미널의 PS 속성값이다.

      QNAME

      현재 트랜잭션이 TDQ Trigger Level에 의해 실행된 경우 해당 TDQ 이름을 반환한다.

      RESTART

      작업의 재시작이 발생했는지, 작업의 일반 시작이 발생했는지 여부를 반환한다.

      RESSEC

      현재 트랜잭션에 리소스 보안이 설정되었는지 여부를 반환한다.

      RETURNPROG

      현재 프로그램의 실행이 완료되었을 때 제어권을 반환할 프로그램 이름을 반환한다.

      SCRNHT

      현재 트랜잭션에 정의된 화면의 높이를 반환한다.

      SCRNWD

      현재 트랜잭션에 정의된 화면의 너비를 반환한다.

      SOSI

      1Byte 문자와 2Byte 문자 혼합 모드 지원 여부를 반환한다.

      STARTCODE

      트랜잭션 요청 방법을 반환한다.

      SYSID

      서버의 SYSID 값이다. OpenFrame 환경설정에 osc.{servername} 서브젝트, GENERAL 섹션에 SYSID 키의 VALUE 항목에 지정된 값이다. 자세한 내용은 OpenFrame OSC "환경설정 안내서"를 참고한다.

      TCTUALENG

      TCTUA 영역의 길이이다.

      TERMCODE

      현재 연결된 터미널의 타입과 모델번호를 조합한 코드를 반환한다.

      TWALENG

      TWA 영역의 길이이다.

      USERID

      현재 SIGN-ON된 사용자 ID를 반환한다.

      USERNAME

      현재 SIGN-ON된 사용자 이름을 반환한다.

      VALIDATION

      현재 연결된 터미널의 VALIDATION 속성값이다.

      ABDUMP, APLKYBD, APLTEXT, ASRAINTRPT, ASRAKEY, ASRAPSW, ASRAREGS, ASRASPC, ASRASTG,BTRANS, CMDSEC, DEFSCRNHT, DEFSCRNWD, DELIMITER, DESTCOUNT, DESTID,DESTIDLENG, DSSCS, EWASUPP, GCHARS, GCODES, GMMI,INITPARM, INITPARMLEN, INPARTN, LANGINUSE, LDCMNEM, LDCNUM, MAPCOLUMN, MAPHEIGHT, MAPLINE, MAPWIDTH, MSRCONTROL, NATLANGINUSE, NUMTAB, OPCLASS, OPERKEYS, OPSECURITY, ORGABCODE, PAGENUM, PARTNPAGE, PARTNS, PARTNSET, PRINSYSID, SIGDATA, STATIONID, TASKPRIORITY, TELLERID, TERMPRIORITY, TEXTKYBD, TEXTPRINT, TRANPRIORITY, UNATTEND, USERPRIORITY은 지원하지 않는 옵션이다.

    • STARTCODE 옵션

      옵션 설명

      D

      SYNCONRETURN 옵션이 지정되지 않은 DPL(Distributed Program Link) 요청으로 트랜잭션을 실행한다.

      DS

      SYNCONRETURN 옵션이 지정된 DPL 요청으로 트랜잭션을 실행한다.

      QD

      TDQ의 Trigger Level에 의해 트랜잭션을 실행한다.

      SD

      가져온 데이터와 함께 START 명령어로 트랜잭션을 실행한다.

      S

      가져온 데이터없이 START 명령어로 트랜잭션을 실행한다.

      TD

      터미널로부터 실행되거나, tpcall/tpacall/tpconnect 등의 Tmax API로 트랜잭션을 실행한다.

2.4. EXTRACT LOGONMSG

서버의 로그온 데이터에 액세스한다. 이 데이터는 시스템 초기화 매개 변수 LGNMSG가 YES로 지정된 경우에만 사용 가능하다.

  • 문법

    EXEC CICS EXTRACT LOGONMSG [option …] END-EXEC.
  • 옵션

    옵션 설명

    INTO

    추출된 데이터의 수신 필드를 지정한다.

    SET

    추출된 데이터의 주소로 설정될 포인터 참조를 지정한다.

    LENGTH

    추출된 데이터의 길이를 지정한다. 사용할 수 있는 데이터가 없으면 LENGTH가 0으로 설정된다.

2.5. INQUIRE CONNECTION

로컬 OSC Region에서 다른 OSC Region 또는 다른 시스템으로의 연결에 관한 정보를 검색한다.

  • 문법

    EXEC CICS INQUIRE CONNECTION [option …] END-EXEC.
  • 옵션

    옵션 설명

    ACCESSMETHOD

    조회 대상과 로컬 시스템 간의 연결 형태를 반환한다.

    END

    Browsing을 중지한다.

    CONNECTION

    조회하고 있는 원격 시스템 또는 Region의 4글자 식별자를 지정한다.

    CONNSTATUS

    조회 대상 Region이 기동 중이면 ACQUIRED, 기동되지 않았을 경우 RELEASED를 반환한다.

    NETNAME

    CONNECTION 정의에 지정된 NETNAME 값에서 네트워크에 알려진 원격 시스템의 8 글자 이름을 반환한다.

    NEXT

    INQUIRE 명령을 반복적으로 실행한다. 하나의 리소스 정의를 반환받는다.

    PROTOCOL

    사용 중인 프로토콜의 값을 반환한다.

    START

    Browsing을 시작한다.

ACQSTATUS, AUTOCONNECT, CHANGEAGENT, CHANGEAGREL, CHANGETIME, CHANGEUSERID, CONNSTATUS, CONNTYPE, CQP, DEFINESOURCE, DEFINETIME, EXITTRACING, GRNAME, INSTALLAGENT, INSTALLTIME, INSTALLUSRID, LINKSYSTEM, MEMBERNAME, NQNAME, PENDSTATUS, RECEIVECOUNT, RECOVSTATUS, REMOTENAME, REMOTESYSNET, REMOTESYSTEM, SENDCOUNT, SERVSTATUS, XLNSTATUS, ZCPTRACING은 지원하지 않는 옵션이다.

2.6. INQUIRE SYSTEM

시스템 인터페이스 명령어로, 시스템 설정값을 가져온다.

  • 문법

    EXEC CICS INQUIRE SYSTEM [option …] END-EXEC.
  • 옵션

    옵션 설명

    DFLTUSER

    서버의 기본 사용자 ID를 반환한다. OpenFrame 환경설정에 osc.{servername} 서브젝트, SAF 섹션의 DFLTUSER 키의 VALUE 항목에 지정된 값이다.

    GMMLENGTH

    서버의 굿모닝 텍스트 길이를 반환한다.

    GMMTEXT

    서버의 굿모닝 텍스트 값을 반환한다. OpenFrame 환경설정에 osc.{servername} 서브젝트, GENERAL 섹션의 GMTEXT 키의 VALUE 항목에 지정된 값이다.

    GMMTRANID

    서버의 굿모닝 트랜잭션 값을 반환한다. OpenFrame 환경설정에 osc.{servername} 서브젝트, GENERAL 섹션의 GMTRAN 키의 VALUE 항목에 지정된 값이다.

    JOBNAME

    서버의 JOBNAME 값을 반환한다. OpenFrame 환경설정에 osc.{servername} 서브젝트, GENERAL 섹션의 JOBNAME 키의 VALUE 항목에 지정된 값이다.

    SECURITYMGR

    TACF의 사용 유무를 반환한다.

    CICSSTATUS

    OSC의 현재 실행 상태를 반환한다.

    SHUTSTATUS

    OSC의 종료 상태를 나타내는 CVDA 값을 반환한다.

osc.{servername} 서브젝트에 대한 자세한 내용은 OpenFrame OSC "환경설정 안내서"를 참고한다.

2.7. SET CONNECTION

MRO 또는 ISC를 정의하는 일부 속성을 변경할 수 있다.

  • 문법

    EXEC CICS SET CONNECTION [option …] END-EXEC.
  • 옵션

    옵션 설명

    CONNECTION

    설정할 원격 시스템 또는 Region의 4 글자 식별자를 지정한다.

    AFFINITY

    일반 자원의 그룹인 경우 보유한 연관 관계를 종료하도록 지정한다.

    1. ACQSTATUS, CONNSTATUS, EXITTRACING, PENDSTATUS, PURGETYPE, RECOVSTATUS, SERVSTATUS, UOWACTION, ZCPTRACING은 지원하지 않는 옵션이다.

    2. START, NEXT, END은 지원하지 않는 옵션이지만 파싱은 지원한다.

3. 예외 조건 처리

EXEC CICS 명령어를 실행할 때마다 해당 명령어의 수행 결과를 RESP 값을 통하여 애플리케이션 프로그램에 돌려준다. RESP, RESP2 옵션 혹은 EIB의 RESP 값을 통하여 명령어 실행 결과를 확인할 수 있다. 이 옵션이 지정되지 않는 경우 예외 조건이 발생하면 기본적으로 애플리케이션 서버가 어떻게 동작할지가 미리 정해져 있다.

OSC 시스템은 예외 조건이 발생하는 경우 기본적인 엔진의 동작이 아닌 사용자가 지정한 방식으로 애플리케이션 서버가 동작하도록 지정할 수 있는 기능을 제공한다.

디폴트 동작은 "IBM CICS Application Programming Reference" 및 "CICS System Programming Reference"와 동일하다.

예외 조건 처리 명령어

사용자는 다음의 명령어를 사용하여 예외 조건이 발생하는 경우의 시스템 동작을 변경할 수 있다.

다음은 예외 조건 처리 명령어의 목록이다. 각 명령어에 대한 자세한 설명은 해당 절을 참고한다.

명령어 설명

HANDLE CONDITION

IGNORE CONDITION

애플리케이션 프로그램에 특정 상황이 발생한 경우 시스템의 동작을 지정한다.

POP HANDLE

PUSH HANDLE

시스템은 특정 상황이 발생한 경우에 대한 핸들링 정보를 저장하고 있다.

애플리케이션 프로그램에서 일시적으로 설정한 핸들링 정보를 적용시키지 않도록 할 경우 사용한다.

디폴트 동작의 대부분은 태스크가 비정상 종료하는 경우이지만, 예를 들어 WRITEQ TS의 NOSPACE처럼 예외조건을 무시하고 계속 진행하는 경우도 있다.

예외 조건을 무시하고 진행하는 경우에 대한 자세한 내용은 IBM의 "CICS Application Programming Reference" 및 "CICS System Programming Reference"를 참고한다.

3.1. HANDLE CONDITION

특정 예외 조건과 레이블의 옵션 및 옵션값을 지정하면 해당 예외 조건이 발생했을 때 지정한 레이블이 설정된 프로그램 섹션이 실행된다.

  • 문법

    EXEC CICS HANDLE CONDITION [option …] END-EXEC.
  • 옵션

    옵션 설명

    condition

    예외 조건을 옵션 이름으로 지정하고 인자로 컨트롤을 전달할 레이블을 지정한다. condition 옵션에 아무런 레이블을 지정하지 않고 사용하면 디폴트 동작이 설정된다.

    1. TIMEDOUT은 파싱만 지원한다.

    2. HANDLE CONDITION 명령어는 관련 조건이 발생될 수 있는 명령어가 실행되기 전에 실행되어야 한다는 점에 주의한다.

3.2. IGNORE CONDITION

특정 예외 조건에 대한 변경된 디폴트 동작을 무시한다.

  • 문법

    EXEC CICS IGNORE CONDITION [option …] END-EXEC.
  • 옵션

    옵션 설명

    condition

    예외 조건을 옵션 이름으로 지정한다.

3.3. POP HANDLE

PUSH HANDLE 호출을 통해 보류된 HANDLE 명령어들의 설정 내용을 복원한다. 별도의 옵션은 없다.

  • 문법

    EXEC CICS POP HANDLE END-EXEC.

3.4. PUSH HANDLE

HANDLE 명령어들로 설정된 내용을 보류한다. 별도의 옵션은 없다.

  • 문법

    EXEC CICS PUSH HANDLE END-EXEC.

4. 비정상 종료 처리

사용자가 ABEND 명령을 사용하여 트랜잭션을 즉시 종료하거나, 명령어 수행 중에 에러가 발생하여 시스템이 현재 수행 중인 태스크를 종료시키는 경우와 같이 비정상적으로 프로그램이 종료하는 것을 비정상 종료(ABEND)라 한다. 비정상 종료가 발생할 경우 해당 트랜잭션에서 복구 가능한 리소스들은 롤백된다.

애플리케이션 프로그램의 비정상 종료는 다음과 같은 경우에 발생한다.

  • EXEC CICS ABEND 명령어를 통한 사용자의 요청

  • Tmax 서비스 타임아웃에 의한 비정상 종료

  • EXEC CICS 명령어의 예외 조건이 발생할 때 애플리케이션 서버의 디폴트 동작

본 절에서는 사용자의 요청, 즉 EXEC CICS ABEND에 의한 비정상 종료와 함께, 비정상 종료에 대한 핸들링에 대하여 기술한다.

비정상 종료 처리 명령어

다음은 비정상 종료 처리를 위한 명령어의 목록이다. 각 명령어에 대한 자세한 설명은 해당 절을 참고한다.

명령어 설명

ABEND

현재 태스크에 대한 비정상 종료를 요청한다.

HANDLE ABEND

HANDLE ABEND는 비정상 종료(ABEND)가 발생했을 때, 지정한 레이블이나 프로그램을 실행한 뒤 종료하도록 설정한다.

4.1. ABEND

현재 태스크에 대한 비정상 종료를 요청한다.

  • 문법

    EXEC CICS ABEND [option …] END-EXEC.
  • 옵션

    옵션 설명

    ABCODE

    비정상 종료 코드를 지정한다. 별도로 지정하지 않는 경우 ‘????’로 지정된다.

    CANCEL

    HANDLE ABEND 명령어로 지정된 핸들링 처리를 무시한다.

    NODUMP은 지원하지 않는 옵션이지만 파싱은 지원한다.

4.2. HANDLE ABEND

HANDLE ABEND는 비정상 종료(ABEND)가 발생했을 때 지정한 레이블이나 프로그램을 실행한 뒤 종료하도록 설정한다. 이 명령어로 설정된 핸들링 정보는 POP HANDLE 및 PUSH HANDLE 명령어의 대상이 된다.

여러 프로그램 레벨(LINK 명령어를 통하여 프로그램 호출)에서 비정상 종료 출구를 지정한 경우 OSC 애플리케이션 서버는 가장 최근의 HANDLE ABEND 설정을 사용한다.

  • 문법

    EXEC CICS HANDLE ABEND [option …] END-EXEC.
  • 옵션

    옵션 설명

    CANCEL

    이전 비정상 종료 설정을 취소한다.

    LABEL

    태스크가 비정상 종료할 때 컨트롤이 분기될 프로그램 레이블명을 지정한다.

    PROGRAM

    태스크가 비정상 종료할 때 컨트롤을 전달할 프로그램 이름을 지정한다.

    RESET

    이전에 취소된 비정상 종료를 재설정한다.

5. 리소스 복구

태스크가 비정상 종료하거나 OSC 애플리케이션 서버 또는 시스템 전체에 문제가 생겨 재기동하는 경우 리소스들에 대한 복구가 필요하다. 복구 가능한 리소스들은 마지막으로 정상 마무리가 된 시점의 상태로 돌아간다.

일반적으로 복구 시점은 태스크를 시작하기 전이지만, SYNCPOINT 명령어를 통해 사용자가 복구 시점을 임의로 지정할 수 있다. 이러한 복구 시점을 기준으로 프로그램의 흐름이 논리적으로 나뉜 구간을 UOW(Unit of Work) 또는 LUW(Logical Unit of Work)라 부른다.

SYNCPOINT 명령어를 실행하면 현재 구간에 일어난 모든 작업을 커밋한 뒤 새로운 UOW를 시작한다. SYNCPOINT ROLLBACK 명령어는 현재 구간에서 일어난 모든 복구 가능한 리소스 변경 내용을 롤백한 뒤 새로운 UOW를 시작한다.

RETURN 명령어로 프로그램이 종료하는 경우 자동으로 커밋이 이루어진다. ABEND 명령어로 프로그램을 종료하거나 예외 조건이 발생하여 비정상 종료하는 경우 사용한 복구 가능한 리소스들은 롤백된다.

OSC 시스템의 모든 리소스들이 복구가 가능한 것은 아니다. OSC 시스템에서 복구 기능을 지원하는 리소스는 다음과 같다.

  • 파일

  • TSQ(Temporary Storage Queue)

  • TDQ(Transient Data Queue)

  • DL/I 데이터베이스

  • START 명령어의 PROTECT 옵션을 통한 요청

파일은 기본적으로 복구가 가능하고, TSQ, TDQ는 시스템 관리자가 리소스 정의에 설정한 내용에 따라 복구 여부를 결정할 수 있으며, DL/I 데이터베이스는 HiDB의 특성상 복구가 가능하다.

리소스 복구 명령어

다음은 리소스 복구를 위한 명령어의 목록이다. 각 명령어에 대한 자세한 설명은 해당 절을 참고한다.

명령어 설명

SYNCPOINT

이전 SYNCPOINT 지점 이후 수정된 모든 복구 가능한 리소스를 커밋한다.

SYNCPOINT ROLLBACK

이전 SYNCPOINT 지점 이후 수정된 모든 복구 가능한 리소스를 롤백한다.

5.1. SYNCPOINT

복구 가능한 리소스를 커밋한다. 태스크를 UOW로 나누어 이전 SYNCPOINT 지점 이후 수정된 모든 복구 가능한 리소스들을 커밋하며, 별도의 옵션은 없다.

  • 문법

    EXEC CICS SYNCPOINT END-EXEC.

5.2. SYNCPOINT ROLLBACK

복구 가능한 리소스 롤백을 위한 명령어이다. 태스크를 UOW로 나누어 이전 SYNCPOINT 지점 이후 수정된 모든 복구 가능한 리소스들을 롤백하며, 별도의 옵션은 없다.

  • 문법

    EXEC CICS SYNCPOINT ROLLBACK END-EXEC.

6. 내장(Built-in) 함수

OSC 시스템은 DEEDIT, DIGEST 기능을 내장 함수 명령어로 제공한다. DEEDIT 기능은 EBCDIC 데이터 필드 내의 알파벳 및 특수 캐릭터를 제거하고 나머지 숫자들을 오른쪽 나열시키면서 왼쪽 빈 공간을 0으로 채우는 기능이다. 그리고 DIGEST 기능은 문자열 데이터의 SHA-1 HASH 값을 계산해 주는 기능이다.

다음은 리내장 함수 명령어의 목록이다. 각 명령어에 대한 자세한 설명은 해당 절을 참고한다.

명령어 설명

BIF DEEDIT

Deediting을 처리한다.

BIF DIGEST

SHA-1 값을 계산한다.

6.1. BIF DEEDIT

Deediting을 처리한다.

  • 문법

    EXEC CICS BIF DEEDIT [option …] END-EXEC.
  • 옵션

    옵션 설명

    FIELD

    편집할 필드를 지정한다.

    LENGTH

    편집할 길이를 지정한다.

6.2. BIF DIGEST

-1 값을 계산한다.

  • 문법

    EXEC CICS BIF DIGEST [option …] END-EXEC.
  • 옵션

    옵션 설명

    BASE64

    BASE64 인코딩은 28Bytes 길이의 결과를 생성한다.

    RECORD

    SHA-1 해시 값을 계산할 문자열을 지정한다.

    RECORDLEN

    지정된 문자열의 길이를 지정한다.

    RESULT

    BASE64 형식으로 문자열 데이터의 SHA-1 해시 값을 반환한다.

    BINARY, DIGESTTYPE, HEX은 지원하지 않는 옵션이지만 파싱을 위해 지원한다.