... - cs.wikipedia.org/wiki/Grace_Hopperová
Grace Hopperová nejen patříla prvním lidem, kteří už v době II. světové války programovali číslicové počítače, ale svojí filozofií a přístupem k IT se stala světově nejznámnější programátorkou 20. století. Jejím studijním i původním pracovním oborem byla fyzika a matematika, ale na rozdíl od většiny jiných matematiků v oblasti IT si uvědomovala důležitost srozumitelnosti programovacích jazyků pro jejich praktické používání.
Nyní to bylo přesně 60 let od vydání první specifikace programovacího jazyka COBOL (April 1960), kdy mě kolegové z Ostravy letos v dubnu upozornili na články, popisující problémy státních orgánů USA s potřebou úprav stále spolehlivě fungujicích kriticky důležitých programů a s nedostatkem programátorů, kteří by je v současnosti uměli kvalifikovaně upravit.
ČeV - duben 2020
- příkaz "accept CAS-1 from time" na začátku příslušné varianty zpracování přečte ze systému aktuální čas ve
formátu H1 = hodina, M1 = minuta, V1 = vteřina, S1 = setina vteřiny - na konci pak obdobně pro CAS-2
- problém je v tom, že hodina má 60 minut a minuta 60 vteřin, ale rozdíl je potřeba znát v setinách vteřiny,
takže úkol zní:
máme konkretní hodnoty ve strukturách CAS-1 a CAS-2 a je potřeba vypočítat ROZDIL = CAS-2 - CAS-1
- vzorec pro řešení úkolu je uveden dále - realizováno kompilítorem MF Visual Object Cobol 1996 ve Windows XP
$set sourceformat"free"
identification division.
program-id.
pg-time.
file-control.
select SOUBOR assign "write.dat" sequential.
select CASY assign "casy.txt" line sequential.
data division.
file section.
fd SOUBOR.
1 VETA pic 9(8) comp.
fd CASY.
1 RADEK pic x(120).
working-storage section.
1 STAV-SB pic 9.
88 CTENI value 0.
88 KONEC value 1.
1 P pic 9(9) comp.
1 L pic 9(9) comp value 1000000.
1 E pic zzzbzzzbzzzbzzz.
1 CAS-1.
2 H1 pic 99.
2 M1 pic 99.
2 V1 pic 99.
2 S1 pic 99.
1 CAS-2.
2 H2 pic 99.
2 M2 pic 99.
2 V2 pic 99.
2 S2 pic 99.
1 ROZDIL pic 9(8).
procedure division.
open output CASY
perform ZAPIS
perform READ-1
perform READ-2
perform READ-3
close CASY
stop run.
READ-1 section.
open input SOUBOR
set CTENI to true
accept CAS-1 from time
perform until KONEC
read SOUBOR
end set KONEC to true
not end
continue
end-read
end-perform
accept CAS-2 from time
perform VYPOCET
close SOUBOR.
READ-2 section.
open input SOUBOR
accept CAS-1 from time.
A.
read SOUBOR
end go B.
go A.
B.
accept CAS-2 from time
perform VYPOCET
close SOUBOR.
C.
exit section.
READ-3 section.
open input SOUBOR
set CTENI to true
accept CAS-1 from time
read SOUBOR
end set KONEC to true
end-read
perform until KONEC
read SOUBOR
end set KONEC to true
end-read
end-perform
accept CAS-2 from time
perform VYPOCET
close SOUBOR.
ZAPIS section.
open output SOUBOR
move 1 to P
accept CAS-1 from time
perform until P > L
write VETA from P
add 1 to P
end-perform
accept CAS-2 from time
perform VYPOCET
close SOUBOR.
VYPOCET section.
move L to E
compute ROZDIL =
((H2*3600*100)+(M2*60*100)+(V2*100)+(S2)) -
((H1*3600*100)+(M1*60*100)+(V1*100)+(S1))
move " " to RADEK
string
"počet: " E
" čas-1: " CAS-1
" čas-2: " CAS-2
" rozdíl: " ROZDIL
into RADEK
write RADEK
.
protokol - soubor má 4 MB (věta 4 B)
počet: 1 000 000 čas-1: 09240218 čas-2: 09240335 rozdíl: 00000117
počet: 1 000 000 čas-1: 09240337 čas-2: 09240356 rozdíl: 00000019
počet: 1 000 000 čas-1: 09240357 čas-2: 09240376 rozdíl: 00000019
počet: 1 000 000 čas-1: 09240376 čas-2: 09240396 rozdíl: 00000020
protokol s rozsáhlejšími daty - soubor má 400 MB (věta 4 B)
počet: 100 000 000 čas-1: 08553195 čas-2: 08572812 rozdíl: 00011617
počet: 100 000 000 čas-1: 08572812 čas-2: 08574837 rozdíl: 00002025
počet: 100 000 000 čas-1: 08574837 čas-2: 08580820 rozdíl: 00001983
počet: 100 000 000 čas-1: 08580820 čas-2: 08582817 rozdíl: 00001997
- - -
zadání
název
sekvenční zápis a čtení souboru dat
data
I volba typu souboru a programovacího jazyka - definováno ve zdrojovém textu
I počet zpracovávaných záznamů - zadáno z klávesnice (1 až 200 milionů)
I systémový čas
W sekvenční datový soubor
O protokol o časové náročnosti zpracování - textový soubor
algoritmy
A cyklus pro vytvoření pracovního souboru - alternativy ve zdrojovém textu
B cyklus pro přečtení pracovního souboru - alternativy ve zdrojovém textu
C pomocné služby a výpočet časové náročnosti - opticky odstíněno od A a B
popis
cílem jsou programovací vzory řešení jedné ze základních úloh pro práci se soubory
podmínky
- vzhledem k rozsahu dat je nutno realizovat na lokálním počítači
qqqqqqqqqqqqqq
$set sourceformat"free"
identification division.
program-id.
file-seq.
file-control.
select SB-S assign "seq.dat" line sequential.
select SB-P assign JM-SB-P line sequential.
data division.
file section.
fd SB-S.
1 VT-S pic x(9).
fd SB-P.
1 VT-P pic x(120).
working-storage section.
copy "sluzby-ws.txt".
procedure division.
move "cob-1 soubor zaznamu s pevnou delkou - Cobol"
to RADEK-1
perform ZACNE-I
perform until P > N
move P to VT-S *> perform RADEK
write VT-S
add 1 to P
end-perform
perform KONEC-I
perform ZACNE-O
perform until DOST
read SB-S
end set DOST to true
not end continue
end-read
end-perform
perform KONEC-O.
stop run.
copy "sluzby-pd.txt".
- - -
1 R pic 9.
88 PRACE value 0.
88 DOST value 1.
1 JM-SB-P pic x(20) value " ".
1 RADEK-1 pic x(120).
1 T pic 9(8).
1 P pic 9(9).
1 N pic 9(9).
1 K pic x(20).
88 TIME-1 value "zapis" "cteni".
88 TIME-2 value " ".
1 E pic zzzbzz9b999.
1 CAS-1.
2 H1 pic 99.
2 M1 pic 99.
2 V1 pic 99.
2 S1 pic 99.
1 CAS-1R pic 9(8) redefines CAS-1.
1 CAS-2.
2 H2 pic 99.
2 M2 pic 99.
2 V2 pic 99.
2 S2 pic 99.
1 CAS-2R pic 9(8) redefines CAS-2.
1 ROZDIL pic 9(8).
1 R-EDIT pic z(5)9,99.
1 C-EDIT pic 99b99b99,99.
- - -
<<< o zpráva z programu, komentář
<<< COBOL
<<< 99 Bottles of Beer - *e
<<< i/o komunikace s programem
COBOL není "case sensitivní", tj. nerozlišuje malá a velké písmena
referenční manuály:
Cevela about COBOL - - - accept, display - Data items ... - - -
GnuCOBOL - index - accept - display - pic - - -
Micro Focus Visual Cobol / Program definition - data description entry - accept - display - - -
pg-1 výstup
compile_cobol_online, www.tutorialspoint.com/cobol,
GnuCOBOL - free compiler
MF Visual Cobol - dokumentace
rozdíly online GNU/Open Cobol oproti Mico Focus Cobol
- vždy povinně odstavec
program-id. "jmeno-prog". - nestačí záhlaví použité sekce, ale vždy musí být i nadřízená division
- povinně příkaz "stop run." a příkaz před ním musí končit tečkou