       identification division.
       program-id.Oef20c.
       author. Marlies De Ridder.
       date-written. 30-december-2004.

       environment division.
       select acties
       assign to  "acties.dat"
       organization is sequential
       access sequential
       file status acties-status.

       select spreuken
       assign to  "spreuken.dat"
       organization is sequential
       access sequential
       file status spreuken-status.


       select fouten
       assign to  "fouten.dat"
       organization is sequential
       access sequential.


       configuration section.
       source-computer.pc.
       object-computer.pc.
       file section.
       FD acties.
           01 A-record.
               03 A-nr pic 99.
               03 A-code pic x.
               03 A-kar-1 pic x.
               03 A-kar-2 pic x.
       FD spreuken.
           01 S-record.
               03 S-nr pic 99.
               03 S-tekst pic x(50).
       FD fouten.
           01 F-record.
               03 F-nr pic 99.
               03 F-code pic x.
               03 F-kar-1 pic x.
               03 F-kar-2 pic x.
               03 F-tekst pic X(60).

       WORKING-STORAGE SECTION.
       01 datum.
           03 jaar pic 99.
           03 maand pic 99.
           03 dag pic 99.
       01 ndatum.
           03 ndag pic 99/.
           03 nmaand pic 99/.
           03 njaar pic 99.
       01 keuze pic x.
               88 goede-keuze values "1" thru "3".
           01 naam pic x(18) values "Marlies De Ridder".
       77 antwoord pic x.
           88 stoppen value "n","N".
       01 toets pic x.
       01 teller pic 99.
       01 ontv pic x(7) occurs 10.
       01 aantalwoord pic 99.
       01 plaats pic 99.

       01 o-s-record.
           02 o-s-nr pic 99.
           02 o-s-tekst pic x(50).
       01 o-a-record.
           02 o-a-nr pic 99.
           02 o-a-code pic x.
           02 o-a-kar-1 pic x.
           02 o-a-kar-2 pic x.
       77 acties-status pic xx.
           88 eof-acties   value "10".

       77 spreuken-status pic xx.
           88 eof-spreuken   value "10".



       screen section.
       01 G-MENU.
         02 LINE 1 COL 1 VALUE "HOGESCHOOL GENT".
         02 LINE 3 COL 25 VALUE "³  SPREUKEN met ACTIES  ³".
         02 line 4 col 1 value "Om te starten druk een toets in".

       PROCEDURE DIVISION.
       main.
           perform kopregels
           perform spreukacties
           accept toets at 2020
           exit program.
       kopregels.
           display spaces upon crt
           display G-MENU
           accept datum from date
           move dag to ndag
           move maand to nmaand
           move jaar to njaar
           display ndatum at 0169
           display naam at 2501
           display "OEFENING 20c" at 2565
           accept toets at 0435
       .

       spreukacties.
       Open I-O spreuken
       perform with test before until eof-spreuken
               read spreuken next
                   at end set eof-spreuken to true
               end-read
           perform actiesenfouten
       end-perform
       close spreuken
       .

       actiesenfouten.

       Open I-O acties

       perform until eof-acties

       display spaces upon crt
       display "ACTIES OP SPREUKEN (R=vervangen, T=tellen,U=unstring):"
       at line 01 col 10
       display s-tekst at line 03 col 1
       If s-nr=06 then display "Geen spreuk!!!                 " at 0301
       end-if
           read acties next
               at end set eof-acties to true
           end-read
           display a-code at 0501
           move s-tekst to o-s-tekst

           If a-code="R" then
               display a-kar-1  at 0504
               display "door" at 0506
               display a-kar-2 at 0511
               inspect o-s-tekst replacing all a-kar-1 by a-kar-2
               display o-s-tekst at 0801
           end-if
           if a-code="T" then display a-kar-1 at 0504
                    display "                                        "
                    at 0801
                    display "                                        "
                    at 0840
                    move zero to teller
                    inspect s-tekst tallying teller for all a-kar-1
                    display "komt     keer voor" at 0506
                    display teller at 0512
           end-if
           if a-code="U" and a-nr=1 then
                    move 1 to aantalwoord
                    move 8 to plaats
                    unstring s-tekst delimited
                    by " " into ontv(1) ontv(2) ontv(3) ontv(4) ontv(5)
                    ontv(6) ontv(7) ontv(8) ontv(9) ontv(10)
                    on overflow perform foutenmaken
                    perform   until aantalwoord=11
                    display ontv(aantalwoord) at line plaats col 01
                    add 1 to aantalwoord
                    add 1 to plaats
                    end-perform
                    display "(met 10 ontvangers)" at 1320
           end-if
           if a-code="U" and a-nr=2 then
                    move 1 to aantalwoord
                    move 8 to plaats
                    unstring s-tekst delimited
                    by " " into ontv(1) ontv(2) ontv(3) ontv(4) ontv(5)
                    on overflow perform foutenmaken
                    perform   until aantalwoord=6
                    display ontv(aantalwoord) at line plaats col 01
                    add 1 to aantalwoord
                    add 1 to plaats
                    end-perform
                    display "(met 5 ontvangers)" at 1320
           end-if
           if a-code="X" then perform foutenmaken
           end-if

           display "Druk een toets in: " at 2010
           accept toets

       end-perform

       close acties
       .

       foutenmaken.
       open extend fouten
       If a-code="X" then
           move a-nr to f-nr
           move "Verkeerde code" to f-tekst
           move a-code to f-code
           write f-record
       end-if
       if a-code="U" then
           move a-nr to f-nr
           move a-code to f-code
           move "Verkeerd nummer of te weinig ontvangers" to f-tekst
           write f-record
       end-if
       close fouten
       .
