CICS的基本结构和命令

1. 映射表(Map/Mapset)的属性(Attribute)字节

1. 第一列总不会被实质内容占据;最多是属性字节。所以实质内容总最多从第二列开始。

2. 每个映射域均要以一个属性字节起始。

3. 输入域(UNPROT)还要以一个属性字节结束,而这个属性字节应当为ASKIP。

属性字节排布:

比特位置 功能 比特设置
0-1 根据2~7比特  
2-3 保护性和转移

00 = UNPROT ALPHANUM (左对齐)
01 = UNPROT NUM (NUM开,右对齐)
10 = PROT
11 = SKIP

4-5 亮度

00 = 普通
01 = 普通
10 = 高亮
11 = 黑(无显示)

6   必须为0
7 MDT 1表示更改过

另有扩展属性,用于如颜色,高亮,输入预审等

一个MAP中的域(例如名叫USERNME)对应COBOL(Symbolic Map符号映射)的变量包括

注,此处用比较接近的ABAP源码框显示COBOL代码

1 USERNMEI   PIC ...      // 输入

2 USERNMEO   PIC ...      // 输出,其实是和输入重叠的

3 USERNMEL   PIC S9(4) COMP.  // 长度; -1可以设光标

4 USERNMEF   PIC X.       // 0x80如果用户修改了输入域但没有录入数据;否则一般为Low-value

5 FILLER REDEFINES USERNMEF.

6    USERNMEA   PIC X.   // 可见属性字节A和标记字节F是重叠的,它是用来设置并送出MAP的

7 USERNMEC   PIC X.      // 色彩扩展属性,只有DSATTS=COLOR开启时才有

8 USEENMEH   PIC X.      // 高亮扩展属性,只有DSATTS=HILIGHT开启才有

关于程序发送MAP的一些模式,详见附加的CICS命令和编程方法

2. 典型的MAPSET实例

 1          PRINT NOGEN                                // 表示开始,告诉汇编器不要打印展开后语句

 2 GLMS6H1  DFHMSD TYPE=&SYSPARM,                                         X // 整个MAPSET

 3                LANG=COBOL,                                             X // 用COBOL语言

 4                MODE=INOUT,                                             X

 5                TERM=3270-2,                                            X

 6                CTRL=FREEKB,                                            X

 7                STORAGE=AUTO,                                           X

 8 // 这两行开启扩展属性使得能够用颜色等特性               

 9                DSATTS=(COLOR,HILIGHT),                                 X   

10                MAPATTS=(COLOR,HILIGHT),                                X   

11                TIOAPFX=YES

12 ***********************************************************************

13 GLMS6H1  DFHMDI SIZE=(24,80),                                          X // 覆盖整个界面

14                LINE=1,                                                 X

15                COLUMN=1

16 ***********************************************************************

17          DFHMDF POS=(1,1),                                             X // 第2列开始

18                LENGTH=7,                                               X // 长度7

19                ATTRB=(NORM,PROT),                                      X // 只读;常规亮度

20                COLOR=BLUE,                                             X // 内容

21                INITIAL='GLMS6H1'

22          DFHMDF POS=(1,20),                                            X

23                LENGTH=20,                                              X

24                ATTRB=(NORM,PROT),                                      X

25                COLOR=GREEN,                                            X

26                INITIAL='Customer Maintenance'

27 TRANID1  DFHMDF POS=(1,76),                                            X

28                LENGTH=4,                                               X

29                ATTRB=(NORM,PROT),                                      X

30                COLOR=BLUE,                                             X

31                INITIAL='GL6H'

32 ***********************************************************************

33 INSTR1   DFHMDF POS=(3,1),                                             X

34                LENGTH=64,                                              X

35                ATTRB=(NORM,PROT),                                      X

36                COLOR=GREEN,                                            X

37                INITIAL='Type a customer number.  Then select an action X

38                and press Enter.'

39 ***********************************************************************

40          DFHMDF POS=(5,1),                                             X

41                LENGTH=24,                                              X

42                ATTRB=(NORM,PROT),                                      X

43                COLOR=GREEN,                                            X

44                INITIAL='Customer number. . . . .'

45 CUSTNO1  DFHMDF POS=(5,26),                                            X

46                LENGTH=7,                                               X

47 // UNPROT表示输入域,FSET表示MDT总开启于是数据总送回程序

48 

49                ATTRB=(NORM,UNPROT,FSET,IC),                            X 

50                COLOR=TURQUOISE,                                        X

51                HILIGHT=UNDERLINE                                         // 使用实际底线

52                DFHMDF POS=(5,34),                                      X // 输入域结尾

53                LENGTH=1,                                               X // 长度总为1

54                ATTRB=ASKIP                                               // 总是跳转记号

