rollback()

sysLib.rollback() 시스템 함수는 마지막 커미트 이후 복구 가능한 자원의 업데이트를 되돌립니다.

되돌리기는 모든 EGL 생성 애플리케이션에서 발생합니다.

프로그램이 오류로 인해 종료되면 자동으로 롤백이 발생합니다.

구문

  sysLib.rollback( )

호환성

표 1. rollback()의 호환성 고려사항
플랫폼 문제
Java™ 생성
  • sysLib.rollback()은 다음 자원의 변경사항을 되돌립니다.
    • 관계형 데이터베이스
    • WebSphere® MQ 메시지 큐
    • 클라이언트 제어 작업 단위를 사용하여 호출된 원격 서버 프로그램
  • EJB(Enterprise JavaBean)를 통해 호출한 생성된 Java 프로그램에서 sysLib.rollback()을 호출하지 마십시오. EJB는 EJB가 실행되는 트랜잭션과 접촉할 수 없습니다.
z/OS®용 CICS®
  • sysLib.rollback()을 호출하면 CICS SYNCPOINT ROLLBACK이 발생하여 변경사항을 관계형 데이터베이스, WebSphere MQ 메시지 큐, 복구 가능한 자원으로 정의된 파일로 롤백합니다.
  • 원격 CICS 기반 COBOL 프로그램에 대한 호출에 클라이언트 제어 작업 단위가 포함되는 경우 생성된 Java 프로그램 또는 랩퍼가 원격 COBOL 프로그램에서 수행한 업데이트(CICS 복구 가능 파일의 업데이트 포함)도 되돌립니다. 자세한 정보는 callLink 요소의 luwControl의 내용을 참조하십시오.
  • 원격으로 호출된 일괄처리 프로그램(호출 프로그램과 다른 시스템에 상주하는 프로그램)이 sysLib.rollback()을 호출할 수 있습니다. luwControl 속성을 SERVER로 설정하면 롤백이 정상적으로 작동합니다. 이 속성을 CLIENT로 설정하면 EGL이 RuntimeException을 예외 처리(throw)합니다.

sysLib.rollback()은 스풀 파일을 롤백합니다.

IMS™ BMP sysLib.rollback()을 호출하면 DL/I ROLB가 호출됩니다. 비고속 대체 PCB와 연관된 직렬 파일에 기록되는 출력도 되돌립니다.
IMS/VS sysLib.rollback()을 호출하면 DL/I ROLB가 호출됩니다. 비고속 대체 PCB와 연관된 직렬 파일에 기록된 출력도 되돌립니다.
JavaScript 생성 sysLib.rollback()이 지원되지 않습니다.
WebSphere MQ 메시지 큐
  • 메시지 큐 업데이트는 MQRecord 파트에서 includeMsgInTransaction 특성이 YES로 설정된 경우에만 복구 가능합니다.
  • 메시지 get 문과 add 문 모두 복구 가능 메시지의 sysLib.commit()sysLib.rollback()의 영향을 받습니다. 복구 가능 메시지에 대해 get 다음에 sysLib.rollback()을 실행하면 트랜잭션을 완료하지 못하는 경우 입력 메시지가 손실되지 않도록 다시 입력 큐에 메시지가 배치됩니다. 또한 복구 가능 메시지에 대해 add 다음에 sysLib.rollback()을 실행하면 메시지가 큐에서 삭제됩니다.
z/OS 일괄처리
  • 프로그램이 SQL 액세스를 위해 TSO 터미널 모니터 프로그램에서 실행되고 사용자가 sysLib.rollback()을 호출하면 SQL ROLLBACK WORK 문이 실행됩니다.
  • 프로그램이 DL/I 일괄처리 작업으로 실행되고 사용자가 DL/I 또는 SQL 요청을 작성한 경우 DL/I ROLB 호출이 실행됩니다. 일괄처리 작업이 시작되면 ROLB 호출이 유지되도록 IMS 일괄처리 매개변수 BKO=Y을 지정해야 합니다. BKO=N을 지정하면 DL/I가 ROLB 호출에 대해 상태 코드 AL을 리턴합니다. 프로그램은 AL을 소프트 오류로 처리하고 오류 메시지를 발행하지 않습니다. BKO를 IMS 제어 프로그램 DFSRRC00를 호출하는 작업 단계에서 매개변수로 지정하십시오.
  • GSAM 파일과 연관된 직렬 또는 인쇄 파일과 sysLib.audit()의 사용은 DL/I 요청의 원인이 되고 DL/I ROLB 호출이 실행되게 합니다.
  • DL/I를 사용하지 않는 EGL 프로그램은 프로그램이 SQL 테이블을 변경한 경우에만 롤백을 실행합니다. 비EGL(또는 비VisualAge Generator) 프로그램이 SQL 테이블을 변경한 경우에는 롤백이 수행되지 않습니다.