CICS의 Liberty 프로파일 서버 트랜잭션: BBOC, BBO$ 및 BBO#

WebSphere® 최적화 로컬 어댑터(WOLA)는 BBOC, BBO$ 및 BBO# 트랜잭션을 통해 CICS® 제품에서 지원됩니다.

최적화 로컬 어댑터는 CICS 리젼에서 자원 관리자로 실행됩니다. CICS에서 TRUE(Task Related User Exit)는 자원 제공자가 사용하는 1차 수단입니다. TRUE 지원은 CICS 애플리케이션 스레드와 외부 자원 관리자 스레드 간의 경계를 제공합니다. 현재는 DB2®, WebSphere MQ 및 TCPIP 소켓이 TRUE를 사용하여 CICS에서 실행됩니다.

CICS에서 실행되는 애플리케이션은 다음 워크플로우에 따라 최적화 로컬 어댑터 API를 사용합니다.
  1. 애플리케이션이 제공된 스텁 루틴을 실행합니다.
  2. 스텁 루틴이 CICS 자원 관리자 인터페이스 모듈을 시작하여 이 모듈에 각 API에 대해 고유한 매개변수, BBOATRUE 및 최적화 로컬 어댑터 TRUE 루틴의 이름을 전달합니다.
  3. CICS가 OPENAPI TCB(Task Control Block) 중 하나에 TRUE를 디스패치하고 API 호출이 완료될 때까지 실행됩니다.
  4. 이 호출이 다시 출력 매개변수와 함께 CICS로 이동합니다.

CICS를 위한 제어 트랜잭션: BBOC

BBOC 트랜잭션은 CICS 하의 어댑터 지원을 위한 WebSphere 제어 또는 조작 트랜잭션입니다. Liberty 서버 TRUE를 사용하고 시작하며 Liberty 서버와 인터페이스하는 코드 및 API를 디버깅하기 위한 추적 레벨을 설정하는 트랜잭션을 사용할 수 있습니다. 또한 BBOC는 등록 및 등록 해제를 설정하고 CICS에서 링크 서버 태스크를 시작 및 중지합니다. 이 서버 태스크는 기존 CICS 프로그램을 시작한 후 어댑터를 통해 입력 매개변수가 포함된 COMMAREA 오브젝트 또는 컨테이너와 함께 데이터를 전달하는 데 필요한 지원을 제공합니다. BBOC는 3270 워크스테이션, 또는 순차(또는 SDSCI 유형) 워크스테이션에서 실행할 수 있는 CICS 워크스테이션 기반 트랜잭션입니다.

BBOC 트랜잭션에 대한 구문은 BBOC operation_name parameters입니다. 여기서 여러 매개변수는 하나 이상의 공백으로 구분됩니다.

RGN
12자 레지스터 이름
DGN
참여할 WOLA 그룹의 처음 8자 이름
NDN
참여할 WOLA 그룹의 두 번째 8자 이름
SVN
참여할 WOLA 그룹의 세 번째 8자 이름
LSYNC
LSYNC는 대상 프로그램에 링크될 때 CICS가 SYNCONRETURN 옵션을 전달하는지 여부를 제어합니다. LSYNC=Y를 지정하면 CICS 링크 서버는 EXEC CICS LINK 명령에 SYNCONRETURN 옵션을 전달합니다. 대상 프로그램이 다른 CICS 리젼에 있는 경우 이 옵션을 지정해야 합니다. 기본값은 LSYNC=N입니다.
SVC
최대 8자의 서비스 이름입니다. 이 매개변수는 별표(*)를 사용한 마스킹을 지원합니다. 예를 들어, *, abc*, *abc, abc*xyz, abc*xy*z 등을 지정할 수 있습니다.
MNC
최소 연결 수입니다. 최소값은 0이고 기본값은 1입니다.
MXC
최대 연결 수입니다. 최대값은 9999이고 기본값은 10입니다.
SEC
SEC 매개변수는 전파되는 사용자 ID를 제어합니다. 기본값은 SEC=N입니다.

