OSC 관리 서비스

본 장에서는 프로그램, 인터벌 등을 제어하는 OSC 관리 서비스에 대해 기술한다.

1. 개요

EXEC CICS 인터페이스에서는 프로그램 수행, 업무 흐름 제어, 데이터의 임시 저장이나 프로그램 사이의 데이터 공유 등의 작업을 지원하는 다음과 같은 프로그래밍 서비스들을 제공한다.

2. 프로그램 제어

OSC 애플리케이션은 하나 혹은 여러 프로그램들의 조합으로 이루어진다. 프로그램 제어 서비스는 하나의 OSC 프로그램에서 다른 프로그램을 연결하거나 제어권을 전달, 반환하는 기능을 제공한다.

  1. 프로그램 컴파일 및 배포에 대한 자세한 내용은 OpenFrame OSC "운영자 안내서"를 참고한다.

  2. OSC 애플리케이션 서버는 다른 서버에 위치한 연결된 프로그램을 실행할 수 있는 기능도 제공하는데 이에 대한 자세한 내용은 DPL을 참고한다.

프로그램 제어 명령어

다음은 프로그램 제어 명령어의 목록이다. 각 명령어에 대한 자세한 설명은 해당 절을 참고한다.

명령어 설명

INQUIRE PROGRAM

Region에 설치된 특정 프로그램, 맵 셋 또는 파티션 셋에 대한 정보를 반환한다.

LINK

현재 수행 중인 프로그램에서 다른 프로그램을 연결한다.

LOAD

응용 프로그램, 테이블 또는 맵의 사본을 태스크에서 사용할 수 있도록 한다.

RELEASE

RELEASE는 이전에 LOAD 명령으로 로드된 프로그램, 테이블 또는 맵을 해제한다.

RETURN

현재 수행 중인 프로그램을 종료하고 이전에 수행했던 프로그램으로 제어권을 돌려준다.

SET PROGRAM

시스템에 설치된 특정 프로그램, 맵 셋 또는 파티션 셋의 정의를 수정한다.

XCTL

현재 수행 중인 프로그램을 종료하고 다른 프로그램을 연결한다.

2.1. INQUIRE PROGRAM

Region에 설치된 특정 프로그램, 맵 셋 또는 파티션 셋에 대한 정보를 반환한다.

  • 문법

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

    옵션 설명

    END

    Browsing을 중지한다.

    HOLDSTATUS

    모듈의 복사본이 로드되었는지 여부를 반환한다.

    LANGUAGE

    프로그램 언어를 반환한다.

    NEXT

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

    PROGRAM

    프로그램, 맵 셋, 파티션 셋의 이름을 최대 8글자까지 지정한다.

    REMOTENAME

    REMOTESYSTEM 옵션에서 지정된 OSC Region 이름 8글자를 반환한다.

    REMOTESYSTEM

    OSC Region의 4글자 이름을 반환한다.

    START

    Browsing을 시작한다.

    STATUS

    모듈을 사용할 수 있는지 여부를 반환한다.

    TRANSID

    원격으로 실행되는 모듈하의 트랜잭션 이름 4글자를 반환한다.

    APIST, CEDFSTATUS, CHANGEAGENT, CHANGEAGREL, CHANGETIME, CHANGEUSRID, COBOLTYPE, COPY, CONCURRENCY, DATALOCATION, DEFINESOURCE, DEFINETIME, DYNAMSTATUS, ENTRYPOINT, EXECKEY, EXECUTIONSET, INSTALLAGENT, INSTALLTIME, INSTALLUSRID, JVMCLASS, JVMPROFILE, JVMSERVER, LANGDEDUCED, LENGTH, LIBRARY, LIBRARYDSN, LOADPOINT, LPASTATUS, PROGTYPE, RESCOUNT, RUNTIME, SHARESTATUS, USECOUNT은 지원하지 않는 옵션이다.

현재 수행 중인 프로그램에서 다른 프로그램을 연결한다.

대상이 되는 프로그램은 시스템에 의하여 자동으로 메모리에 로딩 및 실행된다. 잠시 대상 프로그램에 전달되었던 프로그램 제어권은 대상 프로그램의 실행이 완료되면 LINK 명령을 호출한 프로그램으로 되돌아온다. 제어권이 돌아온 뒤에는 EXEC CICS LINK 명령어 다음에 오는 프로그램 내용이 실행된다.

필요하다면 명령어 옵션을 사용하여 연결 대상이 되는 프로그램에 데이터를 전달할 수도 있다.

  • 문법

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

    옵션 설명

    CHANNEL

    대상 프로그램으로 전달할 채널 이름을 지정한다.

    COMMAREA

    대상 프로그램으로 전달할 데이터 저장소를 지정한다.

    DATALENGTH

    실제 전달할 COMMAREA 저장소의 데이터 길이를 지정한다.

    INPUTMSG

    대상 프로그램에서 첫 RECEIVE 명령어를 통해 받을 데이터를 지정한다.

    INPUTMSGLEN

    INPUTMSG에 전달할 길이를 지정한다.

    LENGTH

    COMMAREA 길이를 지정한다.

    PROGRAM

    대상 프로그램 이름을 지정한다.

    SYSID

    대상 프로그램이 있는 시스템의 식별자를 지정한다.

    SYNCONRETURN

    미러 트랜잭션에서 프로그램을 실행 후 SYNCPOINT 처리를 하도록 지정한다.

    TRANSID

    미러 트랜잭션명을 지정한다. 해당 미러트랜잭션의 프로그램은 DFHMIRS로 지정해야 한다.

LINK 뿐만 아니라 BATCH의 MTPBATCH의 다음 명령어를 이용해서 프로그램을 수행시킬 수 있다.

LINK <프로그램명>

2.3. LOAD

응용 프로그램, 테이블 또는 맵의 사본을 태스크에서 사용할 수 있도록 한다.

  • 문법

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

    옵션 설명

    ENTRY

    로드된 프로그램의 Entry Point 주소 포인터를 지정한다.

    FLENGTH

    로드된 프로그램, 테이블 또는 맵의 길이로 설정될 영역을 풀워드 이진 값으로 지정한다.

    HOLD

    LOAD 명령을 발행하는 태스크가 종료될 때 로드된 프로그램, 테이블 또는 맵이 릴리즈되지 않도록 지정한다.

    LENGTH

    로드된 프로그램, 테이블 또는 맵의 길이로 설정될 영역을 하프워드 이진 값으로 지정한다.

    PROGRAM

    로드할 프로그램, 테이블 또는 맵의 식별자를 지정한다.

    SET

    프로그램, 테이블 또는 맵이 로드될 주소의 포인터를 지정한다.

2.4. RELEASE

RELEASE는 이전에 LOAD 명령으로 로드된 프로그램, 테이블 또는 맵을 해제한다.

  • 문법

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

    옵션 설명

    PROGRAM

    해제할 프로그램, 테이블 또는 맵의 식별자를 지정한다.

2.5. RETURN

현재 수행 중인 프로그램을 종료하고 이전에 수행했던 프로그램으로 제어권을 돌려준다. 제어권을 돌려줄 대상이 없는 경우 애플리케이션 서버로 제어권이 돌아간다.

  • 문법

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

    옵션 설명

    CHANNEL

    다음에 실행될 프로그램에서 사용할 채널명을 지정한다.

    COMMAREA

    TRANSID에 설정된 트랜잭션의 프로그램에서 전달받을 데이터 저장소 이름을 지정한다.

    IMMEDIATE

    현재 터미널과 관련하여 어떤 트랜잭션이 대기 상태에 있더라도, TRANSID에 설정된 트랜잭션이 먼저 실행된다.

    INPUTMSG

    다음에 연결되는 프로그램에서 첫 RECEIVE 명령어에서 받을 데이터를 지정한다.

    INPUTMSGLEN

    INPUTMSG에 전달할 길이를 지정한다.

    LENGTH

    COMMAREA 길이를 지정한다.

    TRANSID

    해당 터미널에서 다음 터미널 입력을 받을 경우 실행되는 트랜잭션 ID이다.

    개방형 환경의 운영 체제의 특성으로 인해 OSC 시스템은 프로그램을 연결할 때 디스크에서 메모리로 바로 리소스가 로딩되는 작동 구조를 갖고 있다. 프로그램 로딩 및 릴리즈를 위한 LOAD 및 RELEASE 명령어는 내부적으로 아무런 작업을 수행하지 않는다.

2.6. SET PROGRAM

시스템에 설치된 특정 프로그램, 맵 셋 또는 파티션 셋의 정의를 수정한다.

  • 문법

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

    옵션 설명

    PROGRAM

    변경할 프로그램, 맵 셋 또는 파티션 셋의 이름을 지정한다.

    STATUS

    모듈을 사용할 수 있는지 여부를 지정한다. 그 값은 DISABLED, ENABLED가 존재한다.

    1. COPY, EXECUTIONSET, JVMCLASS, JVMPROFILE, RUNTIME, SHARESTATUS, VERSION은 지원하지 않는 옵션이다.

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

    3. SET PROGRAM 뿐만 아니라 BATCH의 MTPBATCH의 다음 명령어를 이용하여 STATUS를 변경할 수 있다.

    CEMT SET PROG<프로그램명> DIS | ENA

2.7. XCTL

현재 수행 중인 프로그램을 종료하고 다른 프로그램을 연결한다. 대상 프로그램에서 RETURN을 호출하더라도 LINK 명령어와 달리 호출한 프로그램으로 제어권이 돌아가지 않는다.

  • 문법

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

    옵션 설명

    CHANNEL

    대상 프로그램으로 전달할 채널 이름을 지정한다.

    COMMAREA

    대상 프로그램으로 전달할 데이터 저장소를 지정한다.

    LENGTH

    COMMAREA 길이를 지정한다.

    INPUTMSG

    다음에 연결되는 프로그램에서 첫 RECEIVE 명령어에서 받을 데이터를 지정한다.

    INPUTMSGLEN

    INPUTMSG에 전달할 길이를 지정한다.

    PROGRAM

    대상 프로그램 이름을 지정한다.

