数据流中的订单

使用终端控制命令写入 3270 时,需要格式化出站数据以表示字段的属性,位置和内容。

如果您正在使用 BMS ,那么将为您完成所有这些操作,并且您可以继续执行 来自 3270 终端的输入

在 3270 数据流中定义字段时,以 开始字段 (SF)开始字段扩展 (SFE) 顺序开始。 orders 是 3270 的指示信息。 他们告诉它如何加载它的缓冲区。 它们是 1 字节长的,通常后跟特定于顺序的格式的数据。

开始字段顺序

SF 顺序在所有模型上都受支持,并允许您指定字段属性和字段的显示内容,但不允许指定扩展属性。

要使用 SF 定义字段,请在数据流中插入序列,如 图 1中所示。
图 1。 使用 SF 顺序的字段定义
显示 SF 顺序的数据流示例 1D,后跟字段属性 F0,后跟显示数据 D4C5D5E4 (MENU)。
如果需要指定扩展属性,并且终端支持这些属性,请改为使用起始字段扩展顺序。 SFE 需要不同的格式,因为属性信息比较复杂。 扩展属性表示为字节对。 第一个字节是指示正在定义的属性类型的代码,第二个字节是该属性的值。 字段属性被共同视为附加属性类型,并且也表示为字节对。 在 SFE 顺序之后,立即给出属性对的 1 字节计数,然后给出属性对,最后给出显示数据。 整个序列如 图 2所示。
图 2。 使用 SFE 顺序的字段定义
显示 SFE 顺序的数据流示例: 29 ,后跟属性对计数 02 ,后跟字段大纲的属性代码 C2,后跟框的字段大纲值 0F,后跟字段属性的属性代码 C0,后跟字段属性 F0,后跟显示数据 D4C5D5E4 (MENU)。

修改字段顺序

当某个字段在屏幕上时,您可以使用与 SFE 格式几乎相同的命令 (称为修改字段 (MF)) 来更改该字段。

与 SFE 的唯一差异如下:
  • 该字段必须存在。
  • 命令代码为 X'2C' ,而不是 X'29'
  • 仅发送要从其当前值更改的属性,仅当要更改时才发送显示数据。
  • 对于特定终端,空值会将属性设置回其缺省值 (通过省略该属性按 SFE 顺序完成同一操作)。
例如,要将先前示例的 "menu" 字段更改回终端的缺省颜色并对其进行下划线,您需要 图 3中的序列。
图 3。 更改 MF 订单中的字段属性
显示 MF 顺序 2C的数据流示例,后跟属性对计数 02 ,后跟用于扩展突出显示的属性代码 41 ,后跟用于下划线的扩展突出显示值 F4,后跟用于前景色的属性代码 42 ,后跟要设置为终端缺省值 00 的值。

设置的缓冲区地址顺序

SF 和 SFE 命令将它们定义的字段放在缓冲区中的当前位置,而 MF 在此位置修改该字段。 除非字段跟在发送的最后一个字符之后 (即,从当前缓冲区位置开始) ,否则您需要在这些顺序之前添加设置的缓冲区地址 (SBA) 顺序,以指示要放置或更改字段的位置。

为此,请发送一个 SBA 订单,后跟一个 2 字节地址,如 图 4中所示。
图 4: SBA 序列
显示 SBA 顺序 11 的数据流示例,后跟第 2 行第 33 列 C1F0 的缓冲区地址

图中的地址是位置 112 ( X'70 ' ) 的 "12 位" 地址,即 80 列屏幕上的第 2 行第 33 列。 计数在第一行和第一列 (零位置) 中开始,并沿着行继续。 使用了另外两种寻址方案: "14 位" 和 " 16 位 "。 缓冲区位置在所有这些位置中按顺序编号,但在 12 位和 14 位寻址中,并非使用地址中的所有位,因此它们不会显示为顺序。 ( X'70 ' ( B' 1110000 ' ) 在图中,地址最右侧字节的低阶 6 位显示为 B '110000' ,而左侧字节的低阶 6 位显示为 B '000001' 。) Archived CICS 文档中的 " IBM 3270 数据流程序员参考 "介绍了如何形成地址。

在 SF , SFE 或 MF 顺序之后,当前缓冲区地址指向缓冲区中未填充的第一个位置-在数据之后 (如果有) 或字段属性字节之后 (如果没有)。

设置属性顺序

要设置单个字符位置的属性,请对要指定的每个属性使用设置属性 (SA) 顺序。

例如,要使字符闪烁,需要 图 5中的序列。
图 5。 用于生成字符闪存的 SA 序列
显示 SA 顺序的数据流示例, 28 后跟用于扩展突出显示的属性代码, 41 后跟用于闪烁的扩展突出显示值 F1。

使用 SA 顺序指定的属性被分配到当前缓冲区位置,与将字段定义放在当前缓冲区位置的方式相同,因此您通常需要在 SA 之前使用 SBA 序列。