Een bedrijf beschikt over een bestelbusje dat iedereen in het bedrijf mag gebruiken. Om het gebruik in goede banen te leiden moet iedereen reserveren. Dit reserveren gebeurt per dagdeel: een morgen en/of een middag en/of een avond.
In het indexed bestand bestelbus houdt men bij of het busje gereserveerd is en door wie. Het bestand bevat voor elke werkdag een record. De sleutel is de datum in de vorm jjmmdd (jaar, maand, dag). Daarna volgen in het record drie velden van vijf posities. Het eerste veld voor de morgen, het tweede voor de middag en het derde voor de avond. Elk van die drie velden bevat spaties als het busje niet is gereserveerd op dat dagdeel. Als het busje wel is gereserveerd, dan staat er een personeelscode van 5 posities in het betrokken veld.
illustratie: Geert Nijmolen
Een gedeelte van het bestand kan bij voorbeeld de volgende inhoud hebben:
900523 MK867 900525VK123VK123 900528
Dit betekent dat op 23 mei het personeelslid met nummer MK867 het busje heeft gereserveerd. Op 25 mei staat VK123 overdag geboekt. Voor 28 mei is er nog geen reservering. Tussen haakjes: 24 mei 1990 is hemelvaartsdag; 26 en 27 mei zijn weekend.
Er moet een programma komen dat de gebruiker om vier cijfers vraagt. Die stellen een jaar en een maand voor. Van de opgegeven maand moet het programma de nog niet-gereserveerde dagdelen (morgen, middag en/of avond) afdrukken.
identification division. program-id. NOG-VRIJ. *afdrukken niet-gereserveerde dagdelen uit bestand bestelbus *Andree Hollander; 1988/08/18 environment division. input-output section. file-control. select bestelbus assign to disk organization is indexed, access is sequential record key is datum. select papier assign to printer. data division. file section. fd bestelbus. 01 filler. 02 datum. 03 jaar-maand pic x(4). 03 dag pic x(2). 02 dagdeel pic x(5), occurs 3 times. fd papier. 01 regel pic x(50). working-storage section. 01 gewenste-maand pic x(4). 01 string-plaats pic 99. 01 einde-maand pic x(3), value "Nee". procedure division. aanroepen. perform gewenste-maand-opvragen open input bestelbus, output papier perform bepaal-startpunt perform lees-maand close papier, bestelbus display "klaar" stop run. gewenste-maand-opvragen. display "Afdrukken beschikbare dagdelen." display "Geef jaar en maand in de vorm JJMM" accept gewenste-maand. bepaal-startpunt. move gewenste-maand to jaar-maand start bestelbus key = jaar-maand invalid key display "jaar-maand onjuist." stop run end-start. lees-maand. perform with test after until einde-maand = "Ja" read bestelbus next record at end move "Ja" to einde-maand not at end if jaar-maand = gewenste-maand then perform regel-afdrukken else move "Ja" to einde-maand end-if end-read end-perform. regel-afdrukken. move 1 to string-plaats move space to regel string datum delimited by size into regel with pointer string-plaats if dagdeel(1) = space then string space, "morgen" delimited by size into regel with pointer string-plaats end-if if dagdeel(2) = space then string space, "middag" delimited by size into regel with pointer string-plaats end-if if dagdeel(3) = space then string space, "avond" delimited by size into regel with pointer string-plaats end-if write regel.