3. 인터벌 제어

OSC 인터벌 제어 서비스는 OSC 애플리케이션에서 시간과 관련된 프로그램 제어 기능을 제공하는 서비스이다. 인터벌 제어 서비스를 이용해서 일정 시간 후에 새로운 트랜잭션을 시작시키거나 일정 시간이 지날 때까지 프로그램 수행을 잠시 중단할 수 있다. 또한 인터벌 제어 서비스는 이전에 요청된 인터벌 제어 명령어를 취소시키는 기능을 함께 제공한다.

인터벌 제어 명령어는 시간 관련 명령어와 START 관련 명령어로 구분된다.

  • 시간 관련 명령어

    다음은 인터벌 제어 명령어 중 시간 관련 명령어의 목록이다. 각 명령어에 대한 자세한 설명은 해당 절을 참고한다.

    명령어 설명

    ASKTIME

    현재 날짜와 시간 정보를 가져온다.

    CANCEL

    DELAY 또는 START 명령어의 요청을 취소한다.

    FORMATTIME

    ASKTIME 명령어로 받아온 날짜 및 시간 정보, 또는 EIBDATE 및 EIBTIME에 저장된 날짜 및 시간을 사용자가 원하는 포맷으로 변환한다.

    INQUIRE REQID

    START, DELAY 명령어로 대기 중인 요청에 대한 정보를 반환한다.

    RETRIEVE

    START 명령어로 기동된 트랜잭션이 START 명령어의 각종 옵션을 통하여 넘겨진 데이터를 받아온다.

  • START 관련 명령어

    다음은 인터벌 제어 명령어 중 START 관련 명령어의 목록이다. 각 명령어에 대한 자세한 설명은 해당 절을 참고한다.

    명령어 설명

    DELAY

    특정 시각까지 또는 기간 동안 태스크의 실행을 지연시킨다.

    START

    특정 트랜잭션을 지정한 시각에 실행할 것을 시스템에 요청한다.

3.1. ASKTIME

현재 날짜와 시간 정보를 가져온다. 해당 정보는 EIB 필드 중 EIBTIME, EIBDATE에 저장이 된다. 시스템의 절대 시간(Absolute Time) 값으로 가져오는데, 이는 사람이 알아보기 힘든 값이므로 ASKTIME 명령어 이후에 FORMATTIME 명령어를 사용하여 원하는 포맷으로 시간 정보를 가져올 것을 권장한다.

  • 문법

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

    옵션 설명

    ABSTIME

    OSC 시스템이 관리하는 시간 정보에 대한 복사본이 ABSTIME 옵션에 의해 지정된 변수에 저장된다.

3.2. CANCEL

DELAY 또는 START 명령어의 요청을 취소한다. DELAY 명령어에서 연기 요청된 시간이 지났거나 START 명령어에서 요청한 기동 시각이 지난 요청은 취소가 불가능하다.

  • 문법

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

    옵션 설명

    REQID

    취소할 REQID를 지정한다.

    SYSID

    CANCEL 명령어를 수행할 원격 서버를 지정한다.

    TRANSID

    트랜잭션명을 지정한다.

3.3. DELAY

특정 시각까지 또는 기간 동안 태스크의 실행을 지연시킨다.

  • 문법

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

    옵션 설명

    FOR

    바이너리 값으로 지연 기간을 지정한다.

    • HOURS

    • MINUTES

    • SECONDS

    • MILLISECS

    INTERVAL

    태스크가 지연될 기간을 지정한다. (Packed Decimal)

    REQID

    요청에 대한 식별자를 지정한다.

    REQID를 참조하여 만기되지 않은 DELAY 요청에 대해 CANCEL이 가능하다.

    TIME

    태스크가 지연이 종료될 시각을 지정한다. (Packed Decimal)

    UNTIL

    바이너리 값으로 지연이 종료될 시각을 지정한다.

    • HOURS

    • MINUTES

    • SECONDS

3.4. FORMATTIME

ASKTIME 명령어로 받아온 날짜 및 시간 정보, 또는 EIBDATE 및 EIBTIME에 저장된 날짜 및 시간을 사용자가 원하는 포맷으로 변환한다.

  • 문법

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

    옵션 설명

    ABSTIME

    절대 날짜 및 시간(Absolute Date/Time) 포맷을 지정한다.

    DATE

    날짜 형태로 반환한다.

    DATEFORM

    MMDDYY로 반환한다.

    DATESEP

    YEAR 및 MONTH, MONTH 및 DAY 사이에 구분자를 넣거나, YYDDD와 같은 옵션에서 YEAR과 DAY 사이에 구분자를 넣을 때 구분자 지정이 가능하다. 구분자 값 없이 옵션이 설정되면 슬래시(/)가 기본 구분자가 된다.

    DAYCOUNT

    1900년 1월 1일 이후 날짜 수를 반환한다.

    DAYOFMONTH

    현재 달의 날짜 수를 반환한다.

    DAYOFWEEK

    현재 주의 상대적인 날짜 수를 반환한다.

    (SUNDAY는 0, MONDAY는 1,…, SATURDAY는 6)

    DDMMYY

    DAY/MONTH/YEAR(마지막 2자리)로 날짜를 반환한다.

    DAY, MONTH, YEAR 사이에 구분자가 포함된다.

    DDMMYYYY

    DAY/MONTH/YEAR(4자리)로 날짜를 반환한다.

    DAY, MONTH, YEAR 사이에 구분자가 포함된다.

    FULLDATE

    DATEFORM에 기반하여 YEAR 부분이 4자리로 반환한다.

    MILLISECONDS

    ABSTIME에 의해 지정된 현재 초의 밀리초 수를 0~999 범위의 이진 정수로 반환한다.

    MMDDYY

    MONTH/DAY/YEAR(마지막 2자리)로 날짜를 반환한다.

    MONTH, DAY, YEAR 사이에 구분자가 포함된다.

    MMDDYYYY

    MONTH/DAY/YEAR(4자리)로 날짜를 반환한다.

    MONTH, DAY, YEAR 사이에 구분자가 포함된다.

    MONTHOFYEAR

    해당 년도의 달 수를 반환한다.

    TIME

    hh:mm:ss 형태로 시간 정보를 반환한다.

    구분자 디폴트(TIMESEP 옵션으로 구분자 변경 가능)로 콜론(:)을 사용한다.

    TIMESEP

    TIME 옵션에서 반환될 시간 포맷의 구분자를 지정한다.

    YEAR

    4자리로 YEAR 정보를 반환한다.

    YYDDMM

    YEAR(마지막 2자리)/DAY/MONTH로 날짜를 반환한다.

    YEAR, DAY, MONTH 사이에 구분자가 포함된다.

    YYMMDD

    YEAR(마지막 2자리)/MONTH/DAY로 날짜를 반환한다.

    YEAR, MONTH, DAY 사이에 구분자가 포함된다.

    YYYYDDD

    YEAR(4자리)/DAY로 날짜를 반환한다.

    DAY는 해당 년도의 날짜 수를 의미한다. YEAR, DAY 사이에 구분자가 포함된다.

    YYYYDDMM

    YEAR(4자리)/DAY/MONTH로 날짜를 반환한다.

    YEAR, DAY, MONTH 사이에 구분자가 포함된다.

    YYYYMMDD

    YEAR(4자리)/MONTH/DAY로 날짜를 반환한다.

    YEAR, MONTH, DAY 사이에 구분자가 포함된다.

    YYDDD

    YEAR(마지막 2자리)/DAY로 날짜를 반환한다.

    DAY는 해당 년도의 날짜 수를 의미한다. YEAR, DAY 사이에 구분자가 포함된다.

3.5. INQUIRE REQID

트랜잭션 클래스 및 클래스 내의 현재 Activity에 대하여 정의된 한계를 파악한다.

  • 문법

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

    옵션 설명

    REQID

    조회하려는 요청의 8바이트 식별자를 지정한다.

    TERMID

    요청을 생성한 START 명령어의 TERMID 옵션에 지정된 4자리 터미널 식별자를 반환한다.

    TIME

    INQUIRE 명령 이전 자정부터 측정된 절대값으로 만료 시간을 반환한다.

    TRANSID

    요청을 생성한 명령어의 TRANSID 옵션에 지정된 4자리 트랜잭션 이름을 반환한다.

    AFTER, AT, FMHSTATUS, HOURS, INTERVAL, LENGTH, MINUTES, QUEUE, REQTYPE, RTERMID, RTRANSID, SECONDS, SET, USERID는 지원하지 않는 옵션이다.

3.6. RETRIEVE

START 명령어로 기동된 트랜잭션이 START 명령어의 각종 옵션을 통하여 넘겨진 데이터를 받아온다.

  • 문법

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

    옵션 설명

    INTO

    받을 데이터의 저장소를 지정한다.

    LENGTH

    데이터 저장소의 길이를 지정한다.

    QUEUE

    START 명령어의 QUEUE 옵션으로 전달된 값이다.

    RTERMID

    START 명령어의 RTERMID 옵션으로 전달된 값이다.

    RTRANSID

    START 명령어의 RTRANSID 옵션으로 전달된 값이다.

    SET

    받을 데이터가 저장된 장소의 포인터 참조값을 지정한다.

    WAIT은 지원하지 않는 옵션이지만 파싱을 위해 지원한다.

3.7. START

