z/OS CICS에서 여러 DB2 계획에 액세스

DB2® 테이블에 액세스하는 프로그램 시스템을 작성할 때는 각 프로그램의 모든 데이터베이스 요청 모듈(DBRM)을 하나의 DB2 계획에 바인드하지 않는 것이 좋습니다.

보안 및 유지보수를 위해, 하나의 프로그램 시스템에서 여러 DB2 계획에 액세스하려 할 수 있습니다. 이 절에는 z/OS®용 CICS®에서 여러 DB2 계획에 액세스하는 데 사용할 수 있는 세 가지 방법이 설명되어 있습니다. 처음 두 가지 방법에서는 트랜잭션 ID를 변경하는 방법을 설명합니다. 세 번째 방법은 DB2 동적 계획 선택 기능을 사용합니다.

RDO DB2ENTRY 또는 DB2TRAN 정의에서 DB2 계획 이름과 트랜잭션 ID를 연관시킨 경우에는 트랜잭션 ID를 변경하여 DB2 계획을 변경할 수 있습니다. RDO DB2ENTRY 및 DB2TRAN 정의에 대한 자세한 정보는 사용자의 DB2 버전에 해당하는 자원 정의 매뉴얼을 참조하십시오.

sysVar.transactionID를 사용하여 DB2 계획에 액세스

EGL 시스템 변수 sysVar.transactionID를 사용하면 세그먼트된 트랜잭션 ID를 동적으로 변경할 수 있습니다. 세그먼트된 프로그램을 실행할 때, sysVar.transactionID의 값은 각 converse 문 이후 즉시 프로그램을 다시 시작하는 데 트랜잭션 ID로 사용됩니다. sysVar.transactionID를 사용하여 트랜잭션 ID를 동적으로 변경하는 데 대한 간단한 예제는 다음 다이어그램에 표시되어 있으며, 여기서 트랜잭션 ID의 초기값은 "Menu"입니다.

그림 1. sysVar.transactionID 사용 예제트랜잭션 ID 변경에 대한 예제
표 1. 트랜잭션 ID 변경
애플리케이션: APPA APPB APPC
트랜잭션 ID(converse 후): AAAA BBBB CCCC
DB2 계획: PLANA PLANB PLANC
이 예제에서 메뉴 프로그램은 세 가지 옵션을 사용하여 메뉴 양식을 전환합니다. 사용자가 옵션을 선택하면 메뉴 프로그램은 transfer to program 문을 해당 태스크 지향 프로그램에 발행합니다. 세 가지 각 태스크 지향 프로그램은 트랜잭션 ID를 sysVar.transactionID로 이동하고, 양식을 전환한 후 DB2 테이블로부터 행을 검색합니다. 예를 들어, 다음 로직은 각 태스크 지향 프로그램에 사용될 수 있습니다.
...
sysVar.transactionID="AAAA"; // Set new transaction ID
converseInfoform();          // Converse information form to user
readDB2Record();             // Retrieve data from a DB2 table
...

메뉴 프로그램, 또는 태스크 지향 프로그램의 converse 문 이전에는 SQL문이 없습니다.

각 태스크 지향 프로그램의 DBRM은 고유 DB2 계획에 바인드되어 있으며 RDO DB2ENTRY 또는 DB2TRAN 정의의 고유 트랜잭션 ID와 연관되어 있습니다. 이 ID는 converse 문 이전에 sysVar.transactionID로 이동된 트랜잭션 ID입니다. converse 문 이후에는 새 트랜잭션 ID와 연관된 DB2 계획을 사용하여 새 트랜잭션이 시작됩니다.

트랜잭션 ID AAAA, BBBB 및 CCCC는 RDO DB2ENTRY 정의에서 각각 DB2 계획 PLANA, PLANB 및 PLANC와 연관되어 있습니다.

이 연관 방법은 세그먼트된 프로그램에서만 사용할 수 있습니다. 그러나 CICS 프로그램의 경우에는 transfer to transaction 문을 사용하거나 동적으로 DB2 계획을 선택함으로써 다른 DB2 계획에 액세스할 수 있습니다.

transfer to transaction 문을 사용하여 DB2 계획에 액세스

이 방법은 transfer to transaction 문을 사용하여 프로그램 간에 제어를 전송하는 경우 유용합니다. 트랜잭션 ID는 transfer to transaction 문을 사용하여 한 프로그램에서 다른 프로그램으로 전송할 때 변경됩니다. RDO DB2ENTRY 정의에서 새 트랜잭션 ID를 다른 DB2 계획과 연관시킨 경우에는 이를 통해 새 DB2 계획에 액세스할 수 있습니다.

동적으로 DB2 계획 선택

이 방법은 z/OS CICS 트랜잭션에 대해 DB2 계획 이름을 동적으로 선택하는 기능을 제공하는 DB2 동적 계획 선택을 사용합니다. DB2 동적 계획 선택은 RDO DB2ENTRY 정의에 DB2 계획 이름 대신 PLANEXITNAME을 정의할 수 있는 옵션을 제공합니다. exit program이 z/OS CICS 트랜잭션에 대한 DB2 계획을 선택합니다. 이 기능을 사용하면 하나의 트랜잭션 ID에 여러 계획을 연관시킬 수 있습니다. DB2 동적 계획 선택에 대한 자세한 정보는 사용자의 DB2 시스템 문서를 참조하십시오.

논리적 작업 단위(LUW)에 있는 첫 번째 SQL문이 exit program을 시작합니다.