合并声明(COBOL)

时间:2011-02-24 16:09:50

标签: cobol

我正在研究一个需要使用merge语句将两个文件放在一起并对它们进行排序的程序。当然,如果我没有问题,我不会在这里。当我运行我的程序时,我必须做一些工作,然后添加到输出。当它去执行该段时,它会给出一个错误,上面写着“合并文件中的序列ORDER-FILE-SOR”。这是我的代码:

   100-MAIN.
       MERGE ORDERS-FILE-SORT
             ON ASCENDING KEY REQUEST-DATE-S
             ON ASCENDING KEY CUST-NUMBER-S
             ON ASCENDING KEY CUST-ORDER-NUMBER-S
             ON ASCENDING KEY PART-NUMBER-S
             USING ORDERS-FILE-PRIOR-IN
                   ORDERS-FILE-NEW-IN
             OUTPUT PROCEDURE 200-FILE-START
       STOP RUN.


   200-FILE-START.
       OPEN OUTPUT ORDERS-FILE-OUT

       ACCEPT WS-DATE FROM DATE
       MOVE RUN-MONTH TO MONTH-1
       MOVE RUN-DAY TO DAY-1
       MOVE RUN-YEAR TO YEAR-1

       PERFORM 300-NEXT-PAGE

       PERFORM UNTIL ARE-THERE-MORE-RECORDS = 'NO '
           RETURN ORDERS-FILE-SORT
               AT END
                   MOVE 'NO ' TO ARE-THERE-MORE-RECORDS
               NOT AT END
                   PERFORM 400-PROCESS-FILE
           END-RETURN
       END-PERFORM.

       CLOSE ORDERS-FILE-OUT.

它显示的输出是标题行,似乎停在“RETURN ORDERS-FILE-SORT”行。

任何帮助都会非常感激,因为我觉得程序的其余部分运行得很好,但在修复之前我无法检查它。

1 个答案:

答案 0 :(得分:1)

MERGE动词组合了两个或多个相同顺序的文件。要使它工作,您必须已根据一组相同的升序/降序键对它们进行排序。

如果您的输入尚未按此顺序排列,则可能需要按REQUEST-DATE-S,CUST-NUMBER-S,CUST-ORDER-NUMBER-S和PART-NUMBER-S

对每个文件进行排序