CICS - MAP

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

CICS MAPS

物理映射

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

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

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

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

符号映射

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

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

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

Skipper 和 Stopper 字段

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

CICS Skipper & Stopper 字段

Skipper 字段

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

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   

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

Sr.No 参数和说明
1

Map-name

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

2

Mapset-name

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

3

FROM

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

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