Send_Error(CPI-C)
Send_Error 호출(함수 이름 cmserr)은 로컬 프로그램에 애플리케이션 수준 오류가 발생했음을 파트너 프로그램에 알릴 수 있습니다.
구문
CM_ENTRY Send_Error(
unsigned char FAR *conversation_ID,
CM_INT32 FAR *request_to_send_received,
CM_INT32 FAR *return_code
);
매개 변수
conversation_ID
제공된 매개 변수입니다. 대화의 식별자를 지정합니다. 이 매개 변수의 값은 Initialize_Conversation 또는 Accept_Conversation 반환되었습니다.
request_to_send_received
반환된 매개 변수입니다. 수신 요청 표시기를 지정합니다. 가능한 값은 다음과 같습니다.
CM_REQ_TO_SEND_RECEIVED
파트너 프로그램은 Request_To_Send 발급하여 로컬 프로그램에 대화를 RECEIVE 상태로 변경하도록 요청합니다.
CM_REQ_TO_SEND_NOT_RECEIVED
파트너 프로그램은 Request_To_Send 발급하지 않았습니다. 이 값은 return_code CM_PROGRAM_PARAMETER_CHECK 또는 CM_STATE_CHECK 설정된 경우 관련이 없습니다.
return_code
이 호출에서 반환된 코드입니다. 유효한 반환 코드는 이 항목의 뒷부분에 나와 있습니다.
반환 코드
return_code 값은 호출을 실행할 때 대화 상태에 따라 달라집니다.
SEND 상태
프로그램이 SEND 상태의 대화와 함께 호출을 실행하면 다음 반환 코드가 가능합니다.
CM_OK
기본 반환 코드; 호출이 성공적으로 실행되었습니다.
CM_OPERATION_NOT_ACCEPTED
기본 반환 코드; 이 대화에 대한 이전 작업이 불완전합니다.
CM_OPERATION_INCOMPLETE
기본 반환 코드; 작업이 완료되지 않았으며(처리 모드는 차단 해제 전용임) 아직 진행 중입니다. 프로그램은 Wait_For_Conversation 실행하여 작업 완료를 기다리거나 Cancel_Conversation 작업 및 대화를 취소할 수 있습니다. Specify_Windows_Handle 호출된 경우 애플리케이션은 Microsoft® Windows® 메시지의 알림을 기다리며 Wait_For_Conversation 호출하지 않아야 합니다.
CM_PRODUCT_SPECIFIC_ERROR
기본 반환 코드; 제품별 오류가 발생하여 제품 오류 로그에 기록되었습니다.
CM_CONVERSATION_TYPE_MISMATCH
기본 반환 코드; LU(파트너 논리 단위) 또는 프로그램은 할당 요청에 지정된 대화 유형(기본 또는 매핑됨)을 지원하지 않습니다.
CM_PIP_NOT_SPECIFIED_CORRECTLY
기본 반환 코드; 할당 요청은 비 CPI-C LU 6.2 트랜잭션 프로그램(TP)에 의해 거부되었습니다. 파트너 프로그램에는 CPI-C에서 지원하지 않는 하나 이상의 PIP 데이터 변수가 필요합니다.
CM_SECURITY_NOT_VALID
기본 반환 코드; 할당 요청에 지정된 사용자 식별자 또는 암호가 파트너 LU에 의해 수락되지 않았습니다.
CM_SYNC LEVEL_NOT_SUPPORTED_PGM
기본 반환 코드; 파트너 프로그램은 할당 요청에 지정된 동기화 수준을 지원하지 않습니다.
CM_TPN_NOT_RECOGNIZED
기본 반환 코드; 파트너 LU가 할당 요청에 지정된 프로그램 이름을 인식하지 못합니다.
CM_TP_NOT_AVAILABLE_NO_RETRY
기본 반환 코드; 파트너 LU는 영구적 조건 때문에 할당 요청에 지정된 프로그램을 시작할 수 없습니다. 오류의 원인이 원격 노드에 기록될 수 있습니다. 오류가 수정될 때까지 할당을 다시 시도하지 마세요.
CM_TP_NOT_AVAILABLE_RETRY
기본 반환 코드; 파트너 LU는 임시 조건으로 인해 할당 요청에 지정된 프로그램을 시작할 수 없습니다. 오류의 원인이 원격 노드에 기록될 수 있습니다. 할당을 다시 시도하세요.
CM_PROGRAM_ERROR_PURGING
기본 반환 코드; 다음 중 하나가 발생했습니다.
RECEIVE 또는 CONFIRM 상태인 동안 파트너 프로그램은 Send_Error 발급했습니다. 전송되었지만 아직 받지 않은 데이터는 제거됩니다.
오류 방향이 CM_RECEIVE_ERROR 설정된 SEND_PENDING 상태에서 파트너 프로그램은 Send_Error. 데이터가 제거되지 않았습니다.
CM_RESOURCE_FAILURE_NO_RETRY
기본 반환 코드; 다음 중 하나가 발생했습니다.대화는 영구적인 조건으로 인해 조기에 종료되었습니다. 오류가 수정될 때까지 다시 시도하지 마세요.
파트너 프로그램은 정상적으로 종료하기 전에 대화를 할당 취소하지 않았습니다.
CM_RESOURCE_FAILURE_RETRY
기본 반환 코드; 모뎀 오류와 같은 임시 조건으로 인해 대화가 조기에 종료되었습니다. 대화를 다시 시도합니다.CM_DEALLOCATED_ABEND
기본 반환 코드; 대화의 할당이 취소된 이유는 다음과 같습니다.원격 프로그램에서 CM_DEALLOCATE_ABEND 형식 매개 변수 집합으로 할당 취소를 실행했거나 원격 LU가 원격 프로그램 비정상 종료 조건으로 인해 할당 취소를 실행했습니다. 호출이 실행되었을 때 원격 프로그램에 대한 대화가 RECEIVE 상태이면 로컬 프로그램에서 전송되었지만 원격 프로그램에서 아직 받지 못한 정보가 제거됩니다.
원격 TP는 정상적으로 종료되었지만 종료하기 전에 대화의 할당을 취소하지 않았습니다. 원격 LU의 노드 서비스는 원격 TP를 대신하여 대화를 할당 취소했습니다.
CM_DEALLOCATED_ABEND_SVC
기본 반환 코드; 대화의 할당이 취소된 이유는 다음과 같습니다.파트너 프로그램에서 형식 매개 변수가 ABEND_SVC 설정된 할당 취소 를 실행했습니다.
파트너 프로그램은 종료하기 전에 대화를 할당 취소하지 않았습니다.
로컬 프로그램에서 이 호출을 실행할 때 파트너 프로그램에 대한 대화가 RECEIVE 상태이면 로컬 프로그램에서 보낸 데이터와 파트너 프로그램에서 아직 받지 못한 데이터가 제거됩니다.
CM_DEALLOCATED_ABEND_TIMER
기본 반환 코드; 파트너 프로그램에서 형식 매개 변수가 ABEND_TIMER 설정된 할당 취소 를 실행했기 때문에 대화의 할당이 취소되었습니다. 로컬 프로그램에서 이 호출을 실행할 때 파트너 프로그램에 대한 대화가 RECEIVE 상태이면 로컬 프로그램에서 보낸 데이터와 파트너 프로그램에서 아직 받지 못한 데이터가 제거됩니다.CM_SVC_ERROR_PURGING
기본 반환 코드; SEND 상태인 동안 파트너 프로그램 또는 파트너 LU는 형식 매개 변수가 SVC로 설정된 Send_Error 발급했습니다. 파트너 프로그램으로 전송된 데이터가 제거되었을 수 있습니다.RECEIVE 상태
RECEIVE 상태에서 호출을 실행하면 다음 반환 코드가 가능합니다.
CM_OK
기본 반환 코드; 수신 정보는 Send_Error 호출이 RECEIVE 상태에서 실행될 때 제거되므로 CM_OK 다음 대신 생성됩니다.CM_PROGRAM_ERROR_NO_TRUNC
CM_PROGRAM_ERROR_PURGING
CM_SVC_ERROR_NO_TRUNC
CM_SVC_ERROR_PURGING
CM_PROGRAM_ERROR_TRUNC
CM_SVC_ERROR_TRUNC(기본 대화만 해당)
CM_PRODUCT_SPECIFIC_ERROR
CM_RESOURCE_FAILURE_NO_RETRY
CM_RESOURCE_FAILURE_RETRY
이러한 반환 코드에 대한 설명은 CPI-C 공통 반환 코드를 참조하세요.
CM_DEALLOCATED_NORMAL
기본 반환 코드; 수신 정보는 Send_Error RECEIVE 상태에서 발급될 때 제거되므로 CM_DEALLOCATED_NORMAL 다음 대신 생성됩니다.CM_CONVERSATION_TYPE_MISMATCH
CM_PIP_NOT_SPECIFIED_CORRECTLY
CM_SECURITY_NOT_VALID
CM_SYNC_LEVEL_NOT_SUPPORTED_PGM
CM_TPN_NOT_RECOGNIZED
CM_TP_NOT_AVAILABLE_NO_RETRY
CM_TP_NOT_AVAILABLE_RETRY
CM_DEALLOCATED_ABEND
CM_DEALLOCATED_ABEND_SVC
CM_DEALLOCATED_ABEND_TIMER
SEND_PENDING 상태
호출이 SEND_PENDING 상태에서 실행되면 다음 반환 코드가 가능합니다.
CM_OK(기본 반환 코드입니다. 호출이 성공적으로 실행되었습니다.)
CM_PRODUCT_SPECIFIC_ERROR
CM_PROGRAM_ERROR_PURGING
CM_RESOURCE_FAILURE_NO_RETRY
CM_RESOURCE_FAILURE_RETRY
CM_DEALLOCATED_ABEND
CM_DEALLOCATED_ABEND_SVC
CM_DEALLOCATED_ABEND_TIMER
CM_SVC_ERROR_PURGING
이러한 반환 코드에 대한 설명은 CPI-C 공통 반환 코드를 참조하세요.
CONFIRM, CONFIRM_SEND 또는 CONFIRM_DEALLOCATE 상태
CONFIRM, CONFIRM_SEND 또는 CONFIRM_DEALLOCATE 상태에서 호출이 실행되면 다음 반환 코드가 가능합니다.
CM_OK(기본 반환 코드입니다. 호출이 성공적으로 실행되었습니다.)
CM_PRODUCT_SPECIFIC_ERROR
CM_RESOURCE_FAILURE_NO_RETRY
CM_RESOURCE_FAILURE_RETRY
이러한 반환 코드에 대한 설명은 CPI-C 공통 반환 코드를 참조하세요.
기타 상태
RESET 또는 INITIALIZE 상태의 대화로 Send_Error 발급하는 것은 불법입니다. 다음 반환 코드가 가능합니다.
CM_PROGRAM_PARAMETER_CHECK
기본 반환 코드; conversation_ID 지정한 값이 잘못되었습니다.CM_PROGRAM_STATE_CHECK
기본 반환 코드; 대화 상태가 SEND, RECEIVE, CONFIRM, CONFIRM_SEND, CONFIRM_DEALLOCATE 또는 SEND_PENDING 아닙니다.상태 변경
대화는 INITIALIZE 또는 RESET을 제외한 모든 상태에 있을 수 있습니다.
다음 표에 요약된 상태 변경 내용은 return_code 매개 변수의 값을 기반으로 합니다.
return_code | 새 상태 |
---|---|
CM_OK | SEND |
CM_CONVERSATION_TYPE_MISMATCH | RESET |
CM_PIP_NOT_SPECIFIED_CORRECTLY | RESET |
CM_SECURITY_NOT_VALID | RESET |
CM_SYNC_LEVEL_NOT_SUPPORTED_PGM | RESET |
CM_TPN_NOT_RECOGNIZED | RESET |
CM_TP_NOT_AVAILABLE_NO_RETRY | RESET |
CM_TP_NOT_AVAILABLE_RETRY | RESET |
CM_RESOURCE_FAILURE_RETRY | RESET |
CM_RESOURCE_FAILURE_NO_RETRY | RESET |
CM_DEALLOCATED_ABEND | RESET |
CM_DEALLOCATED_ABEND_PROG | RESET |
CM_DEALLOCATED_ABEND_SVC | RESET |
CM_DEALLOCATED_ABEND_TIMER | RESET |
CM_DEALLOCATED_NORMAL | RESET |
CM_PROGRAM_ERROR_PURGING | RECEIVE |
CM_SVC_ERROR_PURGING | RECEIVE |
나머지 | 변경 내용 없음 |
이 호출을 성공적으로 실행하면 대화가 로컬 프로그램의 SEND 상태이고 파트너 프로그램의 RECEIVE 상태가 됩니다.
기본 대화에서 로컬 프로그램은 Set_Log_Data 사용하여 오류 로그 데이터를 파트너 LU로 보내고 로컬 오류 로그에 추가하도록 지정할 수 있습니다. 대화 로그 데이터 길이 특성이 0보다 큰 경우 LU는 데이터의 형식을 지정하고 보내기 버퍼에 저장합니다.
Send_Error 완료되면 로그 데이터 길이가 0으로 설정되고 로그 데이터가 null로 설정됩니다.
프로그램이 Send_Error 발급할 때 대화가 RECEIVE 상태인 경우 들어오는 데이터는 CPI-C에 의해 제거됩니다. 이러한 데이터는 다음과 같습니다.
Send_Data 전송된 데이터입니다.
확인 요청.
대화 할당 취소 형식이 CM_DEALLOCATE_CONFIRM 설정되거나 동기화 수준이 CM_CONFIRM 설정된 CM_DEALLOCATE_SYNC_LEVEL 경우 할당 취소 요청이 발생합니다.
CPI-C는 들어오는 송신 요청 표시기를 사용하지 않습니다.
대화가 SEND_PENDING 상태인 경우 로컬 프로그램에서 Set_Error_Direction 실행하여 보고된 오류가 수신된 데이터에서 발생했는지 아니면 데이터를 성공적으로 받은 후 로컬 프로그램 처리에서 발생했는지 여부를 지정할 수 있습니다.
설명
로컬 프로그램은 파트너 프로그램에 수신된 데이터에서 발생한 오류를 알리거나, 확인 요청을 거부하거나, 보내는 불완전한 논리적 레코드를 잘림 등의 목적으로 Send_Error 사용할 수 있습니다.
Send_Error 로컬 RU 보내기 버퍼를 플러시하고 파트너 프로그램에 송신 버퍼의 내용과 오류 알림이 차례로 전송됩니다.
오류 알림은 다음 return_code 값 중 하나로 파트너에게 전송됩니다.
CM_PROGRAM_ERROR_TRUNC
CM_PROGRAM_ERROR_NO_TRUNC
CM_PROGRAM_ERROR_PURGING