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.