确认
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;
};
备注
成员
opcode
提供的参数。 指定谓词操作代码,AP_B_CONFIRM。
opext
提供的参数。 指定谓词操作扩展,AP_BASIC_CONVERSATION。
reserv2
一个保留字段。
primary_rc
返回的参数。 指定在谓词完成时由 APPC 设置的主要返回代码。 有效的返回代码因发出的 APPC 谓词而异。 有关此谓词的有效错误代码,请参阅“返回代码”。
secondary_rc
返回的参数。 指定在谓词完成时由 APPC 设置的次要返回代码。 有效的返回代码因发出的 APPC 谓词而异。 有关此谓词的有效错误代码,请参阅“返回代码”。
tp_id
提供的参数。 标识本地 TP。 此参数的值由 TP_STARTED 返回。
conv_id
返回的参数。 标识在两个 TP 之间建立的会话。
rts_rcvd
返回的参数。 指示合作伙伴 TP 是否 颁发REQUEST_TO_SEND,该REQUEST_TO_SEND请求本地 TP 将会话更改为 RECEIVE 状态。
若要更改为在 Microsoft Windows 上运行的 RECEIVE 状态,本地 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
辅助返回代码;会话未处于 SEND 状态。
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 节点之间的连接已断开(LAN 错误)。
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 返回了操作系统返回代码。 此返回代码是以 Intel 字节交换顺序显示的。 如果问题持续出现,请咨询系统管理员。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
主返回代码;在 RECEIVE、PENDING_POST、CONFIRM、CONFIRM_SEND 或 CONFIRM_DEALLOCATE 状态时, err_type设置为AP_SVC 的合作伙伴 TP (或合作伙伴 LU) 颁发SEND_ERROR。 发送到伙伴 TP 的数据可能已被清除。备注
为了响应 CONFIRM,合作伙伴 TP 通常会发出 CONFIRMED ,以确认它已收到数据,而不会出错。 (如果合作伙伴 TP 遇到错误,它会 发出SEND_ERROR 或异常地解除分配 conversation.)
仅当会话的同步级别(由 ALLOCATE 建立)AP_CONFIRM_SYNC_LEVEL时,TP 才能发出 CONFIRM。
当 TP 发出此谓词时,会话必须处于 SEND 状态。 下表中汇总的状态更改基于 primary_rc的值。
primary_rc | 新状态 |
---|---|
AP_OK | 没有变化 |
AP_ALLOCATION_ERROR | RESET |
AP_COMM_SUBSYSTEM_ABENDED AP_COMM_SUBSYSTEM_NOT_LOADED | RESET RESET |
AP_CONV_FAILURE_RETRY AP_CONV_FAILURE_NO_RETRY | RESET RESET |
AP_DEALLOC_ABEND AP_DEALLOC_ABEND_PROG AP_DEALLOC_ABEND_SVC AP_DEALLOC_ABEND_TIMER | RESET RESET RESET RESET |
AP_PROG_ERROR_PURGING AP_SVC_ERROR_PURGING | RECEIVE RECEIVE |
CONFIRM 等待合作伙伴 TP 的响应。 响应由合作伙伴 TP 中的以下谓词之一生成:
DEALLOCATE,dealloc_type设置为 AP_ABEND_PROG、AP_ABEND_SVC 或 AP_ABEND_TIMER
-
通过在ALLOCATE 后发出 CONFIRM,调用 TP 可以立即确定分配是否成功, (synclevel 是否设置为AP_CONFIRM_SYNC_LEVEL) 。
通常, ALLOCATE 谓词 mode_name 参数的值必须与为调用的 TP 节点配置的模式的名称匹配,并在配置期间与伙伴 LU 相关联。
如果与被调用的 TP 节点上的伙伴 LU 关联的模式之一是隐式模式,则当与伙伴 LU 关联的模式名称与 mode_name的值匹配时,在两个 LU 之间建立的会话将是隐式模式。 有关详细信息,请参阅 Host Integration Server 帮助。
ALLOCATE 的多个参数是 EBCDIC 或 ASCII 字符串。 TP 可以使用通用服务谓词 (CSV) CONVERT 将字符串从一个字符集转换为另一个字符集。
若要立即发送 ALLOCATE 请求,调用 TP 可以在 ALLOCATE 后立即发出 FLUSH 或 CONFIRM。 否则, ALLOCATE 请求会与本地 LU 的发送缓冲区中的其他数据一起累积,直到缓冲区已满。