免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1612 | 回复: 0
打印 上一主题 下一主题

附加的CICS命令和编程方法 . [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-11-24 16:33 |只看该作者 |倒序浏览
附加的CICS命令和编程方法 .







1. IC光标指针

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

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


  1. view plaincopy to clipboardprint?
  2. 01.EXEC CICS  
  3. 02.    SEND MAP(<映射名>)  
  4. 03.         MAPSET(<包含这个映射的映射集名>)  
  5. 04.         FROM(<映射的主变量,输出(O)型>)  
  6. 05.         CURSOR[(<位置>)]  
  7. 06.END-EXEC.  
  8. EXEC CICS
  9.     SEND MAP(<映射名>)
  10.          MAPSET(<包含这个映射的映射集名>)
  11.          FROM(<映射的主变量,输出(O)型>)
  12.          CURSOR[(<位置>)]
  13. 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开启,可以使用真正的下划线;否则只能用下划线符,这是一种字符,所以程序需要对其进行特殊处理。

用法:

  1. view plaincopy to clipboardprint?
  2. 01....  DFHMDF POS=(??,??)  
  3. 02.            LENGTH=??  
  4. 03.            ATTRIB=(NORM, UNPROT, ..)  
  5. 04.            COLOR=??  
  6. 05.            HILIGHT=UNDERLINE  
  7. ...  DFHMDF POS=(??,??)
  8.             LENGTH=??
  9.             ATTRIB=(NORM, UNPROT, ..)
  10.             COLOR=??
  11.             HILIGHT=UNDERLINE如果使用下划线符underscore,即使用

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


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


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

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

6. SEND TEXT

发送字符数据,从左上角开始,用于调试或不需要指定映射集的简单显示。格式:
  1. view plaincopy to clipboardprint?
  2. 01.EXEC CICS  
  3. 02.    SEND TEXT FROM(data-name)  // 送指定变量中的内容  
  4. 03.             [ERASE]    // 在送字符之前屏幕要清除  
  5. 04.             [FREEKB]   // 如果指定在发送后解键盘锁,否则用户需要打RESET键解开键盘锁  
  6. 05.END-EXEC  
  7. EXEC CICS
  8.     SEND TEXT FROM(data-name)  // 送指定变量中的内容
  9.              [ERASE]    // 在送字符之前屏幕要清除
  10.              [FREEKB]   // 如果指定在发送后解键盘锁,否则用户需要打RESET键解开键盘锁
  11. END-EXEC
复制代码
7. 时间日期
  1. view plaincopy to clipboardprint?
  2. 01.EXEC CICS  
  3. 02.    FORMATTIME ABSTIME(data-name)            // 15位 packed decimal  
  4. 03.               [DATE(data-name)]             // 8字节日期  
  5. 04.               [FULLDATE(data-name)]         // 10字节年份展开到4数字  
  6. 05.               [MMDDYYYY(data-name)]  
  7. 06.               [DDMMYYYY(data-name)]  
  8. 07.               [YYYYMMDD(data-name)]  
  9. 08.               [YYYYDDMM(data-name)]  
  10. 09.               [YYYYDDD(data-name)]  
  11. 10.               [DATESEP[(data-name |literal)] // 如果忽略,没有分割;如果不指定值,为'/'  
  12. 11.               [DATEFORM(data-name)]         // 6字节,CICS安装的指定格式  
  13. 12.  
  14. 13.               [DAYCOUNT(data-name)]        // 从1900年1月1日  
  15. 14.               [DAYOFWEEK(data-name)]  
  16. 15.               [DAYOFMONTH(data-name)]  
  17. 16.               [MONTHOFYEAR(data-name)]  
  18. 17.               [YEAR(data-name)]  
  19. 18.  
  20. 19.               [TIME(data-name)[TIMESEP[(data-name | literal)]]] // 时间,8字节域承载hhmmss,24小时;分割不指定值则用':'  
  21. 20.END-EXEC  
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP