我正在将来自 INPUT 文件的 PIC 9(11) COMP-3 中的字段移动到 PIC 9(11)。 我收到 S0C7 错误或异常终止 下面是我的代码:
10 FIELD-FROM PICTURE 9(11) OCCURS 012 TIMES COMPUTATIONAL-3.
01 FIELD-TO PICTURE 9(11).
然后:
INITIALIZE FIELD-TO
DISPLAY 'ST' FIELD-FROM (WS-CPT)
MOVE FIELD-FROM (WS-CPT) TO FIELD-TO
在“DISPLAY 'ST' FIELD-FROM (WS-CPT)”上,显示带空格的数字
最后,它在指令“MOVE”上显示 ABEND S0C7
你因为无效数据而中止。 很可能是
的测试 IF FIELD-FROM (WS-CPT) IS NOT NUMERIC DISPLAY 'BAD'.
会显示坏数据。将数据移动到此记录,例如通过
READ
或通过 MOVE
语句到记录,您只需将数据放入其中而无需任何转换或检查。
稍后做数字
MOVE
时(在这种情况下,从表中的数字字段到数字字段)并且它们没有完全相同的定义(USAGE,大小)原始数据被“解压”然后放置根据需要使用填充/截断进入新字段。
在此解包过程中,您会异常终止 - 因为数据无效。
解决方案:检查记录/表中的定义是否与输入文件匹配,如果“一般”匹配,那么您可能有一个损坏的输入。
一如既往:永远不要相信输入数据,如果它不是性能关键的,请检查其有效性(请记住,
READ
比普通验证需要更多时间)和“外部检查”。
您至少可以使用
NUMERIC
类检查来验证那些数字字段(但通常也可以检查其他数据)。