특정 트랜잭션을 지정한 시각에 실행할 것을 시스템에 요청한다.

  • 문법

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

    옵션 설명

    AFTER

    일정 시간 후에 시작될 것인지 지정한다.

    • HOURS

    • MINUTES

    • SECONDS

    AT

    시작될 시각을 지정한다.

    • HOURS

    • MINUTES

    • SECONDS

    CHANNEL

    START될 태스크로 전달할 CHANNEL의 이름을 지정한다. CHANNEL 옵션은 FROM 옵션과 같이 사용할 수 없다.

    FROM

    START될 태스크에서 RETRIEVE 명령어로 받을 데이터 영역을 지정한다.

    INTERVAL

    태스크가 시작될 기간을 지정한다. (Packed Decimal)

    LENGTH

    FROM 옵션으로 전달할 데이터의 길이를 지정한다.

    NOCHECK

    트랜잭션을 시작할 때 응답을 받지 않도록 지정한다. 원격 시스템에서 시작된 작업에 대해서는 오류 조건이 반환되지 않는다.

    QUEUE

    START 요청으로 사용될 큐 이름을 지정한다.

    REQID

    요청에 대한 식별자를 지정한다. 만기되지 않은 START 요청에 대해 CANCEL이 가능하다. REQID 옵션을 지정하지 않는 경우 OSC 애플리케이션 서버가 새로운 요청 식별자를 생성하고, 사용자는 명령어의 성공적인 실행 후 EIBREQID 항목으로 요청 식별자 값을 받아올 수 있다.

    PROTECT

    Syncpoint에 따라 요청 처리 유무를 선택하는 옵션이다.

    PROTECT 옵션을 사용하는 경우 '0xFC’로 시작되는 8자의 REQID가 반환되고, 사용하지 않는 경우 ‘DF’로 시작되는 8자의 REQID가 반환된다.

    RTERMID

    TRANSID에 지정된 트랜잭션이 기동된 경우 RETRIEVE 명령어에서 받을 터미널 식별자를 지정한다.

    RTRANSID

    TRANSID에 지정된 트랜잭션이 기동된 경우 RETRIEVE 명령어에서 받을 트랜잭션 식별자를 지정한다.

    SYSID

    요청할 원격 애플리케이션 서버를 지정한다.

    TERMID

    START 요청할 트랜잭션의 터미널 이름을 지정한다.

    TIME

    태스크가 시작될 시각을 지정한다. (Packed Decimal)

    TRANSID

    START 요청할 트랜잭션 이름을 지정한다.

    USERID

    START 요청할 트랜잭션의 사용자 식별자를 지정한다.

    1. ATTACH은 지원하지 않는 옵션이지만 파싱을 위해 지원한다.

    2. START 뿐만 아니라 BATCH의 MTPBATCH의 다음 명령어를 이용하여 트랜잭션을 수행시킬 수 있다.

    CEMT STAR <트랜잭션명> [ <터미널명> <ll data> ]

4. 태스크 제어

OSC 애플리케이션은 일반적으로 클라이언트의 트랜잭션 요청에 의하여 실행된다. 트랜잭션 요청으로 인해 서버는 일련의 작업을 처리하는데, 이러한 일련의 작업을 태스크라고 한다. OSC 애플리케이션 서버는 다수의 서버 프로세스를 활용하여 태스크를 병렬적으로 처리한다. 사용자는 여러 태스크가 동시에 같은 리소스에 접근하는 일을 업무적으로 제어하기 위해 리소스를 중심으로 태스크들을 순번화시킬 수 있다.

해당 내용의 예제는 다음과 같다.

  1. 태스크 T가 ENQ 명령어로 특정 이름의 리소스 R을 선점한다.

  2. 다른 태스크 U가 리소스 R을 선점하기 위해 ENQ 명령어를 실행한다.

  3. 태스크 T가 리소스 R을 선점하고 있기 때문에 태스크 U는 대기 상태로 남는다.

  4. 태스크 T가 DEQ 명령어로 리소스 R에 대한 선점을 해제한다.

  5. 태스크 U가 대기 상태에서 빠져 나와 리소스 R을 선점한다.

ENQ 명령어로 선점된 리소스는 사용자가 직접 DEQ 명령어를 호출하지 않아도 해당 UOW 또는 태스크가 끝날 때 자동으로 해제된다. 이 선점 지속 시간은 ENQ 명령어의 옵션으로 지정할 수 있다. 현재 OSC 애플리케이션 서버는 ENQ 명령어를 통한 리소스 선점이 리소스 이름으로만 가능하므로 LENGTH 옵션을 필수적으로 지정해야 한다.

태스크 제어 명령어

다음은 태스크 제어 명령어의 목록이다. 각 명령어에 대한 자세한 설명은 해당 절을 참고한다.

명령어 설명

DEQ

리소스 선점을 해제한다.

ENQ

리소스에 대한 선점을 요청한다.

INQUIRE TASK

특정 사용자 테스크에 대한 정보를 반환한다.

INQUIRE TASK LIST

사용자 태스크 목록을 반환한다. 사용자 태스크는 일반적으로 운영자가 호출하는 OSC 제공 트랜잭션 또는 사용자 정의 트랜잭션과 연관된 태스크이다.

INQUIRE TRANCLASS

트랜잭션 클래스 및 클래스 내의 현재 Activity에 대하여 정의된 한계를 파악한다.

INQUIRE TRANSACTION

시스템에 설치된 특정 트랜잭션에 대한 정보를 검색한다.

SET TRANCLASS

특정 트랜잭션 클래스 내에서 관리가능한 작업의 한계를 변경할 수 있다.

SET TRANSACTION

트랜잭션 정의의 일부 속성을 변경할 수 있다.

4.1. DEQ

리소스 선점을 해제한다.

  • 문법

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

    옵션 설명

    RESOURCE

    ENQ 명령어로 선점한 리소스 이름을 지정한다.

    LENGTH

    리소스 이름으로 선점한 경우 리소스 이름의 길이를 지정한다.

    UOW|TASK|MAXLIFETIME

    리소스 선점할 때 지정한 옵션과 동일한 값을 지정한다.

4.2. ENQ

리소스에 대한 선점을 요청한다.

  • 문법

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

    옵션 설명

    LENGTH

    리소스 이름으로 선점할 경우 리소스 이름의 길이를 지정한다.

    NOSUSPEND

    다른 사용자가 리소스를 사용하고 있으면 기다리지 않고 ENQBUSY 상태로 남는다.

    RESOURCE

    선점하려는 리소스 이름을 지정한다.

    UOW|TASK|MAXLIFETIME

    • UOW, TASK : UOW 또는 TASK 단위의 리소스 선점 지속 시간을 지정한다.

    • MAXLIFETIME : CVDA 값을 이용하여 지속 기간을 지정한다.

4.3. INQUIRE TASK

특정 사용자 테스크에 대한 정보를 반환한다.

  • 문법

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

    옵션 설명

    ATTACHTIME

    작업이 첨부된 시간을 ABSTIME 형식의 8Bytes Packed-decimal 값으로 반환한다.

    END

    Browsing을 중지한다.

    FACILITY

    만약 Facility가 TDQ, Terminal 혹은 System인 경우 이 작업의 초기화와 관련된 Facility의 이름을 반환한다.

    NEXT

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

    START

    Browsing을 시작한다.

    TASK

    질의할 태스크의 4Bytes Packed-decimal 시퀀스 번호를 지정한다.

    TRANSACTION

    태스크가 실행 중인 트랜잭션의 4글자 이름을 반환한다.

    PROGRAM

    태스크가 처음 실행된 프로그램의 8글자 이름을 반환한다.

    USERID

    태스크와 연결된 사용자의 ID를 반환한다.

    REMOTESYSTEM

    태스크를 실행 중인 TRANSACTION의 정의의 REMOTESYSTEM 옵션의 4글자 이름을 반환한다. TRANSACTION 정의가 REMOTESYSTEM을 지정하지 않으면 공백을 반환한다.

    ACTIVITYID, BRFACILITY, BRIDGE, CMDSEC, CURRENTPROG, DB2PLAN, DTIMEOUT, DUMPING, FACILITYTYPE, IDENTIFER, INDOUBT, INDOUBTMINS, INDOUBTWAIT, IPFACILITIES, IPFLISTSIZE, ISOLATEST, PRIORITY, PROCESS, PROCESSTYPE, PROFILE, PURGEABILITY, REMOTENAME, RESNAME, RESSEC, ROUTING, RTIMEOUT, RUNAWAY, ROUTING, SCRNSIZE, STARTCODE, STORAGECLEAR, SUSPENDTIME, SUSPENDTYPE, SUSPENDVALUE, TASKDATAKEY, TASKDATALOC, TCB, TCLASS, TRACING, TRANCLASS, TRANPRIORITY, TRPROF, TWASIZE, UOW은 지원하지 않는 옵션이다.

4.4. INQUIRE TASK LIST

사용자 태스크 목록을 반환한다. 사용자 태스크는 일반적으로 운영자가 호출하는 OSC 제공 트랜잭션 또는 사용자 정의 트랜잭션과 연관된 태스크이다.

  • 문법

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

    옵션 설명

    LISTSIZE

    조회하려는 카테고리의 작업 수를 반환한다.

    SET

    4Bytes Packed-decimal 형태의 태스크 번호 목록의 주소를 반환한다.

    SETTRANSID

    4Bytes 트랜잭션 식별자 목록의 주소를 반환한다.

    DISPATCHABLE

    실행할 준비된 태스크가 태스크 목록에 포함되도록 지정한다.

    RUNNING

    실행 중인 태스크가 태스크 목록에 포함되도록 지정한다.

    SUSPENDED

    일시 중단된 태스크가 태스크 목록에 포함되도록 지정한다.

4.5. INQUIRE TRANCLASS

