OSC 관리 서비스
본 장에서는 프로그램, 인터벌 등을 제어하는 OSC 관리 서비스에 대해 기술한다.
2. 프로그램 제어
OSC 애플리케이션은 하나 혹은 여러 프로그램들의 조합으로 이루어진다. 프로그램 제어 서비스는 하나의 OSC 프로그램에서 다른 프로그램을 연결하거나 제어권을 전달, 반환하는 기능을 제공한다.
|
프로그램 제어 명령어
다음은 프로그램 제어 명령어의 목록이다. 각 명령어에 대한 자세한 설명은 해당 절을 참고한다.
명령어 | 설명 |
---|---|
Region에 설치된 특정 프로그램, 맵 셋 또는 파티션 셋에 대한 정보를 반환한다. |
|
현재 수행 중인 프로그램에서 다른 프로그램을 연결한다. |
|
응용 프로그램, 테이블 또는 맵의 사본을 태스크에서 사용할 수 있도록 한다. |
|
RELEASE는 이전에 LOAD 명령으로 로드된 프로그램, 테이블 또는 맵을 해제한다. |
|
현재 수행 중인 프로그램을 종료하고 이전에 수행했던 프로그램으로 제어권을 돌려준다. |
|
시스템에 설치된 특정 프로그램, 맵 셋 또는 파티션 셋의 정의를 수정한다. |
|
현재 수행 중인 프로그램을 종료하고 다른 프로그램을 연결한다. |
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은 지원하지 않는 옵션이다.
2.2. LINK
현재 수행 중인 프로그램에서 다른 프로그램을 연결한다.
대상이 되는 프로그램은 시스템에 의하여 자동으로 메모리에 로딩 및 실행된다. 잠시 대상 프로그램에 전달되었던 프로그램 제어권은 대상 프로그램의 실행이 완료되면 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가 존재한다.
-
COPY, EXECUTIONSET, JVMCLASS, JVMPROFILE, RUNTIME, SHARESTATUS, VERSION은 지원하지 않는 옵션이다.
-
END, NEXT, START은 지원하지 않는 옵션이지만 파싱을 위해 지원한다.
-
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 관련 명령어로 구분된다.
-
시간 관련 명령어
다음은 인터벌 제어 명령어 중 시간 관련 명령어의 목록이다. 각 명령어에 대한 자세한 설명은 해당 절을 참고한다.
명령어 설명 현재 날짜와 시간 정보를 가져온다.
DELAY 또는 START 명령어의 요청을 취소한다.
ASKTIME 명령어로 받아온 날짜 및 시간 정보, 또는 EIBDATE 및 EIBTIME에 저장된 날짜 및 시간을 사용자가 원하는 포맷으로 변환한다.
START, DELAY 명령어로 대기 중인 요청에 대한 정보를 반환한다.
START 명령어로 기동된 트랜잭션이 START 명령어의 각종 옵션을 통하여 넘겨진 데이터를 받아온다.
-
START 관련 명령어
다음은 인터벌 제어 명령어 중 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 요청할 트랜잭션의 사용자 식별자를 지정한다.
-
ATTACH은 지원하지 않는 옵션이지만 파싱을 위해 지원한다.
-
START 뿐만 아니라 BATCH의 MTPBATCH의 다음 명령어를 이용하여 트랜잭션을 수행시킬 수 있다.
CEMT STAR <트랜잭션명> [ <터미널명> <ll data> ]
-
4. 태스크 제어
OSC 애플리케이션은 일반적으로 클라이언트의 트랜잭션 요청에 의하여 실행된다. 트랜잭션 요청으로 인해 서버는 일련의 작업을 처리하는데, 이러한 일련의 작업을 태스크라고 한다. OSC 애플리케이션 서버는 다수의 서버 프로세스를 활용하여 태스크를 병렬적으로 처리한다. 사용자는 여러 태스크가 동시에 같은 리소스에 접근하는 일을 업무적으로 제어하기 위해 리소스를 중심으로 태스크들을 순번화시킬 수 있다.
해당 내용의 예제는 다음과 같다.
-
태스크 T가 ENQ 명령어로 특정 이름의 리소스 R을 선점한다.
-
다른 태스크 U가 리소스 R을 선점하기 위해 ENQ 명령어를 실행한다.
-
태스크 T가 리소스 R을 선점하고 있기 때문에 태스크 U는 대기 상태로 남는다.
-
태스크 T가 DEQ 명령어로 리소스 R에 대한 선점을 해제한다.
-
태스크 U가 대기 상태에서 빠져 나와 리소스 R을 선점한다.
ENQ 명령어로 선점된 리소스는 사용자가 직접 DEQ 명령어를 호출하지 않아도 해당 UOW 또는 태스크가 끝날 때 자동으로 해제된다. 이 선점 지속 시간은 ENQ 명령어의 옵션으로 지정할 수 있다. 현재 OSC 애플리케이션 서버는 ENQ 명령어를 통한 리소스 선점이 리소스 이름으로만 가능하므로 LENGTH 옵션을 필수적으로 지정해야 한다.
태스크 제어 명령어
다음은 태스크 제어 명령어의 목록이다. 각 명령어에 대한 자세한 설명은 해당 절을 참고한다.
명령어 | 설명 |
---|---|
리소스 선점을 해제한다. |
|
리소스에 대한 선점을 요청한다. |
|
특정 사용자 테스크에 대한 정보를 반환한다. |
|
사용자 태스크 목록을 반환한다. 사용자 태스크는 일반적으로 운영자가 호출하는 OSC 제공 트랜잭션 또는 사용자 정의 트랜잭션과 연관된 태스크이다. |
|
트랜잭션 클래스 및 클래스 내의 현재 Activity에 대하여 정의된 한계를 파악한다. |
|
시스템에 설치된 특정 트랜잭션에 대한 정보를 검색한다. |
|
특정 트랜잭션 클래스 내에서 관리가능한 작업의 한계를 변경할 수 있다. |
|
트랜잭션 정의의 일부 속성을 변경할 수 있다. |
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글자 이름을 지정한다.
-
DUMPING, PRIORITY, PURGEABILITY, RUNAWAY, RUNAWAYTYPE, TRACING은 지원하지 않는 옵션이다.
-
END, NEXT, START은 지원하지 않는 옵션이지만 파싱은 지원한다.
-
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에서의 사용과는 차이가 있으므로 태스크 간 메모리 공유를 참고한다.
동적 영역 제어 명령어
다음은 동적 영역 제어의 명령어 목록이다. 각 명령어에 대한 자세한 설명은 해당 절을 참고한다.
명령어 | 설명 |
---|---|
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을 호출해야 반환되도록 지정한다.
-
BELOW은 지원하지 않는 옵션이다.
-
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 접근 명령어 목록이다. 각 명령어에 대한 자세한 설명은 해당 절을 참고한다.
명령어 | 설명 |
---|---|
특정 TSQ를 삭제한다. 해당 큐가 가지고 있는 모든 내용을 삭제한다. |
|
특정 TSQ에 대한 정보를 읽어오는 시스템 명령어이다. |
|
TSMODEL에 대한 리소스 정보를 가져오는 명령어이다. |
|
특정 TSQ의 데이터를 읽어온다. |
|
특정 TSQ를 관리한다. |
|
지정한 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을 지정한다.
-
TSMODEL에 대한 자세한 내용은 OpenFrame OSC "리소스 정의 안내서"를 참고한다.
-
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 접근 명령어 목록이다. 각 명령어에 대한 자세한 설명은 해당 절을 참고한다.
명령어 | 설명 |
---|---|
TDQ를 삭제한다. |
|
TDQ에 대한 정보를 검색한다. |
|
TDQ의 레코드를 읽는다. |
|
TDQ의 일부 속성을 변경할 수 있다. |
|
TDQ에 레코드 데이터를 기록한다. |
|
TDQ를 동적으로 생성한다. |
|
동적으로 생성된 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가 발생하지 않는다.
-
ATITERMID, ATITRANID, ATIUSERID은 지원하지 않는 옵션이다.
-
END, NEXT, START은 지원하지 않는 옵션이지만 파싱을 위해 지원한다.
-
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은 지원하지 않는 옵션이다.
-
8. 채널과 컨테이너
채널(Channel)과 컨테이너(Container)는 애플리케이션 프로그램 사이에 데이터를 주고받을 수 있도록 제공하는 리소스이다. 컨테이너는 프로그램 사이에 데이터를 주고 받기 위해 고안된 데이터 저장소로 이름이 지정되어 있다. 즉, 지정된 이름을 갖는 COMMAREA 영역이라고 생각할 수 있다. 그리고 채널은 컨테이너들의 집합으로 여러 개의 컨테이너들을 포함한다.
OSC 애플리케이션 프로그램은 COMMAREA 영역을 통해서 데이터를 주고 받는 것이 기본이다. 채널과 컨테이너는 프로그램 사이에 데이터를 주고 받는 방식보다 한단계 업그레이드된 방식을 제공하고, COMMAREA 영역의 경우 32KB의 크기 제약이 있는 반면 채널과 컨테이너는 제약이 없다.
다음은 채널과 컨테이너의 3가지 특징이다.
-
채널과 컨테이너는 그들을 생성한 프로그램과 LINK 및 XCTL 명령어로 채널과 컨테이너를 전달받은 프로그램에서만 접근이 가능하다. 그 프로그램에서 사용할 수 있는 채널을 유효 채널(current channel)이라고 한다.
-
프로그램이 종료된 이후에는 자동적으로 컨테이너와 그 안에 있던 데이터가 삭제된다.
-
채널과 컨테이너는 복구가 불가능한 데이터 저장소이다.
DFH로 시작되는 컨테이는 채널을 지정하지 않을 경우 DFHTMPCH 채널에 저장된다.
채널과 컨테이너 명령어
다음은 채널, 컨테이너와 관련된 명령어 목록이다. 각 명령어에 대한 자세한 설명은 해당 절을 참고한다.
명령어 | 설명 |
---|---|
채널의 컨테이너와 그 안에 저장되어 있던 데이터를 삭제한다. |
|
채널의 컨테이너로부터 데이터를 읽어온다. |
|
채널의 컨테이너를 다른 채널로 이동한다. |
|
특정 채널의 컨테이너에 데이터를 기록한다. |
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 명령어와 옵션만 다르다. |
|
저널 레코드를 생성한다. 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을 지정함으로써 미리 만들어놓은 데이터를 언제든지 사용할 수 있다.
다큐멘트 제어 명령어
다음은 다큐멘트 제어 명령어 목록이다. 각 명령어에 대한 자세한 설명은 해당 절을 참고한다.
명령어 | 설명 |
---|---|
다큐멘트를 생성한다. |
|
생성된 다큐멘트의 특정 위치에 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을 지정할 수 있다.