프로그램 세그먼트의 트랜잭션 코드 전환
프로그램 간의 제어 전송으로 인해 발생하는 오버헤드를 줄일 수 있습니다.
CICS® 및 IMS™ 시스템에서, 세그먼트된 converse 문은 현재 트랜잭션을 종료합니다. 사용자의 터미널 입력이 새 트랜잭션을 시작합니다. 새 트랜잭션은 프로그램이 converse 문을 처리할 때 sysVar.transactionID 시스템 변수에 의해 식별됩니다. sysVar.transactionID의 기본값은 현재 트랜잭션에 있는 초기 프로그램과 연관된 트랜잭션 ID입니다.
다른 프로그램의 transfer to program 문으로 시작된 프로그램에서 세그먼트된 converse 문을 사용하는 경우(예를 들면, A가 transfer to program 문을 사용, converse 문을 실행하는 B에게 제어를 전송함)에는 기본 트랜잭션 ID가 프로그램 B의 converse에 대한 입력에서 원래 프로그램(A)를 다시 시작합니다. 생성된 프로그램 A는 작업 데이터베이스에서 상태 레코드를 읽고, B가 converse를 실행한 프로그램임을 판별한 후 처리를 계속하기 위해 B에게 제어를 전송합니다. 이 로직은 사용자를 위해 프로그램 내에 생성됩니다.
- transfer to program 문에 의해 시작된 각 세그먼트된 프로그램에 대해 고유 트랜젝션 ID를 정의하십시오.
- 프로그램에 대응하는 트랜잭션 ID를 해당 프로그램의 첫 번째 converse 문을 실행하기 전에 sysVar.transactionID로 이동하십시오.
사용하는 각 트랜잭션 ID는 해당 프로그램과 연관되어 있다고 IMS 또는 CICS에 정의되어야 합니다.
다음 두 다이어그램은 기본 트랜잭션 ID로 transfer to program 문을 사용하는 경우의 프로그램 플로우를 sysVar.transactionID 변수를 설정하는 경우와 비교하여 차이점을 보여줍니다.


CICS에서는 기본 트랜잭션 ID를 사용하는 경우 트랜잭션 ABCD를 메뉴 프로그램과 연관시키기 위해 하나의 RDO TRANSACTION 항목이 필요합니다. transfer to program을 사용한 후 sysVar.transactionID를 "GETD로 설정한 경우에는 두 개의 TRANSACTION 항목(트랜잭션 ABCD를 메뉴 프로그램과 연관시키는 데 하나, 트랜잭션 GETD를 프로그램 GETDATA와 연관시키는 데 하나)이 필요합니다.
IMS에서는 기본 트랜잭션 ID를 사용하는 경우 트랜잭션 ABCD를 메뉴 프로그램의 PSB와 연관시키는 데 하나의 APPLCTN 및 TRANSACT 매크로 쌍이 필요합니다. transfer to program을 사용한 후 sysVar.transactionID를 "GETD"로 설정한 경우에는 두 개의 APPLCTN 및 TRANSACT 매크로 쌍(트랜잭션 ABCD를 메뉴 프로그램의 PSB와 연관시키는 데 한 쌍, 트랜잭션 GETD를 프로그램 GETDATA의 PSB와 연관시키는 데 한 쌍)이 필요합니다.