对 XBMOUT 出口进行编程

当您对 XBMOUT 出口进行编程时,请务必考虑实际数据长度。

实际数据长度 (在 BMXACTLN 中) 可能小于映射中定义的长度 (在 BMXMAPLN 中)。 发生此情况的原因是 BMS 对每个输出字段执行了尾部空值压缩。

不能在出口程序中更改数据的实际长度。 在生成输出数据流之后调用出口; 因此,尝试更改数据长度可能会导致数据流无效。 因此,如果 XBMOUT 出口程序修改数据,那么它必须引用 BMXACTLN 中的长度值来执行此操作。

BMXDATA 可能包含空值。 当映射具有没有缺省数据的字段时,这可能是由带有 MAPONLY 选项的 SEND MAP 请求引起的; 这会导致 BMS 为该字段发送属性序列,但不发送数据。

BMXATTR 可能包含空值。 这可能是由带有 DATAONLY 选项的 SEND MAP 请求导致的,当应用程序正在更新字段中的数据而不是属性时。

累积映射操作

当应用程序执行累积映射时-即,发出带有 ACCUM 选项的 SEND MAP 命令序列-BMS 构建组合显示,其中可以从多个 SEND MAP 请求构造单个输出页面。

发生累积映射时,将在构建页面时调用 XBMOUT 出口,而不是在处理每个 SEND MAP 请求时调用。

消息路由

当应用程序构建路由消息时 (例如,它发出 ROUTE 命令,后跟一个或多个指定了 SET 或调页选项的 SEND MAP 命令) ,调用 XBMOUT 出口的方式与调用非路由映射请求的方式相同。

但是, UEPBMTCT 参数作为路由消息的空值传递。 这是因为一条路由的消息可能指定给多个设备,而 BMS 已优化了该路由的消息所针对的设备所支持的功能。 在处理 XBMOUT 出口中的路由消息时,对这些设备中的任何设备引用 TCTTE 可能不相关。