Het Belgisch Rijksregister1 is een databank met gegevens over elke inwoner van België. De databank wordt beheerd door de Federale Overheidsdienst Binnenlandse Zaken2, maar de gegevens worden aangeleverd door de dienst Bevolking van de gemeenten. Kort na de geboorte krijgt elke inwoner een uniek rijksregisternummer3 waarmee een aantal administratieve gegevens in het Rijksregister terug te vinden zijn (domicilie, burgerlijke stand, nationaliteit). Dit nummer staat vermeld op de identiteitskaart en kan persoonlijk opgevraagd worden aan het loket van de dienst Bevolking.

Belgische identiteitskaart
Identiteitskaart van België waarop het rijksregisternummer wordt aangeduid met een rode pijl.

Het rijksregisternummer bestaat uit 11 cijfers:

Op die manier weten we bijvoorbeeld dat het rijksregisternummer 93051822361 toegekend werd aan een man (oneven dagteller) die geboren is op 18 mei 1993 (eerste groep). We kunnen afleiden dat het geboortejaar 1993 is en niet 2093 (mochten we al zover zijn) omdat de deling van 930518223 door 97 rest 36 oplevert. We krijgen dan dat 97 - 36 gelijk is aan het controlegetal 61. Als de inwoner geboren was in 2093 dan zouden we voor de berekening van het controlegetal 2930518223 delen door 97 om rest 7 te bekomen. In dat geval had het controlecijfer 97 - 7 = 90 moeten zijn.

Opgave

Schrijf een bash shell script rrn dat gebruikt kan worden om de geldigheid van een rijksregisternummer te controleren en om er informatie uit af te leiden. Het rijksregisternummer moet als eerste argument aan het shell script doorgegeven worden. Alle andere argumenten worden genegeerd. Als er geen argumenten doorgegeven worden dan is het gegeven rijksregisternummer gelijk aan de lege string.

Het shell script moet achtereenvolgens controleren of het rijksregisternummer aan de volgende voorwaarden voldoet:

Als aan alle voorwaarden voldaan is dan moet het shell script de volgende informatie over het rijksregisternummer uitschrijven naar standaard uitvoer en eindigen met exit status 0.

rijksregisternummer: jj.mm.dd-xxx.cc
geslacht: geslacht
geboortedatum: dd/mm/jjjj

Hierbij moeten de cursieve fragmenten ingevuld worden met informatie die afgeleid wordt uit het gegeven rijksregisternummer:

Voorbeeld

Onderstaande voorbeeldsessie geeft aan hoe het shell script rrn moet kunnen gebruikt worden.

$ rrn "75.12.05-137.14"
rijksregisternummer: 75.12.05-137.14
geslacht: man
geboortedatum: 05/12/1975
$ echo $?
0
$ rrn ">>>09082428248<<<LENA<NADINE<INGRID"
rijksregisternummer: 09.08.24-282.48
geslacht: vrouw
geboortedatum: 24/08/2009
$ echo $?
0
$ rrn 1234567890
rrn: ongeldig formaat (10 cijfers)
$ echo $?
1
$ rrn xxx3xxx
rrn: ongeldig formaat (1 cijfer)
$ echo $?
1
$ rrn
rrn: ongeldig formaat (0 cijfers)
$ echo $?
1
$ rrn 85.02.01-002.00
rrn: ongeldig controlegetal
$ echo $?
2
$ rrn 85.02.30-002.24
rrn: ongeldige geboortedatum
$ echo $?
3

Epiloog

Omdat het rijksregisternummer enkel gebruikmaakt van de laatste twee cijfers van het geboortejaar, bestond de kans dat rijkregisternummers na het jaar 2000 niet langer uniek zouden zijn. Om deze manifestering van de milleniumbug4 (aka Y2K) het hoofd te bieden, werd op 25 november 1997 per koninklijk besluit vastgelegd dat vanaf de overgang naar het jaar 2000 bij de berekening van het controlegetal een extra cijfer 2 moest toegevoegd worden vóór de aaneenschakeling van de negen cijfers van de geboortedatum en de dagteller.

Over een paar decennia dreigt een gelijkaardige crisis met de social security numbers5 die in de Verenigde Staten gebruikt worden om inwoners te identificeren. Ook die identificatienummers zijn uniek en worden nooit gerecycleerd als iemand sterft. Er zijn ongeveer één miljard verschillende identificatienummers en sinds 1936 werd daarvan ongeveer al één derde toegekend. Volgens sommige schattingen zouden de beschikbare identificatienummers tegen 2075 allemaal opgebruikt zijn.

Wat zal er dan gebeuren? Wie zal het zeggen? Maar als de regering daardoor valt dan kunnen de Amerikanen altijd nog naar Zuid-Amerika trekken: daar geven de nationale identificatienummers toegang tot online videogames.