MC_SEND_CONVERSATION動詞會配置本機邏輯單元 (LU) 與夥伴 LU 之間的工作階段、在會話上傳送數據,然後解除分配會話。
下列結構描述 MC_SEND_CONVERSATION 動詞命令所使用的動詞控制區塊 (VCB)。
語法
struct mc_send_conversation {
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 reserv3[8];
unsigned char rtn_ctl;
unsigned char reserv4;
unsigned long conv_group_id;
unsigned long sense_data;
unsigned char plu_alias[8];
unsigned char mode_name[8];
unsigned char tp_name[64];
unsigned char security;
unsigned char reserv6[11];
unsigned char pwd[10];
unsigned char user_id[10];
unsigned short pip_dlen;
unsigned char FAR * pip_dptr;
unsigned char reserv6;
unsigned char fqplu_name[17];
unsigned char reserv7[8];
unsigned short dlen;
unsigned char FAR * dptr;
};
成員
opcode
提供的參數。 指定動詞作業程式代碼,AP_M_SEND_CONVERSATION。
opext
提供的參數。 指定動詞作業延伸模組,AP_MAPPED_CONVERSATION。
reserv2
保留欄位。
primary_rc
傳回的參數。 指定APPC在動詞完成時設定的主要傳回碼。 有效的傳回碼會根據所發出的APPC動詞而有所不同。 如需這個動詞的有效錯誤碼,請參閱傳回碼。
secondary_rc
傳回的參數。 指定APPC在動詞完成時所設定的次要傳回碼。 有效的傳回碼會根據所發出的APPC動詞而有所不同。 如需這個動詞的有效錯誤碼,請參閱傳回碼。
tp_id
提供的參數。 識別本機交易程式 (TP)。 此參數的值是由 TP_STARTED 傳回。
conv_id
提供的參數。 提供交談標識碼。
這個參數的值是由叫用 TP 中的 MC_ALLOCATE 或叫用的 TP 中的 RECEIVE_ALLOCATE 所傳回。
rtn_ctl
提供的參數。 指定APPC應如何選取要配置給交談的會話,以及本機 LU 何時應將控制權傳回本機 TP。 允許的值包括:
AP_IMMEDIATE指定 LU 會配置競爭優勝者會話,如果立即可用,並將控制權傳回 TP。
AP_WHEN_SESSION_ALLOCATED指定在配置會話或遇到本主題傳回碼中所述的其中一個錯誤之前,LU 不會將控制權傳回 TP。 如果會話限制為零,LU 會立即傳回控件。 請注意,如果會話無法使用,TP 會等候一個會話。
AP_WHEN_SESSION_FREE指定如果一個可用或能夠啟動競爭者會話,LU 會配置爭用者或爭用者會話,並將控制權傳回給 TP。 如果發生錯誤(如本主題中的傳回碼所述),呼叫會立即傳回 ,並在primary_rc 和 secondary_rc 欄位中傳回錯誤。
AP_WHEN_CONWINNER_ALLOC指定在配置競爭者會話之前,LU 不會傳回控件,或遇到本主題中傳回碼中所述的其中一個錯誤。 如果會話限制為零,LU 會立即傳回控件。 請注意,如果會話無法使用,TP 會等候一個會話。
AP_WHEN_CONV_GROUP_ALLOC會指定 LU 不會傳回 TP 控制權,直到它配置 conv_group_id 所指定的工作階段,或遇到本主題中傳回碼中所述的其中一個錯誤。 如果會話無法使用,TP 會等候它變成免費狀態。
conv_group_id
提供/傳回的參數。 當 rtn_ctl WHEN_CONV_GROUP_ALLOC時,用來指定交談群組的身分識別,該交談群組應該從中配置會話。 當 rtn_ctl 指定不同的值,且 primary_rc AP_OK時,這是傳回的值。 此參數的目的是要提供 TP,以確保會重新配置相同的會話,因此,在會話上執行的交談會以起始的相同順序進行。sense_data
傳回的參數。 如果主要和次要傳回碼指出配置錯誤(重試或無重試),則會傳回 SNA 定義的感知碼。plu_alias
提供的參數。 指定本機 TP 已知夥伴 LU 的別名。 此參數必須符合設定期間建立的夥伴 LU 名稱。 參數是8位元組,請輸入G ASCII 字元集,包括:大寫字母
數位 0 到 9
空格
特殊字元 $、#、%和@
如果此參數的值少於八個字節,請使用 ASCII 空格(0x20)將它放在右邊。
mode_name
提供的參數。 指定組態期間定義的一組網路特性名稱。 此參數必須符合設定期間與夥伴 LU 相關聯的模式名稱。參數是8位元組 EBCDIC 字元字串。 它可以由 A EBCDIC 字元集類型的字元組成,包括所有 EBCDIC 空格。 這些字元包括:
大寫字母
數位 0 到 9
特殊字元 $、#、 和@
字串中的第一個字元必須是大寫字母或特殊字元。
在對應的交談中,名稱不可以是 SNASVCMG(APPC 內部使用的保留模式名稱)。
tp_name
提供的參數。 指定叫用的 TP 名稱。 叫用 TP 中MC_ALLOCATE所指定的tp_name值必須符合叫用 TP 中RECEIVE_ALLOCATE所指定的tp_name值。參數是64位元組、區分大小寫、EBCDIC 字元字串。 此參數可以包含 AE EBCDIC 字元集類型的字元。 這些字元包括:
大寫和小寫字母
數位 0 到 9
特殊字元 $、#、@和句号 (.)
如果 TP 名稱少於 64 個字節,請使用 EBCDIC 空格 (0x40) 將它貼在右邊。
SNA 慣例是服務 TP 名稱最多可以有四個字元。 第一個字元是0x00與0x3F之間的十六進位位元組。 其他字元來自EBCDIC AE字元集。
安全
提供的參數。 指定夥伴 LU 需要的資訊,以驗證對所叫用 TP 的存取權。AP_NONE指定叫用的 TP 不會使用交談安全性。
AP_PGM指定叫用的 TP 使用交談安全性,而且需要使用者識別碼和密碼。 使用 user_id 和 pwd 來提供此資訊。
AP_SAME指定叫用的 TP,以有效的使用者識別碼和密碼叫用,接著會叫用另一個 TP。
例如,假設 TP A 會叫用具有有效使用者識別碼和密碼的 TP B,而 TP B 接著會叫用 TP C。如果 TP B 指定值AP_SAME,APPC 會將 TP C 的使用者識別碼從 TP A 和已驗證的指標傳送給 TP C 的 LU。 此指標表示 TP C 不需要密碼(如果 TP C 設定為接受已驗證的指標)。
pwd
提供的參數。 指定與 user_id相關聯的密碼。 只有在安全性參數設定為 AP_PGM,且必須符合設定期間所建立 之user_id 的密碼時,才需要此參數。此參數是10位元組、區分大小寫的EBCDIC字元字串。 它可以由AE EBCDIC字元集類型的字元所組成。 這些字元包括:
大寫和小寫字母
數位 0 到 9
特殊字元 $、#、@和句号 (.)
如果密碼少於 10 個字節,請使用 EBCDIC 空格 (0x40) 將它放在右側。
user_id
提供的參數。 指定存取合作夥伴 TP 所需的使用者識別碼。 只有在安全性參數設定為 AP_PGM,且必須符合為合作夥伴 TP 設定的其中一個使用者識別碼時,才需要此參數。參數可以包含來自 AE EBCDIC 字元集類型的字元。 這些字元包括:
大寫和小寫字母
數位 0 到 9
特殊字元 $、#、@和句号 (.)
如果使用者識別碼少於 10 個字節,請使用 EBCDIC 空格 (0x40) 將它放在右側。
pip_dlen
提供的參數。 指定要傳遞至夥伴 TP 的 PIP 長度。 此參數的範圍是從 0 到 32767。pip_dptr
提供的參數。 指定包含 PIP 資料的緩衝區位址。 只有當pip_dlen大於零時 , 才使用此參數。PIP 資料可以包含合作夥伴 TP 或遠端作系統所需的初始化參數或環境設定資訊。 PIP 資料必須遵循 GDS 格式。 如需詳細資訊,請參閱 IBM SNA 手冊(s)。
針對Microsoft Windows作系統,數據緩衝區可以位於靜態數據區域或全域配置區域中。
fqplu_name
提供的參數。 指定本機 LU 的完整名稱。 此參數必須符合遠端節點中所定義之本機 LU 的完整名稱。 參數是由兩個類型 A EBCDIC 字元字串所組成(最多八個字元),分別是網路名稱 (NETID) 和夥伴 LU 的 LU 名稱。 這些名稱會以 EBCDIC 句號 (.. ) 分隔。 可以省略 NETID,如果發生這種情況,也應該省略句點。如果未提供 任何plu_alias ,則必須提供此名稱。
輸入 EBCDIC 字元包含:
大寫字母
數位 0 到 9
特殊字元 $、#、 和@
如果此參數的值小於 17 個字節,請使用 EBCDIC 空格(0x40)將它放在右邊。
dlen
提供的參數。 指定要放入本機 LU 傳送緩衝區的數據位元組數目。 此參數的範圍是從 0 到 65535。dptr
提供的參數。 指定緩衝區的位址,其中包含要放入本機 LU 傳送緩衝區中的數據。針對 Windows作系統,數據緩衝區可以位於靜態數據區域或全域配置區域中。 數據緩衝區必須完全符合此區域。
回傳代碼
AP_OK
主要傳回碼;已順利執行動詞。
AP_UNSUCCESSFUL
主要傳回碼;提供的 參數 rtn_ctl 指定立即將控件傳回 TP (AP_IMMEDIATE),而本機 LU 沒有可用的競爭勝出會話。
AP_PARAMETER_CHECK
主要傳回碼;因為參數錯誤而未執行動詞。
AP_BAD_RETURN_CONTROL
次要傳回碼;為 rtn_ctl 指定的值無效。
AP_BAD_SECURITY
次要傳回碼;為 安全性 指定的值無效。
AP_BAD_TP_ID
次要傳回碼; tp_id 的值與 APPC 指派的 TP 識別碼不符。
AP_PIP_LEN_INCORRECT
次要傳回碼; pip_dlen 的值大於 32767。
AP_UNKNOWN_PARTNER_MODE
次要傳回碼;針對 mode_name 指定的值無效。
AP_BAD_PARTNER_LU_ALIAS
次要傳回碼 APPC 無法辨識提供的 partner_lu_alias。
AP_NO_USE_OF_SNASVCMG
次要傳回碼;SNASVCMG 不是 mode_name的有效值。
AP_INVALID_DATA_SEGMENT
次要傳回碼;PIP 資料或應用程式資料超過配置的數據區段,或數據緩衝區的地址錯誤。
AP_ALLOCATION_ERROR
主要傳回碼;APPC 無法配置交談。 交談狀態設定為 RESET。
此程式代碼可能會透過 MC_ALLOCATE之後發出的動詞傳回。
AP_ALLOCATION_FAILURE_NO_RETRY
次要傳回碼;因為有永久性條件,例如設定錯誤或會話通訊協定錯誤,所以無法配置交談。 若要判斷錯誤,系統管理員應該檢查錯誤記錄檔。 在更正錯誤之前,請勿重試配置。
AP_ALLOCATION_FAILURE_RETRY
次要傳回碼;因為暫時性狀況,例如鏈接失敗,所以無法配置交談。 失敗的原因會記錄在系統錯誤記錄檔中。 重試配置。
AP_COMM_SUBSYSTEM_ABENDED
主要傳回碼;表示下列其中一個條件:
此交談所使用的節點遇到 ABEND。
TP 與 PU 2.1 節點之間的連線已中斷(LAN 錯誤)。
TP 電腦上的 SnaBase 遇到 ABEND。
系統管理員應該檢查錯誤記錄檔,以判斷 ABEND 的原因。
AP_COMM_SUBSYSTEM_NOT_LOADED
主要傳回碼;無法載入必要的元件,或處理動詞時已終止。 因此,無法進行通訊。 請連絡系統管理員以採取更正動作。當此傳回碼與 MC_ALLOCATE搭配使用時,可能表示找不到任何通訊系統來支援本機 LU。 (例如,以 TP_STARTED 指定的本機 LU 別名不正確或尚未設定。請注意,如果 lu_alias 或 mode_name 少於八個字元,您必須確定這些欄位會填滿右邊的空格。 如果這些參數未填滿空格,就會傳回此錯誤,因為沒有任何節點可以滿足 MC_ALLOCATE 要求。
當MC_ALLOCATE針對使用多個節點設定的主機 Integration Server 用戶端系統產生此傳回碼時,有兩個次要傳回碼,如下所示:
0xF0000001
次要傳回碼;尚未啟動任何節點。
0xF0000002
次要傳回碼;至少有一個節點已啟動,但未在任何作用中節點上設定 本機 LU(TP_STARTED發出時)。 問題可能是下列其中一項:
未啟動具有本機 LU 的節點。
未設定本機 LU。
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 位元組交換的順序出現。 如果問題持續發生,請洽詢系統管理員。
備註
叫用 TP 會發出此動詞,以與遠端 TP 進行整個交談。 如果遠端 TP 拒絕交談起始或數據,則叫用 TP 將不會收到拒絕的通知。
當 TP 發出此動詞時,交談狀態為 RESET。 沒有狀態變更。
MC_SEND_CONVERSATION的數個參數是 EBCDIC 或 ASCII 字串。 TP 可以使用一般服務動詞 (CSV) CONVERT ,將字元串從一個字元集轉譯為另一個字元。
一般而言, mode_name 的值必須符合針對所叫用 TP 節點所設定的模式名稱,並在設定期間與夥伴 LU 相關聯。 如果叫用的 TP 節點上與夥伴 LU 相關聯的其中一個模式是隱含模式,則當與夥伴 LU 相關聯的模式名稱與 mode_name的值不相符時,在兩個 LUN 之間建立的會話將會是隱含模式。