Вы находитесь на странице: 1из 2

IDENTIFICATION DIVISION.

PROGRAM-ID. BUBLESRT.
ENVIRONMENT DIVISION.
CONFIGURATION SECTION.
SOURCE-COMPUTER. VAX-8530.
OBJECT-COMPUTER. VAX-8530.
DATA DIVISION.
WORKING-STORAGE SECTION.
*
01  CURRENT-RECORD                           PIC S9(4)  COMP.

01  CURRENT-LIMIT                            PIC S9(4)  COMP.

01  NUMBER-OF-EXCHANGES                      PIC S9(4)  COMP.

01  NEXT-CURRENT-RECORD                      PIC  9(4)  COMP.

01  PIC-CURRENT-RECORD                       PIC  ZZZ9  VALUE ZEROES.

***************************                       ****************************

01  TEMP-RECORD.
    02 TEMP-REC-NAME                         PIC X(9).
    02 TEMP-REC-DATA                         PIC X(69).
    02 TEMP-REC-LINK                         PIC 9(4).

***************************                       ****************************

LINKAGE SECTION.

01 SORTED-ARRAY.
   03 SORTED-DATA     OCCURS 1 TO 121 TIMES DEPENDING ON NUMB-OF-RECORDS.
      05 SORTED-REC-NUMBER       PIC X(9).
      05 SORTED-REC-DATA         PIC X(69).
      05 SORTED-REC-LINK         PIC 9(4).

01  NUMB-OF-RECORDS            PIC S9(4)  COMP.

***************************                       ****************************
PROCEDURE DIVISION USING SORTED-ARRAY, NUMB-OF-RECORDS.
*
***************************************************************************
**                    MODULO PRINCIPAL DE LA SUBRUTINA.                   *
***************************************************************************
*
BUBBLE-SORT.

    MOVE  1                 TO  NUMBER-OF-EXCHANGES.


    MOVE  NUMB-OF-RECORDS   TO  CURRENT-LIMIT.
    MOVE  NUMB-OF-RECORDS   TO  PIC-CURRENT-RECORD.

    PERFORM  BUBBLE-PASS  UNTIL NUMBER-OF-EXCHANGES = ZERO.


    DISPLAY "TOTAL DE RECORDS SORTEADOS = " PIC-CURRENT-RECORD.

BUBBLE-SORT-EXIT.  EXIT PROGRAM.

BUBBLE-PASS.

    MOVE ZEROES     TO  NUMBER-OF-EXCHANGES.


    MOVE 1          TO  CURRENT-RECORD.
    COMPUTE  CURRENT-LIMIT = CURRENT-LIMIT - 1.
    PERFORM  COMPARE-RECS  UNTIL CURRENT-RECORD > CURRENT-LIMIT.

COMPARE-RECS.

    COMPUTE  NEXT-CURRENT-RECORD = CURRENT-RECORD + 1.

    IF  SORTED-REC-NUMBER(CURRENT-RECORD) >


SORTED-REC-NUMBER(NEXT-CURRENT-RECORD)

     MOVE  SORTED-DATA(CURRENT-RECORD)      TO TEMP-RECORD


     MOVE  SORTED-DATA(NEXT-CURRENT-RECORD) TO SORTED-DATA(CURRENT-RECORD)
     MOVE  TEMP-RECORD                      TO SORTED-DATA(NEXT-CURRENT-RECORD)
     COMPUTE NUMBER-OF-EXCHANGES = NUMBER-OF-EXCHANGES + 1.

    COMPUTE CURRENT-RECORD = CURRENT-RECORD + 1.

Вам также может понравиться