- 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

- - -