논리적 작업 단위
non-recoverable 자원(예: Windows 2000의 직렬 파일)을 변경하는 경우, 해당 변경은 상대적으로 영구적입니다. 사용자의 코드와 EGL 런타임 서비스는 모두 알림 없이 변경을 취소할 수 없습니다. recoverable 자원(예: 데이터베이스)을 변경하는 경우, 사용자의 코드 또는 EGL 런타임 서비스는 변경사항을 커미트하여 영구적으로 만들거나 변경사항을 롤백하여 마지막으로 커미트했던 변경사항의 컨텐츠로 되돌릴 수 있습니다.
- 관계형 데이터베이스
- 복구 가능하도록 구성된 CICS® 큐 및 파일
- DL/I 데이터베이스 및 GSAM 파일(일부 경우)
- WebSphere® MQ 메시지 큐(MQ 레코드가 다르게 지정하지 않는 경우)
- 대체 PCB로 지정된 출력. 대체 PCB는 대상 시스템이 IMS™ BMP 또는 IMS/VS인 경우에 사용 가능
- 사용자의 코드는 sysLib.commit() 또는 sysLib.rollback() 시스템 함수를 호출하여 변경사항을 커미트하거나 롤백합니다.
- EGL 런타임 서비스는 사용자의 코드에서 처리되지 않는 하드웨어 오류에 응답하여 롤백을 수행합니다. 이 경우 실행 단위에 있는 모든 프로그램은 메모리에서 제거됩니다.
- 다음과 같은 경우 암시적 커미트가 발생합니다.
- 실행 단위가 성공적으로 종료됩니다. 실행 단위의 내용을 참조하십시오.
- 프로그램이 show 문을 실행합니다.
- 프로그램이 다음과 같이 구별하여 transfer to transaction 문을 실행합니다.
- CICS 또는 IMS/VS에서 실행되는 프로그램에서 전송은 항상 커미트를 유발합니다.
- 다른 프로그램에서 전송은 synchOnTrxTransfer 빌드 디스크립터 옵션의 값이 YES인 경우에만 커미트를 유발합니다.
- 텍스트 UI 프로그램은 해당 프로그램이 세그먼트된 프로그램으로 작동하는 경우 converse 문을 실행합니다.
프로그램이 트랜잭션 환경(CICS, IMS 또는 iSeries)에서 실행되는 경우, EGL은 실행 단위 내의 모든 자원 관리자와 모든 프로그램에서 통합된 2단계 커미트를 수행하는 환경 커미트를 실행합니다. 비트랜잭션 환경에서 EGL은 복구 가능한 각 자원 관리자를 개별적으로 호출하는 단일 단계 커미트를 수행합니다.
- 이 기능을 사용하려면 ELACPIOP 샘플 JCL을 사용하여 ELARPIOP의 새 버전을 생성하십시오. ELACPIOP 샘플 JCL은
zSeries용 IBM® Rational® COBOL
Runtime 제품의 사용자 정의 중에 작성되는 ELAJCL 데이터 세트입니다. 두 가지 선택사항이 있습니다.
- 프로그램 디렉토리의 섹션 6.2.1.2.2에 지정된 설치 사용자 정의를 반복하십시오. 또는
- 다음과 같이 RRSAF=Y 매개변수를 추가하여 ELACPIOP JCL을 수정하십시오.
ELARMIOP NLS=ENU,EOF=N,SCFOLD=Y,IMSESA=N,SEGMSG=N, X MSGTRN=ELAE,TRBUF=64,TSQUE=32,RRSAF=Y
- 다음 파일은 RRSAF를 사용할 수 있도록 변경되어야 합니다.
- 사용자 프로그램의 사전 컴파일에 사용되는 JCL 또는 EGL 빌드 스크립트
- 일괄처리 작업을 실행하는 데 사용되는 실행 JCL
추가적인 세부사항은 DB2 RRSAF 문서에 있습니다.
- 앞에서 설명한 EGL 지원은 암시적 RRSAF 데이터베이스 연결에만 사용됩니다. RRSAF 하에서 코드를 실행할 때
명시적 데이터베이스 연결을 사용하려면 EGL 프로그램을 업데이트해야 합니다.
추가적인 세부사항은 DB2 RRSAF 문서에 있습니다.
- EGL 프로그램이 비EGL 프로그램을 호출하고 두 프로그램이 SQL 테이블에 액세스할 때 비EGL 프로그램이 커미트 또는 롤백을 유발하는 경우 호출 전에 모든 커서를 닫아야 합니다.
- 비트랜잭션 환경에서 실행 단위의 EGL 프로그램이 SQL을 수행하지 않지만 SQL I/O를 수행하는 비EGL 프로그램으로 전송되거나 호출하는 경우, EGL은 실행 단위의 끝에서 커미트를 실행하지 않습니다.
호환성
| 플랫폼 | 문제 |
|---|---|
| Java™ 생성 |
|
| CICS | CICS 실행 단위에서는 한 번에 하나의
DB2 UDB 데이터베이스만 사용 가능합니다. 다음과 같은 방식으로 자동 처리가 발생합니다.
커미트는
DL/I 처리와 관련된 다음 경우에 발생합니다.
|
| IMS BMP | sysLib.commit()는 프로그램이 I/O PCB와 연관된 직렬 파일을 읽기 위해
get next 문을 사용하는 트랜잭션 중심 BMP 프로그램에 대해 무시됩니다. 이러한 프로그램의 경우
시스템은 다음과 같은 조건에서 커미트를 수행합니다.
GSAM 파일은 기본 CHKP와 함께 사용될 때 복구 불가능합니다. GSAM 파일을 복구 가능으로 만들려면 기호 체크포인트에 대해 sysLib.commit() 대신 dliLib.AIBTDLI(), dliLib.EGLTDLI() 또는 vgLib.VGTDLI()를 사용하십시오. |
| IMS/VS | sysLib.commit()는 무시됩니다. 커미트 처리는 다음 암시적 커미트 지점에서만 발생합니다.
논리적 작업 단위와 관련하여,
명시적 체크포인트 명령(CHXP)은 I/O PCB에 대해 get unique(GU) 호출을 유발하며 이는 커미트를 유발합니다. 다음 경고가 적용됩니다.
|
| iSeries COBOL | 암시적 커미트는 다음과 같은 상황에서 실행됩니다.
프로그램이 SQL 요청을 실행한 경우, sysLib.commit()를 호출하면 SQL COMMIT WORK 문이 됩니다. 프로그램이 SQL 요청을 실행하지 않은 경우, sysLib.commit()는 iSeries COMMIT 명령과 동등하게 됩니다. |
| z/OS 일괄처리 | 프로그램이 PSB를 지정하지 않았지만 SQL 요청을 실행한 경우, sysLib.commit()를 호출하면 SQL COMMIT WORK 문이 됩니다. 프로그램에 지정된 PSB가 있는 경우, sysLib.commit()를 호출하면 DL/I 기본 CHKP 호출이 되며, 이는 모든 데이터베이스에 변경사항을 커미트합니다. dliLib.psbData.psbName 구조의 컨텐츠는 CHKP 호출에서 체크포인트 ID로 동작합니다. GSAM 파일은 기본 CHKP와 함께 사용될 때 복구 불가능합니다. GSAM 파일을 복구 가능으로 만들려면 기호 체크포인트에 대해 sysLib.commit() 대신 dliLib.AIBTDLI(), dliLib.EGLTDLI() 또는 vgLib.VGTDLI()를 사용하십시오. |