다음을 통해 공유


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 발급했습니다.