All pastes #18260 Raw Edit

Personnr.Nargil.FIX

public text v1 · immutable
#18260 ·published 2005-07-22 02:48 UTC
rendered paste body
###############
##  Made by  ##
##   Nargil  ##
##           ##
##  #1024 @  ##
## Quakenet  ##
##           ##
## Free  for ##
##  personal ##
##    use    ##
##           ##
##   !FIX!   ##
##     2     ##
##   Fixes   ##
###############

menu channel,status,query,nicklist,menubar {
  -
  Personnummergenerator:/person
}
on *:load:{
  unload -rs -rs Personnummergenerator-by.Nargil.ini
  echo -a Personnummergenerator laddad. Finns nu i menyn.
  echo -a Made by Nargil - #1024 @ Quakenet.org - Free for personal use
  personpic 0 0 0 0
}
alias personnummer {
  if (($len($1) != 9) || ($1 !isnum)) {
    return Error1
    halt
  }
  elseif ($1 == 000000000) {
    return Error2
    halt
  }
  elseif ($right($left($1,6),4) == 0229) {
    if ($chr(46) isin $calc($left($1,2) / 4)) {
      return Error2
      halt
    }
  }
  elseif ($right($left($1,4),2) == 01) {
    if ($right($left($1,6),2) > 31) {
      return Error2
      halt
    }
  }
  elseif ($right($left($1,4),2) == 03) {
    if ($right($left($1,6),2) > 31) {
      return Error2
      halt
    }
  }
  elseif ($right($left($1,4),2) == 04) {
    if ($right($left($1,6),2) > 30) {
      return Error2
      halt
    }
  }
  elseif ($right($left($1,4),2) == 05) {
    if ($right($left($1,6),2) > 31) {
      return Error2
      halt
    }
  }
  elseif ($right($left($1,4),2) == 06) {
    if ($right($left($1,6),2) > 30) {
      return Error2
      halt
    }
  }
  elseif ($right($left($1,4),2) == 07) {
    if ($right($left($1,6),2) > 31) {
      return Error2
      halt
    }
  }
  elseif ($right($left($1,4),2) == 08) {
    if ($right($left($1,6),2) > 31) {
      return Error2
      halt
    }
  }
  elseif ($right($left($1,4),2) == 09) {
    if ($right($left($1,6),2) > 30) {
      return Error2
      halt
    }
  }
  elseif ($right($left($1,4),2) == 10) {
    if ($right($left($1,6),2) > 31) {
      return Error2
      halt
    }
  }
  elseif ($right($left($1,4),2) == 11) {
    if ($right($left($1,6),2) > 30) {
      return Error2
      halt
    }
  }
  elseif ($right($left($1,4),2) == 12) {
    if ($right($left($1,6),2) > 31) {
      return Error2
      halt
    }
  }
  var %x = $1
  var %z = $calc($left(%x,1)*2) $+ $calc($right($left(%x,2),1)*1) $+ $calc($right($left(%x,3),1)*2) $+ $calc($right($left(%x,4),1)*1) $+ $calc($right($left(%x,5),1)*2) $+ $calc($right($left(%x,6),1)*1) $+ $calc($right($left(%x,7),1)*2) $+ $calc($right($left(%x,8),1)*1) $+ $calc($right($left(%x,9),1)*2)
  var %n = 1
  var %q = 0
  var %t = $len(%z)
  while (%n <= %t) {
    var %q = $calc(%q + $right($left(%z,%n),1))
    inc %n
  }
  if ($right(%q,1) == 0) {
    var %f = $left(%q,1)
  } 
  else {
    var %f = $left(%x,6) $+ - $+ $right(%x,3) $+ $calc(10 - $right(%q,1))
  }
  return %f
}
alias personkoen {
  var %x = $1
  if ($right($left(%x,10),1) isin 13579) {
    var %f = 1
  }
  else {
    var %f = 0
  }
  return %f
}
alias personlaen {
  var %x = $1
  var %z = $right($left(%x,10),3)
  if (%z isnum 001-139) { return Stockholms län (AB) }
  elseif (%z isnum 140-159) { return Uppsala län (C) }
  elseif (%z isnum 160-189) { return Södermanlands län (D) }
  elseif (%z isnum 190-237) { return Östergötlands län (E) }
  elseif (%z isnum 240-269) { return Jönköpings län (F) }
  elseif (%z isnum 270-289) { return Kronobergs län (G) }
  elseif (%z isnum 290-319) { return Kalmar län (H) }
  elseif (%z isnum 320-329) { return Gotlands län (I) }
  elseif (%z isnum 330-349) { return Blekinge län (K) }
  elseif (%z isnum 350-389) { return Kristianstads län (L) }
  elseif (%z isnum 390-459) { return Malmöhus län (M) }
  elseif (%z isnum 460-479) { return Hallands län (N) }
  elseif (%z isnum 480-549) { return Göteborgs och Bohus län (O) }
  elseif (%z isnum 550-589) { return Älvsborgs län (P) }
  elseif (%z isnum 590-619) { return Skaraborgs län (R) }
  elseif (%z isnum 620-649) { return Värmlands län (S) }
  elseif (%z isnum 660-689) { return Örebro län (T) }
  elseif (%z isnum 690-709) { return Västmanlands län (U) }
  elseif (%z isnum 710-739) { return Kopparbergs län (W) }
  elseif (%z isnum 740-749) { return Serien används eventuellt för adopterade, som fötts utanför Sverige }
  elseif (%z isnum 750-779) { return Gävleborgs län (X) }
  elseif (%z isnum 780-819) { return Västernorrlands län (Y) }
  elseif (%z isnum 820-849) { return Jämtlands län (Z) }
  elseif (%z isnum 850-889) { return Västerbottens län (AC) }
  elseif (%z isnum 890-929) { return Norrbottens län (BD) }
  elseif (%z isnum 930-999) { return Extraserie använd när de andra tar slut eller vid immigration }
}
alias personsign {
  if ($right($left($1,4),2) == 01) {
    if ($right($left($1,6),2) <= 19) {
      return Stenbocken
      halt
    }
    else {
      return Vattumannen
      halt
    }
  }
  if ($right($left($1,4),2) == 02) {
    if ($right($left($1,6),2) <= 18) {
      return Vattumannen
      halt
    }
    else {
      return Fiskarna
      halt
    }
  }
  if ($right($left($1,4),2) == 03) {
    if ($right($left($1,6),2) <= 20) {
      return Fiskarna
      halt
    }
    else {
      return Väduren
      halt
    }
  }
  if ($right($left($1,4),2) == 04) {
    if ($right($left($1,6),2) <= 19) {
      return Väduren
      halt
    }
    else {
      return Oxen
      halt
    }
  }
  if ($right($left($1,4),2) == 05) {
    if ($right($left($1,6),2) <= 20) {
      return Oxen
      halt
    }
    else {
      return Tvillingarna
      halt
    }
  }
  if ($right($left($1,4),2) == 06) {
    if ($right($left($1,6),2) <= 20) {
      return Vattumannen
      halt
    }
    else {
      return Kräftan
      halt
    }
  }
  if ($right($left($1,4),2) == 07) {
    if ($right($left($1,6),2) <= 22) {
      return Kräftan
      halt
    }
    else {
      return Lejonet
      halt
    }
  }
  if ($right($left($1,4),2) == 08) {
    if ($right($left($1,6),2) <= 22) {
      return Lejonet
      halt
    }
    else {
      return Jungfrun
      halt
    }
  }
  if ($right($left($1,4),2) == 09) {
    if ($right($left($1,6),2) <= 22) {
      return Jungfrun
      halt
    }
    else {
      return Vågen
      halt
    }
  }
  if ($right($left($1,4),2) == 10) {
    if ($right($left($1,6),2) <= 22) {
      return Vågen
      halt
    }
    else {
      return Skorpionen
      halt
    }
  }
  if ($right($left($1,4),2) == 11) {
    if ($right($left($1,6),2) <= 21) {
      return Skorpionen
      halt
    }
    else {
      return Skytten
      halt
    }
  }
  if ($right($left($1,4),2) == 12) {
    if ($right($left($1,6),2) <= 21) {
      return Skytten
      halt
    }
    else {
      return Stenbocken
      halt
    }
  }
}
alias person {
  dialog -md persongui persongui
}
dialog persongui {
  title "Personnummergenerator"
  size -1 -1 240 68
  option dbu

  button "Generate", 1, 5 5 50 10
  edit "000000", 2, 60 5 25 10, center
  text "-", 3, 85 6 4 10, center
  edit "000", 4, 90 5 16 10, center
  edit "", 5, 106 5 7 10, read
  edit "", 6, 5 20 108 10, read center
  edit "", 7, 5 32 108 10, read center
  edit "", 8, 5 44 108 10, read center
  edit "", 9, 5 56 108 10, read center

  icon 10, 115 -1 125 50, personpic.jpeg
  button "Kopiera text", 11, 117 44 58 10 
  button "Spara bild", 12, 180 44 58 10 
}
alias personpic {
  window -pd @person 0 1 250 100
  drawfill -s @person 0 1 5 5
  drawtext -pbp @person 1 0 fixedsys 10 5 5 Personnummer: $1
  drawtext -pbp @person 1 0 fixedsys 10 5 21 Kön: $2
  drawtext -pbp @person 1 0 fixedsys 10 5 37 Stjärntecken: $3
  drawtext -pbp @person 1 0 fixedsys 10 5 53 Län: $4-
  drawsave -q100 @person personpic.jpeg
  drawsave -q100 @person personpic2.jpeg
  window -ac @person
}
on 1:dialog:persongui:sclick:11:{
  clipboard $did(persongui,6).text $+ $chr(10) $+ $did(persongui,7).text $+ $chr(10) $+ $did(persongui,8).text $+ $chr(10) $+ $did(persongui,9).text
}
on 1:dialog:persongui:sclick:12:{
  copy -ao personpic.jpeg $sfile(C:\,Spara Personnummer.jpeg,Spara)
}
on 1:dialog:persongui:sclick:1:{
  var %x = $personnummer($did(persongui,2) $+ $did(persongui,4).text)
  if (Error1 == %x) {
    did -r persongui 6
    did -a persongui 6 Skriv in 9 SIFFROR...
    did -r persongui 7
    did -r persongui 8
    did -r persongui 9
  }
  elseif (Error2 == %x) {
    did -r persongui 6
    did -a persongui 6 Skriv in ett giltigt nummer...
    did -r persongui 7
    did -r persongui 8
    did -r persongui 9
  }
  else {
    var %r = $right(%x,1)
    did -r persongui 5
    did -a persongui 5 %r
    did -r persongui 6
    did -a persongui 6 Hela personnummret är: %x
    did -r persongui 7
    var %k = $personkoen(%x)
    var %u = $personlaen(%x)
    var %s = $personsign(%x)
    did -a persongui 7 Kön: $replace(%k, 1, Man, 0, Kvinna)
    did -r persongui 8 
    did -a persongui 8 Län: %u
    did -r persongui 9
    did -a persongui 9 Stjärntecken: %s
    personpic %x $replace(%k, 1, Man, 0, Kvinna) %s %u
  }
  did -g persongui 10 personpic.jpeg
}