CONFIRM 動詞會將本地邏輯單元(LU)的傳送緩衝區內容及確認請求傳送給合作夥伴交易程式(TP)。
以下結構描述了 CONFIRM 動詞所使用的動詞控制區塊。
語法
struct confirm {
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;
};
備註
成員
操作碼
提供的參數。 指定動詞操作代碼,AP_B_CONFIRM。
Opext
提供的參數。 指定動詞運算延伸 AP_BASIC_CONVERSATION。
後備隊2
保留欄位。
primary_rc
回傳參數。 指定 APPC 在動詞結束時設定的主要回傳代碼。 有效的回傳代碼會依 APPC 所發出的動詞而有所不同。 請參閱返回代碼以了解此動詞的有效錯誤代碼。
secondary_rc
回傳參數。 指定 APPC 在動詞完成時設定的次要回傳碼。 有效的回傳代碼會依 APPC 所發出的動詞而有所不同。 請參閱返回代碼以了解此動詞的有效錯誤代碼。
tp_id
提供的參數。 辨識當地的衛生紙。 此參數的值由 TP_STARTED 回傳。
conv_id
回傳參數。 識別兩位TP之間建立的對話。
rts_rcvd
回傳參數。 表示合作夥伴 TP 是否發出 REQUEST_TO_SEND,請求本地 TP 將對話改為 RECEIVE 狀態。
要在 Windows 上切換為 RECEIVE 狀態,Microsoft Windows 的本地 TP 可以使用 PREPARE_TO_RECEIVE、 RECEIVE_AND_WAIT 或 RECEIVE_AND_POST。
退回代碼
AP_OK
主要退稅代碼;動詞成功執行。
AP_PARAMETER_CHECK
主要退稅代碼;該動詞因參數錯誤而未執行。
AP_BAD_CONV_ID
次要回傳代碼; conv_id 的值與 APPC 分配的對話識別碼不符。
AP_BAD_TP_ID
次要回傳代碼; tp_id 的值與 APPC 分配的 TP 識別碼不符。
AP_CONFIRM_ON_SYNC_LEVEL_NONE
次要回傳代碼;本地TP嘗試在同步等級為AP_NONE的對話中使用 CONFIRM 。 由 ALLOCATE 設定的同步等級必須是AP_CONFIRM_SYNC_LEVEL。
AP_STATE_CHECK
主要退稅代碼;該動詞未執行,因為它以無效狀態發出。
AP_CONFIRM_BAD_STATE
次要回傳代碼;對話當時並非發送狀態。
AP_CONFIRM_NOT_LL_BDY
次要回傳代碼;本地TP的對話處於SEND狀態,且本地TP未完成邏輯記錄的傳送。
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 或 AP_SYNCPT),或是該 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_COMM_SUBSYSTEM_ABENDED
主要退稅代碼;表示以下條件之一:
此對話所用節點遇到 ABEND。
TP 與 PU 2.1 節點之間的連線已中斷(區域網路錯誤)。
TP 電腦上的 SnaBase 遇到了 ABEND。
系統管理員應檢視錯誤日誌以判斷 ABEND 發生的原因。
AP_CONV_FAILURE_NO_RETRY
主要退稅代碼;該對話因永久性狀況而終止,例如會話協定錯誤。 系統管理員應檢視系統錯誤日誌以找出錯誤原因。 在錯誤修正前,請勿重試對話。AP_CONV_FAILURE_RETRY
主要退稅代碼;由於臨時錯誤,對話被終止。 重新啟動 TP,看看問題是否會再次發生。 若有,系統管理員應檢查錯誤日誌以找出錯誤原因。AP_CONVERSATION_TYPE_MIXED
主要退稅代碼;TP 已發布基本與映射對話動詞。 一次對話只能發出一種類型。AP_INVALID_VERB_SEGMENT
主要退稅代碼;VCB 的範圍超出資料區段的末端。AP_PROG_ERROR_PURGING
主要退稅代碼;在 RECEIVE、PENDING、PENDING_POST、CONFIRM、CONFIRM_SEND 或 CONFIRM_DEALLOCATE 狀態下,合作夥伴 TP 發出SEND_ERROR,err_type設為 AP_PROG。 已送出但尚未收到的資料會被清除。AP_STACK_TOO_SMALL
主要退稅代碼;應用程式的堆疊大小太小,無法執行該動詞。 增加你的應用程式堆疊大小。AP_CONV_BUSY
主要退稅代碼;在任何對話中,一次只能有一個未完成的對話動詞。 如果本地 TP 有多條執行緒,且多個執行緒使用相同 conv_id發出 APPC 呼叫,這種情況就可能發生。AP_THREAD_BLOCKING
主要退稅代碼;呼叫的執行緒已經在阻塞通話中。AP_UNEXPECTED_DOS_ERROR
主要退稅代碼;作業系統在處理來自本地 TP 的 APPC 呼叫時,曾回傳錯誤給 APPC。 作業系統的回傳碼會透過 secondary_rc回傳。 它以英特爾位元組互換順序出現。 如果問題持續,請諮詢系統管理員。AP_DEALLOC_ABEND_PROG
主要退稅代碼;這次對話被分配的原因之一是:合作夥伴 TP 發行了 DEALLOCATE,dealloc_type設定為 AP_ABEND_PROG。
合作夥伴 TP 遇到 ABEND,導致合作夥伴 LU 發送 DEALLOCATE 請求。
AP_DEALLOC_ABEND_SVC
主要退稅代碼;對話被分配是因為合作夥伴 TP 發出了 DEALLOCATE,dealloc_type設定為 AP_ABEND_SVC。AP_DEALLOC_ABEND_TIMER
主要退稅代碼;對話被分配是因為合作夥伴 TP 發出了 DEALLOCATE,dealloc_type設定為 AP_ABEND_TIMER。AP_SVC_ERROR_PURGING
主要退稅代碼;合作夥伴 TP(或合作夥伴 LU)在 RECEIVE、PENDING_POST、CONFIRM、CONFIRM_SEND 或 CONFIRM_DEALLOCATE 狀態下,err_type 設定為 AP_SVC 發出SEND_ERROR。 傳送給合作夥伴 TP 的資料可能已被清除。備註
對於 CONFIRM,合作夥伴 TP 通常會發出 CONFIRMED ,以確認已無錯誤地收到資料。 (若夥伴 TP 遇到錯誤,會發出 SEND_ERROR 或異常地釋放對話。)
TP 只有在對話的同步等級(由 ALLOCATE 設定)達到 AP_CONFIRM_SYNC_LEVEL 時,才能發出 CONFIRM。
當 TP 發出此動詞時,對話必須處於 SEND 狀態。 狀態變化(如下表總結)是根據 primary_rc值來決定的。
| primary_rc | 新國家 |
|---|---|
| AP_OK | 沒有變化 |
| AP_ALLOCATION_ERROR | 重排 |
| AP_COMM_SUBSYSTEM_ABENDED AP_COMM_SUBSYSTEM_NOT_LOADED | 重置 重置 |
| AP_CONV_FAILURE_RETRY AP_CONV_FAILURE_NO_RETRY | 重置 重置 |
| AP_DEALLOC_ABEND AP_DEALLOC_ABEND_PROG AP_DEALLOC_ABEND_SVC AP_DEALLOC_ABEND_TIMER | 重置 |
| AP_PROG_ERROR_PURGING AP_SVC_ERROR_PURGING | 接收 接收 |
CONFIRM 會等待合作夥伴 TP 的回應。 回應由伴侶 TP 中的動詞之一產生:
DEALLOCATE 時 dealloc_type 設定為 AP_ABEND_PROG、AP_ABEND_SVC 或 AP_ABEND_TIMER
-
在ALLOCATE 後發出 CONFIRM,呼叫 TP 可立即判斷分配是否成功(若同步水準設為 AP_CONFIRM_SYNC_LEVEL)。
通常, ALLOCATE 動詞 mode_name 參數的值必須與調用TP節點所設定的模式名稱相符,且該模式在設定過程中與合作夥伴LU相關聯。
若在被呼叫的 TP 節點上與合作夥伴 LU 相關的模式之一是隱式模式,則當與夥伴 LU 關聯的模式名稱不符 mode_name 值時,兩個 LU 之間建立的會話將屬於隱式模式。 欲了解更多資訊,請參閱主機整合伺服器說明。
ALLOCATE 的幾個參數是 EBCDIC 或 ASCII 字串。 TP 可以使用通用服務動詞(CSV) CONVERT 將字串從一個字元集翻譯到另一個。
若要立即發送 ALLOCATE 請求,呼叫的 TP 可在 ALLOCATE 後立即發出 FLUSH 或 CONFIRM。 否則, ALLOCE 請求會與其他資料一起累積到本地LU的發送緩衝區,直到緩衝區滿為止。