트랜잭션 클래스 및 클래스 내의 현재 Activity에 대하여 정의된 한계를 파악한다.

  • 문법

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

    옵션 설명

    ACTIVE

    클래스 안에서의 태스크의 현재 수를 반환한다.

    END

    Browsing을 중지한다.

    MAXACTIVE

    동시에 실행할 수 있는 트랜잭션 클래스의 최대 태스크 수를 반환하다.

    NEXT

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

    PURGETHRESH

    초기 Dispatch의 대기 가능 최대 태스크의 수를 반환한다.

    QUEUED

    초기 Dispatch의 대기 중인 태스크의 수를 반환한다.

    START

    Browsing을 시작한다.

    TRANCLASS

    질의할 트랜잭션 클래스의 8글자 이름을 지정한다.

    CHANGEAGENT, CHANGEAGREL, CHANGETIME, CHANGEUSRID, DEFINESOURCE, DEFINETIME, INSTALLAGENT, INSTALLTIME, INSTALLUSRID은 지원하지 않는 옵션이다.

4.6. INQUIRE TRANSACTION

OSC 시스템에 설치된 특정 트랜잭션에 대한 정보를 검색한다.

  • 문법

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

    옵션 설명

    END

    Browsing을 중지한다.

    NEXT

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

    PROGRAM

    트랜잭션을 실행하는 작업에서 호출한 첫 번째 프로그램의 이름을 반환한다.

    REMOTENAME

    REMOTESYSTEM 옵션에서 지정된 OSC Region 이름 8글자를 반환한다.

    REMOTESYSTEM

    OSC Region의 4글자 이름을 반환한다.

    RESSEC

    트랜잭션을 실행하는 작업에 대해 리소스 수준 보안 검사를 수행하는지 여부를 반환한다.

    SHUTDOWN

    요청되지 않은 입력을 처리하는 태스크에 의해 OSC 종료 중에 트랜잭션을 실행할 수 있는지 여부를 반환한다.

    START

    Browsing을 시작한다.

    TCLASS

    태스크가 번호가 지정된 클래스에 속한 경우 트랜잭션이 속한 트랜잭션 클래스의 번호를 반환한다.

    TRANCLASS

    트랜잭션이 속한 트랜잭션 클래스의 8글자 이름을 반환한다.

    TRANSACTION

    조회 중인 트랜잭션 정의의 4글자 이름을 지정한다.

    TWASIZE

    트랜잭션 작업 영역(TWA)의 크기를 반환한다.

    STATUS

    트랜잭션의 ENALBED, DISABLED 상태를 반환한다.

    BREXIT, CHANGEAGENT, CHANGEAGREL, CHANGETIME, CHANGEUSRID, CMDSEC, DEFINESOURCE, DEFINETIME, DTIMEOUT, DUMPING, FACILITYLIKE, INDOUBTWAIT, INSTALLAGENT, INSTALLTIME, INSTALLUSRID, ISOLATEST, PRIORITY, OTSTIMEOUT, PROFILE, PURGEABILITY, ROUTING, ROUTESTATUS, RTIMEOUT, RUNAWAY, RUNAWAYTYPE, SCRNSIZE, STORAGECLEAR, TASKDATAKEY, TASKDATALOC, TRACING, TRPROF, INDOUBT, INDOUBTMINS은 지원하지 않는 옵션이다.

4.7. SET TRANCLASS

특정 트랜잭션 클래스 내에서 관리가능한 작업의 한계를 변경할 수 있다.

  • 문법

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

    옵션 설명

    TRANCLASS

    변경할 트랜잭션 클래스의 8글자 이름을 지정한다.

    MAXACTIVE

    트랜잭션 클래스에서 동시에 실행시킬 태스크의 최대 수를 지정한다.

    PURGETHRESH

    초기 Dispatch의 대기 가능 최대 태스크의 수에 하나 많은 값을 지정한다.

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

4.8. SET TRANSACTION

트랜잭션 정의의 일부 속성을 변경할 수 있다.

  • 문법

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

    옵션 설명

    SHUTDOWN

    요청되지 않은 입력을 처리하는 태스크에 의해 OSC 종료 중에 트랜잭션을 실행할 수 있는지 여부를 지정한다.

    STATUS

    트랜잭션을 사용할 수 있는지 여부를 지정한다.

    TRANSACTION

    변경할 트랜잭션의 4글자 이름을 지정한다.

    TCLASS

    트랜잭션이 속할 트랜잭션 클래스의 값을 풀워드 이진 값으로 지정한다.

    TRANCLASS

    트랜잭션이 속할 트랜잭션 클래스의 8글자 이름을 지정한다.

    1. DUMPING, PRIORITY, PURGEABILITY, RUNAWAY, RUNAWAYTYPE, TRACING은 지원하지 않는 옵션이다.

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

    3. SET TRANSACTION 뿐만 아니라 BATCH의 MTPBATCH의 다음 명령어를 이용하여 STATUS를 변경할 수 있다.

    CEMT SET TRAN<트랜잭션명> DIS | ENA

4.9. CREATE TRANSACTION

트랜잭션 리소스를 동적으로 생성한다.

  • 문법

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

    옵션 설명

    TRANSACTION

    생성하려는 트랜잭션의 4글자 이름을 지정한다.

    ATTRIBUTES

    생성하려는 트랜잭션의 속성을 지정한다.

    ATTRIBUTES는 System Definition에 들어가는 속성을 그대로 입력하여 OSC의 RTSD에 생성하도록 한다.

    ATTRLEN

    ATTRIBUTES의 길이를 입력한다.

    LOG

    로그를 남기도록 설정한다.

    NOLOG

    로그를 남기지 않도록 설정한다.

    LOGMESSAGE

    로그를 남길지 여부를 설정한다.

    LOG, NOLOG, LOGMESSAGE은 지원하지 않는 옵션이다.

5. 동적 영역 제어

OSC 애플리케이션 서버는 애플리케이션 프로그램을 실행할 때 고정된 크기의 프로그램 로컬 영역(COBOL 프로그램의 경우 WORKING-STORAGE SECTION)을 할당하고, 프로그램은 이 영역을 활용하여 업무 로직을 구성한다. 하지만 업무 로직에 따라 동적 영역을 할당받아 사용하는 것이 더 효율적인 경우도 있다. 이를 위해 OSC 애플리케이션 서버는 프로그램이 메모리를 동적으로 할당받을 수 있는 기능을 제공한다. 할당받을 수 있는 메모리 저장 공간은 1Byte부터 정수형의 최대값까지 가능하다. 이 크기는 요청 시점의 시스템 상태에 제한받을 수 있다.

할당된 공간은 일반적으로 태스크 단위로 시스템에 자동 반환되지만, SHARED 옵션을 지정하면 태스크 종료 후에도 반환되지 않고, 태스크 간에 데이터를 주고받을 수 있는 공간으로 활용할 수 있다. SHARED 옵션을 사용하는 경우 CICS에서의 사용과는 차이가 있으므로 태스크 간 메모리 공유를 참고한다.

동적 영역 제어 명령어

다음은 동적 영역 제어의 명령어 목록이다. 각 명령어에 대한 자세한 설명은 해당 절을 참고한다.

명령어 설명

FREEMAIN

GETMAIN으로 할당받은 저장 공간을 사용자가 명시적으로 반환한다.

GETMAIN

동적으로 메모리 할당을 요청한다.

5.1. FREEMAIN

GETMAIN으로 할당받은 저장 공간을 사용자가 명시적으로 반환한다.

  • 문법

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

    옵션 설명

    DATA|DATAPOINTER

    다음 중 원하는 옵션을 선택한다.

    • DATA : 반환될 영역을 지정한다.

    • DATAPOINTER : 반환될 영역의 주소를 지정한다.

5.2. GETMAIN

동적으로 메모리 할당을 요청한다. 할당받은 메모리의 반환 시점은 SHARED 옵션의 유무에 따라 달라진다. SHARED 옵션을 지정하지 않으면 FREEMAIN 명령어를 호출하지 않더라도 태스크 종료 시점에 자동으로 반환된다. SHARED 옵션을 지정하면 사용자가 직접 FREEMAIN 명령어를 사용하여 메모리를 반환해야 한다.

  • 문법

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

    옵션 설명

    FLENGTH|LENGTH

    받아올 데이터 영역의 크기를 지정한다.

    INITIMG

    초기화값을 지정한다.

    SET

    할당될 포인터 참조값을 지정한다.

    SHARED

    사용자가 직접 FREEMAIN을 호출해야 반환되도록 지정한다.

    1. BELOW은 지원하지 않는 옵션이다.

    2. CICSDATAKEY, NOSUSPEND, USERDATAKEY은 지원하지 않는 옵션이지만 파싱은 지원한다.

태스크 간 메모리 공유

SHARED 옵션을 지정하여 GETMAIN 명령어로 받은 저장 공간은 태스크 간 데이터 전달을 위해 활용할 수 있다.

