MainFrame知识小结(20110925)--cobol中table越界

前几天在测试一个程序的时候,一个CASE本来应该是正常结束的,但却出了个ABEND CODE S0C7(数据异常).检查后发现错误出现在一个名为WS-CCC数据项上,WS-CCC是一个“常量”(COBOL没有常量,这里只是概念上的常量,意思是在程序中不去改变它的值)。正常情况下它在内存中应该是x'F1F0F0F0',实际上却不是如此。


数据项类似于:

05  WS-TABLE            OCCURS 30 TIMES.

  10  WS-AAA             PIC X(4).

  10  WS-BBB             PIC 9(4).

05  WS-CCC               PIC 9(4) VALUE 1000.


COBOL是不会检查TABLE是否越界的。比如上面定义的TABLE是有30个元素的,MOVE 'ABC' TO WS-BBB(31)是不会有任何编译或运行问题的,但却覆盖了跟在TABLE后面的内存区.

posted @ 2011-09-25 11:28  小冰  阅读(602)  评论(0编辑  收藏  举报