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
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
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.