OSC 애플리케이션 서버의 각 태스크는 서로 다른 서버 프로세스에 의해 실행되기 때문에 현재 태스크에서 사용하는 메모리 주소를 다른 태스크에 전달하더라도 상대 태스크에서 동일한 메모리 공간의 접근을 보장할 수 없다. 동일한 메모리 공간에 접근하도록 하려면 ENCODEMAIN, DECODEMAIN 함수를 사용하여 메모리 주소를 변환하여 전달해야 한다.

  • ENCODEMAIN 함수

    ENCODEMAIN 함수는 GETMAIN 명령어로 받은 메모리 특정 주소를 다른 태스크에서 DECODMAIN 함수로 역변환해서 접근할 수 있도록 주소를 변환하는 역할을 수행한다. ENCODEMAIN 함수에 다른 프로세스와 공유하기 위한 메모리 블럭의 주소값과 상대 주소값을 받아올 정수 변수의 참조를 전달하면 ENCODEMAIN 함수는 받아온 주소 값을 상대 주소 값으로 변환해서 전달한 정수 변수에 넣어준다.

    ENCODEMAIN 함수의 사용 예제는 다음과 같다.

    . . .
           WORKING-STORAGE SECTION.
           01  PTR USAGE IS POINTER.
           01  OFFSET PIC S9(9) COMP.
    
           PROCEDURE DIVISION.
    . . .
           CALL "cics_encodemain" USING BY VALUE PTR
           BY REFERENCE OFFSET.
    . . .
  • DECODEMAIN 함수

    상대방 애플리케이션 프로그램에서는 시스템 저장소 등을 통해서 넘겨받은 상대 주소를 DECODEMAIN 함수를 사용해 변환한 후 해당 메모리에 접근한다. DECODEMAIN 함수에 메모리 주소를 받아올 변수의 참조와 정수 타입으로 된 상대 주소를 입력하면 DECODEMAIN 함수에서 받아온 상대 주소를 절대 주소로 변환해서 받아온 메모리 주소의 참조에 넣어준다.

    DECODEMAIN 함수의 사용 예제는 다음과 같다.

    . . .
           WORKING-STORAGE SECTION.
           01  PTR USAGE IS POINTER.
           01  OFFSET PIC S9(9) COMP.
    
           PROCEDURE DIVISION.
    . . .
           CALL "cics_decodemain" USING BY REFERENCE PTR
           BY VALUE OFFSET.
    . . .

6. 임시 저장 큐(TSQ)

TSQ(Temporary Storage Queue)는 사용자가 큐(queue) 형식의 데이터 구조에 데이터를 저장하거나 큐 데이터 전체를 삭제할 수 있도록 제공하는 리소스이다.

TSQ는 OSC 애플리케이션 서버가 미리 준비해 놓지 않고 큐의 첫 레코드 데이터가 작성될 때 생성된다. 따라서 이미 속성이 정의된 리소스들과 달리 큐가 생성될 때 각 큐의 개별 속성이 정해진다. 큐의 속성은 저장소와 복구 여부로 구분된다.

  • 저장소

    TSQ는 큐 데이터를 다른 대상 저장소(Destination)에서 관리한다는 특징이 있다.

    MAIN 또는 AUXILIARY 저장소는 다르지만 애플리케이션에서 사용하는 방법은 동일하다. 저장소에 대한 속성은 EXEC CICS WRITEQ TS 명령어에서 MAIN 또는 AUXILIARY 옵션을 설정하거나 TSMODEL 리소스 정의에 설정하여 지정할 수 있다. 그 밖의 경우에는 기본값으로 AUXILIARY가 지정된다. 이 기본값은 OpenFrame 환경설정에 osc.{servername} 서브젝트, TSQ 섹션의 DFLTDEST 키의 VALUE 항목을 MAIN으로 설정해서 변경할 수 있다.

    저장소 특징

    MAIN

    큐 내용은 서버 설정에 지정된 공유 메모리 영역에서 관리된다.

    시스템 공유 메모리에 구성이 되므로 TSAM 데이터셋을 사용하는 AUXILIARY 저장소보다 훨씬 빠른 I/O 성능을 제공한다.

    OpenFrame 환경설정에 osc.{servername} 서브젝트, TSQ 섹션의 MAINDEST 키의 VALUE 항목을 DB로 설정하면 큐 내용을 공유 메모리 영역에 저장하지 않고 DB에 저장할 수 있다. 이 기능은 멀티 노드 클러스터링을 구성하는 경우 사용할 수 있다.

    AUXILIARY

    큐 내용은 서버 설정에 지정된 QINFO, QDATA 등 두 TSAM 데이터셋을 이용하여 관리된다. 성능은 느리지만 트랜잭션 단위의 복구가 가능할 뿐만 아니라 시스템이 재기동할 때에도 이전 정보가 그대로 남아 있다. (기본값)

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

  • 복구 여부

    복구 여부 속성은 TSMODEL 리소스 정의에 의해 결정되는데, TSMODEL이 없는 경우에는 NON-RECOVERABLE로 설정된다. TSQ 리소스는 Function Shipping의 대상이므로, 한 애플리케이션 서버에서 작동하는 애플리케이션에서 다른 서버에 있는 TSQ에 접근하는 것이 가능하다.

    저장소 해당 큐

    RECOVERABLE

    AUXILIARY

    NON-RECOVERABLE

    MAIN, AUXILIARY

    TSQ 리소스에 대한 자세한 내용은 Function Shipping을 참고한다.

TSQ 및 TSMODEL 명령어

사용자는 애플리케이션 프로그램을 통하여 TSQ의 데이터를 읽고, 쓰고, 삭제할 수 있다. TSQ 이름은 최대 16Byte까지 지원한다. 8Byte까지는 QUEUE 옵션을 사용하여 이름을 지정하고, 최대 16Byte까지 사용하는 경우에는 QNAME 옵션을 사용한다. 단순히 큐 이름의 길이에 따라 옵션을 달리하여 지정한다.

TSQ 및 TSMODEL 접근 명령어 목록이다. 각 명령어에 대한 자세한 설명은 해당 절을 참고한다.

명령어 설명

DELETEQ TS

특정 TSQ를 삭제한다. 해당 큐가 가지고 있는 모든 내용을 삭제한다.

INQUIRE TSQUEUE |

TSQNAME

특정 TSQ에 대한 정보를 읽어오는 시스템 명령어이다.

INQUIRE TSMODEL

TSMODEL에 대한 리소스 정보를 가져오는 명령어이다.

READQ TS

특정 TSQ의 데이터를 읽어온다.

SET TSQUEUE |

TSQNAME

특정 TSQ를 관리한다.

WRITEQ TS

지정한 TSQ에 데이터를 기록한다.

6.1. DELETEQ TS

특정 TSQ를 삭제한다. 해당 큐가 가지고 있는 모든 내용 또한 함께 삭제된다.

  • 문법

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

    옵션 설명

    QUEUE

    1~8Byte의 문자열로 삭제할 큐 이름을 지정한다.

    QNAME

    1~16Byte의 문자열로 삭제할 큐 이름을 지정한다.

    SYSID

    Function shipping할 SYSID를 지정한다.

6.2. INQUIRE TSMODEL

TSMODEL에 대한 리소스 정보를 가져오는 명령어이다.

  • 문법

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

    옵션 설명

    LOCATION

    해당 TSMODEL에 매치되는 큐의 저장소 정보를 반환한다.

    POOLNAME

    공유 풀 이름을 반환한다.

    PREFIX

    MODEL에 대한 접두사를 반환한다.

    REMOTEPREFIX

    원격 시스템의 접두사 이름으로 사용할 문자열을 반환한다.

    REMOTESYSTEM

    TSMODEL이 정의되어 있는 원격시스템의 식별자를 지정한다.

    TSMODEL

    열람하려는 TSMODEL을 지정한다.

    1. TSMODEL에 대한 자세한 내용은 OpenFrame OSC "리소스 정의 안내서"를 참고한다.

    2. CHANGEAGENT, CHANGEAGREL, CHANGETIME, CHANGEUSRID, DEFINESOURCE, DEFINETIME, EXPIRYINT, INSTALLAGENT, INSTALLTIME, INSTALLUSRID, RECOVSTATUS, SECURITYST은 지원하지 않는 옵션이다.

6.3. INQUIRE TSQUEUE|TSQNAME

특정 TSQ에 대한 정보를 읽어오는 시스템 명령어이다.

  • 문법

    EXEC CICS INQUIRE TSQUEUE|TSQNAME [option …] END-EXEC.
  • 옵션

    옵션 설명

    FLENGTH

    해당 큐의 전체 길이를 반환한다.

    LASTUSEDINT

    마지막으로 큐가 사용된 시간과 현재 시간과의 간격을 반환한다.

    LOCATION

    AUXILLIARY와 MAIN 중 원하는 저장소를 지정한다.

    MAXITEMLEN

    저장된 레코드 중 최대 레코드 길이를 반환한다.

    MINITEMLEN

    저장된 레코드 중 최소 레코드 길이를 반환한다.

    NUMITEMS

    저장된 총 레코드 개수를 반환한다.

    RECOVSTATUS

    복구 가능 정보를 반환한다.

    TRANSID

    큐를 처음 생성한 트랜잭션 ID를 반환한다.

    TSQNAME

    1~16Byte의 문자열로 조회하려고 하는 큐 이름을 지정한다.

    TSQUEUE

    1~8Byte의 문자열로 조회하려고 하는 큐 이름을 지정한다.

    POOLNAME, SYSID은 지원하지 않는 옵션이다.

6.4. SET TSQUEUE|TSQNAME

특정 TSQ를 관리한다. DELETEQ TS와 달리 마지막으로 큐가 사용된 시간과 현재 시간과의 간격을 조건으로 지정하여 큐를 삭제할 수 있다.

  • 문법

    EXEC CICS SET TSQUEUE|TSQNAME [option …] END-EXEC.
  • 옵션

    옵션 설명

    ACTION

    어떤 동작을 수행할지를 위한 CVDA 값을 지정한다. CVDA 값 중 현재 DELETE 값만 지원한다.

    DELETE

    CVDA 값대신 큐 삭제를 수행한다.

    LASTUSEDINT

    마지막 사용 시간 간격이 지정된 값 이상인 경우에만 삭제한다.

    TSQNAME

    1~16Byte의 문자열로 관리하려고 하는 큐 이름을 지정한다.

    TSQUEUE

    1~8Byte의 문자열로 관리하려고 하는 큐 이름을 지정한다.

    POOLNAME, SYSID은 지원하지 않는 옵션이다.

6.5. READQ TS

