精通COBOL--16.6.1 MAP的基本概念

  MAP是形成基于CICS程序的界面的一个实体,主要由BMSBasic Mapping Support)提供支持。MAP存放于MAPSET中,一个MAPSET可以存放一到多个MAP。不过通常情况下,一个MAPSET中仅存放一个MAP。因此,有时也可使用MAP指代其所在的MAPSET

同时,MAP实际上是分为两种类型的。其中一种类型为物理MAP,另一种类型为符号MAP。理解MAP的基本概念,关键是要理解这两种类型MAP的区别与联系。物理MAP主要用于在屏幕上显示界面信息。其中BMS使用物理MAP既进行输入操作,也进行输出操作。例如,假设CICS中的某一MAP如图所示。

精通COBOL--16.6.1 MAP的基本概念_第1张图片

假设该MAP的名称为“TESTMA”,所存放的MAPSET的名称为“MAPSETA”。则该MAP所对应的源代码如下:

MAPSETA   DFHMSD  TYPE=&SYSPARM, MODE=INOUT, TERM=ALL,

                       LANG=COBOL, TIOAPFX=YES, CTRL=(FREEKB)

TESTMA    DFHMDI   SIZE=(24, 80), LINE=1, COLUMN=1

      DFHMDF   POS=(1, 1), LENGTH=4, INITIAL=’TSMP’, ATTRB=ASKIP

       DFHMDF  POS=(2, 30), LENGTH=12, INITIAL=’TEST  SYSTEM’, ATTRB=ASKIP 

            DFHMDF   POS=(4, 2), LENGTH=12, INITIAL=’TEST CODE:’, ATTRB=ASKIP

CODE      DFHMDF   POS=(4, 15), LENGTH=10, ATTRB=(UNPROT, NUM, IC)

            DFHMDF   POS=(4, 26), LENGTH=1, ATTRB=PROT

            DFHMDF   POS=(5, 2), LENGTH=10, INITIAL=’TEST NAME:’, ATTRB=ASKIP

NAME      DFHMDF   POS=(5, 13), LENGTH=20, ATTRB=UNPROT

            DFHMDF   POS=(5, 34), LENGTH=1, ATTRB=PROT

MSG        DFHMDF   POS=(24, 1), LENGTH=75, ATTRB=ASKIP

            DFHMSD   TYPE=FINAL

            END

以上这段代码实际上为一段汇编宏代码。其物理MAP所包含内容的汇编宏指令分别如下。

q      DFHMSD:指定MAPSET

q      DFHMDI:指定MAP

q      DFHMDF:指定物理MAP中的常量和变量。其中每行前面有标号的对应MAP中的变量,没有标号的对应MAP中的常量。常量仅用于输出,其属性和内容不可改变。变量既可用于输出,也可用于输入,其属性和内容可以改变。

q      DFHMSD:表明该MAP定义结束。

符号MAP为一组COBOL数据,用于在COBOL程序中进行处理。例如,对于以上定义的MAP,可在COBOL程序中使用“COPY MAPSETA”将符号MAP拷贝进来。该命令被编译后,将得到如下符号MAP

COPY  MAPSETA.

01  TESTMAI.                                                          /*以下为符号MAP中的输入信息*/

02  FILLER  PIC  X(12).                                      /*此处表示TIOATerminal Input/Output Area)前缀*/

02  CODEL   COMP  PIC  S9(4). /*以下为变量CODE的相关输入信息*/

02  CODEF   PICTURE  X.

02  FILLER  REDEFINES  CODEF.

   03  CODEA   PICTURE  X.

02  CODEI   PIC  X(10).

02  NAMEL   COMP  PIC  S9(4).           /*以下为变量NAME的相关输入信息*/

02  NAMEF   PICTURE  X.

02  FILLER  REDEFINES  NAMEF.

  03  NAMEA   PICTURE  X.

02  NAMEI   PIC  X(20).

02  MSGL   COMP  PIC  S9(4).             /*以下为变量MSG的相关输入信息*/

02  MSGF   PICTURE  X.

02  FILLER  REDEFINES  MSGF.

   03  MSGA  PICTURE  X.

02  MSGI  PIC  X(75).

01  TESTMAO  REDEFINES  TESTMAI.         /*以下为符号MAP中的输出信息*/

02   FILLER  PIC  X(12).

02   FILLER  PICTURE  X(3).

02   CODEO  PIC  X(10).

02   FILLER   PICTURE  X(3).

02   NAMEO  PIC  X(20).

02   FILLER   PICUTRE  X(3).

02   MSGO   PIC  X(75).

关于符号MAP中各变量的后缀,简要说明如下:

q      后缀“L”:半字边界区域,用于保存输入数据的长度。(关于半字的概念,将在大型机汇编语言扩展一章中详细讲解。)

q      后缀“F”:当遇到EOFErase to end of Field key)情况时,该区域内容为十六进制数“80”。此时后缀为“L”的区域内容将为0

q      后缀“I”:保存实际输入的数据。

q      后缀“A”:包含数据的属性,可以对其进行更改;其中常用属性有:DFHBMUNP(可输入);DFHBMPRO(不可输入);DFHBMBRY(高亮显示);DFHBMDAR(不显示)。

q      后缀“O”:保存实际要输出的数据。

最后,图分别反映了物理MAP和符号MAP从定义到生成的实际过程。

精通COBOL--16.6.1 MAP的基本概念_第2张图片

你可能感兴趣的:(精通COBOL--16.6.1 MAP的基本概念)