CICS - MAP



BMS 接收用户输入的数据,然后将其格式化为符号映射区。应用程序只能访问符号映射中存在的数据。应用程序处理数据,并将输出发送到符号映射。BMS 将符号数据的输出与物理映射合并。

CICS MAPS

物理映射

物理映射是加载库中的加载模块,其中包含有关如何显示映射的信息。

  • 它包含有关映射中所有字段的属性及其位置的详细信息。

  • 它包含给定终端的映射显示格式。

  • 它使用 BMS 宏进行编码。它单独组装并链接编辑到 CICS 库中。

符号映射

符号映射是库中的复制书。CICS 应用程序程序使用复制书从终端发送和接收数据。

  • 它包含所有复制到程序 WORKINGSTORAGE 部分的可变数据。

  • 它包含所有命名字段。应用程序程序员使用这些字段读取和写入映射中的数据。

跳过字段和停止字段

对于映射中未受保护的命名字段,如果我们指定长度为 10,这意味着名称字段可以取长度不超过 10 的值。但是,当您使用 CICS 显示此映射并在屏幕上开始输入此字段的值时,我们可以输入超过 10 个字符,即直到屏幕末尾,我们甚至可以输入到下一行。为了防止这种情况,我们使用跳过字段或停止字段。跳过字段通常是长度为 1 的未命名字段,位于命名字段之后。

CICS Skipper & Stopper Field

跳过字段

如果我们将跳过字段放在命名未受保护字段之后,则在输入值时,一旦达到指定的长度,光标将自动定位到下一个未受保护字段。以下示例显示了如何添加跳过字段:

NUMBER  DFHMDF POS = (01,01), X
   LENGTH = 5, X
   ATTRB = (UNPROT,IC)
      DFHMDF POS = (01,07), X
      LENGTH = 1, X
      ATTRB = (ASKIP)

停止字段

如果我们将停止字段放在命名未受保护字段之后,则在输入值时,一旦达到指定的长度,光标将停止定位。以下示例显示了如何添加停止字段:

NUMBER  DFHMDF POS = (01,01), X
   LENGTH = 5, X
	ATTRB = (UNPROT,IC)
	   DFHMDF POS = (01,07), X
      LENGTH = 1, X
      ATTRB = (PROT)

属性字节

任何字段的属性字节都存储有关该字段物理属性的信息。下图和表格解释了每一位的意义。

CICS Attribute Byte
位位置 描述 位设置
0 & 1   由位 2 到 7 的内容确定
2 & 3 保护和移位 00 - 未受保护的字母数字
01 - 未受保护的数字
10 - 受保护的停止
11 - 受保护的跳过
4 & 5 强度 00 - 常规
01 - 常规
10 - 高亮
11 - 不显示(暗)
6   必须始终为零
7 修改数据标记 0 - 字段未被修改
1 - 字段已被修改

修改数据标记

修改数据标记 (MDT) 是属性字节中的最后一位。

  • MDT 是一个保存单个位的标志。它指定是否将值传输到系统。

  • 当字段值更改时,其默认值为 1。

  • 如果 MDT 为 0,则数据无法传输;如果 MDT 为 1,则数据可以传输。

发送映射

发送映射命令将格式化的输出写入终端。它用于从应用程序程序将映射发送到终端。以下代码段显示了如何将映射发送到终端:

EXEC CICS SEND 
   MAP('map-name')
   MAPSET('mapset-name')
   [FROM(data-area)]
   [LENGTH(data_value)]
   [DATAONLY]
   [MAPONLY]
   [CURSOR]
   [ERASE/ERASEAUP]
   [FREEKB] 
   [FRSET]
END-EXEC   

下表列出了发送映射命令中使用的参数及其意义。

序号 参数和描述
1

映射名称

这是我们要发送的映射的名称。这是必须的。

2

映射集名称

这是包含映射名称的映射集的名称。除非它与映射名称相同,否则需要映射集名称。

3

FROM

如果我们决定使用不同的 DSECT 名称,我们必须在 SEND MAP 命令中使用 FROM (dsect-name) 选项。

4

MAPONLY

这意味着没有来自程序的数据要合并到映射中,并且只传输映射中的信息。

5

DATAONLY

它是 MAPONLY 的逻辑反义词。我们用它来修改已经创建的显示中的可变数据。只有来自程序的数据被发送到屏幕。映射中的常量不会被发送。

6

ERASE

它导致在显示我们发送的内容之前擦除整个屏幕。

7

ERASEUP

它只擦除未受保护的字段。

8

FRSET

标志重置在显示我们发送的内容之前关闭屏幕上所有字段的属性字节中的修改数据标记。

9

CURSOR

它可以用于在终端屏幕上定位光标。可以通过将 -1 移动到字段的 L 部分然后发送映射来设置光标。

10

ALARM

它会发出警报声。

11

FREEKB。

如果我们在映射或 SEND 命令中指定 FREEKB,则键盘将被解锁。

12

PRINT

它允许将 SEND 命令的输出打印到打印机上。

13

FORMFEED

在打印输出之前,它会导致打印机将纸张恢复到下一页的顶部。

接收映射

当我们想要从终端接收输入时,我们使用 RECEIVE MAP 命令。MAP 和 MAPSET 参数与 SEND MAP 命令的含义完全相同。以下代码段显示了如何接收映射:

EXEC CICS RECEIVE 
   MAP('map-name')
   MAPSET('mapset-name')
   [INTO(data-area)]
   [FROM(data-area)]
   [LENGTH(data_value)]
END-EXEC

映射集执行

开发和执行映射集需要以下步骤:

  • 步骤 1 - 打开 TSO 会话。

  • 步骤 2 - 创建一个新的 PDS。

  • 步骤 3 - 根据要求在新成员中编写映射集。

  • 步骤 4 - 使用 CICS 管理员提供的 JCL 组装映射集。

  • 步骤 5 - 打开 CICS 会话。

  • 步骤 6 - 使用以下命令安装程序:

    CEMT SET PROG(mapset-name) NEW

  • 步骤 7 - 输入以下命令将映射发送到终端:

    CECI SEND MAP(map-name) MAPSET(mapset-name) ERASE FREEKB

广告