2011-02-24 69 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