IDENTIFICATION DIVISION. PROGRAM-ID. RONSKEL. ***************************************************************** * * ***************************************************************** ENVIRONMENT DIVISION. CONFIGURATION SECTION. SOURCE-COMPUTER. IBM-4341. OBJECT-COMPUTER. IBM-4341. * INPUT-OUTPUT SECTION. FILE-CONTROL. * DATA DIVISION. FILE SECTION. WORKING-STORAGE SECTION. 01 WS-BEGIN PIC X(22) VALUE '*** WS STARTS HERE ***'. * 01 WS-WORK-AREAS. 03 WS-PROG-ID PIC X(7) VALUE 'RONSKEL'. 03 WS-WORK PIC X(40) VALUE 'INIT'. 03 ATTD-WS-STATUS PIC X(2) VALUE 'ZZ'. * 01 WS-INSTAPPL-TABLE. 05 FILLER PIC 9(16) VALUE 9900000000000000. 05 FILLER PIC 9(16) VALUE 0000000000000000. 05 FILLER PIC 9(16) VALUE 9700200000000000. 05 FILLER PIC 9(16) VALUE 9600300000000000. 05 FILLER PIC 9(16) VALUE 9500400000000000. 05 FILLER PIC 9(16) VALUE 0000000000000000. 05 FILLER PIC 9(16) VALUE 9300600000000000. 05 FILLER PIC 9(16) VALUE 9200700000000000. 05 FILLER PIC 9(16) VALUE 0000000000000000. 05 FILLER PIC 9(16) VALUE 9000900000000000. 01 WS-INSTAPPL-TABLE-R REDEFINES WS-INSTAPPL-TABLE. 05 WS-INSTAPPL-ENTRY OCCURS 10 TIMES INDEXED BY X-WS-IA X-WS-IA2. 07 WS-INSTAPPL-9-16 PIC 9(16). 07 WS-INSTAPPL-9-16-R REDEFINES WS-INSTAPPL-9-16. 09 WS-INSTAPPL-FR PIC 9(08). 09 WS-INSTAPPL-FR-R REDEFINES WS-INSTAPPL-FR. 11 WS-INST-FR PIC 9(04). 11 WS-APPL-FR PIC 9(04). 09 WS-INSTAPPL-TO PIC 9(08). 09 WS-INSTAPPL-TO-R REDEFINES WS-INSTAPPL-TO. 11 WS-INST-TO PIC 9(04). 11 WS-APPL-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 DIVISION. * 0000-DRIVER. ***************************************************************** * THIS ROUTINE WILL SORT THE WS TABLE IN ASCENDING SEQUENCE * * WITH THE EXCEPTION THAT ZERO ENTRIES WILL SORT TO THE BOTTOM. * * SAMPLE BEFORE AND AFTER: * * * * BEFORE AFTER * * 1 555555555 1 222222222 * * 2 000000000 2 333333333 * * 3 444444444 3 444444444 * * 4 333333333 4 555555555 * * 5 000000000 5 000000000 * * 6 222222222 6 000000000 * * * ***************************************************************** * SORT WS TABLE FROM LOW TO HIGH MOVE 1 TO WS-TIMES. MOVE 'Y' TO WS-SWAP-OCCURRED. PERFORM UNTIL WS-SWAP-OCCURRED = 'N' SET X-WS-IA TO 1 MOVE 'N' TO WS-SWAP-OCCURRED COMPUTE WS-NBR-TIMES = 10 - WS-TIMES PERFORM WS-NBR-TIMES TIMES IF WS-INSTAPPL-9-16 (X-WS-IA + 1) NOT = ZEROS IF WS-INSTAPPL-FR (X-WS-IA) GREATER THAN WS-INSTAPPL-FR (X-WS-IA + 1) OR WS-INSTAPPL-9-16 (X-WS-IA) = ZEROS MOVE WS-INSTAPPL-ENTRY (X-WS-IA) TO WS-HOLD-ENTRY MOVE WS-INSTAPPL-ENTRY (X-WS-IA + 1) TO WS-INSTAPPL-ENTRY (X-WS-IA) MOVE WS-HOLD-ENTRY TO WS-INSTAPPL-ENTRY (X-WS-IA + 1) MOVE 'Y' TO WS-SWAP-OCCURRED END-IF END-IF SET X-WS-IA UP BY 1 END-PERFORM ADD 1 TO WS-TIMES END-PERFORM. * DISPLAY TABLE DISPLAY '-----------------------------'. SET X-WS-IA TO +01. PERFORM 10 TIMES DISPLAY WS-INSTAPPL-ENTRY (X-WS-IA) SET X-WS-IA UP BY +01 END-PERFORM STOP RUN.