다음을 통해 공유


확인

CONFIRM 동사는 로컬 LU(논리 단위) 송신 버퍼의 내용과 TP(파트너 트랜잭션 프로그램)에 확인 요청을 보냅니다.

다음 구조체는 CONFIRM 동사에서 사용하는 동사 제어 블록에 대해 설명합니다.

구문

  
struct confirm {  
    unsigned short  opcode;  
    unsigned char   opext;  
    unsigned char   reserv2;  
    unsigned short  primary_rc;  
    unsigned long   secondary_rc;  
    unsigned char   tp_id[8];  
    unsigned long   conv_id;  
    unsigned char   rts_rcvd;  
};   

설명

멤버

opcode
제공된 매개 변수입니다. 동사 작업 코드 AP_B_CONFIRM 지정합니다.

opext
제공된 매개 변수입니다. 동사 연산 확장 AP_BASIC_CONVERSATION 지정합니다.

reserv2
예약된 필드입니다.

primary_rc
반환된 매개 변수입니다. 동사를 완료할 때 APPC에서 설정하는 기본 반환 코드를 지정합니다. 유효한 반환 코드는 발행된 APPC 동사에 따라 다릅니다. 이 동사의 유효한 오류 코드는 반환 코드를 참조하세요.

secondary_rc
반환된 매개 변수입니다. 동사를 완료할 때 APPC에서 설정하는 보조 반환 코드를 지정합니다. 유효한 반환 코드는 발행된 APPC 동사에 따라 다릅니다. 이 동사의 유효한 오류 코드는 반환 코드를 참조하세요.

tp_id
제공된 매개 변수입니다. 로컬 TP를 식별합니다. 이 매개 변수의 값은 TP_STARTED 반환되었습니다.

conv_id
반환된 매개 변수입니다. 두 TP 간에 설정된 대화를 식별합니다.

rts_rcvd
반환된 매개 변수입니다. 파트너 TP가 로컬 TP에 대화를 RECEIVE 상태로 변경하도록 요청하는 REQUEST_TO_SEND 발급했는지 여부를 나타냅니다.

Microsoft Windows에서 작동하는 RECEIVE 상태로 변경하려면 로컬 TP에서 PREPARE_TO_RECEIVE, RECEIVE_AND_WAIT 또는 RECEIVE_AND_POST 사용할 수 있습니다.

반환 코드

AP_OK
기본 반환 코드입니다. 동사가 성공적으로 실행되었습니다.

AP_PARAMETER_CHECK
기본 반환 코드입니다. 매개 변수 오류로 인해 동사가 실행되지 않았습니다.

AP_BAD_CONV_ID

보조 반환 코드; conv_id 값이 APPC에서 할당한 대화 식별자와 일치하지 않습니다.

AP_BAD_TP_ID

보조 반환 코드; tp_id 값이 APPC에서 할당한 TP 식별자와 일치하지 않습니다.

AP_CONFIRM_ON_SYNC_LEVEL_NONE

보조 반환 코드; 로컬 TP가 동기화 수준의 AP_NONE 대화에서 CONFIRM 를 사용하려고 했습니다. ALLOCATE에서 설정한 동기화 수준은 AP_CONFIRM_SYNC_LEVEL 합니다.

AP_STATE_CHECK
기본 반환 코드입니다. 동사가 잘못된 상태에서 발행되었으므로 실행되지 않았습니다.

AP_CONFIRM_BAD_STATE

보조 반환 코드; 대화가 SEND 상태가 아닙니다.

AP_CONFIRM_NOT_LL_BDY

보조 반환 코드; 로컬 TP에 대한 대화가 SEND 상태였고 로컬 TP가 논리 레코드 보내기를 완료하지 않았습니다.

AP_ALLOCATION_ERROR
기본 반환 코드; APPC에서 대화를 할당하지 못했습니다. 대화 상태가 RESET로 설정됩니다.

이 코드는 ALLOCATE 후에 발급된 동사를 통해 반환할 수 있습니다.

AP_ALLOCATION_FAILURE_NO_RETRY

보조 반환 코드; 구성 오류 또는 세션 프로토콜 오류와 같은 영구적인 조건으로 인해 대화를 할당할 수 없습니다. 오류를 확인하려면 시스템 관리자가 오류 로그 파일을 검사해야 합니다. 오류가 수정될 때까지 할당을 다시 시도하지 마세요.

AP_ALLOCATION_FAILURE_RETRY

보조 반환 코드; 링크 오류와 같은 임시 조건으로 인해 대화를 할당할 수 없습니다. 오류의 원인은 시스템 오류 로그에 기록됩니다. 할당을 다시 시도하세요.

AP_CONVERSATION_TYPE_MISMATCH

보조 반환 코드; 파트너 LU 또는 TP는 할당 요청에 지정된 대화 유형(기본 또는 매핑됨)을 지원하지 않습니다.

