Isikukoodist vanus LibreOffice’is või OpenOffice’is

Paljudel firmadel, aga veel enam koolidel ja huviringide korraldajatel on tarvidus automatiseerida isikukoodide põhjal vanuste arvutamist. Selliseid funktsioone pole vaikimisi kaasas kontoriprogrammides, aga neid saab vajadusel ise lisada. Seda mitte ainult kommertstarkvara tootjate lahendustes, vaid ka avatud lähtekoodiga programmides nagu LibreOffice ja selle eelkäija OpenOffice.org. Siin on nüüd vanakooli (Star)Basic’u lahendus just nende programmide jaoks isikukoodist vanuse arvutamiseks:

Function Vanus(a)
sajand = left(a, 1)
aasta = right(left(a, 3), 2)
kuu = right(left(a, 5), 2)
paev = right(left(a, 7), 2)
praegu = date()
praegu_paev = right(left(praegu, 5),2)
praegu_kuu = left(praegu, 2)
praegu_aasta = right(praegu,4)
if (sajand = "4") or (sajand = "3") then
sajand = "19"
else:
sajand = "20"
End if
synniaasta = sajand + aasta
vanus = int(praegu_aasta)-int(synniaasta)
if int(praegu_kuu) < int(kuu) then vanus = vanus - 1
if int(praegu_kuu) = int(kuu) and int(praegu_paev) < int(paev) then vanus = vanus - 1
End Function

(If funktsiooni treppimine on sassis – vaadake pildilt üle)

See tuleb siis kopeerida makrode halduri kaudu Libre igasse dokumenti, kus seda funktsiooni vaja läheb.

Tabeli lahtrisse tuleb kirjutada:

=vanus(isikukoodilahter)

või otse parameetriks isikukood:

=vanus(38807012700)


Märkus: funktsioon toetab ainult aastatel 1900-2099 sündinud isikute isikukoode. Isikukoodi esimene number teadupärast määrab lisaks soole ka sünnisajandi. Ajaloolistes dokumentides 19. sajandil sündinud inimeste isikukoodide põhjal oleks vaja lisada kontroll isikukoodi esimeste numbrite 1 ja 2 suhtes. Nii vanade inimeste puhul praeguseks muidugi tegu möödunud ajaga sünnist, mitte vanusega.

(Avaldasin selle õpetuse esmalt isiklikus blogis ka.)

This entry was posted in Määratlemata by madisv. Bookmark the permalink.

Comments are closed.