Macsnarf B.V. is een bedrijf met enige tientallen werknemers. In een relatief bestand met de naam telefoon houdt men bij wie welk toestelnummer heeft. De sleutel van het bestand is het toestelnummer van drie cijfers. Het bestand heeft variabele recordlengte, minimaal 3 posities, maximaal 183 posities.
De recordindeling is als volgt:
Om on-line raadpleging van het bestand te vergemakkelijken, converteert men dit bestand naar een indexed bestand met de naam toestellen. Dit bestand heeft voor elke werknemer een record met vaste lengte. De indeling van een record is als volgt:
De posities 1-6 vormen de primaire sleutel; de posities 3-5 vormen een alternatieve sleutel waarvoor duplicaten zijn toegestaan.
illustratie: Geert Nijmolen
IDENTIFICATION DIVISION. PROGRAM-ID. Conversie. ****************************************** * Relatief bestand 'telefoon' omzetten * * naar indexed bestand 'toestellen' * * Auteur: Andree Hollander; 1989/02/02 * ****************************************** ENVIRONMENT DIVISION. INPUT-OUTPUT SECTION. FILE-CONTROL. select telefoon assign to disk organization relative access mode sequential relative key tel-sleutel file status statusveld. select toestellen assign to disk organization indexed file status statusveld access random record key tsl-sleutel alternate record key tsl-toestel with duplicates. DATA DIVISION. FILE SECTION. FD telefoon record is varying from 3 to 183 characters. 01 tel-record. 03 tel-afd pic xx. 03 tel-aantal pic 9. 03 tel-naam occurs 0 to 9 times depending on tel-aantal pic x(20). FD toestellen. 01 tsl-record. 03 tsl-sleutel. 05 tsl-afd pic xx. 05 tsl-toestel pic xxx. 05 tsl-volgnr pic 9. 03 tsl-naam pic x(20). WORKING-STORAGE SECTION. 01 statusveld pic xx. 01 einde-bestand pic x. 01 tel-sleutel pic 999. 01 volgnummer pic 99. PROCEDURE DIVISION. DECLARATIVES Onverwachte-fout section. use after standard error procedure on telefoon, toestellen. Stop-programma. display "Er is een onverwachte fout opgetreden!" display "De statuscode is: ", statusveld display "Programma beeindigd!" stop run. END DECLARATIVES. * NIET-DECLARATIVES SECTION. *** voorbereidende werkzaamheden 001-initialiseren. open input telefoon, output toestellen initialize einde-bestand. *** verwerk telefoonbestand tot einde 002-lezen. perform with test after until einde-bestand = "J" read telefoon next record at end move "J" to einde-bestand not at end perform 003-vullen-en-schrijven end-read end-perform close telefoon, toestellen stop run. *** maak nieuwe records en schrijf weg; *** deze paragraaf wordt aangeroepen vanuit 002 003-vullen-en-schrijven. perform with test before varying volgnummer from 1 by 1 until volgnummer > tel-aantal move volgnummer to tsl-volgnr move tel-afd to tsl-afd move tel-sleutel to tsl-toestel move tel-naam(tsl-volgnr) to tsl-naam write tsl-record end-perform.