AP_PIP_NOT_ALLOWED

보조 반환 코드; 할당 요청이 지정된 PIP 데이터이지만 파트너 TP에 이 데이터가 필요하지 않거나 파트너 LU가 지원하지 않습니다.

AP_PIP_NOT_SPECIFIED_CORRECTLY

보조 반환 코드; 파트너 TP에는 PIP 데이터가 필요하지만 할당 요청은 PIP 데이터 또는 잘못된 수의 매개 변수를 지정하지 않았습니다.

AP_SECURITY_NOT_VALID

보조 반환 코드; 할당 요청에 지정된 사용자 식별자 또는 암호가 파트너 LU에 의해 수락되지 않았습니다.

AP_SYNC_LEVEL_NOT_SUPPORTED

보조 반환 코드; 파트너 TP는 할당 요청에 지정된 sync_level (AP_NONE, AP_CONFIRM_SYNC_LEVEL 또는 AP_SYNCPT)을 지원하지 않거나 sync_level 인식되지 않았습니다.

AP_TP_NAME_NOT_RECOGNIZED

보조 반환 코드; 파트너 LU가 할당 요청에 지정된 TP 이름을 인식하지 못합니다.

AP_TRANS_PGM_NOT_AVAIL_NO_RETRY

보조 반환 코드; 원격 LU가 요청된 파트너 TP를 시작할 수 없어 할당 요청을 거부했습니다. 영구적인 상태입니다. 오류의 원인이 원격 노드에 기록될 수 있습니다. 오류가 수정될 때까지 할당을 다시 시도하지 마세요.

AP_TRANS_PGM_NOT_AVAIL_RETRY

보조 반환 코드; 원격 LU가 요청된 파트너 TP를 시작할 수 없어 할당 요청을 거부했습니다. 조건(예: 시간 제한)은 일시적일 수 있습니다. 오류의 원인이 원격 노드에 기록될 수 있습니다. 할당을 다시 시도하세요.

AP_COMM_SUBSYSTEM_ABENDED
기본 반환 코드입니다. 다음 조건 중 하나를 나타냅니다.

  • 이 대화에서 사용하는 노드에 ABEND가 발생했습니다.

  • TP와 PU 2.1 노드 간의 연결이 끊어졌습니다(LAN 오류).

  • TP 컴퓨터의 SnaBase에서 ABEND가 발견되었습니다.

    시스템 관리자는 오류 로그를 검사하여 ABEND의 원인을 확인해야 합니다.

    AP_CONV_FAILURE_NO_RETRY
    기본 반환 코드; 세션 프로토콜 오류와 같은 영구적인 조건으로 인해 대화가 종료되었습니다. 시스템 관리자는 시스템 오류 로그를 검사하여 오류의 원인을 확인해야 합니다. 오류가 수정될 때까지 대화를 다시 시도하지 마세요.

    AP_CONV_FAILURE_RETRY
    기본 반환 코드; 일시적인 오류로 인해 대화가 종료되었습니다. TP를 다시 시작하여 문제가 다시 발생하는지 확인합니다. 이 경우 시스템 관리자는 오류 로그를 검사하여 오류의 원인을 확인해야 합니다.

    AP_CONVERSATION_TYPE_MIXED
    기본 반환 코드; TP는 기본 및 매핑된 대화 동사를 모두 실행했습니다. 단일 대화에서 하나의 형식만 발급할 수 있습니다.

    AP_INVALID_VERB_SEGMENT
    기본 반환 코드입니다. VCB가 데이터 세그먼트의 끝을 넘어 확장되었습니다.

    AP_PROG_ERROR_PURGING
    기본 반환 코드; RECEIVE, PENDING, PENDING_POST, CONFIRM, CONFIRM_SEND 또는 CONFIRM_DEALLOCATE 상태인 동안 파트너 TP는 err_type AP_PROG 설정된 SEND_ERROR 발급했습니다. 전송되었지만 아직 받지 않은 데이터는 제거됩니다.

    AP_STACK_TOO_SMALL
    기본 반환 코드입니다. 애플리케이션의 스택 크기가 너무 작아서 동사를 실행할 수 없습니다. 애플리케이션의 스택 크기를 늘리세요.

    AP_CONV_BUSY
    기본 반환 코드; 모든 대화에서 한 번에 하나의 미해결 대화 동사만 있을 수 있습니다. 로컬 TP에 여러 스레드가 있고 둘 이상의 스레드가 동일한 conv_id 사용하여 APPC 호출을 실행하는 경우에 발생할 수 있습니다.

    AP_THREAD_BLOCKING
    기본 반환 코드입니다. 호출 스레드가 이미 차단 호출에 있습니다.

    AP_UNEXPECTED_DOS_ERROR
    기본 반환 코드입니다. 로컬 TP의 APPC 호출을 처리하는 동안 운영 체제가 APPC에 오류를 반환했습니다. 운영 체제 반환 코드는 secondary_rc를 통해 반환됩니다. Intel 바이트 스와핑 순서로 표시됩니다. 문제가 지속되면 시스템 관리자에게 문의하세요.

    AP_DEALLOC_ABEND_PROG
    기본 반환 코드; 대화의 할당이 취소된 이유는 다음과 같습니다.

  • 파트너 TP는 AP_ABEND_PROG 설정된 dealloc_typeDEALLOCATE를 발급했습니다.

  • 파트너 TP가 ABEND를 발견하여 파트너 LU가 DEALLOCATE 요청을 보냅니다.

    AP_DEALLOC_ABEND_SVC
    기본 반환 코드; 파트너 TP가 AP_ABEND_SVC 설정된 dealloc_typeDEALLOCATE를 발급했기 때문에 대화의 할당이 취소되었습니다.

    AP_DEALLOC_ABEND_TIMER
    기본 반환 코드; 파트너 TP가 AP_ABEND_TIMER 설정된 dealloc_typeDEALLOCATE를 발급했기 때문에 대화의 할당이 취소되었습니다.

    AP_SVC_ERROR_PURGING
    기본 반환 코드; 수신, PENDING_POST, 확인, CONFIRM_SEND 또는 CONFIRM_DEALLOCATE 상태에 있는 동안 err_type AP_SVC 설정된 SEND_ERROR 발급한 파트너 TP(또는 파트너 LU)입니다. 파트너 TP로 전송된 데이터가 제거되었을 수 있습니다.

    주의

    CONFIRM에 대한 응답으로 파트너 TP는 일반적으로 CONFIRMED를 발급하여 오류 없이 데이터를 수신했는지 확인합니다. (파트너 TP에 오류가 발생하면 SEND_ERROR 문제가 발생하거나 대화의 할당을 비정상적으로 취소합니다.)

    TP는 ALLOCATE에 의해 설정된 대화의 동기화 수준이 AP_CONFIRM_SYNC_LEVEL 경우에만 CONFIRM를 실행할 수 있습니다.

    TP가 이 동사를 발급할 때 대화는 SEND 상태여야 합니다. 다음 표에 요약된 상태 변경 내용은 primary_rc 값을 기반으로 합니다.

