5.12 Voorbeeld: ombudswerk

Bij het bureau van een ombudsman slaat men gegevens op in een bestand met de naam logbestand. Dit bestand bevat twee soorten records. Elk record begint met een dossiernummer van vijf cijfers en een datum van zes cijfers. Daarna komt een indicatie van één positie. De indicatie kan de letter K bevatten, of de letter A. Na een letter K volgt een omschrijving van de klacht bestaande uit 80 tekens. Na de letter A volgt een korte omschrijving van de afhandeling. Die beslaat 20 posities.

Alle records van het logbestand moeten worden afgedrukt op papier van 66 regels. De boven- en ondermarge bedragen 4 regels. De records worden afgedrukt met een spatie tussen de verschillende velden en op dubbele regelafstand. Bovenaan elk blad komt een kopregel met de tekst: logbestand blad zzz. Op de plaats van zzz staat het bladnummer. Na de kopregel volgen twee lege regels. Het eerste record staat dus op regel 8 van boven.

Klachtenrecords moeten worden toegevoegd aan een reeds bestaand bestand met de naam archiefbestand. Afhandelingsrecords moeten worden geschreven naar een nieuw bestand dat de naam afhandelingsbestand heeft.

Voor de oplossing van dit probleem is het programma ombudswerk geschreven. De basisstructuur van het programma is weergegeven in het PSD van figuur 5.1. Dit is in het programma het gedeelte verwerk-bestand.

Figuur 5.1 PSD Verwerk-bestand

PSD

 IDENTIFICATION DIVISION
 PROGRAM-ID. Ombudswerk.
*Auteur: Andree Hollander
*Datum:  1988/07/26

 ENVIRONMENT DIVISION.
 INPUT-OUTPUT SECTION.
 FILE-CONTROL.
     select logbestand assign to disk.
     select papier assign to print.
     select archiefbestand assign to disk.
     select afhandelingsbestand assign to disk.

 DATA DIVISION.
 FILE SECTION.
 FD logbestand.
 01 logklacht.
    02 dossiernummer    pic X(05).
    02 datum            pic X(06).
    02 indicatie        pic X(01).
    02 omschrijving     pic X(80).
 01 logafhandeling.
    02 filler           pic X(12).
    02 afhandeling      pic X(20).

 FD papier linage 58 lines, lines at top 4, bottom 4.
 01 papierrecord        pic X(92).

 FD archiefbestand.
 01 archiefrecord       pic X(92).

 FD afhandelingsbestand.
 01 afhandelingsrecord  pic X(32).

 WORKING-STORAGE SECTION.
 01 kopregel.
    02                  pic X(16) value "logbestand blad".
    02 kopblad          pic ZZZ.
 01 afdrukregel.
    02 afdrukdossier    pic X(05)B.
    02 afdrukdatum      pic 9(06)B.
    02 afdrukindicatie  pic X(01)B.
    02 afdrukrest       pic X(80).
 01 logbestand-wissel   pic X, value "N".
    88 einde-logbestand value "J".
 01 bladteller          pic 999, value zero.
  

illustratie: Geert Nijmolen

cartoon

 PROCEDURE DIVISION.
 Verwerk-bestand.
     Open input logbestand
        output papier, afhandelingsbestand
        extend archiefbestand
     Perform druk-kopregel
     Perform with test after until einde-logbestand
        Read logbestand next
           at end set einde-logbestand to true
           not at end perform verwerk-record
        end-read
     end-perform
     Close logbestand, papier, 
        afhandelingsbestand, archiefbestand
     Stop run.

 Druk-kopregel.
     Add 1 to bladteller
     Move bladteller to kopblad
     Write papierrecord from kopregel after page
     Move spaces to papierrecord
     Write papierrecord.

Verwerk-record.
     Move dossiernummer to afdrukdossier
     Move datum to afdrukdatum
     Move indicatie to afdrukindicatie
     If indicatie = "K" then
        write archiefrecord from logklacht
        move omschrijving to afdrukrest
     else 
        write afhandelingsrecord from logafhandeling
        move afhandeling to afdrukrest
     end-if
     write papierrecord from afdrukregel after 2 lines
     if linage-counter >= 57 then 
        perform druk-kopregel
     end-if.
  
omslag leerboek

Serie: leerboeken informatica

Titel: Tijd voor COBOL 1

Auteur: Andree Hollander

naamlogo