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_ConversationAccept_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) 。 合作夥伴計畫需要一或多個 PIP 資料變數,CPI-C 不支援這些變數。

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。 已清除已傳送但尚未接收的資料。

  • 處於SEND_PENDING狀態,錯誤方向設定為CM_RECEIVE_ERROR時,合作夥伴計畫會 發出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
    主要傳回碼;交談因下列其中一個原因而解除配置:

  • 合作夥伴計畫發出 解除配置 ,並將 type 參數設定為 ABEND_SVC。

  • 合作夥伴計畫在終止之前未解除配置交談。

    如果在本機計畫發出此呼叫時,合作夥伴計畫的交談處於 RECEIVE 狀態,則會清除本機程式所傳送且尚未由合作夥伴計畫接收的資料。

    CM_DEALLOCATED_ABEND_TIMER
    主要傳回碼;交談已解除配置,因為合作夥伴計畫已發出 Deallocate ,並將 type 參數設定為 ABEND_TIMER。 如果在本機計畫發出此呼叫時,合作夥伴計畫的交談處於 RECEIVE 狀態,則會清除本機程式所傳送且尚未由合作夥伴計畫接收的資料。

    CM_SVC_ERROR_PURGING
    主要傳回碼;處於 SEND 狀態時,合作夥伴計畫或合作夥伴 LU 會 發出Send_Error 類型參數設定為 SVC。 傳送給合作夥伴計畫的資料可能已經清除。

    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
    主要傳回碼;由於在 RECEIVE 狀態發出 Send_Error 時會清除傳入資訊,因此會產生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 State

    如果在 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
All others 沒有變更

成功執行此呼叫時,交談會處於本機程式的 SEND 狀態,並處於合作夥伴計畫的 RECEIVE 狀態。

在基本交談中,本機程式可以使用 Set_Log_Data 來指定將錯誤記錄檔資料傳送至夥伴 LU,並新增至本機錯誤記錄檔。 如果交談記錄資料長度特性大於零,LU 會將資料格式化,並將其儲存在傳送緩衝區中。

完成Send_Error之後,記錄資料長度會設定為零,並將記錄資料設定為 null。

如果對話在程式發出 Send_Error時處於 RECEIVE 狀態,則 CPI-C 會清除傳入的資料。 此資料包括:

  • Send_Data傳送的資料。

  • 確認要求。

  • 如果交談解除配置類型設定為CM_DEALLOCATE_CONFIRM或CM_DEALLOCATE_SYNC_LEVEL,且同步處理層級設定為 CM_CONFIRM,則會要求解除配置。

    CPI-C 不會購買傳入的要求到傳送指標。

    如果交談處於SEND_PENDING狀態,則本機程式可以發出 Set_Error_Direction ,以指定在成功接收資料之後,回報的錯誤是由接收的資料或本機程式處理所產生。

備註

本機程式可以使用 Send_Error 做為這類用途,例如通知合作夥伴計畫收到的資料中發生錯誤、拒絕確認要求,或截斷它正在傳送的不完整邏輯記錄。

Send_Error 排清本機 LU 傳送緩衝區,並傳送夥伴程式傳送緩衝區的內容,後面接著錯誤通知。

錯誤通知會以下列其中一個 return_code 值的形式傳送給合作夥伴:

  • CM_PROGRAM_ERROR_TRUNC

  • CM_PROGRAM_ERROR_NO_TRUNC

  • CM_PROGRAM_ERROR_PURGING