특정 TSQ의 데이터를 읽어오는 명령어이다. ITEM 번지 수를 지정하여 저장된 레코드를 읽어올 수도 있고, NEXT 옵션을 이용하여 차례로 다음 레코드를 읽어오는 순차 검색도 지원한다. 레코드를 읽더라도 큐에서 데이터가 삭제되지 않는다.

  • 문법

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

    옵션 설명

    ITEM

    읽어올 레코드의 번지 수를 지정한다.

    INTO

    읽어올 데이터의 저장소를 지정한다.

    LENGTH

    읽어올 데이터의 저장소 길이를 지정한다.

    NEXT

    순차적으로 다음 레코드를 읽어온다.

    NUMITEMS

    큐에 쌓인 데이터 레코드의 개수를 반환한다.

    QNAME

    1~16Byte의 문자열로 읽으려고 하는 큐 이름을 지정한다.

    QUEUE

    1~8Byte의 문자열로 읽으려고 하는 큐 이름을 지정한다.

    SET

    읽어올 데이터가 저장된 장소의 포인터 참조값을 지정한다.

    저장소는 시스템이 할당한다.

    SYSID

    Function shipping할 SYSID를 지정한다.

6.6. WRITEQ TS

지정한 TSQ에 데이터를 기록한다. 기존 생성된 TSQ가 없는 경우 큐가 동적으로 생성되고, 동적으로 생성된 큐에 데이터가 쌓인다.

  • 문법

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

    옵션 설명

    AUXILIARY

    데이터셋에 TSQ를 저장한다.

    FROM

    기록할 데이터의 저장소를 지정한다.

    ITEM

    기록할 레코드의 번지 수를 지정한다.

    LENGTH

    기록할 데이터 길이를 지정한다.

    MAIN

    메모리에 TSQ를 저장한다.

    NOSUSPEND

    WRITEQ TS 요청을 위한 공간이 충분하지 않을 경우 응용 프로그램이 정지하지 않는다.

    NUMITEMS

    큐에 쌓인 데이터 레코드의 개수를 반환한다.

    QUEUE

    1~8Byte의 문자열로 기록할 큐 이름을 지정한다.

    QNAME

    1~16Byte의 문자열로 기록할 큐 이름을 지정한다.

    REWRITE

    특정 번지 수의 레코드를 덮어쓰려는 경우 해당 옵션을 지정한다.

    REWRITE 옵션이 없는 경우 단순히 큐에 데이터가 쌓이는 형식으로 저장되고, REWRITE 옵션을 지정할 경우 기존에 작성된 레코드를 덮어쓴다.

    SYSID

    Function shipping할 SYSID를 지정한다.

7. 데이터 전송 큐(TDQ)

TDQ(Transient Data Queue)는 데이터 전송을 위하여 데이터를 쌓는 큐이다.

다음과 같은 용도로 사용한다.

  • OSC 애플리케이션 간의 데이터 통신

  • OSC와 다른 시스템을 연계할 때 데이터를 일시적으로 저장

  • UNIX 파일의 로그 형태로 데이터를 쌓는 기능

TDQ는 기능적인 특징에 따라 Intra-partition, Extra-partition, Log 등 3가지 타입으로 분류할 수 있고, 관리 측면에서 유용한 Indirect, Remote 등을 포함하여 총 5가지의 타입으로 분류할 수 있다.

  • Intra-partition TDQ

    TDQUEUE 리소스 정의에서 TYPE을 INTRA로 지정한 TDQ로, OSC 애플리케이션 간에 데이터를 주고 받는 데 사용된다. OSC 애플리케이션 서버는 Intra-partition TDQ에 저장되는 레코드를 TSAM 데이터셋을 통하여 관리한다.

    Intra-partition TDQ에는 리소스 정의에 RECOVSTATUS를 설정하여 장애가 발생할 경우 복구가 가능하게할 수 있다. Intra-partition TDQ가 다른 타입의 TDQ와 구별되는 또 다른 특징으로 ATI(Automatic Transaction Initiation) 기능이 있다. 이는 큐에 쌓인 레코드 개수가 리소스 정의에 설정된 값에 이르면 지정된 트랜잭션을 자동으로 기동시키는 기능이다.

    ATIFACILITY를 TERMINAL로 설정하는 경우 TERMINAL이 등록되지 않았다면 자동 기동은 실패한다. 자동으로 기동될 때 등록은 되었지만 연결이 되지 않았다면 내부 스케줄링 큐에 쌓이며 터미널이 연결될 때 트랜잭션이 기동된다.

    WRITEQ TD를 수행할 때 아이템 개수가 TRIGGERLEVEL보다 큰 경우 ATI가 실행되지 않는다. 이런 예외적인 상황의 경우 oscadmin 툴을 이용해서 문제가 되는 TDQ를 삭제할 수 있다. RECOVSTATUS가 LOGICAL인 경우 WRITEQ TD에서 TRIGGERLEVEL이 넘어서더라도 바로 ATI가 유발되지 않고, SYNCPOINT 명령어 혹은 RETURN 명령어를 수행할 때 ATI가 유발된다.

  • Extra-partition TDQ

    OSC 시스템 내부의 데이터 공유가 아닌, 다른 시스템에 데이터를 보내기 위한 목적으로 사용된다. TDQ 리소스 정의에서 TYPE은 EXTRA로 정의된다.

  • Log TDQ

    Log TDQ는 OSC 애플리케이션 프로그램에서 Log 기능으로 사용할 수 있는 TDQ 리소스 타입이다. Extra-partition TDQ를 통해 애플리케이션 프로그램이 Log를 남기는 용도로 많이 사용된다는 점에 착안하여 파일 I/O 성능을 개선하여 추가된 기능이다. Log TDQ는 TDQ 리소스 정의에서 TYPE을 LOG로 정의한다.

    OSC 애플리케이션 보조 서버인 OSC TDQ Log 서버가 해당 서버의 모든 Log TDQ의 I/O 처리를 담당한다. 애플리케이션 프로그램에서 해당 TDQ에 데이터를 기록하면 서버명과 동일한 SPOOL 디렉터리/DDNAME과 동일명의 파일에 Log 데이터가 순차적으로 쌓인다. OSC TDQ Log 서버가 여러 프로세스에서 저장하는 데이터를 내부적으로 버퍼링하여 파일에 기록하므로 전체 시스템 부하를 줄일 수 있다.

    애플리케이션 서버와 OSC TDQ Log 서버는 TCP/IP 통신을 한다.

  • Indirect TDQ

    Indirect TDQ는 시스템 관리적인 면에서 유용한 TDQ로, TDQ 리소스 정의에서 TYPE을 INDIRECT로 정의한다. 애플리케이션 프로그램에서 해당 TDQ를 사용하면 INDIRECTNAME에 지정된 큐를 사용하는 것과 동일한 효과를 나타낸다.

  • Remote TDQ

    애플리케이션 프로그램은 원격 애플리케이션 서버에 있는 TDQ를 접근할 수 있다. Function Shipping의 대상으로 쓰이는 TDQ는 리소스 정의의 TYPE 항목에 Remote라는 값으로 설정해야 한다. Function Shipping 기능에 대해서는 Function Shipping에서 다룬다. Remote TDQ로 지정할 경우 해당 TDQ 리소스 정의의 TYPE에 아무것도 지정하지 않고, REMOTESYSTEM에 원격 애플리케이션 서버를 지정한다.

TDQ 접근 명령어

TDQ 접근 방법은 타입에 따라 약간씩 다르지만, 기본적으로 DELETEQ TD, READQ TD, WRITEQ TD 등 각각 TDQ의 데이터를 삭제하고, 레코드를 읽어오고, 새로운 레코드를 기록하는 명령어들을 지원한다.

다음은 TDQ 접근 명령어 목록이다. 각 명령어에 대한 자세한 설명은 해당 절을 참고한다.

명령어 설명

DELETEQ TD

TDQ를 삭제한다.

INQUIRE TDQUEUE

TDQ에 대한 정보를 검색한다.

READQ TD

TDQ의 레코드를 읽는다.

SET TDQUEUE

TDQ의 일부 속성을 변경할 수 있다.

WRITEQ TD

TDQ에 레코드 데이터를 기록한다.

CREATE TDQUEUE

TDQ를 동적으로 생성한다.

DISCARD TDQUEUE

동적으로 생성된 TDQ를 삭제한다.

7.1. DELETEQ TD

TDQ를 삭제한다. Intra-partition TDQ 및 이를 가리키는 Indirect TDQ와 원격 Intra-partition TDQ에 대해서만 삭제 기능을 지원한다.

  • 문법

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

    옵션 설명

    QUEUE

    큐 이름을 지정한다.

    SYSID

    원격 시스템의 식별자를 지정한다.

7.2. INQUIRE TDQUEUE

