Deallocate (CPI-C)
解除配置呼叫 (函式名稱cmdeal) 解除配置兩個程式之間的交談。
語法
CM_ENTRY Deallocate(
unsigned char FAR *conversation_ID,
CM_INT32 FAR *return_code
);
參數
conversation_ID
提供的 參數。 指定交談的識別碼。 此參數的值是由 Initialize_Conversation 或 Accept_Conversation傳回。
return_code
從這個呼叫傳回的程式碼。 本主題稍後會列出有效的傳回碼。
傳回碼
CM_OK
主要傳回碼;成功執行的呼叫;交談已解除配置。
CM_OPERATION_NOT_ACCEPTED
主要傳回碼;此交談的上一個作業不完整。
CM_OPERATION_INCOMPLETE
主要傳回碼;作業尚未完成 (處理模式只會) 封鎖且仍在進行中。 程式可以發出 Wait_For_Conversation 以等候作業完成,或 Cancel_Conversation 取消作業和交談。 如果已呼叫 Specify_Windows_Handle ,應用程式應該等候 Microsoft® Windows® 訊息通知,而不是呼叫 Wait_For_Conversation。
CM_PROGRAM_PARAMETER_CHECK
主要傳回碼; conversation_ID 指定的值無效。
CM_PROGRAM_STATE_CHECK
主要傳回碼;當解除配置類型指出正常解除配置 (CM_DEALLOCATE_SYNC_LEVEL、CM_DEALLOCATE_FLUSH CM_DEALLOCATE_CONFIRM) 時,可能會發生下列狀態錯誤:
交談未處於 SEND 或SEND_PENDING狀態。
對於基本交談,交談處於 SEND 狀態,但程式未完成傳送邏輯記錄。
當deallocate_type設定為 CM_DEALLOCATE_CONFIRM 或 CM_DEALLOCATE_SYNC_LEVEL,且交談同步處理層級設定為 CM_CONFIRM 時,可以傳回下列傳回碼。
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
主要傳回碼;交談已解除配置,原因如下:遠端程式發出已將 type 參數設定為 CM_DEALLOCATE_ABEND 的 Deallocate ,或遠端 LU 因為遠端程式異常結束條件而發出。 如果遠端程式的交談在發出呼叫時處於 RECEIVE 狀態,則會清除本機程式所傳送且尚未由遠端程式接收的資訊。
遠端 TP 通常會終止,但未在終止之前解除配置交談。 遠端 LU 上的節點服務會代表遠端 TP 解除配置交談。
CM_DEALLOCATED_ABEND_SVC
主要傳回碼;交談已解除配置,原因如下:合作夥伴計畫發出 [解除配置 ],並將類型參數設定為 ABEND_SVC。
合作夥伴計畫未在終止之前解除配置交談。
如果在本機計畫發出此通話時,合作夥伴計畫的交談處於 RECEIVE 狀態,則會清除本機計畫所傳送且尚未由合作夥伴計畫接收的資料。
CM_DEALLOCATED_ABEND_TIMER
主要傳回碼;交談已解除配置,因為合作夥伴計畫已發出 Deallocate ,且類型參數設定為 ABEND_TIMER。 如果在本機計畫發出此通話時,合作夥伴計畫的交談處於 RECEIVE 狀態,則會清除本機計畫所傳送且尚未由合作夥伴計畫接收的資料。CM_SVC_ERROR_PURGING
主要傳回碼;處於 SEND 狀態時,合作夥伴計畫或合作夥伴 LU 會發出 Send_Error ,並將類型參數設定為 SVC。 傳送給合作夥伴計畫的資料可能已經清除。狀態變更
根據Set_Deallocate_Type) 所設定的交談解除配置類型 (參數值而定,當程式發出Deallocate時,交談可以是下表所指出的其中一個狀態:
解除配置類型 | 允許的狀態 |
---|---|
CM_DEALLOCATE_FLUSH | SEND 或 SEND_PENDING |
CM_DEALLOCATE_CONFIRM | SEND 或 SEND_PENDING |
CM_DEALLOCATE_SYNC_LEVEL | SEND 或 SEND_PENDING |
CM_DEALLOCATE_ABEND | RESET 以外的任何專案 |
下表摘要說明的狀態變更是根據 return_code 參數的值。
return_code | 新增狀態 |
---|---|
CM_OK | RESET |
CM_PROGRAM_ERROR_PURGING | RECEIVE |
CM_SVC_ERROR_PURGING | RECEIVE |
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_NO_RETRY | RESET |
CM_RESOURCE_FAILURE_RETRY | RESET |
CM_DEALLOCATED_ABEND | RESET |
CM_DEALLOCATED_ABEND_SVC | RESET |
CM_DEALLOCATED_ABEND_TIMER | RESET |
All others | 沒有變更 |
備註
解除配置交談之前,此呼叫會根據目前的交談同步處理層級和解除配置類型,執行 Flush 或 Confirmed 呼叫的對等專案。 解除配置類型是由 Set_Deallocate_Type所設定。
合作夥伴計畫會透過下列其中一個參數接收解除配置通知:
status_received CM_CONFIRM_DEALLOC_RECEIVED
return_code CM_DEALLOCATED_NORMAL
return_code CM_DEALLOCATED_ABEND
成功執行此呼叫之後, conversation_ID 不再有效。
對於基本交談,如果交談解除配置類型設定為 CM_DEALLOCATE_ABEND,而且記錄資料長度大於零,則本機 LU 會將記錄資料寫入Set_Log_Data所指定的 記錄 資料 () 本機錯誤記錄檔和夥伴 LU。
執行 解除配置 之後,記錄資料長度會設定為零,而記錄資料會設定為 null。