Quick Sort Program In Cobol
Dec 10, 2014 Can you sort an array in Cobol AS/400? Function in the C runtime library that can be bound into an ILE program. If a quick sort meets your needs. COBOL Programming: Hi, today i wrote a. Today i wrote a simple sort program. IBMMAINFRAMES.com Support Forums-> COBOL Programming: IBM Manuals Quick.
IBM MAINFRAME: Cobol Bubble sort Code -:::: Author Message hallecodec New User Joined: 05 Sep 2006 Location: Philippines Posted: Tue Nov 28, 2006 7:18 am Post subject: Cobol Bubble sort Code hi everyone, Please see the code below. Code: 01 WS-EMP-REC. 05 WK-EMP-RES PIC 99.
05 WS-SUB1 PIC 999. 05 WS-EMP-NO PIC X(10). 05 WS-EMP-DEP PIC X(2). 05 WS-EMP-RESX PIC X(200).
05 WS-EMP-RESR REDEFINES WS-EMP-RESX OCCURS 100. 10 WS-EMP-RES PIC 9(2). PROCEDURE DIVISION. MOVE 1 TO WS-SUB1. PERFORM 100 TIMES PERFORM VARYING WS-SUB1 FROM 1 BY 1 UNTIL WS-SUB1 100 IF WS-EMP-RES (WS-SUB1) WS-EMP-RES (WS-SUB1 + 1) MOVE WS-EMP-RES (WS-SUB1) TO WS-EMP-RES (WS-SUB1 + 1) MOVE WS-EMP-RES (WS-SUB1) TO WK-EMP-RES END-IF END-PERFORM END-PERFORM.
This piece of code is a bubble sort. I would like to ask if this code is right to be considered a bubble sort. If it is, what should i do to improve its performance? Arun Raj Moderator Joined: 17 Oct 2006 Location: @my desk Posted: Tue Nov 28, 2006 2:25 pm Post subject: Hi I think that there will be loss of data if you are executing the above code as such, as you are not taking any back up of WS-EMP-RES (WS-SUB1 + 1) before moving to that field. Quote: IF WS-EMP-RES (WS-SUB1) WS-EMP-RES (WS-SUB1 + 1) MOVE WS-EMP-RES (WS-SUB1) TO WS-EMP-RES (WS-SUB1 + 1) MOVE WS-EMP-RES (WS-SUB1) TO WK-EMP-RES And in bubble sort each time the no.
Simple Quick Sort Program In Java
Of iterations should go on decreasing till the table gets sorted.A simple bubble sort proceeds as first finding the least value and storing it as the first element and finding the next least value and storing as the second element and so on. Try this code Code: 01 WS-EMP-REC. 05 WK-EMP-RES PIC 99. 05 WS-SUB1 PIC 999 VALUE 0. 05 WS-SUB2 PIC 999 VALUE 0. 05 WS-EMP-NO PIC X(10). 05 WS-EMP-DEP PIC X(2).
05 WS-EMP-RESX PIC X(200). 05 WS-EMP-RESR REDEFINES WS-EMP-RESX OCCURS 100. 10 WS-EMP-RES PIC 9(2). PROCEDURE DIVISION. PERFORM VARYING WS-SUB1 FROM 1 BY 1 UNTIL WS-SUB1= 100 PERFORM VARYING WS-SUB2 FROM WS-SUB1 BY 1 UNTIL WS-SUB2 100 IF WS-EMP-RES (WS-SUB2) SORT-SIZE COMPUTE SORT-VALUE-C (SUB1) = FUNCTION RANDOM. IF SORT-VALUE-C (SUB1) SORT-MAX-VALUE THEN MOVE SORT-VALUE-C (SUB1) TO SORT-MAX-VALUE END-IF END-PERFORM.
DISPLAY ' MIN VALUE =' SORT-MIN-VALUE ' MAX VALUE =' SORT-MAX-VALUE ' SORT SIZE =' SORT-SIZE. MOVE SORT-VALUES-C TO SORT-VALUES. ACCEPT WS-TIME FROM TIME. MOVE CORRESPONDING WS-TIME TO WS-TIME-DISPLAY. DISPLAY ' ' DISPLAY 'START TIME OF BUBBLE SORT ' WS-TIME-DISPLAY. TRUE BUBBLE SORT PERFORM VARYING SUB1 FROM SORT-SIZE BY -1 UNTIL SUB1 SORT-VALUE (SUB3) THEN MOVE SORT-VALUE (SUB2) TO SORT-TEMP MOVE SORT-VALUE (SUB3) TO SORT-VALUE (SUB2) MOVE SORT-TEMP TO SORT-VALUE (SUB3) END-IF END-PERFORM END-PERFORM. ACCEPT WS-TIME FROM TIME.
MOVE CORRESPONDING WS-TIME TO WS-TIME-DISPLAY. DISPLAY 'END TIME OF BUBBLE SORT ' WS-TIME-DISPLAY. PERFORM VARYING SUB1 FROM 1 BY 1 UNTIL SUB1 = SORT-SIZE COMPUTE SUB2 = SUB1 + 1 IF SORT-VALUE (SUB1) SORT-VALUE (SUB2) THEN DISPLAY 'ERROR IN SORT BETWEEN ' SUB1 ' AND ' SUB2 COMPUTE SUB1 = SORT-SIZE END-IF END-PERFORM. MOVE SORT-VALUES-C TO SORT-VALUES. ACCEPT WS-TIME FROM TIME.
MOVE CORRESPONDING WS-TIME TO WS-TIME-DISPLAY. DISPLAY 'START TIME OF JUMPUP SORT ' WS-TIME-DISPLAY. JUMP UP SORT PERFORM VARYING SUB1 FROM 1 BY 1 UNTIL SUB1 = SORT-SIZE COMPUTE SUB2-START-VALUE = SUB1 + 1 PERFORM VARYING SUB2 FROM SUB2-START-VALUE BY 1 UNTIL SUB2 SORT-SIZE IF SORT-VALUE (SUB1) SORT-VALUE (SUB2) THEN MOVE SORT-VALUE (SUB1) TO SORT-TEMP MOVE SORT-VALUE (SUB2) TO SORT-VALUE (SUB1) MOVE SORT-TEMP TO SORT-VALUE (SUB2) END-IF END-PERFORM END-PERFORM. ACCEPT WS-TIME FROM TIME. MOVE CORRESPONDING WS-TIME TO WS-TIME-DISPLAY.

