Henkilötunnuksen tarkistaminen

[viesti Survo-keskustelupalstalla (2001-2013)]

Kirjoittaja: Reijo Sund
Sähköposti:    reijo.sund'at'stakes.fi
Päiväys: 8.3.2002 9:57

Hei!

Seppo toivoi aikaisemmassa viestissään, että Survo-käyttäjät
kertoisivat käyttökokemuksistaan ja antaisivat jonkunmoisia
näytteitä joistain ongelmista ja niiden ratkaisuista.

Kai minäkin voisin tässä hiukan aktivoitua ja pistää tänne
muiden ihmeteltäväksi joitain "aikaansaannoksiani", vaikka
ne usein ovatkin omia tarpeita vastaavia ratkaisuja eli
muiden toiveita ei juurikaan ole kuunneltu. Otan mielelläni
kommentteja ja/tai parannusehdotuksia vastaan, mutta en voi
luvata välttämättä ehtiväni reagoida niihin.

Olkoon tässä nyt ensimmäisenä esimerkkinä henkilötunnuksen
oikeellisuuden tarkistaminen. Oheisen survo-koodin pitäisi olla
varsin itsensä selittävää.

terv.
Reijo

- - -

Henkilötunnuksen oikeellisuuden tarkistaminen
(ks. http://www.vaestorekisterikeskus.fi/henktun.htm)

...................................................................

Luodaan aputiedosto

FILE CREATE HETU
FIELDS:
   1 SA-  10 HETU           Henkilötunnus
   2 SA-   9 SYNTYKS        Henkilötunnus ilman välimerkkiä
   3 SA-   1 TARK           Tarkistusmerkki
   4 NA-   4 TNUM     (##)  Tarkistusmerkki numerona
   5 NA-   4 JAKO     (##)  mod(SYNTYKS,31)
   6 NA-   1 HETUOK   (#)   Hetu oikein = 1, Hetu väärin = 0
END

...................................................................
Kopioidaan tarkasteltavat hetut aputiedostoon

VARS=HETU
FILE COPY <tiedosto> HETU

...................................................................
Syntymäaika+yksilönumero ja tarkistusmerkki omiksi muuttujikseen

VAR str(SYNTYKS)=str(HETU,1,6)&str(HETU,7,3) TO HETU
VAR str(TARK)=str(HETU,10,1) TO HETU

...................................................................
Lasketaan jakojäännös

VAR JAKO=mod(SYNTYKS,31) TO HETU

...................................................................
Muutetaan tarkistusmerkki numeroksi

CLASSIFY HETU,HETUTARK,TARK,TNUM

CLASSIFICATION HETUTARK
0: 0
1: 1
2: 2
3: 3
4: 4
5: 5
6: 6
7: 7
8: 8
9: 9
A: 10
B: 11
C: 12
D: 13
E: 14
F: 15
H: 16
J: 17
K: 18
L: 19
M: 20
N: 21
P: 22
R: 23
S: 24
T: 25
U: 26
V: 27
W: 28
X: 29
Y: 30
OTHER: MISSING
END


...................................................................
Tarkistetaan oliko HETU ok

VAR HETUOK=if(TNUM=JAKO)then(1)else(0) TO HETU



FILE SHOW HETU

Vastaukset:
[ei vastauksia]

Survo-keskustelupalstan (2001-2013) viestit arkistoitiin aika ajoin sukrolla, joka automaattisesti rakensi viesteistä (yli 1600 kpl) HTML-muotoisen sivukokonaisuuden. Vuoden 2013 alusta Survo-keskustelua on jatkettu entistäkin aktiivisemmin osoitteessa forum.survo.fi. Tervetuloa mukaan!

Etusivu  |  Keskustelu
Copyright © Survo Systems 2001-2013. All rights reserved.
Updated 2013-06-15.