75 lines
1.6 KiB
COBOL
75 lines
1.6 KiB
COBOL
|
|
*> code taken from https://craftofcoding.wordpress.com/2021/03/23/coding-cobol-a-bubblesort/
|
|
identification division.
|
|
program-id. stats.
|
|
|
|
environment division.
|
|
input-output section.
|
|
file-control.
|
|
select input-file assign to dynamic fname-inp
|
|
organization is line sequential.
|
|
|
|
data division.
|
|
file section.
|
|
fd input-file.
|
|
01 sample-input pic x(80).
|
|
|
|
working-storage section.
|
|
77 n pic 9999 value 0.
|
|
77 feof pic A(1).
|
|
77 temp pic s9(14)v9(4) usage is computational-3.
|
|
77 fname-inp pic x(30).
|
|
77 i pic 9999.
|
|
77 j pic 9999.
|
|
77 jp1 pic 9999.
|
|
77 jp2 pic 9999.
|
|
|
|
01 array-area.
|
|
02 x pic s9(14)v9(4) usage is computational-3
|
|
occurs 1000 times.
|
|
|
|
01 input-value.
|
|
02 in-x pic s9(14)v9(4).
|
|
02 filler pic x(62).
|
|
|
|
procedure division.
|
|
display "Input filename? "
|
|
accept fname-inp.
|
|
open input input-file.
|
|
|
|
perform input-loop until feof='Y'
|
|
perform bubblesort.
|
|
perform print-nums.
|
|
perform finish.
|
|
|
|
input-loop.
|
|
read input-file into input-value
|
|
at end move 'Y' to feof
|
|
not at end
|
|
add 1 to n
|
|
move in-x to x(n)
|
|
end-read.
|
|
|
|
bubblesort.
|
|
perform varying i from 1 by 1 until i is greater than n
|
|
compute jp1 = n - i
|
|
perform varying j from 1 by 1 until j is greater than jp1
|
|
compute jp2 = j + 1
|
|
if (x(j) > x(jp2))
|
|
move x(j) to temp
|
|
move x(jp2) to x(j)
|
|
move temp to x(jp2)
|
|
end-if
|
|
end-perform
|
|
end-perform.
|
|
|
|
print-nums.
|
|
move 1 to i.
|
|
perform until i > n
|
|
display i "->"x(i)
|
|
add 1 to i
|
|
end-perform.
|
|
|
|
finish.
|
|
close input-file.
|
|
stop run. |