SEC=N을 지정하며 Liberty 서버에 대해 CICS에서 호출 중인 경우, CICS 리젼 사용자 ID가 전파됩니다. SEC=N을 지정하며 링크 서버 태스크(BBO$) 하에서 CICS에 대해 Liberty 서버에서 호출 중인 경우, 링크 태스크가 시작된 링크 서버의 사용자 ID 아래에서 실행됩니다.

SEC=Y를 지정하며 Liberty 서버에 대해 CICS에서 호출 중인 경우, 태스크 레벨 사용자 ID가 Liberty 서버에 전파됩니다. SEC=Y를 지정하며 CICS에 대해 Liberty 서버에서 호출 중인 경우, 링크 서버가 Liberty 서버에서 전파된 사용자 ID로 링크 태스크(BBO#)의 시작을 시도합니다. 전파는 링크 서버의 사용자 ID가 EXEC CICS START TRAN('BBO#') USERID(<propagated_id>) 명령을 실행할 수 있도록 사용자가 SAF(System Authorization Facility) SURROGAT 클래스 정의를 작성한 경우에만 작동합니다.

STX
사용할 링크 서버 CICS 트랜잭션 ID의 4자 이름입니다. 기본값은 BBO$입니다.
참고: 기본값과 다른 트랜잭션 이름을 정의하는 경우에는 BBO$와 동일한 프로그램 이름 및 속성을 사용하여 기본 CSD(CICS System Definition) 파일 DFHCSD에서 트랜잭션도 정의해야 합니다.
LTX
사용할 링크에서 프로그램으로의 CICS 트랜잭션 ID의 4자 이름입니다. 기본값은 BBO#입니다.
참고: 기본값과 다른 트랜잭션 이름을 정의하는 경우에는 BBO#와 동일한 프로그램 이름 및 속성을 사용하여 기본 CSD(CICS System Definition) 파일 DFHCSD에서 트랜잭션도 정의해야 합니다.
TRC
이 매개변수의 값을 정의하면 다음과 같은 레벨에서 추적을 사용할 수 있습니다.
  • 0으로 설정된 경우: 추적 없음(오류 메시지만)
  • 1로 설정된 경우: 기본 추적
  • 2로 설정된 경우: 자세한 추적
TDQ
어댑터 메시지가 작성되는 CICS 리젼 외부 TDQ(Transient Data Queue)의 4자 이름입니다. 이 매개변수를 지정하지 않는 경우 기본값은 BBOQ 및 DD BBOUT입니다. 지정된 TDQ에 메시지를 작성할 수 없는 경우 메시지는 CICS 리젼 stdout, tdq CESO dd CEEOUT에 작성됩니다.
REU
REU는 링크 서버가 프로그램 호출 요청 사이에서 프로그램 링크 호출 태스크(BBO# 트랜잭션)를 재사용하는지 여부를 제어합니다. 기본값은 N입니다.
중요사항: SEC=NREU=Y를 사용하여 링크 서버를 실행하면 최적화 로컬 어댑터 JCA는 더 이상 별도의 링크 트랜잭션 ID의 전달을 지원하지 않습니다. 별도의 트랜잭션 ID에 대한 요청을 사용하면 애플리케이션에서 ResourceException이 발생합니다. SEC=YREU=Y를 사용하여 링크 서버를 실행하는 경우에는 링크 서버가 각 요청에 대해 새 프로그램 링크를 시작하고 전파된 ID를 어설션해야 하므로 재사용 옵션이 아니오로 강제로 설정됩니다.
REUC
CICS 링크 태스크(BBO#)가 활성 상태를 유지하고 재사용되는 요청의 수입니다. 이 수에 도달하면 링크 태스크가 종료됩니다. 최대값은 2147483648입니다.
중요사항: 트랜잭션 시나리오의 경우, 링크 태스크는 해당 개수에 도달되며 Liberty 서버로부터 다음 커미트를 수신한 이후에 종료됩니다.
REUT
CICS 링크 태스크(BBO#)가 활성 상태를 유지하고 재사용되는 기간(초)입니다. 이 시간 간격이 만료되면 다음 요청이 수신되어 처리된 후 링크 태스크가 종료됩니다. 최대값은 2147483648입니다.
중요사항: 트랜잭션 시나리오의 경우, 링크 태스크는 요청된 시간에 도달하고 Liberty 서버에서 다음 커미트가 수신된 후에 종료됩니다.
RETRY
요청된 대상 서버와 연결할 수 없으면 시작 서버 또는 등록 요청을 재시도해야 함을 표시합니다. RETCNTRETINT가 지정되지 않은 경우, 기본 재시도 횟수는 10이며 재시도 간의 기본 시간은 30초입니다.
RETCNT
RETRY=Y 가 제공된 경우, RETCNT는 요청이 더 이상 시도되지 않을 때까지 실패 이후 명령이 재시도되는 횟수를 표시합니다. 최소값은 1이며 최대값은 99999999입니다. 0 값은 최대값을 의미합니다. 값이 제공되지 않으며 RETRY=Y 옵션이 제공되는 경우, 기본 재시도 횟수는 10입니다.
RETINT
RETRY=Y가 제공된 경우, RETINT는 재시도 간의 시간 간격(초 단위)을 표시합니다. 최소값은 1이며 최대값은 359000입니다. 0 값은 최대값을 의미합니다. 값이 제공되지 않으며 RETRY=Y 옵션이 제공되는 경우, 재시도 간의 시간 간격(초 단위)은 30입니다.
RTXP
RTXP=(Y|N)은 링크 호출 태스크 (BBO#)에 의해 수행되는 EXEC CICS LINK PROGRAM()에 TRANSID() 옵션이 포함되어야 함을 표시합니다. RTX(원격 트랜잭션) 매개변수 없이 이를 제공하는 경우에는 TRANSID() 매개변수에 현재 EIBTRNID 값이 지정됩니다.
RTX
RTXP 매개변수와 함께 사용되는 경우 RTX는 링크 호출 태스크 (BBO#)에 의해 수행되는 EXEC CICS LINK PROGRAM()에 TRANSID() 옵션이 포함되어야 함을 표시합니다. 이 옵션에 대한 값은 RTX 매개변수에서 가져옵니다. 이를 전달하지 않고 RTXP=Y가 제공되는 경우에는 현재 EIBTRNID 값이 TRANSID() 매개변수에서 사용됩니다.
TXN
TXN는 BBOC 트랜잭션으로 생성되는 등록의 트랜잭션 동작을 설명합니다. 이 옵션은 WebSphere Traditional 서버 인스턴스에 대한 등록에 의해서만 지원됩니다.

BBOC가 REGISTER 조작을 사용하여 WOLA 등록을 작성하는 경우, TXN=Y는 이 등록을 사용하는 WebSphere Application Server에서 시작된 Java Platform, Enterprise Edition 애플리케이션이 현재 CICS 작업 단위를 결합함을 의미합니다. TXN=Y인 경우에는 CICS 및 WebSphere Application Server 간에 글로벌 트랜잭션이 작성되며, 이는 CICS 애플리케이션이 EXEC CICS SYNCPOINT를 실행할 때 또는 동기화 위치가 포함될 때(예: CICS 태스크가 종료될 때) 2단계 커미트 프로토콜을 사용하여 완료됩니다.

BBOC를 사용하여 START_SRVR 기능으로 링크 서버를 작성하는 경우, TXN=Y는 서버가 시작될 때 CICS 링크 서버 태스크가 현재 WebSphere Application Server 트랜잭션을 결합함을 의미합니다. 예를 들어, Java Platform, Enterprise Edition 애플리케이션이 RMLT(Resource Manager Local Transaction)를 시작하며 최적화 로컬 어댑터 JCA 커넥터를 사용하여 CICS 프로그램을 호출하는 경우에 링크 태스크는 로컬 트랜잭션를 결합한 후에 대상 CICS 프로그램을 호출합니다. CICS 프로그램에서 작성된 업데이트는 Java Platform, Enterprise Edition 애플리케이션이 커미트 또는 롤백 API를 사용하여 RMLT를 완료할 때까지 커미트되거나 백아웃되지 않습니다.

표 1. BBOC. 다음 표에는 BBOC 조작 이름, 설명 및 매개변수가 요약되어 있습니다.
조작 이름 약어 설명 매개변수
START_TRUE STR Liberty 서버 TRUE 시작 TRC=<0|1|2>

TDQ=<tdqname>

STOP_TRUE PTR Liberty 서버 TRUE 중지 TRC=<0|1|2>

TDQ=<tdqname>

REGISTER REG Liberty 서버 WOLA 그룹에 등록 RGN=<name>

DGN=<name>

NDN=<name>

SVN=<name>

MNC=<minimum_number_ of_connections>

MXC=<maximum_number_ of_connections>

SEC=<Y|N>

TRC=<0|1|2>

TDQ=<tdqname>

RTXP=<Y|N>

RTX=<remote_transaction_ID>

RETRY=<Y|N>

RETCNT=<number_of_requests>

RETINT=<number_of_seconds>

TXN=<Y|N>

UNREGISTER   Liberty 서버 최적화 로컬 어댑터에서 등록 해제 RGN=<name>
START_SRVR STA 전달된 레지스터 이름에 대해 Liberty 서버 태스크를 시작합니다. RGN=<name>

DGN=<name>

NDN=<name>

SVC=<name>

SVN=<name>

MNC=<minimum_number_ of_connections>

MXC=<maximum_number_ of_connections>

SEC=<Y|N>

STX=<CICS_link_server_ transaction_ID>

LTX=<CICS_link_server_ transaction_ID>

TRC=<0|1|2>

TDQ=<tdqname>

REU=<Y|N>

REUC=<number_of_requests>

REUT=<number_of_seconds>

RTXP=<Y|N>

RTX=<remote_transaction_ID>

RETRY=<Y|N>

RETCNT=<number_of_requests>

RETINT=<number_of_seconds>

TXN=<Y|N>

STOP_SRVR STP 레지스터 이름에 대해 Liberty 서버 태스크를 중지합니다. RGN=<name>

TRC=<0|1|2>

TDQ=<tdqname>

DOCTEMPLATE DOC DOCTEMPLATE (DOC)는 명령 문자열(BBOC 명령 및 모든 인수)을 CICS 문서 템플리트 소스에서 읽어와야 함을 표시합니다. BBOC DOC NAME=<template_name>을 지정하는 경우, 이는 전체 요청이 제공된 이름으로 문서 템플리트의 단일 행에 있음을 표시합니다. 문서 템플리트의 정의에 대한 정보는 CICS 문서를 참조하십시오. 이는 CICS 리젼의 파일 시스템의 파일 및 데이터 세트, 데이터 세트 멤버에서 읽은 긴 명령 문자열(최대 500자)을 갖는 기능을 제공합니다. 문서 템플리트 소스 파일 내에 BBOC DOC NAME=<> 요청을 지정하는 것은 지원되지 않습니다. NAME=<CICS_document_template_name>TRC=<0|1|2>

샘플 BBOC 명령

다음은 CICS 어댑터 프로그램 링크 지원으로 다양한 태스크 및 구성이 완료될 수 있는 방법을 보여주는 BBOC 호출의 샘플입니다.
  • 어댑터 CICS TRUE 프로그램을 시작합니다.

    bboc start_true

  • 어댑터 CICS TRUE 프로그램을 중지하십시오.

    bboc stop_true

  • 최대 연결 수가 10이고, 최소 연결 수가 5이고 및 보안 전파를 가진 LIB1, LIB2 및 LIB3라는 이름을 가진 WOLA 그룹에서 CICS-HR1이라는 이름으로 등록합니다.

    bboc register rgn=CICS-HR1 dgn=LIB1 ndn=LIB2 svn=LIB3 mnc=5 mxc=10 sec=y

  • CICS-HR1라는 이름으로 등록 해제합니다.

    bboc unregister rgn=CICS-HR1

  • 최대 연결 수가 10이고 최소 연결 수가 5이고 보안 전파를 가진 WOLA 그룹을 가진 CICSPAYR이라는 등록 이름 아래의 모든 서비스 및 프로그램 이름에 대해 BBO$로 서버 트랜잭션을 시작합니다.

    bboc start_srvr rgn=CICSPAYR dgn=LIB1 ndn=LIB2 svn=LIB3 mnc=5 mxc=10 sec=y

  • 등록 이름 CICSPAYR 아래에서 실행 중인 BBO$ 서버 트랜잭션을 중지합니다.

    bboc stop_srvr rgn=CICSPAYR

  • 최대 연결 수가 10이고 최소 연결 수가 5이고 보안 전파를 가진 WOLA 그룹을 가진 CICSPAY1이라는 레지스터 이름 아래에서 PAYR로 시작하는 서비스 및 프로그램 이름에 대해 BBO$로 서버 트랜잭션을 시작합니다.

    bboc start_srvr rgn=CICSPAY1 dgn=LIB1 ndn=LIB2 svn=LIB3 mnc=5 mxc=10 sec=y svc=PAYR*

  • 트랜잭션 ID PAY2 아래에서 서버 트랜잭션을 시작하고 최대 연결 수가 10이고 최소 연결 수가 5이고 기본 추적 및 보안 전파를 가진 WOLA 그룹에서 모든 서비스 및 프로그램 이름에 대해 PAYROLL2라는 이름으로 등록합니다.

    bboc start_srvr rgn=PAYROLL2 dgn=LIB1 ndn=LIB2 svn=LIB3 mnc=5 mxc=10 sec=y stx=PAY2 trc=1

  • 트랜잭션 ID PAY3 및 링크 트랜잭션 ID PY3L 아래에서 서버 트랜잭션을 시작합니다. 최대 연결 수가 10이고 최소 연결 수가 5이고 기본 추적 및 보안 전파를 가진 WOLA 그룹에서 PAYRL3로 시작하는 서비스 및 프로그램 이름에 대해 PAYROLL3라는 이름으로 등록합니다.

    bboc start_srvr rgn=PAYROLL3 dgn=LIB1 ndn=LIB2 svn=LIB3 mnc=5 mxc=10 sec=y svc=PAYRL3* stx=PAY3 ltx=PY3L trc=1

  • 매개변수가 모두 LONGCMD라고 하는 CICS 문서 템플리트 소스에서 읽혀지는 링크 서버 트랜잭션을 시작합니다.

    bboc doc name=LONGCMD

CICS 시작 중에 자동으로 BBOC 명령 실행

두 개의 CICS PLTPI(Program List Table Post-Initialization) 프로그램(BBOACPLT 및 BBOACPL2)이 GitHub에서 샘플로 제공됩니다. 추가 정보는 Liberty의 최적화 로컬 어댑터 샘플의 내용을 참조하십시오.
  • CICS가 시작될 때 최적화 로컬 어댑터 TRUE를 시작하려면 CICS PLT에서 BBOACLPT를 단계(Phase) 2 또는 단계(Phase) 3 항목으로 추가하십시오.
  • CICS가 시작될 때 INITPARM 데이터를 사용하여 BBOC 명령을 실행하려면 CICS PLT에서 BBOACLP2를 단계(Phase) 2 또는 단계(Phase) 3 항목으로 추가하십시오.
INITPARM 내에서 CICS 제한인 최대 60자까지 명령의 문자열을 전달할 수 있습니다. 다음 샘플 INITPARM 문자열은 BBOACPL2를 호출하고 요청을 전달하여 WOLA 그룹 이름 LIB1, LIB2 및 LIB3를 가진 레지스터 이름 PAYROLL 아래에서 링크 서버를 시작합니다. SVC=*를 지정하면 이 링크 서버가 모든 서비스 이름에 대한 요청을 수신합니다.
INITPARM=(BBOACPL2='STA RGN=PAYROLL DGN=LIB1 NDN=LIB2 SVN=LIB3 SVC=*')
명령 문자열은 다음 샘플 INITPARM 문자열의 REG와 같이 임의의 BBOC 명령이 될 수 있습니다. CICS가 시작되면 이 문자열은 10개의 최소 연결과 100개의 최대 연결로 구성되는 LIBAPP라는 이름 아래에서 등록을 작성합니다.
INITPARM=(BBOACPL2='REG RGN=LIBAPP DGN=LIB1 NDN=LIB2 SVN=LIB3 MNC=10 MXC=100')

CICS가 시작될 때 등록을 작성하는 경우에는 애플리케이션에서 등록 API를 사용하지 마십시오. 대신 즉시 다른 API(예: 호출 또는 연결 가져오기)를 사용하십시오.

중요사항: BBOACPL2 프로그램당 하나의 INITPARM 문자열만 사용할 수 있습니다.
PLT 프로그램을 사용하여 등록 또는 링크 서버를 자동으로 작성하는 경우에는 CICS가 나머지 최적화 로컬 어댑터 트랜잭션을 취소하는 동안 지연을 방지하기 위해 CICS를 종료하기 전에 서버를 등록 해제하거나 중지해야 합니다. 다음과 같은 방법으로 최적화 로컬 어댑터 자원을 제거할 수 있습니다.
  • 모든 CICS 링크 서버에 대해 BBOC STOP_SERVER를 실행하거나 모든 등록에 대해 BBOC URG를 실행하십시오.
  • BBO$ 태스크를 제거하십시오.
  • STOP_SERVER 문자열을 전달하는 각각의 링크 서버에 대한 BBOACNTL에 EXEC CICS LINK 명령을 실행하는 PLT(Program List Table) 종료 프로그램을 쓰십시오.
  • CEMT P SHUT,IMMED 명령을 실행하십시오.

CICS를 위한 링크 서버 트랜잭션: BBO$

BBO$ CICS 트랜잭션은 CICS에 대한 Liberty 서버의 호출을 지원합니다. BBO$ 트랜잭션은 특정 레지스터 이름 및 서비스 이름에 대한 BBOC START_SRVR 조작으로 시작되는 서버 태스크의 인스턴스를 나타내는 비워크스테이션 트랜잭션입니다. 이 서버 태스크는 최적화 로컬 어댑터 API를 통해 Liberty 서버에서 기존 CICS 프로그램을 시작하는 기능인 프로그램 링크 호출 기능을 제공합니다.

BBOC START_SRVR 명령에서 STX=name을 지정하여 트랜잭션(BBO$)의 이름을 대체할 수 있습니다. BBO$와 동일한 프로그램 이름 및 속성으로 새 트랜잭션 이름을 CICS에 대해 정의해야 합니다. 추가 정보는 CICS에 대한 최적화 로컬 어댑터 정의의 내용을 참조하십시오.

CICS를 위한 프로그램 링크 호출 트랜잭션: BBO#

BBO# CICS 트랜잭션은 CICS에 대한 Liberty 서버의 호출을 지원합니다. BBO# 트랜잭션은 링크 서버 태스크(BBO$)가 프로그램 링크를 호출하기 위해 시작하는 태스크의 인스턴스를 나타내는 비워크스테이션 트랜잭션입니다. BBO$ 트랜잭션은 Liberty 서버 애플리케이션에서 각 CICS 프로그램 링크 요청에 대해 BBO#를 시작합니다.

BBOC START_SRVR 명령에서 LTX=name을 지정하여 트랜잭션(BBO#)의 이름을 대체할 수 있습니다. BBO#와 동일한 프로그램 이름 및 속성으로 새 트랜잭션 이름을 CICS에 대해 정의해야 합니다. 추가 정보는 CICS에 대한 최적화 로컬 어댑터 정의의 내용을 참조하십시오.또는 Liberty 서버 애플리케이션은 JCA setLinkTaskTransid 메소드를 사용하여 새 트랜잭션 이름을 CICS에 전달할 수 있습니다.


주제의 유형을 표시하는 아이콘 참조 주제

파일 이름: rwlp_dat_cics.html