특정 TDQ에 대한 정보를 검색한다.

  • 문법

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

    옵션 설명

    ATIFACILITY

    큐에 연결된 터미널 또는 세션이 있는지 여부를 반환한다.

    BLOCKFORMAT

    큐와 연관된 데이터셋이 블록 레코드 형식인지 여부를 반환한다.

    BLOCKSIZE

    블록의 길이를 바이트 단위로 반환한다.

    DDNAME

    시작 문자 JCL에 사용된 데이터셋 이름을 참조할 수 있는 8글자의 식별자를 반환한다.

    DISPOSITION

    관련 데이터셋의 상태를 반환한다.

    DSNAME

    연관된 DUMMY 데이터셋을 나타내는 1~44글자 이름을 반환한다.

    ENABLESTATUS

    응용 프로그램에서 대기열에 액세스할 수 있는지 여부를 반환한다.

    END

    Browsing을 중지한다.

    INDIRECTNAME

    간접 Queue가 가르키는 큐의 4글자 이름을 반환한다.

    NEXT

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

    OPENSTATUS

    큐가 열려 있는지, 닫혀 있는지 상태 값을 반환한다.

    PRINTCONTROL

    큐에 정의되어 있는 Print Control의 타입을 반환한다.

    RECORDFORMAT

    큐에 고정 길이 또는 가변 길이 레코드가 있는지 여부를 반환한다.

    RECORDLENGTH

    큐의 레코드 길이를 반환한다. 큐의 타입이 EXTRA가 아닐 경우 -1을 반환한다.

    RECOVSTATUS

    큐에 정의된 복구 유형을 반환한다.

    REMOTENAME

    REMOTESYSTEM 옵션에서 지정된 OSC Region 파일의 8글자를 반환한다.

    REMOTESYSTEM

    OSC Region의 4글자 이름을 반환한다.

    SYSOUTCLASS

    SYSOUT 데이터셋의 클래스 속성을 나타내는 문자를 반환한다. DSNAME이 사용되는 경우 공백을 반환한다.

    START

    Browsing 시작을 위해 지정한다. 데이터를 반환하지 않는다.

    TRIGGERLEVEL

    자동 트랜잭션 초기화(ATI)가 발생하기 전에 Queue에 도달해야 하는 항목 수를 반환한다.

    TYPE

    큐의 유형을 반환한다.

    TDQUEUE

    일시적인 데이터 큐의 4글자 이름을 지정한다.

    ATITERMID, ATITRANID, ATIUSERID, CHANGEAGENT, CHANGEAGREL, CHANGETIME, CHANGEUSRID, DATABUFFERS, DEFINESOURCE, DEFINETIME, EMPTYSTATUS, ERROROPTION, INDOUBT, INDOUBTWAIT, INSTALLAGENT, INSTALLTIME, INSTALLUSRID, IOTYPE, MEMBER, NUMITEMS, REWIND은 지원하지 않는 옵션이다.

7.3. READQ TD

TDQ의 레코드를 읽는다. Intra-partition TDQ 및 이를 가리키는 Indirect TDQ와 원격 Intra-partition TDQ에 대해서만 읽기 기능을 지원한다.

  • 문법

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

    옵션 설명

    INTO

    읽어올 데이터의 저장소를 지정한다.

    LENGTH

    읽어올 INTO 데이터 저장소의 최대 길이를 지정한다.

    NOSUSPEND

    출력을 위해 이미 사용 중인 큐로부터 응용 프로그램이 읽기를 시도할 경우 큐를 사용할 수 있을 때까지 작업을 중단하지 않는다.

    QUEUE

    큐 이름을 지정한다.

    SET

    읽어올 데이터가 저장된 장소의 포인터 참조값을 지정한다.

    SYSID

    읽어올 원격 TDQ의 시스템 식별자를 지정한다.

7.4. SET TDQUEUE

TDQ의 일부 속성을 변경할 수 있다.

  • 문법

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

    옵션 설명

    ATIFACILITY

    큐에 연관된 터미널 도는 세션이 있는지 여부를 지정한다.

    ENABLESTATUS

    응용 프로그램이 대기열에 액세스할 수 있는지 여부를 지정한다.

    • DISABLED

    • ENABLED

    OPENSTATUS

    큐와 관련된 데이터셋을 열거나 닫을지 여부를 지정한다.

    • CLOSED

    • OPEN

    TDQUEUE

    속성을 변경 중인 임시 데이터 큐의 4글자 이름을 지정한다.

    TRIGGERLEVEL

    풀워드 바이너리 값으로 ATI가 발생하도록 큐에 있어야 하는 항목수를 지정하거나 ATI가 발생하지 않도록 지정한다. 0이면 ATI가 발생하지 않는다.

    1. ATITERMID, ATITRANID, ATIUSERID은 지원하지 않는 옵션이다.

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

    3. SET TDQUEUE 뿐만 아니라 BATCH의 MTPBATCH의 다음 명령어를 이용하여 OPENSTATUS를 변경 할 수 있다.

    CEMT SET TD<TDQ명> CLOSED | OPEN

7.5. WRITEQ TD

TDQ에 레코드 데이터를 기록한다. 모든 TDQ 타입에 이 명령어를 사용할 수 있다.

  • 문법

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

    옵션 설명

    FROM

    큐에 기록할 데이터 저장소를 지정한다.

    LENGTH

    기록할 데이터의 길이를 지정한다.

    QUEUE

    큐 이름을 지정한다.

    SYSID

    기록할 원격 TDQ의 시스템 식별자를 지정한다.

7.6. CREATE TDQUEUE

Extra-partition TDQ를 동적으로 생성한다.

  • 문법

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

    옵션 설명

    TDQUEUE

    생성하려는 임시 데이터 큐의 4글자 이름을 지정한다.

    ATTRIBUTES

    생성하려는 임시 데이터 큐의 속성을 지정한다. ATTRIBUTES는 System Definition에 들어가는 속성을 그대로 입력하여 OSC의 RTSD에 생성하도록 한다.

    현재 가능한 ATTRIBUTE는 다음과 같다.

    • TYPE( { EXTRA } )

    • TYPEFILE( { INPUT | OUTPUT | RDBACK } )

    • DISP( { SHR | OLD | MOD } )

    • DD or DDNAME( ddname )

    • DSN or DSNAME( dsname )

    ATTRLEN

    ATTRIBUTES 의 길이를 입력한다.

    LOG

    로그를 남기도록 설정한다.

    NOLOG

    로그를 남기지 않도록 설정한다.

    LOGMESSAGE

    로그를 남길지 여부를 설정한다.

    LOG, NOLOG, LOGMESSAGE은 지원하지 않는 옵션이다.

7.7. DISCARD TDQUEUE

동적으로 생성된 TDQ를 삭제한다.

  • 문법

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

    옵션 설명

    TDQUEUE

    동적으로 생성된 TDQUEUE의 4글자 이름을 지정한다.

8. 채널과 컨테이너

채널(Channel)과 컨테이너(Container)는 애플리케이션 프로그램 사이에 데이터를 주고받을 수 있도록 제공하는 리소스이다. 컨테이너는 프로그램 사이에 데이터를 주고 받기 위해 고안된 데이터 저장소로 이름이 지정되어 있다. 즉, 지정된 이름을 갖는 COMMAREA 영역이라고 생각할 수 있다. 그리고 채널은 컨테이너들의 집합으로 여러 개의 컨테이너들을 포함한다.

OSC 애플리케이션 프로그램은 COMMAREA 영역을 통해서 데이터를 주고 받는 것이 기본이다. 채널과 컨테이너는 프로그램 사이에 데이터를 주고 받는 방식보다 한단계 업그레이드된 방식을 제공하고, COMMAREA 영역의 경우 32KB의 크기 제약이 있는 반면 채널과 컨테이너는 제약이 없다.

다음은 채널과 컨테이너의 3가지 특징이다.

  • 채널과 컨테이너는 그들을 생성한 프로그램과 LINK 및 XCTL 명령어로 채널과 컨테이너를 전달받은 프로그램에서만 접근이 가능하다. 그 프로그램에서 사용할 수 있는 채널을 유효 채널(current channel)이라고 한다.

  • 프로그램이 종료된 이후에는 자동적으로 컨테이너와 그 안에 있던 데이터가 삭제된다.

  • 채널과 컨테이너는 복구가 불가능한 데이터 저장소이다.

DFH로 시작되는 컨테이는 채널을 지정하지 않을 경우 DFHTMPCH 채널에 저장된다.

채널과 컨테이너 명령어

다음은 채널, 컨테이너와 관련된 명령어 목록이다. 각 명령어에 대한 자세한 설명은 해당 절을 참고한다.

명령어 설명

DELETE CONTAINER

채널의 컨테이너와 그 안에 저장되어 있던 데이터를 삭제한다.

GET CONTAINER

채널의 컨테이너로부터 데이터를 읽어온다.

MOVE CONTAINER

채널의 컨테이너를 다른 채널로 이동한다.

PUT CONTAINER

특정 채널의 컨테이너에 데이터를 기록한다.

8.1. DELETE CONTAINER

채널의 컨테이너와 그 안에 저장되어 있던 데이터를 삭제한다.

  • 문법

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

    옵션 설명

    CHANNEL

    컨테이너를 저장하고 있는 채널을 지정한다. 명시적으로 CHANNEL 옵션이 주어지지 않았을 경우 유효 채널에서 컨테이너를 삭제한다.

    CONTAINER

    컨테이너 이름을 지정한다.

8.2. GET CONTAINER

채널의 컨테이너로부터 데이터를 읽어온다. 명시적으로 CHANNEL 옵션이 주어지지 않았을 경우 유효 채널에서 컨테이너를 읽어온다.

  • 문법

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

    옵션 설명

    CONTAINER

    컨테이너 이름을 지정한다.

    CHANNEL

    컨테이너를 저장하고 있는 채널을 지정한다. 명시적으로 CHANNEL 옵션이 주어지지 않았을 경우 유효 채널에서 컨테이너를 읽어온다.

    FLENGTH

    기록할 데이터의 길이를 지정한다.

    INTO

    받을 데이터의 저장소를 지정한다.

    SET

    받을 데이터가 저장된 장소의 포인터 참조값을 지정한다.

    NODATA은 지원하지 않는 옵션이지만 파싱을 위해 지원한다.

8.3. MOVE CONTAINER

