2011-02-24 72 views
1

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

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. 

它展现的是标题行,它似乎停止在“退货单-FILE-SORT”行输出。

任何帮助将不胜感激,因为我觉得程序的其余部分将运行良好,但我不能检查它,直到这是固定的。

+1

直到今天,我还是很惊讶COBOL仍然在学校教书:) – BoltClock 2011-02-24 16:26:09

+0

只要Cobol是全球企业的通用语言,就会有一些来自教育机构的点头。 – 2011-02-24 17:18:50

回答

1

MERGE谓词结合了两个或更多相同序列的文件。要使它工作,您必须已经按照一组相同的升序/降序键对它们进行了排序。

如果输入是不是已经按照这个顺序,你可能需要通过REQUEST-DATE-S,CUST-NUMBER-S,CUST-ORDER-NUMBER-S和每个文件进行排序PART-NUMBER-S