Téma: Přečtení dat ze Stdin a setřídění přes pracovní 1-bytový kód
ČeV-OC ~ ~ ~ JDoodle Online COBOL Compiler IDE ... ~ ~ ~ a720.txt
program-id. a720-trideni-cestiny-utf-8. *> vstupem jsou řádky Stdin, ukončené "Enter" *> transformaci přes 1-bytový kód KW lze využít i v indexových souborech *> limit umožňuje definovat maximálně asi 80 řádků vstupních dat environment division. input-output section. file-control. select TRIDENI assign disk. data division. file section. sd TRIDENI. 1 RADEK pic x(80). working-storage section. 77 T pic 9. 88 PRACE value 0. 88 KONEC value 1. 77 I pic 999. 77 J pic 999. 77 K pic 9. 88 UW value 1. 88 WU value 2. 77 TX pic 999. 1 KW. 2 pic x(20) value x"a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7". 2 pic x(20) value x"b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacb". 2 pic x(20) value x"cccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedf". 2 pic x(20) value x"e0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3". 2 pic x(4) value x"f4f5f6f7". 1 KW-H redefines KW. 2 H pic x occurs 84. 1 ZA. 2 A pic x occurs 80. 1 ZB. 2 B pic x occurs 80. procedure division. display "----- TŘÍDĚNÍ" sort TRIDENI ascending RADEK input procedure VSTUP output procedure VYSTUP display "----- KONEC" stop run. VSTUP. set UW to true set PRACE to true perform until KONEC accept RADEK if RADEK = space set KONEC to true else move RADEK to ZA perform UPRAVA release RADEK from ZB end-if end-perform. VYSTUP. set WU to true set PRACE to true perform until KONEC return TRIDENI end set KONEC to true not end move RADEK to ZA perform UPRAVA display ZB end-return end-perform. UPRAVA. initialize TX ZB inspect ZA tallying TX for trailing space compute TX = 80 - TX move 1 to I J perform until I > TX evaluate true when UW perform UPRAVA-UW when WU perform UPRAVA-WU when other display "chyba programu !!!" end-evaluate end-perform. UPRAVA-UW. evaluate true *> CH 27 Ch 28 cH 29 ch 30 *> x"4348" x"4368" x"6348" x"6368" when A(I) = "C" and A(I + 1) = "H" move H(27) to B(J) add 2 to I add 1 to J when A(I) = "C" and A(I + 1) = "h" move H(28) to B(J) add 2 to I add 1 to J when A(I) = "c" and A(I + 1) = "H" move H(29) to B(J) add 2 to I add 1 to J when A(I) = "c" and A(I + 1) = "h" move H(30) to B(J) add 2 to I add 1 to J *> A 1 a 2 Á 3 á 4 B 5 b 6 C 7 c 8 Č 9 č 10 *> x"41" x"61" x"c381" x"c3a1" x"42" x"62" x"43" x"63" x"c48c" x"c48d" when A(I) = "A" move H(1) to B(J) add 1 to I J when A(I) = "a" move H(2) to B(J) add 1 to I J when A(I) = x"c3" and A(I + 1) = x"81" move H(3) to B(J) add 2 to I add 1 to J when A(I) = x"c3" and A(I + 1) = x"a1" move H(4) to B(J) add 2 to I add 1 to J when A(I) = "B" move H(5) to B(J) add 1 to I J when A(I) = "b" move H(6) to B(J) add 1 to I J when A(I) = "C" move H(7) to B(J) add 1 to I J when A(I) = "c" move H(8) to B(J) add 1 to I J when A(I) = x"c4" and A(I + 1) = x"8c" move H(9) to B(J) add 2 to I add 1 to J when A(I) = x"c4" and A(I + 1) = x"8d" move H(10) to B(J) add 2 to I add 1 to J *> D 11 d 12 Ď 13 ď 14 E 15 e 16 É 17 é 18 Ě 19 ě 20 *> x"44" x"64" x"c48e" x"c48f" x"45" x"65" x"c389" x"c3a9" x"c49a" x"c49b" when A(I) = "D" move H(11) to B(J) add 1 to I J when A(I) = "d" move H(12) to B(J) add 1 to I J when A(I) = x"c4" and A(I + 1) = x"8e" move H(13) to B(J) add 2 to I add 1 to J when A(I) = x"c4" and A(I + 1) = x"8f" move H(14) to B(J) add 2 to I add 1 to J when A(I) = "E" move H(15) to B(J) add 1 to I J when A(I) = "e" move H(16) to B(J) add 1 to I J when A(I) = x"c3" and A(I + 1) = x"89" move H(17) to B(J) add 2 to I add 1 to J when A(I) = x"c3" and A(I + 1) = x"a9" move H(18) to B(J) add 2 to I add 1 to J when A(I) = x"c4" and A(I + 1) = x"9a" move H(19) to B(J) add 2 to I add 1 to J when A(I) = x"c4" and A(I + 1) = x"9b" move H(20) to B(J) add 2 to I add 1 to J *> F 21 f 22 G 23 g 24 H 25 h 26 - - - - CH 27, Ch 28, cH 29, ch 30 - viz nahoře *> x"46" x"66" x"47" x"67" x"48" x"68" when A(I) = "F" move H(21) to B(J) add 1 to I J when A(I) = "f" move H(22) to B(J) add 1 to I J when A(I) = "G" move H(23) to B(J) add 1 to I J when A(I) = "g" move H(24) to B(J) add 1 to I J when A(I) = "H" move H(25) to B(J) add 1 to I J when A(I) = "h" move H(26) to B(J) add 1 to I J *> I 31 i 32 Í 33 í 34 J 35 j 36 K 37 k 38 L 39 l 40 *> x"49" x"69" x"c38d" x"c3ad" x"4a" x"6a" x"4b" x"6b" x"4c" x"6c" when A(I) = "I" move H(31) to B(J) add 1 to I J when A(I) = "i" move H(32) to B(J) add 1 to I J when A(I) = x"c3" and A(I + 1) = x"8d" move H(33) to B(J) add 2 to I add 1 to J when A(I) = x"c3" and A(I + 1) = x"ad" move H(34) to B(J) add 2 to I add 1 to J when A(I) = "J" move H(35) to B(J) add 1 to I J when A(I) = "j" move H(36) to B(J) add 1 to I J when A(I) = "K" move H(37) to B(J) add 1 to I J when A(I) = "k" move H(38) to B(J) add 1 to I J when A(I) = "L" move H(39) to B(J) add 1 to I J when A(I) = "l" move H(40) to B(J) add 1 to I J *> M 41 m 42 N 43 n 44 O 45 o 46 Ó 47 ó 48 P 49 p 50 *> x"4d" x"6d" x"4e" x"6e" x"4f" x"6f" x"c393" x"c3b3" x"50" x"70" when A(I) = "M" move H(41) to B(J) add 1 to I J when A(I) = "m" move H(42) to B(J) add 1 to I J when A(I) = "N" move H(43) to B(J) add 1 to I J when A(I) = "n" move H(44) to B(J) add 1 to I J when A(I) = "O" move H(45) to B(J) add 1 to I J when A(I) = "o" move H(46) to B(J) add 1 to I J when A(I) = x"c3" and A(I + 1) = x"93" move H(47) to B(J) add 2 to I add 1 to J when A(I) = x"c3" and A(I + 1) = x"b3" move H(48) to B(J) add 2 to I add 1 to J when A(I) = "P" move H(49) to B(J) add 1 to I J when A(I) = "p" move H(50) to B(J) add 1 to I J *> Q 51 q 52 R 53 r 54 Ř 55 ř 56 S 57 s 58 Š 59 š 60 *> x"51" x"71" x"52" x"72" x"c598" x"c599" x"53" x"73" x"c5a0" x"c5a1" when A(I) = "q" move H(52) to B(J) add 1 to I J when A(I) = "R" move H(53) to B(J) add 1 to I J when A(I) = "Q" move H(51) to B(J) add 1 to I J when A(I) = "r" move H(54) to B(J) add 1 to I J when A(I) = x"c5" and A(I + 1) = x"98" move H(55) to B(J) add 2 to I add 1 to J when A(I) = x"c5" and A(I + 1) = x"99" move H(56) to B(J) add 2 to I add 1 to J when A(I) = "S" move H(57) to B(J) add 1 to I J when A(I) = "s" move H(58) to B(J) add 1 to I J when A(I) = x"c5" and A(I + 1) = x"a0" move H(59) to B(J) add 2 to I add 1 to J when A(I) = x"c5" and A(I + 1) = x"a1" move H(60) to B(J) add 2 to I add 1 to J *> T 61 t 62 Ť 63 ť 64 U 65 u 66 Ú 67 ú 68 Ǔ 69 ů 70 *> x"54" x"74" x"c5a4" x"c5a5" x"55" x"75" x"c39a" x"c3ba" x"c793" x"c5af" when A(I) = "T" move H(61) to B(J) add 1 to I J when A(I) = "t" move H(62) to B(J) add 1 to I J when A(I) = x"c5" and A(I + 1) = x"a4" move H(63) to B(J) add 2 to I add 1 to J when A(I) = x"c5" and A(I + 1) = x"a5" move H(64) to B(J) add 2 to I add 1 to J when A(I) = "U" move H(65) to B(J) add 1 to I J when A(I) = "u" move H(66) to B(J) add 1 to I J when A(I) = x"c3" and A(I + 1) = x"9a" move H(67) to B(J) add 2 to I add 1 to J when A(I) = x"c3" and A(I + 1) = x"ba" move H(68) to B(J) add 2 to I add 1 to J when A(I) = x"c7" and A(I + 1) = x"93" move H(69) to B(J) add 2 to I add 1 to J when A(I) = x"c5" and A(I + 1) = x"af" move H(70) to B(J) add 2 to I add 1 to J *> V 71 v 72 W 73 w 74 X 75 x 76 Y 77 y 78 Ý 79 ý 80 *> x"56" x"76" x"57" x"77" x"58" x"78" x"59" x"79" x"c39d" x"c3bd" when A(I) = "V" move H(71) to B(J) add 1 to I J when A(I) = "v" move H(72) to B(J) add 1 to I J when A(I) = "W" move H(73) to B(J) add 1 to I J when A(I) = "w" move H(74) to B(J) add 1 to I J when A(I) = "X" move H(75) to B(J) add 1 to I J when A(I) = "x" move H(76) to B(J) add 1 to I J when A(I) = "Y" move H(77) to B(J) add 1 to I J when A(I) = "y" move H(78) to B(J) add 1 to I J when A(I) = x"c3" and A(I + 1) = x"9d" move H(79) to B(J) add 2 to I add 1 to J when A(I) = x"c3" and A(I + 1) = x"bd" move H(80) to B(J) add 2 to I add 1 to J *> Z 81 z 82 Ž 83 ž 84 *> x"5a" x"7a" x"c5bd" x"c5be" when A(I) = "Z" move H(81) to B(J) add 1 to I J when A(I) = "z" move H(82) to B(J) add 1 to I J when A(I) = x"c5" and A(I + 1) = x"bd" move H(83) to B(J) add 2 to I add 1 to J when A(I) = x"c5" and A(I + 1) = x"be" move H(84) to B(J) add 2 to I add 1 to J when other move A(I) to B(J) add 1 to I J end-evaluate. UPRAVA-WU. evaluate true *> A 1 a 2 Á 3 á 4 B 5 b 6 C 7 c 8 Č 9 č 10 *> x"41" x"61" x"c381" x"c3a1" x"42" x"62" x"43" x"63" x"c48c" x"c48d" when A(I) = H(1) move "A" to B(J) add 1 to I J when A(I) = H(2) move "a" to B(J) add 1 to I J when A(I) = H(3) move x"c3" to B(J) move x"81" to B(J + 1) add 1 to I add 2 to J when A(I) = H(4) move x"c3" to B(J) move x"a1" to B(J + 1) add 1 to I add 2 to J when A(I) = H(5) move "B" to B(J) add 1 to I J when A(I) = H(6) move "b" to B(J) add 1 to I J when A(I) = H(7) move "C" to B(J) add 1 to I J when A(I) = H(8) move "c" to B(J) add 1 to I J when A(I) = H(9) move x"c4" to B(J) move x"8c" to B(J + 1) add 1 to I add 2 to J when A(I) = H(10) move x"c4" to B(J) move x"8d" to B(J + 1) add 1 to I add 2 to J *> D 11 d 12 Ď 13 ď 14 E 15 e 16 É 17 é 18 Ě 19 ě 20 *> x"44" x"64" x"c48e" x"c48f" x"45" x"65" x"c389" x"c3a9" x"c49a" x"c49b" when A(I) = H(11) move "D" to B(J) add 1 to I J when A(I) = H(12) move "d" to B(J) add 1 to I J when A(I) = H(13) move x"c4" to B(J) move x"8e" to B(J + 1) add 1 to I add 2 to J when A(I) = H(14) move x"c3" to B(J) move x"8f" to B(J + 1) add 1 to I add 2 to J when A(I) = H(15) move "E" to B(J) add 1 to I J when A(I) = H(16) move "e" to B(J) add 1 to I J when A(I) = H(17) move x"c3" to B(J) move x"89" to B(J + 1) add 1 to I add 2 to J when A(I) = H(18) move x"c3" to B(J) move x"a9" to B(J + 1) add 1 to I add 2 to J when A(I) = H(19) move x"c4" to B(J) move x"9a" to B(J + 1) add 1 to I add 2 to J when A(I) = H(20) move x"c4" to B(J) move x"9b" to B(J + 1) add 1 to I add 2 to J *> F 21 f 22 G 23 g 24 H 25 h 26 CH 27 Ch 28 cH 29xxxxxxxxx ch 30 *> x"46" x"66" x"47" x"67" x"48" x"68" x"4348" x"4368" x"6348" x"6368" when A(I) = H(21) move "F" to B(J) add 1 to I J when A(I) = H(22) move "f" to B(J) add 1 to I J when A(I) = H(23) move "G" to B(J) add 1 to I J when A(I) = H(24) move "g" to B(J) add 1 to I J when A(I) = H(25) move "H" to B(J) add 1 to I J when A(I) = H(26) move "h" to B(J) add 1 to I J when A(I) = H(27) move x"43" to B(J) move x"48" to B(J + 1) add 1 to I add 2 to J when A(I) = H(28) move x"43" to B(J) move x"68" to B(J + 1) add 1 to I add 2 to J when A(I) = H(29) move x"63" to B(J) move x"48" to B(J + 1) add 1 to I add 2 to J when A(I) = H(30) move x"63" to B(J) move x"68" to B(J + 1) add 1 to I add 2 to J *> I 31 i 32 Í 33 í 34 J 35 j 36 K 37 k 38 L 39 l 40 *> x"49" x"69" x"c38d" x"c3ad" x"4a" x"6a" x"4b" x"6b" x"4c" x"6c" when A(I) = H(31) move "I" to B(J) add 1 to I J when A(I) = H(32) move "i" to B(J) add 1 to I J when A(I) = H(33) move x"c3" to B(J) move x"8d" to B(J + 1) add 1 to I add 2 to J when A(I) = H(34) move x"c3" to B(J) move x"ad" to B(J + 1) add 1 to I add 2 to J when A(I) = H(35) move "J" to B(J) add 1 to I J when A(I) = H(36) move "j" to B(J) add 1 to I J when A(I) = H(37) move "K" to B(J) add 1 to I J when A(I) = H(38) move "k" to B(J) add 1 to I J when A(I) = H(39) move "L" to B(J) add 1 to I J when A(I) = H(40) move "l" to B(J) add 1 to I J *> M 41 m 42 N 43 n 44 O 45 o 46 Ó 47 ó 48 P 49 p 50 *> x"4d" x"6d" x"4e" x"6e" x"4f" x"6f" x"c393" x"c3b3" x"50" x"70" when A(I) = H(41) move "M" to B(J) add 1 to I J when A(I) = H(42) move "m" to B(J) add 1 to I J when A(I) = H(43) move "N" to B(J) add 1 to I J when A(I) = H(44) move "n" to B(J) add 1 to I J when A(I) = H(45) move "O" to B(J) add 1 to I J when A(I) = H(46) move "o" to B(J) add 1 to I J when A(I) = H(47) move x"c3" to B(J) move x"93" to B(J + 1) add 1 to I add 2 to J when A(I) = H(48) move x"c3" to B(J) move x"b3" to B(J + 1) add 1 to I add 2 to J when A(I) = H(49) move "P" to B(J) add 1 to I J when A(I) = H(50) move "p" to B(J) add 1 to I J *> Q 51 q 52 R 53 r 54 Ř 55 ř 56 S 57 s 58 Š 59 š 60 *> x"51" x"71" x"52" x"72" x"c598" x"c599" x"53" x"73" x"c5a0" x"c5a1" when A(I) = H(51) move "Q" to B(J) add 1 to I J when A(I) = H(52) move "q" to B(J) add 1 to I J when A(I) = H(53) move "R" to B(J) add 1 to I J when A(I) = H(54) move "r" to B(J) add 1 to I J when A(I) = H(55) move x"c5" to B(J) move x"98" to B(J + 1) add 1 to I add 2 to J when A(I) = H(56) move x"c5" to B(J) move x"99" to B(J + 1) add 1 to I add 2 to J when A(I) = H(57) move "S" to B(J) add 1 to I J when A(I) = H(58) move "s" to B(J) add 1 to I J when A(I) = H(59) move x"c5" to B(J) move x"a0" to B(J + 1) add 1 to I add 2 to J when A(I) = H(60) move x"c5" to B(J) move x"a1" to B(J + 1) add 1 to I add 2 to J *> T 61 t 62 Ť 63 ť 64 U 65 u 66 Ú 67 ú 68 Ǔ 69 ů 70 *> x"54" x"74" x"c5a4" x"c5a5" x"55" x"75" x"c39a" x"c3ba" x"c793" x"c5af" when A(I) = H(61) move "T" to B(J) add 1 to I J when A(I) = H(62) move "t" to B(J) add 1 to I J when A(I) = H(63) move x"c5" to B(J) move x"a4" to B(J + 1) add 1 to I add 2 to J when A(I) = H(64) move x"c5" to B(J) move x"a5" to B(J + 1) add 1 to I add 2 to J when A(I) = H(65) move "U" to B(J) add 1 to I J when A(I) = H(66) move "u" to B(J) add 1 to I J when A(I) = H(67) move x"c3" to B(J) move x"9a" to B(J + 1) add 1 to I add 2 to J when A(I) = H(68) move x"c3" to B(J) move x"ba" to B(J + 1) add 1 to I add 2 to J when A(I) = H(69) move x"c7" to B(J) move x"93" to B(J + 1) add 1 to I add 2 to J when A(I) = H(70) move x"c5" to B(J) move x"af" to B(J + 1) add 1 to I add 2 to J *> V 71 v 72 W 73 w 74 X 75 x 76 Y 77 y 78 Ý 79 ý 80 *> x"56" x"76" x"57" x"77" x"58" x"78" x"59" x"79" x"c39d" x"c3bd" when A(I) = H(71) move "V" to B(J) add 1 to I J when A(I) = H(72) move "v" to B(J) add 1 to I J when A(I) = H(73) move "W" to B(J) add 1 to I J when A(I) = H(74) move "w" to B(J) add 1 to I J when A(I) = H(75) move "X" to B(J) add 1 to I J when A(I) = H(76) move "x" to B(J) add 1 to I J when A(I) = H(77) move "Y" to B(J) add 1 to I J when A(I) = H(78) move "y" to B(J) add 1 to I J when A(I) = H(79) move x"c3" to B(J) move x"9d" to B(J + 1) add 1 to I add 2 to J when A(I) = H(80) move x"c3" to B(J) move x"bd" to B(J + 1) add 1 to I add 2 to J *> Z 81 z 82 Ž 83 ž 84 *> x"5a" x"7a" x"c5bd" x"c5be" when A(I) = H(81) move "Z" to B(J) add 1 to I J when A(I) = H(82) move "z" to B(J) add 1 to I J when A(I) = H(83) move x"c5" to B(J) move x"bd" to B(J + 1) add 1 to I add 2 to J when A(I) = H(84) move x"c5" to B(J) move x"be" to B(J + 1) add 1 to I add 2 to J when other move A(I) to B(J) add 1 to I J end-evaluate.
ČeV - 27.5.2020