DISPLAY 'END TIME OF JUMPUP SORT ' WS-TIME-DISPLAY. PERFORM VARYING SUB1 FROM 1 BY 1 UNTIL SUB1 = SORT-SIZE COMPUTE SUB2 = SUB1 + 1 IF SORT-VALUE (SUB1) SORT-VALUE (SUB2) THEN DISPLAY 'ERROR IN SORT BETWEEN ' SUB1 ' AND ' SUB2 COMPUTE SUB1 = SORT-SIZE END-IF END-PERFORM. MOVE SORT-VALUES-C TO SORT-VALUES. ACCEPT WS-TIME FROM TIME. MOVE CORRESPONDING WS-TIME TO WS-TIME-DISPLAY. DISPLAY ' ' DISPLAY 'START TIME OF SHELL SORT ' WS-TIME-DISPLAY.
SHELL SORT MOVE 10000 TO INCREMENT PERFORM UNTIL INCREMENT = 0 COMPUTE SUB1-START-VALUE = INCREMENT + 1 PERFORM VARYING SUB1 FROM SUB1-START-VALUE BY 1 UNTIL SUB1 SORT-SIZE MOVE SUB1 TO SUB2 COMPUTE SUB2A = SUB2 - INCREMENT MOVE SORT-VALUE (SUB1) TO SORT-TEMP PERFORM UNTIL SUB2 2 THEN COMPUTE INCREMENT = INCREMENT / 2 ELSE ELSE IF INCREMENT = 1 THEN COMPUTE INCREMENT = 0 ELSE COMPUTE INCREMENT = 1 END-IF END-IF END-PERFORM. ACCEPT WS-TIME FROM TIME. MOVE CORRESPONDING WS-TIME TO WS-TIME-DISPLAY. DISPLAY 'END TIME OF SHELL SORT ' WS-TIME-DISPLAY. PERFORM VARYING SUB1 FROM 1 BY 1 UNTIL SUB1 = SORT-SIZE COMPUTE SUB2 = SUB1 + 1 IF SORT-VALUE (SUB1) SORT-VALUE (SUB2) THEN DISPLAY 'ERROR IN SORT BETWEEN ' SUB1 ' AND ' SUB2 COMPUTE SUB1 = SORT-SIZE END-IF END-PERFORM. Timing Results of the three sort algorithrms Code:. MIN VALUE =000024504 MAX VALUE =999997169 SORT SIZE =000050000.START TIME OF BUBBLE SORT 16:46:01.37.END TIME OF BUBBLE SORT 17:11:51.44.START TIME OF JUMPUP SORT 17:11:51.47.END TIME OF JUMPUP SORT 17:43:49.38.START TIME OF SHELL SORT 17:43:49.41.END TIME OF SHELL SORT 17:43:50.94 I?ll never use the BUBBLE sort again.

