확인
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의 다음 동사 중 하나에 의해 생성됩니다.
dealloc_type AP_ABEND_PROG, AP_ABEND_SVC 또는 AP_ABEND_TIMER 설정된 DEALLOCATE
-
ALLOCATE 후 CONFIRM를 실행하면 호출하는 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의 송신 버퍼에 있는 다른 데이터와 함께 누적됩니다.