http://fi.wikipedia.org/wiki/Henkil%C3%B6tunnusWikipedia kirjoitti:
Suomalaisen henkilötunnuksen muodosta on säädetty väestötietoasetuksessa 128/2010.[1] Se koostuu 11:stä merkistä ja on muotoa xxxxxxyzzzq, jossa
xxxxxx on henkilön syntymäaika muodossa ppkkvv, esimerkiksi 010180
y on sen vuosisadan tunnus, jolloin henkilö on syntynyt.
1800-luku: +
1900-luku: −
2000-luku: A
zzz on yksilönumero, jolla samana päivänä syntyneet yksilöidään. Luku on naisilla parillinen ja miehillä pariton. Yksilönumero on välillä 002–899. Välin 900–999 numeroita käytetään tilapäisissä henkilötunnuksissa, esimerkiksi sairaaloissa, kun virallista henkilötunnusta ei tiedetä tai sitä ei ole vielä syntyneelle lapselle annettu. Tilapäisiä tunnuksia ei kirjata väestötietojärjestelmään. Yksilönumerot pyritään pitämään yksilöllisinä siten, että 2000-luvulla syntyneiden numerosarja jatkuu siitä, mihin vastaava 1900-luvun sarja päättyi.
q on tarkistusmerkki. Tarkistusmerkki lasketaan jakamalla syntymäajan ja yksilönumeron muodostama 9-numeroinen luku 31:llä [2]. Jakojäännös, joka on tällöin kokonaisluku väliltä 0–30, muunnetaan tarkistusmerkiksi alla olevan taulukon mukaisesti [2]. Vuosisadan tunnus ei siis vaikuta tarkistusmerkkiin.
Eli syntymäaika esim 010199 ja sukupuoli mies. Ohjelman pitäisi ottaa luvusta 003 lähtien lukuun 899 jokainen pariton luku, kirjoittaa ne tiedostoon muotoon:
Code: Select all
WriteLine hetu_file, 021299+"-"+(parittomat 003-899)+tunnus_kirjain[1]
Code: Select all
Select tunnus
Case 16
tunnus_kirjain = "H"
...
End Select
Code: Select all
f=OpenToWrite("C:\asd.txt")
tunnus_kirjain$ = ""
Repeat
tunnus = 010199//Yhdistettynä(?) i Mod 31
Select tunnus
Case 0
tunnus_kirjain = "0"
Case 1
tunnus_kirjain = "1"
Case 2
tunnus_kirjain = "2"
//Yhdeksään asti samaa...
Case 10
tunnus_kirjain = "A"
Case 11
tunnus_kirjain = "B"
//Jne. taulukon mukaisesti...
EndSelect
For i = 002 To 899
WriteLine f, "010199"+"-"+i+""+tunnus_kirjain
Next i
If i > 898 Then End
Forever
En tietenkään omaa syntymäaikaani laittanut