a inleiding
ISBN staat voor International Standard Book Number. Het is een unieke
identificatie die de uitgever aan een boek toekent. Een ISBN bestaat uit
vier gedeelten:
- een groepsaanduiding voor een land of taalgebied;
- een uitgeversnummer;
- een titelnummer;
- een controleteken, dat een cijfer is of de letter x.
De groepsindicator voor het Nederlandse taalgebied is 90. Het uitgeversnummer en het titelnummer beslaan samen zeven tekens, maar hun onderlinge lengte kan variëren. In het algemeen schrijft men een ISBN met een spatie of een streepje tussen de delen. De code is echter zodanig opgebouwd dat de splitsing altijd te reconstrueren is. Het programma isbn-splitsen zorgt voor het opdelen van een reeks van tien tekens die een Nederlands ISBN voorstellen, in de juiste vier delen.
illustratie: Geert Nijmolen
b parameters
Het programma van deze opgave is een subprogramma. Het programma heeft twee parameters. De eerste, isbn-10, is een invoerparameter van tien posities die bij aanroep gevuld zijn met een ISBN. De tweede parameter, isbn-13, is 13 posities lang en wordt door het programma gevuld. Als de invoerparameter bij controle onjuist blijkt, dan komt er een foutmelding in isbn-13. Is er geen fout, dan bevat isbn-13 het ISBN met op de juiste plaats drie spaties die de vier gedeelten van het ISBN duidelijk zichtbaar maken. De hoofdstructuur van het subprogramma is weergegeven in het PSD besturing.
c land-90-test
De paragraafland-90-test plaatst de melding 'groep geen 90' in het veld isbn-13 als de eerste twee cijfers van het veld isbn-10 ongelijk zijn aan 90.
d numeriek-test
De paragraaf numeriek-test onderzoek of het veld isbn-10
numeriek is. Toegestaan is echter dat het laatste teken een X (of x) is.
De voorwaarden en de daarbij behorende acties zijn weergegeven in een beslissingstabel.
Voldoet het onderzochte ISBN niet aan de voorwaarden, dan moet het veld isbn-13 de waarde 'niet numeriek' krijgen.
e controlecijfer-test
De paragraaf controlecijfer-test constateert via een berekening
99% van alle schrijffouten in een ISBN. De berekening is als volgt. Elk
cijfer wordt vermenigvuldigd met een wegingsgetal en de uitkomsten worden
bij elkaar opgeteld. Het wegingsgetal voor het eerste cijfer is 10, voor
het tweede cijfer 9 enzovoorts. Bij de verkregen som wordt het controlecijfer
opgeteld, waarbij een X geldt als 10. Bij een geldig ISBN moet het resultaat
zonder rest deelbaar zijn door 11. Als dat niet het geval is, dan moet het
veld isbn-13 de waarde '11-proef fout' krijgen.
Voorbeeld: van een boek is het ISBN 90 267 1366 5. De berekening op de eerste negen cijfers is als volgt:
cijfer 9 0 2 6 7 1 3 6 6 wegingsgetal 10 9 8 7 6 5 4 3 2 --- --- --- --- --- --- --- --- --- product 90 0 16 42 42 5 12 18 12
De som van de producten is 237. Het controlecijfer is 5, dus samen geeft dat 242. Na deling door 11 ontstaat als rest 0 en dus is het ISBN in orde.
f splitsen
Het veld isbn-13 moet de tien tekens uit het veld isbn-10
bevatten, voorzien van drie spaties. De eerste spatie komt na de groepsaanduiding
90. De derde spatie komt vlak voor het controleteken. De tweede spatie scheidt
het uitgeversnummer en het titelnummer. De lengte van beide nummers samen
is zeven tekens. De lengte van het uitgeversnummer is afhankelijk van het
eerste van de zeven cijfers (zie onderstaand tabelletje).
cijfer lengte
0, 1 2 2 t/m 5 3 6 4 7 5 8, 9 6
In het ISBN 9026713665 is het eerste cijfer na 90 een 2. Uit de tabel blijkt dan dat de lengte van het uitgeversnummer gelijk is aan drie. Het uitgeversnummer is dus 267. Van de zeven cijfers blijven er dan vier over voor het titelnummer en dat is dus 1366.