Cobol II Bubble Sort With a New Twist



This routine will sort the sample working storage table in
ascending sequence, retaining or moving as necessary all
zero entries toward the bottom of the table (instead of
moving them to the top).

   Working Storage Entries:

       01  WS-BANKBRCH-TABLE.
           05  WS-BANKBRCH-ENTRY                   OCCURS 1000 TIMES
                                                   INDEXED BY
                                                   X-WS-BB.
               07  WS-BANKBRCH-9-16    PIC 9(16).
               07  WS-BANKBRCH-9-16-R      REDEFINES WS-BANKBRCH-9-16.
                   09  WS-BANKBRCH-FR  PIC 9(08).
                   09  WS-BANKBRCH-FR-R    REDEFINES WS-BANKBRCH-FR.
                       11  WS-BANK-FR  PIC 9(04).
                       11  WS-BRCH-FR  PIC 9(04).
                   09  WS-BANKBRCH-TO  PIC 9(08).
                   09  WS-BANKBRCH-TO-R    REDEFINES WS-BANKBRCH-TO.
                       11  WS-BANK-TO  PIC 9(04).
                       11  WS-BRCH-TO  PIC 9(04).
       01  WS-BUBBLE-SORT-WORK.
           05  WS-TIMES                PIC S9(04)      COMP VALUE ZEROS.
           05  WS-NBR-TIMES            PIC S9(04)      COMP VALUE ZEROS.
           05  WS-HOLD-ENTRY           PIC X(16)       VALUE LOW-VALUES.
           05  WS-SWAP-OCCURRED        PIC X(01)       VALUE SPACE.

   Procedure Code

           MOVE 1                   TO WS-TIMES.
           MOVE 'Y'                 TO WS-SWAP-OCCURRED.
           PERFORM UNTIL WS-SWAP-OCCURRED = 'N'
              SET X-WS-BB           TO 1
              MOVE 'N'              TO WS-SWAP-OCCURRED
              COMPUTE WS-NBR-TIMES = 1000 - WS-TIMES
              PERFORM WS-NBR-TIMES TIMES
                 IF WS-BANKBRCH-9-16 (X-WS-BB + 1) NOT = ZEROS
                    IF WS-BANKBRCH-FR (X-WS-BB) GREATER THAN
                                   WS-BANKBRCH-FR (X-WS-BB + 1)
                    OR WS-BANKBRCH-9-16 (X-WS-BB) = ZEROS
                       MOVE WS-BANKBRCH-ENTRY (X-WS-BB)
                                   TO WS-HOLD-ENTRY
                       MOVE WS-BANKBRCH-ENTRY (X-WS-BB + 1)
                                   TO WS-BANKBRCH-ENTRY (X-WS-BB)
                       MOVE WS-HOLD-ENTRY TO
                                   WS-BANKBRCH-ENTRY (X-WS-BB + 1)
                       MOVE 'Y'    TO WS-SWAP-OCCURRED
                    END-IF
                 END-IF
                 SET X-WS-BB       UP BY 1
              END-PERFORM
              ADD 1                TO WS-TIMES
           END-PERFORM.


Copyright 2000 [Softech Solutions, Inc]. All rights reserved.