КОБОЛ сортировать и объединять одновременно - PullRequest
0 голосов
/ 22 ноября 2011

У меня очень тяжелое время с заданием, которое мне дали. Я должен отсортировать и объединить два TXT-файла, заполненные данными о запасах. Затем я должен предложить пользователю ввести год, и основная запись напечатает записи за этот год. Кто-нибудь может мне помочь, пожалуйста. Это то, что у меня сейчас есть.

   ENVIRONMENT DIVISION.
   INPUT-OUTPUT SECTION.
   FILE-CONTROL.

       SELECT STOCK-REPORT-A ASSIGN TO 'PR3AF11.TXT'.

       SELECT STOCK-REPORT-B ASSIGN TO 'PR3BF11.TXT'.

       SELECT MERGE-FILE ASSIGN TO 'WORK.TMP'.

       SELECT MASTER-STOCK-REPORT ASSIGN TO 'MASTERSTOCKREPORT.TXT'.

   DATA DIVISION.
   FILE SECTION.

   FD  STOCK-REPORT-A.
   01  REPORTA-REC.
       05  A-InvestorID             PIC X(2).
       05  A-InvestorName           PIC X(5).
       05  A-InvestorRating         PIC X.

   FD  STOCK-REPORT-B.
   01  REPORTB-REC.
       05  B-InvestorID             PIC X(2).
       05  B-InvestorName           PIC X(5).
       05  B-InvestorRating         PIC X.

   SD  MERGE-FILE.
   01  MERGE-REC.
       05  M-InvestorID             PIC X(2).
       05  M-InvestorName           PIC X(5).
       05  M-InvestorRating         PIC X.

   SCREEN SECTION.
   01  TITLE SCREEN.
       05  BLANK SCREEN
           FOREGROUND-COLOR BLACK
           BACKGROUND-COLOR WHITE.
       05  LINE 4 COLUMN 15
           VALUE "STOCKS REPORT GENERATOR"
   01  YEAR-QUESTION-SCREEN.
       05  YEAR-ANSWERS.
           10  LINE 7 COLUMN 10
               VALUE "What year would you like to search for?".
           10  LINE 9 COLUMN 15
               VALUE "2005".
           10  LINE 9 COLUMN 15
               VALUE "2006".
           10  LINE 9 COLUMN 15
               VALUE "2007".
           10  LINE 9 COLUMN 15
               VALUE "2008".
           10  LINE 9 COLUMN 15
               VALUE "2009".
           10  LINE 9 COLUMN 15
               VALUE "2010".
           10  LINE 9 COLUMN 15
               VALUE "2011".

   FD MASTER-STOCK-REPORT.
   01 MASTER-REC                    PIC X(122).

   PROCEDURE DIVISION.
   100-MAIN.
   BEGIN.
       MERGE MERGE-FILE
           ON ASCENDING KEY M-InvestorID
           USING STOCK-REPORT-A
               STOCK-REPORT-B
           GIVING MASTER-STOCK-REPORT.
       STOP RUN.

Ответы [ 3 ]

1 голос
/ 22 ноября 2011

Я предпочитаю сортировать и объединять через DFSORT в JCL, а затем вводить этот файл в программу COBOL, которая принимает пользовательский ввод и обеспечивает необходимый вывод. Сортировка и слияние внутри программы происходит медленнее, чем снаружи, конечно, очевидно ...

0 голосов
/ 10 апреля 2013

Вам не нужно сортировать и слияния.Вы можете сортировать оба файла вместе, указав два входных файла в фразе USING глагола SORT.

Если вы не уверены, что это даст вам правильные результаты, вы можете поэкспериментировать с SORT, SORT, MERGE изатем сравните выходной файл с вышеуказанным.Или сядьте с листком бумаги и карандашом и проработайте его.

0 голосов
/ 22 ноября 2011

Вот примеры того, как сортировать и объединять, просто сделайте это как двухшаговую операцию.

http://www.csis.ul.ie/cobol/examples/default.htm#Sort

...