채널의 컨테이너를 다른 채널로 이동한다. 이동을 한 후에는 더 이상 컨테이너의 내용은 남아있지 않다. 명시적으로 CHANNEL 및 TOCHANNEL 옵션이 주어지지 않을 경우 유효 채널이 적용된다. 따라서 MOVE CONTAINER 명령어를 통해 채널 사이에 컨테이너를 이동하거나 같은 채널 안에서 컨테이너의 이름을 변경하는 목적으로 사용할 수 있다.

  • 문법

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

    옵션 설명

    AS

    타깃 컨테이너의 이름을 지정한다.

    CHANNEL

    컨테이너를 저장하고 있는 채널을 지정한다.

    CONTAINER

    컨테이너 이름을 지정한다.

    TOCHANNEL

    타깃 컨테이너를 저장하고 있는 채널을 지정한다.

    FROMACTIVITY, FROMPROCESS, TOACTIVITY, TOPROCESS은 지원하지 않는 옵션이지만 파싱을 위해 지원한다.

8.4. PUT CONTAINER

특정 채널의 컨테이너에 데이터를 기록한다.

  • 문법

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

    옵션 설명

    APPEND

    컨테이너에 전달되는 데이터가 기존 데이터 뒤에 추가되도록 지정한다.

    BIT

    비트 데이터이다. FROMCCSID가 지정되지 않으면 이것이 기본값이다.

    CONTAINER

    컨테이너 이름을 지정한다.

    CHANNEL

    컨테이너를 저장하고 있는 채널을 지정한다. 명시적으로 CHANNEL 옵션이 주어지지 않았을 경우 유효 채널에서 컨테이너를 기록한다.

    CHAR

    문자 데이터이다.

    DATATYPE

    컨테이너에 저장할 자료형을 지정한다.

    FLENGTH

    기록할 데이터의 길이를 지정한다.

    FROM

    기록할 데이터가 저장된 경로를 지정한다.

    FROMCCSID

    현재의 CCSID를 지정한다.

9. 저널 제어

저널(Journal)은 사용자의 필요에 의해 시스템의 이벤트나 데이터 변경 등의 복구를 쉽게 하기 위해 어떤 데이터든 기록할 수 있다. 예를 들어, 데이터베이스의 변경 사항이나 트랜잭션의 수행 기록 등을 기록할 수 있다. 저널 제어는 저널 레코드를 생성하는 WRITE 명령어와 저널 결과의 동기화(Synchronize)를 하는 WAIT 명령어를 통해서 이루어진다.

OSC 시스템은 WRITE 명령어에 대해서만 제공하고, WAIT 명령어에 대해서는 지원하지 않는 옵션이다. 따라서 사용자는 저널 결과를 동기화하기 위해서는 WAIT 명령어를 사용하는 대신에 WRITE 명령어의 WAIT 옵션을 지정하도록 한다.

Journal은 BATCH의 MTPBATCH의 다음 명령어를 이용하여 스트림을 처리하기 전에 모든 현재 레코드를 로그 스트림에 기록되도록 할 수 있다.

CEMT SET JO<저널명> FLUSH
저널 제어 명령어

다음은 저널 제어 명령어 목록이다. 각 명령어에 대한 자세한 설명은 해당 절을 참고한다.

명령어 설명

JOURNAL

저널 레코드를 생성한다.

INQUIRE JOURNALMODEL

설치된 특정 저널 모델에 대한 정보를 반환하여 해당 로그 스트림 이름을 얻을 수 있다.

WRITE JOURNALNAME

저널 레코드를 생성한다. JOURNAL 명령어와 옵션만 다르다.

WRITE JOURNALNUM

저널 레코드를 생성한다. WRITE JOURNALNAME에서는 저널 이름을 지정하는 것과 다르게 저널 번호를 지정한다.

9.1. JOURNAL

저널 레코드를 생성한다. JOURNAL 명령어는 이전 버전과의 호환성을 위해 제공하고 있으며, WRITE JOURNALNAME 명령어를 사용할 것을 권장한다.

  • 문법

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

    옵션 설명

    FROM

    사용자 데이터가 저장된 경로를 지정한다.

    JFILEID

    저널 ID로 1부터 99까지 값을 지정할 수 있다.

    JTYPEID

    2Byte ID로 저널 레코드의 origin을 지정한다.

    LENGTH

    사용자 데이터의 길이를 지정한다.

    PREFIX

    Prefix 데이터가 저장된 경로를 지정한다.

    PFXLENG

    Prefix 데이터의 길이를 지정한다.

    WAIT

    저널 레코드를 생성할 때 동기화(Synchronous) 여부를 지정한다.

    NOSUSPEND, REQID, STARTIO은 지원하지 않는 옵션이지만 파싱을 위해 지원한다.

9.2. INQUIRE JOURNALMODEL

설치된 특정 저널 모델에 대한 정보를 반환하여 해당 로그 스트림 이름을 얻을 수 있다.

  • 문법

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

    옵션 설명

    END

    Browsing을 중지한다.

    JOURNALMODEL

    설치된 저널 모델의 1~8글자의 이름을 지정한다.

    JOURNALNAME

    1~8글자의 저널 이름을 반환한다.

    NEXT

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

    STREAMNAME

    JOURNALMODEL 항목과 관련된 로그 스트림 이름을 반환한다.

    START

    Browsing을 시작한다.

    TYPE

    로그 스트림 유형을 지정한다.

    CHANGEAGENT, CHANGEAGREL, CHANGETIME, CHANGEUSRID, DEFINESOURCE, DEFINETIME, INSTALLAGENT, INSTALLTIME, INSTALLUSRID은 지원하지 않는 옵션이다.

9.3. WRITE JOURNALNAME

저널 레코드를 생성한다.

  • 문법

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

    옵션 설명

    FROM

    사용자 데이터가 저장된 경로를 지정한다.

    FLENGTH

    사용자 데이터의 길이를 지정한다.

    JOURNALNAME

    저널 이름을 지정한다.

    JTYPEID

    2Byte ID로 저널 레코드의 origin을 지정한다.

    PREFIX

    Prefix 데이터가 저장된 경로를 지정한다.

    PFXLENG

    Prefix 데이터의 길이를 지정한다.

    WAIT

    저널 레코드를 생성할 때 동기화(Synchronous) 여부를 지정한다.

    NOSUSPEND, REQID, STARTIO은 지원하지 않는 옵션이지만 파싱을 위해 지원한다.

9.4. WRITE JOURNALNUM

저널 레코드를 생성한다. WRITE JOURNALNUM 명령어는 이전 버전과의 호환성을 위해 제공을 하고 있으며, WRITE JOURNALNAME 명령어를 사용할 것을 권장한다.

  • 문법

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

    옵션 설명

    FROM

    사용자 데이터가 저장된 경로를 지정한다.

    FLENGTH

    사용자 데이터의 길이를 지정한다.

    JOURNALNUM

    저널 번호로 1부터 99까지 값을 지정한다.

    JTYPEID

    2Byte ID로 저널 레코드의 origin을 지정한다.

    PREFIX

    Prefix 데이터가 저장된 경로를 지정한다.

    PFXLENG

    Prefix 데이터의 길이를 지정한다.

    WAIT

    저널 레코드를 생성할 때 동기화(Synchronous) 여부를 지정한다.

    NOSUSPEND, REQID, STARTIO은 지원하지 않는 옵션이지만 파싱을 위해 지원한다.

10. 다큐멘트 제어

다큐멘트(Document)은 사용자가 데이터를 문서화 할 때 사용한다. 사용자는 다큐멘트를 통하여 특정 데이터를 다큐멘트화 할 수 있으며, 이 다큐멘트를 DOCTOKEN을 지원하는 명령어에서 다큐멘트의 DOCTOKEN을 지정함으로써 미리 만들어놓은 데이터를 언제든지 사용할 수 있다.

다큐멘트 제어 명령어

다음은 다큐멘트 제어 명령어 목록이다. 각 명령어에 대한 자세한 설명은 해당 절을 참고한다.

명령어 설명

DOCUMENT CREATE

다큐멘트를 생성한다.

DOCUMENT INSERT

생성된 다큐멘트의 특정 위치에 TEXT, 북마크 혹은 다큐멘트를 추가 할 수 있다.

10.1. DOCUMENT CREATE

다큐멘트를 생성한다.

  • 문법

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

    옵션 설명

    DOCTOKEN

    다큐멘트를 생성한 후 재사용 가능하도록 TOKEN을 발부하여 반환한다.

    FROM

    다큐멘트를 생성할 경우 사용될 데이터를 지정한다.

    HOSTCODEPAGE

    다큐멘트의 CODEPAGE를 지정한다.

    LENGTH

    사용될 데이터의 크기를 지정한다.

    LISTLENGTH

    symbol list의 길이를 지정한다.

    SYMBOLLIST

    symbol list를 포함하는 버퍼를 지정한다. symbol list는 앰퍼샌드(&)로 구분된 하나 이상의 symbol 정의로 구성된 문자열이다.

    TEMPLATE

    템플릿의 48바이트 이름을 지정한다.

    TEXT

    생성 중인 새 문서의 내용으로 사용할 데이터 버퍼를 지정한다.

10.2. DOCUMENT INSERT

다큐멘트를 생성한다.

  • 문법

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

    옵션 설명

    DOCTOKEN

    생성되어 반환된 다큐멘트의 DOCTOKEN을 지정하여, 해당 다큐멘트에 내용을 추가한다.

    TEXT

    추가할 TEXT를 지정한다.

    TEMPLATE

    템플릿의 48바이트 이름을 지정한다.

    LENGTH

    추가할 TEXT의 크기를 지정한다.

    FROMDOC

    추가할 다큐멘트의 DOCTOKEN을 지정한다.

    BOOKMARK

    추가할 BOOKMARK의 이름을 지정한다.

    AT

    TEXT, DOCUMENT, BOOKMARK을 추가할 위치를 지정하며, 미리 추가된 BOOKMARK가 AT의 타깃이 된다.

    AT가 생략되는 경우 다큐멘트의 가장 하단에 내용이 추가되며, 기본적으로 TOP(다큐멘트의 가장 최상단)를 지원된다. 그 외에는 BOOKMARK를 통해 AT을 지정할 수 있다.