S0C7 同时将 PIC 9(11) COMP-3 移动到 PIC 9(11)

问题描述 投票:0回答:1

我正在将来自 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

move cobol comp-3
1个回答
1
投票

你因为无效数据而中止。 很可能是

的测试
   IF FIELD-FROM (WS-CPT) IS NOT NUMERIC DISPLAY 'BAD'.

会显示坏数据。将数据移动到此记录,例如通过

READ
或通过
MOVE
语句到记录,您只需将数据放入其中而无需任何转换或检查。

稍后做数字

MOVE
时(在这种情况下,从表中的数字字段到数字字段)并且它们没有完全相同的定义(USAGE,大小)原始数据被“解压”然后放置根据需要使用填充/截断进入新字段。

在此解包过程中,您会异常终止 - 因为数据无效。

解决方案:检查记录/表中的定义是否与输入文件匹配,如果“一般”匹配,那么您可能有一个损坏的输入。

一如既往:永远不要相信输入数据,如果它不是性能关键的,请检查其有效性(请记住,

READ
比普通验证需要更多时间)和“外部检查”。

您至少可以使用

NUMERIC
类检查来验证那些数字字段(但通常也可以检查其他数据)。

© www.soinside.com 2019 - 2024. All rights reserved.