Téma: Hexadecimální a binární zobrazení textových řádků dat - vstupem je Stdin nebo klávesnice
ČeV-OC ~ ~ ~ JDoodle Online COBOL Compiler IDE ... ~ ~ ~ a70.txt
program-id.
a70-interni-zobrazeni-dat.
*> vstupem jsou řádky Stdin nebo interaktivně vložené z klávesnice, ukončené "Enter",
*> výstupem je hexadecimální zobrazení vstupu, při CMD-Line = "b" je k tomu i binární,
*> limit pro trvání interaktivní práce je asi 1 minuta
data division.
working-storage section.
1 BAJT pic x.
1 BITY.
2 LB.
3 L1 pic 99 comp-x.
3 L2 pic 99 comp-x.
3 L3 pic 99 comp-x.
3 L4 pic 99 comp-x.
2 PB.
3 P1 pic 99 comp-x.
3 P2 pic 99 comp-x.
3 P3 pic 99 comp-x.
3 P4 pic 99 comp-x.
1 KODY.
2 LB.
3 L1 pic 9.
3 L2 pic 9.
3 L3 pic 9.
3 L4 pic 9.
2 PB.
3 P1 pic 9.
3 P2 pic 9.
3 P3 pic 9.
3 P4 pic 9.
1 T pic 9999.
1 TV pic x.
1 V.
2 V1 pic x.
2 V2 pic x.
77 RADEK-C pic x(80).
77 RADEK-S pic x(80).
88 PRACE value "*".
88 KONEC value " ".
77 D pic 999.
77 I pic 999.
77 H pic 999.
77 B pic 999.
77 RADEK-H pic x(160).
77 RADEK-B pic x(160).
procedure division.
perform PRECTI-C
perform PRECTI-S
stop run.
PRECTI-C.
accept RADEK-C from command-line
display "----- C = " RADEK-C
.
PRECTI-S.
set PRACE to true
perform until KONEC
accept RADEK-S
if not KONEC
perform HEXA
end-if end-perform
display "----- KONEC"
.
HEXA.
display " ....*....1....*....2....*....3....*....4....*....5....*....6....*....7"
move 0 to D
inspect RADEK-S tallying D for trailing " "
compute D = 80 - D
display D " " RADEK-S
move space to RADEK-H RADEK-B
move 1 to H B
perform varying I from 1 by 1 until I > D
move RADEK-S(I:1) to BAJT
call x"F5" using BAJT BITY
move corr BITY to KODY
move LB of KODY to T perform TST move TV to V1
move PB of KODY to T perform TST move TV to V2
move V to RADEK-H(H:2)
add 3 to H
if RADEK-C = "b"
string LB of KODY " " PB of KODY delimited size
into RADEK-B(B:9)
add 10 to B
end-if end-perform
compute D = 2 * D
display D " " RADEK-H
if RADEK-C = "b"
compute D = 4 * D
display D " " RADEK-B
end-if
.
TST.
evaluate T
when 0000 move "0" to TV
when 0001 move "1" to TV
when 0010 move "2" to TV
when 0011 move "3" to TV
when 0100 move "4" to TV
when 0101 move "5" to TV
when 0110 move "6" to TV
when 0111 move "7" to TV
when 1000 move "8" to TV
when 1001 move "9" to TV
when 1010 move "a" to TV
when 1011 move "b" to TV
when 1100 move "c" to TV
when 1101 move "d" to TV
when 1110 move "e" to TV
when 1111 move "f" to TV
end-evaluate.
ČeV - 28.5.2020