feiyang10086 发表于 2011-11-24 16:33

附加的CICS命令和编程方法 .

附加的CICS命令和编程方法 .






1. IC光标指针

间接光标指针view plaincopy to clipboardprint?
01.ATTRIB=(NORM,UNPROT,IC)
ATTRIB=(NORM,UNPROT,IC)如果有多个域含有IC,则最后一个域获得光标

直接光标指针 / 基于长度后缀

view plaincopy to clipboardprint?
01.EXEC CICS
02.    SEND MAP(<映射名>)
03.         MAPSET(<包含这个映射的映射集名>)
04.         FROM(<映射的主变量,输出(O)型>)
05.         CURSOR[(<位置>)]
06.END-EXEC.
EXEC CICS
    SEND MAP(<映射名>)
         MAPSET(<包含这个映射的映射集名>)
         FROM(<映射的主变量,输出(O)型>)
         CURSOR[(<位置>)]
END-EXEC.位置是一个从屏幕左上角开始的数字,转换方式:(行数-1)x80+(列数-1) = 位置值;

如果CURSOR后面不指定位置,则对长度域(L后缀)为-1设置光标,如果有多个,则取第一个。

2. SEND MAP造成的屏幕属性变化表


MAP ONLY DATA ONLY NONE
设置为任意非Low-value值 设置到物理映射(Physical)设置 设置到新的符号映射设置 设置到新的符号映射设置
设置为Low-value值 设置到物理映射设置 保持不变 (最经济方案) 设置到物理映射设置
不变 设置到物理映射设置 保持不变 设置到物理映射设置


Attribute Byte和Flag Byte位置一样,所以当用户清除一个域的时候并因此发生了0x80被设置到Flag Byte上,需要重新将Attribute Byte设置为Low-value。

3. 接收数据的优化

保存所有屏幕输入内容于通信区;在SEND MAP设置FRSET以关闭Modified Data Tags,这样当用户改了数据后MDT又会打开以说明修改位置; 收到后和通信区数据合并

4. 输入栏


IBM规定输入栏必须表示成下划线;当extended highlighting开启,可以使用真正的下划线;否则只能用下划线符,这是一种字符,所以程序需要对其进行特殊处理。

用法:
view plaincopy to clipboardprint?
01....DFHMDF POS=(??,??)
02.            LENGTH=??
03.            ATTRIB=(NORM, UNPROT, ..)
04.            COLOR=??
05.            HILIGHT=UNDERLINE
...DFHMDF POS=(??,??)
            LENGTH=??
            ATTRIB=(NORM, UNPROT, ..)
            COLOR=??
            HILIGHT=UNDERLINE如果使用下划线符underscore,即使用

view plaincopy to clipboardprint?
01....
02.   INITIAL='____'
...INITIAL='____'这样需要在发出和收入做字符替换,即空格和下划线之间的转换,以下是下划线被空格替换的例子:view plaincopy to clipboardprint?
01.INSPECT <变量名> REPLACE ALL '_' BY SPACE
INSPECT <变量名> REPLACE ALL '_' BY SPACE5. 常用域变量的检查(Editing)


条件 检查方法
没有输入 <名称>L = ZERO
都是空格 <名称>I = SPACE
非数字 相应的判断子过程
非正 <名称>I NOT > ZERO
为零 <名称>I = ZERO


CICS-COBOL编程,通常从下往上检查,这样被显示的总是第一个错误

一般的检查代码的模式view plaincopy to clipboardprint?
01.MOVE ATTR-NO-HIGHLIGHT TO <域变量名>H ...   // 清零高亮
02.IF <检查错误条件>
03.    MOVE ATTR-REVERSE TO <域变量名>H    // 加反色
04.    MOVE -1 TO <域变量名>L            // 设光标
05.    MOVE <消息> TO <消息域>O
06.    MOVE 'N' TO <有效数据指示变量>
07....
MOVE ATTR-NO-HIGHLIGHT TO <域变量名>H ...   // 清零高亮
IF <检查错误条件>
    MOVE ATTR-REVERSE TO <域变量名>H    // 加反色
    MOVE -1 TO <域变量名>L            // 设光标
    MOVE <消息> TO <消息域>O
    MOVE 'N' TO <有效数据指示变量>...

6. SEND TEXT

发送字符数据,从左上角开始,用于调试或不需要指定映射集的简单显示。格式:view plaincopy to clipboardprint?
01.EXEC CICS
02.    SEND TEXT FROM(data-name)// 送指定变量中的内容
03.                 // 在送字符之前屏幕要清除
04.                // 如果指定在发送后解键盘锁,否则用户需要打RESET键解开键盘锁
05.END-EXEC
EXEC CICS
    SEND TEXT FROM(data-name)// 送指定变量中的内容
                 // 在送字符之前屏幕要清除
                // 如果指定在发送后解键盘锁,否则用户需要打RESET键解开键盘锁
END-EXEC 7. 时间日期view plaincopy to clipboardprint?
01.EXEC CICS
02.    FORMATTIME ABSTIME(data-name)            // 15位 packed decimal
03.                            // 8字节日期
04.                        // 10字节年份展开到4数字
05.               
06.               
07.               
08.               
09.               
10.                // 如果忽略,没有分割;如果不指定值,为'/'
11.                        // 6字节,CICS安装的指定格式
12.
13.                     // 从1900年1月1日
14.               
15.               
16.               
17.               
18.
19.               ]] // 时间,8字节域承载hhmmss,24小时;分割不指定值则用':'
20.END-EXEC
页: [1]
查看完整版本: 附加的CICS命令和编程方法 .