The SHELL sort is not that much more complex to write and the difference in timing is significant. Dave hallecodec New User Joined: 05 Sep 2006 Location: Philippines Posted: Mon Dec 04, 2006 11:27 am Post subject: Re: Cobol bubble sort Thanks Dave for the information; it really help me a lot. And i'm sorry if my problem made you stay late at night. Arun Raj Moderator Joined: 17 Oct 2006 Location: @my desk Posted: Mon Dec 04, 2006 12:05 pm Post subject: Hi Dave Thank you so much for the information. Thanks Arun:::: - All times are GMT + 6 Hours Page 1 of 1 Search our Forum.
000001 IDENTIFICATION DIVISION. 000002 PROGRAM-ID. 000003 ENVIRONMENT DIVISION. 000004 CONFIGURATION SECTION. 000005 DATA DIVISION. 000006 WORKING-STORAGE SECTION. 000007 01 I PIC 9(4) COMP.
000008 01 J PIC 9(4) COMP. 000009 01 K PIC 9(4) COMP. 000010 01 VECTOR-LENGTH PIC 9(4) COMP VALUE 13.

000011 01 VECTOR. 000012 02 VEC OCCURS 13. 000013 05 VEC-KEY PIC X(06). 000014 05 FILLER PIC X(14). 000015 01 VEC-M PIC X(20).
000016. 000017 PROCEDURE DIVISION. 000018 MAIN SECTION.
MOVE 1 TO K, PERFORM SORT-VEC UNTIL K = 0. 000021 SORT-VEC. 000022 MOVE 0 TO K. 000023 PERFORM VARYING I FROM 1 BY 1 UNTIL I VECTOR-LENGTH 000024 ADD 1 I GIVING J 000025 IF VEC-KEY(I). I have an implementation of a comb sort, which is an enhanced bubble sort that performs on a par with quicksort. This implementation is written to be used as an internal subprogram.
Full Spectrum Warrior 2 Ten Hammers: System Language Protection CD Cover. Some No-CD/Fixed EXE files work fine in Single Player mode but are detected to be. Full spectrum warrior ten hammers download.
It sorts a table area of unknown length and undefined content with specifications passed in linkage. It will sort up to the maximum single-element size allowed in COBOL/LE. Documentation is at the bottom. If you're going to a PC COBOL, you may have to make changes to account for the length of the linkage area. I've been using it for a while with no ill effects, but as with anything you find on the internet, the onus is on you to make sure it works and suits your needs.
IDENTIFICATION DIVISION. DATA DIVISION. WORKING-STORAGE SECTION. 01 L PIC 9(08) BINARY VALUE ZERO. 01 L-OFF PIC 9(08) BINARY VALUE ZERO. 01 L-KEY PIC 9(08) BINARY VALUE ZERO. 01 H PIC 9(08) BINARY VALUE ZERO.
01 H-OFF PIC 9(08) BINARY VALUE ZERO. 01 H-KEY PIC 9(08) BINARY VALUE ZERO. 01 SWAP-OFF PIC 9(08) BINARY VALUE ZERO. 01 GAP PIC 9(08) BINARY VALUE ZERO. 01 FILLER PIC X(01) VALUE SPACES.
88 NOT-SWAPPED VALUE 'N'. 88 SWAPPED VALUE 'S'. LINKAGE SECTION. 01 S-REC-LEN PIC 9(08) BINARY. 01 S-LST-ENT PIC 9(08) BINARY. 01 S-KEY-STR PIC 9(08) BINARY. 01 S-KEY-LEN PIC 9(08) BINARY.
01 S-TBL PIC X(16777215). PROCEDURE DIVISION USING S-REC-LEN S-LST-ENT S-KEY-STR S-KEY-LEN S-TBL. COMPUTE SWAP-OFF = (S-LST-ENT. S-REC-LEN) + 1 COMPUTE GAP = S-LST-ENT PERFORM UNTIL NOT SWAPPED AND GAP = 1 SET NOT-SWAPPED TO TRUE COMPUTE GAP = GAP / 1.3 EVALUATE GAP WHEN 0 MOVE 1 TO GAP WHEN 9 WHEN 10 MOVE 11 TO GAP END-EVALUATE. FIGURE MY STARTING OFFSETS OUTSIDE THE WORK LOOP.
COMPUTE L-KEY = S-KEY-STR COMPUTE H-KEY = (GAP. S-REC-LEN) + S-KEY-STR PERFORM VARYING L FROM 1 BY 1 UNTIL L (S-LST-ENT - GAP) IF S-TBL(H-KEY:S-KEY-LEN).