55 ***********************************************************************

56          DFHMDF POS=(7,1),                                             X

57                LENGTH=24,                                              X

58                ATTRB=(NORM,PROT),                                      X

59                COLOR=NEUTRAL,                                          X

60                INITIAL='Action . . . . . . . . .'

61 ACTION   DFHMDF POS=(7,26),                                            X

62                LENGTH=1,                                               X

63                ATTRB=(NORM,UNPROT,FSET),                               X

64                COLOR=TURQUOISE,                                        X

65                HILIGHT=UNDERLINE

66          DFHMDF POS=(7,28),                                            X

67                LENGTH=21,                                              X

68                ATTRB=(NORM,PROT),                                      X

69                COLOR=NEUTRAL,                                          X

70                INITIAL='1. Add a new customer'

71 ***********************************************************************

72          DFHMDF POS=(8,28),                                            X

73                LENGTH=30,                                              X

74                ATTRB=(NORM,PROT),                                      X

75                COLOR=NEUTRAL,                                          X

76                INITIAL='2. Change an existing customer'

77 ***********************************************************************

78          DFHMDF POS=(9,28),                                            X

79                LENGTH=30,                                              X

80                ATTRB=(NORM,PROT),                                      X

81                COLOR=NEUTRAL,                                          X

82                INITIAL='3. Delete an existing customer'

83 ***********************************************************************

84 MSG1     DFHMDF POS=(23,1),                                            X

85                LENGTH=79,                                              X

86                COLOR=YELLOW,                                           X

87                ATTRB=(BRT,PROT)                                          // BRT表示高亮

88          DFHMDF POS=(24,1),                                            X

89                LENGTH=20,                                              X

90                ATTRB=(NORM,PROT),                                      X

91                COLOR=BLUE,                                             X

92                INITIAL='F3=Exit F12=Cancel'

93 DUMMY    DFHMDF POS=(24,79),                                           X

94                LENGTH=1,                                               X

95                ATTRB=(DRK,PROT,FSET),                                  X

96                INITIAL=' '

97 ***********************************************************************

98          DFHMSD TYPE=FINAL                                              // MAPSET结束

99                END                                                      // 汇编终止

3. 映射表交换

1 EXEC CICS

2     RECEIVE MAP('INQMAP1')     // 映射名称

3             MAPSET('INQSET1')  // 映射集名称

4             INTO(INQMAP1I)     // 屏幕数据对应的域

5 END-EXEC.

映射表发送可见附加的CICS命令和编程方法

4. VSAM文件读取

1 EXEC CICS

2     READ  FILE(filename)         // VSAM文件名,在CICS中定义

3           INTO(data-name)        // 将读得的记录放入变量

4           RIDFLD(data-name)      // 含有记录ID的变量

5           [UPDATE]               // 该记录用于更新(后接REWRITE/DELETE,就对这个记录操作)

6           [RESP(response-code)]  // 返回响应值

7 END-EXEC

常见返回值条件测试

1 IF RESPONSE-CODE = DFHRESP(NORMAL)

2 IF RESPONSE-CODE = DFHRESP(NOTFND)

5. VSAM文件写入

添加记录

1 WRITE FILE(DATASET-NAME)

2       FROM(RECORD-NAME)

3       RIDFLD(ID)

4       RESP(RESPONSE-CODE)

覆盖到UPDATE模式READ的记录上

1 REWRITE FILE(DATASET-NAME)

2         FROM(RECORD)

3         RESP(RESPONSE-CODE)

常见返回条件:

IF RESONSE-CODE = DFHRESP(DUPREC)

6. VSAM文件记录删除

1 DELETE FILE(DATASET-NAME) RESP(RESPONSE-CODE)

7. 返回

1 EXEC CICS

2     RETURN TRANSID(INQ1)

3            COMMAREA(COMMUNICATION-AREA) // 将WORKING-STORAGE中的本次操作的数据再放回到跨执行区

4 END-EXEC.

 

8. 平行转移

1 EXEC CICS

2     XCTL PROGRAM('INVMENU')  // 程序名,定义在COBOL的PROGRAM-ID,并在CICS同名注册

3 END-EXEC.

9. 进一级调用

1 EXEC CICS

2     LINK  PROGRAM(program-name)              // 程序名,定义在COBOL的PROGRAM-ID,并在CICS中同名注册

3           [COMMAREA(data-name)]              // 同转移跨执行数据

4           [DATALENGTH(data-name | literal)]  // 指定跨执行数据长度

5 END-EXEC

要不是看在CICS/COBOL有一把年纪了,否则这样的语言叫人见了就想抽它两耳刮子(ABAP?)

 

你可能感兴趣的:(命令)