Cobol 如何修复重复?

Cobol 如何修复重复?,cobol,Cobol,该程序将读取SEQ文件,并通过不同的验证获取数据,如果数据不符合其中一个验证,则错误消息将移至FIELD-NAME 处理完所有数据后,所有事务都将用于创建RPT文件 问题:在查看RPT文件时,除了标题行1之外,所有内容都是重复的。另一个奇怪的问题是,错误字段名/错误字段值在传递条目后不断重复相同的错误 如果您运行SEQ还提供的代码,您将看到数据当前是如何打印的。下面是一个链接,指向第一页数据的外观 序号: 代码: 如果您有任何问题,请告诉我。重复输出出现在以下代码中 IF RECORDS

该程序将读取SEQ文件,并通过不同的验证获取数据,如果数据不符合其中一个验证,则错误消息将移至FIELD-NAME

处理完所有数据后,所有事务都将用于创建RPT文件

问题:在查看RPT文件时,除了标题行1之外,所有内容都是重复的。另一个奇怪的问题是,错误字段名/错误字段值在传递条目后不断重复相同的错误

如果您运行SEQ还提供的代码,您将看到数据当前是如何打印的。下面是一个链接,指向第一页数据的外观

序号:

代码:


如果您有任何问题,请告诉我。

重复输出出现在以下代码中

   IF RECORDS-ERROR-SWITCH = 'NO'
       ADD 1 TO TOTAL-GOOD-COUNT
       ADD 1 TO TOTAL-GOOD-QUANTITY
       WRITE INVENTORY-TRANS-RECORD-OUT-2
       MOVE DETAIL-LINE TO INVENTORY-TRANS-RECORD-OUT-2
       WRITE INVENTORY-TRANS-RECORD-OUT-2
第一个
WRITE
语句打印前一行的副本。第二个
WRITE
语句打印新行,在下一个循环中再次打印。删除第一条
WRITE
语句

我注意到的其他问题有:

  • 无效文字

     330-VALIDATE-CHARGE-NUMBER.
         IF CHARGE-NUMBER-IN IS EQUAL TO ''
    
     340-VALIDATE-INITIALS.
         IF ((INITIALS-1-IN IS EQUAL TO '') OR (INITIALS-2-IN IS EQUAL TO ''))
    
不允许使用零长度文字;因此,在每种情况下,
'
应该是
'

  • 无效的数字比较

     310-VALIDATE-QUANTITY.
         IF QUANTITY-9-IN IS GREATER THAN '20,000'
    
QUANTITY-9-IN
定义为
PIC 9(5)
;但是,数据包含前导空格,
'20000'
对于数字比较无效。适当的数值比较可以是:

       IF FUNCTION NUMVAL (QUANTITY-IN) IS GREATER THAN 20000
以下内容未作进一步调查。

  • 打印间距与所需输出不匹配
所写的行没有推进短语,因此只使用单个空格

  • 总计打印不正确
WS-QUANTITY
定义为
PIC 9V999
。它应该是
9999
9(4)

总计的数据项没有增加


500-
510-
520-
530-
段落中的
MOVE
语句覆盖固定文本。

除了第一条注释外,您可能希望使用
WRITE INVENTORY-TRANS-RECORD-OUT-2 FROM-DETAIL-LINE
使打印位置“完全清晰”。
 310-VALIDATE-QUANTITY.
     IF QUANTITY-9-IN IS GREATER THAN '20,000'
       IF FUNCTION NUMVAL (QUANTITY-IN) IS GREATER THAN 20000