CICS-BMS


BMS 被称为基本映射支持。应用程序由格式化的屏幕组成,充当终端和 CICS 程序之间的桥梁。为了在终端和 CICS 程序之间进行通信,我们使用 CICS 终端输入/输出服务。我们使用 BMS 创建具有适当位置和属性的屏幕设计。以下是 BMS 的功能 -

  • BMS 充当终端和 CICS 程序之间的接口。

  • 屏幕的设计和格式与应用程序的逻辑是分开的。

  • BMS使应用硬件独立。

格式化屏幕

下面显示的屏幕是菜单屏幕,可以使用 BMS 进行设计。其要点如下:

  • 该屏幕可以具有标题、日期和要显示的任何其他信息。

  • 选项 1、2 和 3 是未命名字段,它们是屏幕的标题。

  • 在选择字段中,我们需要提供输入。然后,该输入被发送到 CICS 程序以进行进一步处理。

  • 屏幕底部显示操作键。

  • 所有字段和屏幕本身都是用 BMS 宏定义的。当整个地图定义完毕后,我们可以使用JCL来组装它。

CICS 屏幕

BMS基本术语

以下是我们将在接下来的模块中使用的基本术语 -

地图

地图是一种单屏格式,可以使用 BMS 宏进行设计。它的名称可以包含 1 到 7 个字符。

地图集

地图集是链接在一起形成加载模块的地图集合。应该有一个PPT条目。它的名称可以是 1 到 7 个字符。

BMS 宏

BMS地图是一个用汇编语言编写的用于管理屏幕的程序。用于定义屏幕的三个宏是 DFHMSD、DFHMDI 和 DFHMDF。

DFHMSD

DFHMSD 宏生成地图集定义。它是宏标识符,表明我们正在启动一个地图集。地图集名称是加载模块名称,并且 PPT 表中必须存在一个条目。下表显示了可在 DFHMSD 中使用的参数列表 -

先生编号 参数及说明
1

类型

TYPE 用于定义地图类型。如果 TYPE =
MAP - 创建物理地图
DSECT - 创建符号地图
&&SYSPARM - 物理和符号,两者均创建
FINAL - 指示地图集编码的结束。

2

模式

MODE用于指示输入/输出操作。IF MODE =
IN - 仅适用于输入映射
OUT - 仅适用于输出映射
INOUT 适用于输入和输出映射

3

兰格

LANG = ASM/COBOL/PL1
决定 DSECT 结构的语言,以便复制到应用程序中。

4

贮存

如果 STORAGE =
AUTO - 为每个地图集获取单独的符号地图区域
BASE - 为多个地图集中的符号地图拥有相同的存储基础

5

控制键

CRTL用于定义设备控制请求。如果 CTRL =
FREEKB - 解锁键盘
FRSET - 将 MDT 重置为零状态
ALARM - 在屏幕显示时设置警报
PRINT - 指示要发送到打印机的地图集。

6

学期

TERM = 类型确保设备独立性,如果使用 3270 终端以外的终端则需要。

7

TIOAPFX

TIOAPFX = YES/NO
YES - 为 BMS 命令保留前缀空间(12 字节)以正确访问 TIOA。CICS 命令级别所需。

例子

以下示例展示了如何编写地图集定义代码 -

MPST01  DFHMSD TYPE = &SYSPARM, X
   CTRL = (FREEKB,FRSET), X
   LANG = COBOL, X 
   STORAGE = AUTO, X
   TIOAPFX = YES, X
   MODE = INOUT, X
   TERM = 3270
   DFHMSD TYPE = FINAL 
END

DFHMDI

DFHMDI 宏生成映射定义。这表明我们正在开始一张新地图。Mapname 后面是 DFHMDI 宏。Mapname 用于发送或接收地图。下表显示了我们在 DFHMDI 宏中使用的参数 -

先生编号 参数及说明
1

尺寸

SIZE = (Line,Column)
该参数给出了地图的大小。BMS 允许我们使用多个地图构建一个屏幕,当我们在单个地图集中使用多个地图时,此参数就变得很重要。

2

线

它表示地图的起始行号。

3

柱子

它指示地图的起始列号。

4

证明合法

它用于指定整个地图或地图字段左对齐或右对齐。

5

控制键

CRTL用于定义设备控制请求。如果 CTRL =
FREEKB - 解锁键盘
FRSET - 将 MDT 重置为零状态
ALARM - 在屏幕显示时设置警报
PRINT - 指示要发送到打印机的地图

6

TIOAPFX

TIOAPFX = 是/否

是 - 为 BMS 命令保留前缀空间(12 字节)以正确访问 TIOA。CICS 命令级别所需。

例子

以下示例展示了如何编写地图定义代码 -

MAPSTD DFHMDI SIZE = (20,80), X
   LINE = 01, X
   COLUMN = 01, X
   CTRL = (FREEKB,FRSET)

DFHMDF

DFHMDF 宏用于定义字段名称。提及了针对 DFHMDF 宏进行编码的字段名称。该字段名称在程序内部使用。我们不会针对我们不想在程序中使用的常量字段编写字段名称。下表显示了可在 DFHMDF 宏内部使用的参数列表 -

先生编号 参数及说明
1

销售点

这是该字段应出现在屏幕上的位置。字段以其属性字节开始,因此如果您编码 POS = (1,1),则该字段的属性字节位于第 1 列的第 1 行,而实际数据从第 2 列开始。

2

长度

这是字段的长度,不包括属性字节。

3

最初的

这是输出字段的字符数据。我们用它来指定屏幕的标签和标题,并使它们独立于程序。例如,对于菜单屏幕中的第一个字段,我们将编码:INITIAL = 'MENU'。

4

证明合法

它用于指定整个地图或地图字段左对齐或右对齐。

5

ATTRB

ATTRB = (ASKIP/PROT/UNPROT, NUM, BRT/NORM/DRK, IC, FSET) 描述字段的属性。

ASKIP - 自动跳过。无法在此字段中输入数据。光标跳至下一个字段。

PROT - 受保护的区域。无法在此字段中输入数据。如果输入数据,将导致输入禁止状态。

UNPROT - 未受保护的区域。可以输入数据,这用于所有输入字段。

NUM - 数字字段。只允许使用数字(0 到 9)和特殊字符(“.”和“-”)。

BRT - 字段的明亮显示(突出显示)。

NORM——正常显示。

DRK - 暗显示。

IC - 插入光标。光标将定位在该字段中。如果多次指定 IC,则光标将放置在最后一个字段中。

FSET - 场集。设置MDT后,无论用户是否实际修改了字段,字段数据都会从终端发送到上位机。

6

PICIN

PICIN 适用于用作输入的数据字段,如 PICIN = 9(8)。

7

PICOUT

PICIN 适用于用作输出的数据字段,如 PICOUT = Z(8)。

例子

以下示例展示了如何编写字段定义代码 -

DFHMDF POS = (01,01), X
   LENGTH = 7, X
   INITIAL = ‘SCREEN1’, X
      ATTRB = (PROT,NORM)
      STDID DFHMDF POS = (01,70), X
      LENGTH = 08, X
      ATTRB = (PROT,NORM)