primary_rc 새 상태
AP_OK 변경 내용 없음
AP_ALLOCATION_ERROR RESET
AP_COMM_SUBSYSTEM_ABENDED AP_COMM_SUBSYSTEM_NOT_LOADED RESET RESET
AP_CONV_FAILURE_RETRY AP_CONV_FAILURE_NO_RETRY RESET RESET
AP_DEALLOC_ABEND AP_DEALLOC_ABEND_PROG AP_DEALLOC_ABEND_SVC AP_DEALLOC_ABEND_TIMER RESET RESET RESET RESET
AP_PROG_ERROR_PURGING AP_SVC_ERROR_PURGING RECEIVE RECEIVE

CONFIRM 는 파트너 TP의 응답을 기다립니다. 응답은 파트너 TP의 다음 동사 중 하나에 의해 생성됩니다.

  • 확인

  • SEND_ERROR

  • dealloc_type AP_ABEND_PROG, AP_ABEND_SVC 또는 AP_ABEND_TIMER 설정된 DEALLOCATE

  • TP_ENDED

    ALLOCATECONFIRM를 실행하면 호출하는 TP가 할당이 성공했는지 여부를 즉시 확인할 수 있습니다(synclevel이 AP_CONFIRM_SYNC_LEVEL 설정된 경우).

    일반적으로 ALLOCATE 동사의 mode_name 매개 변수 값은 호출된 TP 노드에 대해 구성되고 파트너 LU와 구성 중에 연결된 모드의 이름과 일치해야 합니다.

    호출된 TP 노드에서 파트너 LU와 연결된 모드 중 하나가 암시적 모드인 경우 파트너 LU와 연결된 모드 이름이 mode_name 값과 일치하지 않는 경우 두 RU 간에 설정된 세션은 암시적 모드가 됩니다. 자세한 내용은 Host Integration Server 도움말을 참조하세요.

    ALLOCATE의 여러 매개 변수는 EBCDIC 또는 ASCII 문자열입니다. TP는 CSV(공용 서비스 동사) CONVERT 를 사용하여 문자열을 한 문자 집합에서 다른 문자로 변환할 수 있습니다.

    ALLOCATE 요청을 즉시 보내려면 호출하는 TP가 ALLOCATE 직후 FLUSH 또는 CONFIRM를 실행할 수 있습니다. 그렇지 않으면 ALLOCATE 요청은 버퍼가 가득 찼을 때까지 로컬 LU의 송신 버퍼에 있는 다른 데이터와 함께 누적됩니다.