SEND_ERROR
SEND_ERROR 동사는 TP(파트너 트랜잭션 프로그램)에 로컬 TP에 애플리케이션 수준 오류가 발생했음을 알 수 있습니다.
다음 구조체는 SEND_ERROR 동사에서 사용하는 VCB(동사 제어 블록)에 대해 설명합니다.
구문
struct send_error {
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;
unsigned char err_type;
unsigned char err_dir;
unsigned char reserv3;
unsigned short log_dlen;
unsigned char FAR * log_dptr;
};
구성원
opcode
제공된 매개 변수입니다. AP_B_SEND_ERROR 동사 작업 코드를 지정합니다.
opext
제공된 매개 변수입니다. AP_BASIC_CONVERSATION 동사 연산 확장을 지정합니다.
reserv2
예약된 필드입니다.
primary_rc
반환된 매개 변수입니다. 동사를 완료할 때 APPC에서 설정하는 기본 반환 코드를 지정합니다. 유효한 반환 코드는 발행된 APPC 동사에 따라 다릅니다. 이 동사의 유효한 오류 코드는 반환 코드를 참조하세요.
secondary_rc
반환된 매개 변수입니다. 동사를 완료할 때 APPC에서 설정하는 보조 반환 코드를 지정합니다. 유효한 반환 코드는 발행된 APPC 동사에 따라 다릅니다. 이 동사의 유효한 오류 코드는 반환 코드를 참조하세요.
tp_id
제공된 매개 변수입니다. 로컬 TP를 식별합니다.
이 매개 변수의 값은 호출하는 TP의 TP_STARTED 또는 호출된 TP의 RECEIVE_ALLOCATE 의해 반환됩니다.
conv_id
제공된 매개 변수입니다. 대화 식별자를 제공합니다. 이 매개 변수의 값은 호출하는 TP의 ALLOCATE또는 호출된 TP의 RECEIVE_ALLOCATE 의해 반환됩니다.
rts_rcvd
반환된 매개 변수입니다. 파트너 TP가 REQUEST_TO_SEND 발급했는지 여부를 나타냅니다. 가능한 값은 다음과 같습니다.
AP_YES 파트너 TP가 로컬 TP가 대화를 RECEIVE 상태로 변경하도록 요청하는 REQUEST_TO_SEND 발급했음을 나타냅니다. RECEIVE 상태로 변경하기 위해 로컬 TP는 PREPARE_TO_RECEIVE, RECEIVE_AND_WAIT 또는 RECEIVE_AND_POST 사용할 수 있습니다.
AP_NO 파트너 TP가 REQUEST_TO_SEND 발급하지 않음을 나타냅니다.
err_type
제공된 매개 변수입니다. 보고되는 오류 유형(애플리케이션 프로그램 또는 서비스 프로그램)을 나타냅니다.AP_PROG 오류가 최종 사용자 애플리케이션 프로그램에 보고됨을 나타냅니다. 이 값을 사용하면 APPC가 다음 반환 코드 중 하나를 파트너 TP로 보냅니다.
AP_PROG_ERROR_NO_TRUNC
AP_PROG_ERROR_PURGING
AP_PROG_ERROR_TRUNC
AP_SVC 오류가 서비스 프로그램에 보고됨을 나타냅니다. 이 값을 사용하면 APPC가 다음 반환 코드 중 하나를 파트너 TP로 보냅니다.
AP_SVC_ERROR_NO_TRUNC
AP_SVC_ERROR_PURGING
AP_SVC_ERROR_TRUNC
err_dir
제공된 매개 변수입니다. 오류가 방금 수신된 데이터와 전송될 데이터가 있는지 여부를 나타냅니다. 대화가 SEND_PENDING 상태인 경우에만 이 매개 변수를 사용합니다. 그렇지 않으면 매개 변수가 무시됩니다. 허용되는 값은 다음과 같습니다.AP_RCV_DIR_ERROR 방금 받은 데이터와 관련된 오류를 검색한 후 TP가 SEND_ERROR 발급했음을 나타냅니다.
AP_SEND_DIR_ERROR TP가 전송할 데이터와 관련된 오류를 검색한 후 SEND_ERROR 발급되었음을 나타냅니다. 예를 들어 TP가 디스크 드라이브에서 데이터를 읽는 동안 오류가 발생했습니다.
reserv3
예약된 필드입니다.log_dlen
기본 대화에 대해 제공된 매개 변수; 는 오류 로그 파일로 보낼 데이터 바이트 수를 지정합니다. 범위는 0에서 32767까지입니다.길이가 0이면 오류 로그 데이터가 없음을 나타냅니다.
log_dptr
기본 대화에 대해 제공된 매개 변수; 는 오류 정보를 포함하는 데이터 버퍼의 주소를 지정합니다. 데이터는 로컬 오류 로그 및 LU(파트너 논리 단위)로 전송됩니다.이 매개 변수는 log_dlen 0보다 큰 경우 SEND_ERROR 사용됩니다.
Microsoft Windows의 경우 데이터 버퍼는 정적 데이터 영역 또는 전역적으로 할당된 영역에 상주할 수 있습니다. 데이터 버퍼는 이 영역 내에 완전히 맞아야 합니다.
TP는 오류 데이터의 형식을 GDS 오류 로그 변수로 지정해야 합니다. 자세한 내용은 IBM SNA 설명서를 참조하세요.
반환 코드
AP_OK
기본 반환 코드입니다. 동사가 성공적으로 실행되었습니다.
AP_PARAMETER_CHECK
기본 반환 코드입니다. 매개 변수 오류로 인해 동사가 실행되지 않았습니다.
AP_BAD_CONV_ID
보조 반환 코드; conv_id 값이 APPC에서 할당한 대화 식별자와 일치하지 않습니다.
AP_BAD_TP_ID
보조 반환 코드; tp_id 값이 APPC에서 할당한 TP 식별자와 일치하지 않습니다.
AP_BAD_ERROR_DIRECTION
보조 반환 코드; 지정된 err_dir APPC에서 인식되지 않았습니다.
AP_INVALID_DATA_SEGMENT
보조 반환 코드; 로그 파일의 오류 데이터가 오류 데이터를 포함하도록 할당된 세그먼트보다 길거나 오류 데이터 버퍼의 주소가 잘못되었습니다.
AP_SEND_ERROR_BAD_TYPE
보조 반환 코드; err_type 값이 잘못되었습니다.
AP_SEND_ERROR_LOG_LL_WRONG
보조 반환 코드; 오류 로그 GDS 변수의 LL 필드가 데이터의 실제 길이와 일치하지 않습니다.
허용되는 상태에서 SEND_ERROR 발급될 때 다음 반환 코드를 생성할 수 있습니다.
AP_COMM_SUBSYSTEM_ABENDED
기본 반환 코드입니다. 다음 조건 중 하나를 나타냅니다.
이 대화에서 사용하는 노드에 ABEND가 발생했습니다.
TP와 PU 2.1 노드 간의 연결이 끊어졌습니다(LAN 오류).
TP 컴퓨터의 SnaBase에서 ABEND가 발생했습니다.
시스템 관리자는 오류 로그를 검사하여 ABEND의 원인을 확인해야 합니다.
AP_COMM_SUBSYSTEM_NOT_LOADED
기본 반환 코드; 동사를 처리하는 동안 필수 구성 요소를 로드하거나 종료할 수 없습니다. 따라서 통신을 수행할 수 없습니다. 정정 작업은 시스템 관리자에게 문의하세요이 반환 코드를 ALLOCATE와 함께 사용하면 로컬 LU를 지원하는 통신 시스템을 찾을 수 없음을 나타낼 수 있습니다. (예를 들어 TP_STARTED 로 지정된 로컬 LU 별칭이 잘못되었거나 구성되지 않았습니다.) lu_alias 또는 mode_name 8자 미만인 경우 이러한 필드가 오른쪽의 공백으로 채워져 있는지 확인해야 합니다. ALLOCATE 요청을 충족 할 수 있는 노드가 없으므로 이러한 매개 변수가 공백으로 채워지지 않으면 이 오류가 반환됩니다.
ALLOCATE가 여러 노드로 구성된 호스트 통합 서버 클라이언트 시스템에 대해 이 반환 코드를 생성하는 경우 다음과 같이 두 개의 보조 반환 코드가 있습니다.
0xF0000001
보조 반환 코드; 노드가 시작되지 않았습니다.
0xF0000002
보조 반환 코드; 하나 이상의 노드가 시작되었지만 로컬 LU( TP_STARTED 실행될 때)가 활성 노드에서 구성되지 않았습니다. 문제는 다음 중 하나일 수 있습니다.
로컬 LU가 있는 노드가 시작되지 않았습니다.
로컬 LU가 구성되지 않았습니다.
AP_CONV_FAILURE_NO_RETRY
기본 반환 코드; 세션 프로토콜 오류와 같은 영구적인 조건으로 인해 대화가 종료되었습니다. 시스템 관리자는 시스템 오류 로그를 검사하여 오류의 원인을 확인해야 합니다. 오류가 수정될 때까지 대화를 다시 시도하지 마세요.AP_CONV_FAILURE_RETRY
기본 반환 코드; 일시적인 오류로 인해 대화가 종료되었습니다. TP를 다시 시작하여 문제가 다시 발생하는지 확인합니다. 이 경우 시스템 관리자는 오류 로그를 검사하여 오류의 원인을 확인해야 합니다.AP_CONVERSATION_TYPE_MIXED
기본 반환 코드; TP는 기본 및 매핑된 대화 동사를 모두 실행했습니다. 단일 대화에서 하나의 형식만 발급할 수 있습니다.AP_INVALID_VERB_SEGMENT
기본 반환 코드입니다. VCB가 데이터 세그먼트의 끝을 넘어 확장되었습니다.AP_STACK_TOO_SMALL
기본 반환 코드입니다. 애플리케이션의 스택 크기가 너무 작아서 동사를 실행할 수 없습니다. 애플리케이션의 스택 크기를 늘리세요.AP_CONV_BUSY
기본 반환 코드; 모든 대화에서 한 번에 하나의 뛰어난 대화 동사만 있을 수 있습니다. 로컬 TP에 여러 스레드가 있고 둘 이상의 스레드가 동일한 conv_id 사용하여 APPC 호출을 실행하는 경우에 발생할 수 있습니다.AP_THREAD_BLOCKING
기본 반환 코드입니다. 호출 스레드가 이미 차단 호출에 있습니다.AP_UNEXPECTED_DOS_ERROR
기본 반환 코드입니다. 로컬 TP의 APPC 호출을 처리하는 동안 운영 체제가 APPC에 오류를 반환했습니다. 운영 체제 반환 코드는 secondary_rc를 통해 반환됩니다. Intel 바이트 스와핑 순서로 표시됩니다. 문제가 지속되면 시스템 관리자에게 문의하세요.SEND 상태에서 SEND_ERROR 발급된 경우에만 다음 반환 코드를 생성할 수 있습니다.
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)을 지원하지 않거나 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_PROG_ERROR_PURGING
기본 반환 코드; RECEIVE, PENDING, PENDING_POST, CONFIRM, CONFIRM_SEND 또는 CONFIRM_DEALLOCATE 상태에서 파트너 TP는 AP_PROG 설정된 err_type SEND_ERROR 발급했습니다. 전송되었지만 아직 수신되지 않은 데이터는 제거됩니다.SEND 상태에서 SEND_ERROR 발급된 경우에만 다음 반환 코드를 생성할 수 있습니다.
AP_DEALLOC_ABEND_PROG
기본 반환 코드; 다음 이유 중 하나로 인해 대화의 할당이 취소되었습니다.파트너 TP는 dealloc_type AP_ABEND_PROG 설정된 DEALLOCATE를 발급했습니다.
파트너 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
기본 반환 코드; err_type RECEIVE, PENDING_POST , CONFIRM, CONFIRM_SEND 또는 CONFIRM_DEALLOCATE 상태에서 AP_SVC 설정된 SEND_ERROR 발급한 파트너 TP(또는 파트너 LU)입니다. 파트너 TP로 전송된 데이터가 제거되었을 수 있습니다.다음 반환 코드는 SEND_ERROR RECEIVE 상태에서 발급된 경우에만 생성할 수 있습니다.
AP_DEALLOC_NORMAL
기본 반환 코드; 이 반환 코드는 오류를 나타내지 않습니다.파트너 TP는 다음 중 하나로 설정된 dealloc_typeDEALLOCATE를 발급했습니다.
AP_FLUSH
AP_SYNC_LEVEL 대화의 동기화 수준이 AP_NONE
설명
TP가 이 동사를 발급할 때 RESET을 제외한 모든 상태에 있을 수 있습니다. err_dir 사용되는 경우 대화 상태가 SEND_PENDING 합니다.
로컬 TP는 파트너 TP에 오류 알림을 즉시 보냅니다. 로컬 LU의 송신 버퍼에 정보를 저장하지 않습니다.
이 동사를 성공적으로 실행하면 대화가 로컬 TP의 SEND 상태이고 파트너 TP의 RECEIVE 상태가 됩니다.
새 상태는 primary_rc 의해 결정됩니다. 가능한 상태 변경 내용은 다음 표에 요약되어 있습니다.
primary_rc | 새 상태 |
---|---|
AP_OK | SEND |
AP_ALLOCATION_ERROR | RESET |
AP_CONV_FAILURE_RETRY | RESET |
AP_CONV_FAILURE_NO_RETRY | RESET |
AP_DEALLOC_ABEND | RESET |
AP_DEALLOC_ABEND_PROG | RESET |
AP_DEALLOC_ABEND_SVC | RESET |
AP_DEALLOC_ABEND_TIMER | RESET |
AP_DEALLOC_NORMAL | RESET |
AP_PROG_ERROR_PURGING | RECEIVE |
AP_SVC_ERROR_PURGING | RECEIVE |
TP가 SEND_ERROR 문제를 해결할 때 대화가 RECEIVE 상태인 경우 들어오는 데이터는 APPC에 의해 제거됩니다. 이러한 데이터는 다음과 같습니다.
SEND_DATA 전송된 데이터입니다.
코드 표시기를 반환합니다.
확인 요청.
할당 취소 요청.
APPC는 들어오는 송신 요청 표시기를 제거하지 않습니다. APPC는 제거된 들어오는 반환 코드 표시기를 다른 반환 코드로 바꿉니다. 기본 반환 코드 AP_OK 제거된 다음 반환 코드 표시기를 대체합니다.
AP_PROG_ERROR_NO_TRUNC
AP_PROG_ERROR_PURGING
AP_PROG_ERROR_TRUNC
AP_SVC_ERROR_NO_TRUNC
AP_SVC_ERROR_PURGING
AP_SVC_ERROR_TRUNC
기본 반환 코드 AP_DEALLOC_NORMAL 제거된 다음 반환 코드 표시기를 대체합니다.
AP_ALLOCATION_ERROR
AP_ALLOCATION_FAILURE_NO_RETRY
AP_ALLOCATION_FAILURE_RETRY
AP_CONVERSATION_TYPE_MISMATCH
AP_DEALLOC_ABEND
AP_DEALLOC_ABEND_PROG
AP_DEALLOC_ABEND_SVC
AP_DEALLOC_ABEND_TIMER
AP_PIP_NOT_ALLOWED
AP_PIP_NOT_SPECIFIED_CORRECTLY
AP_SECURITY_NOT_VALID
AP_SYNC_LEVEL_NOT_SUPPORTED
AP_TP_NAME_NOT_RECOGNIZED
AP_TRANS_PGM_NOT_AVAIL_NO_RETRY
AP_TRANS_PGM_NOT_AVAIL_RETRY
대화가 SEND_PENDING 상태이면 APPC는 err_dir 값에 따라 파트너 TP 에 다음 반환 코드를 보고합니다.
AP_PROG_ERROR_PURGING
로컬 TP는 receive를 err_dir 사용하여 SEND_ERROR 발급했습니다.AP_PROG_ERROR_NO_TRUNC
로컬 TP는 SEND를 err_dir 사용하여 SEND_ERROR 발급했습니다.AP_SVC_ERROR_PURGING
receive가 err_dir SEND_ERROR 로컬 TP가 발급되었습니다 .AP_SVC_ERROR_NO_TRUNC
로컬 TP는 SEND를 err_dir 사용하여 SEND_ERROR 발급했습니다.