Advertisement
Guest User

Validita rodného čísla

a guest
Apr 7th, 2017
131
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. m.rc = SUBSTR(ThisForm.Text1.Value,1,6)+SUBSTR(ThisForm.Text1.Value,8,4) &&ulozim rodne cislo bez lomitka
  2. FOR m.i = 1 TO 9 && tady zjistim jestli neobsahuje nejake mezery navic
  3.     IF (SUBSTR(m.rc,m.i,1) = " ")
  4.         ThisForm.Label5.Caption = "Chyba - neplatný vstup"
  5.         ThisForm.Label3.Caption = ""
  6.         ThisForm.Label4.Caption = ""
  7.         RETURN
  8.     ENDIF
  9. ENDFOR
  10.  
  11. m.mesic_pom = VAL(SUBSTR(m.rc,3,2)) &&vezmeme dvojcisli mesice z rodneho cisla
  12. IF !((m.mesic_pom >= 1 .AND. m.mesic_pom <=12) .OR. (m.mesic_pom >= 51 .AND. m.mesic_pom <= 62)) &&podminka pro dvojcisli mesice
  13.     ThisForm.Label5.Caption = "Chyba - dvojčíslí měsíce"
  14.     ThisForm.Label3.Caption = ""
  15.     ThisForm.Label4.Caption = ""
  16.     RETURN
  17. ELSE
  18.     IF m.mesic_pom <=12
  19.         m.mesic = STR(m.mesic_pom)
  20.         m.pohlavi = "muž"
  21.     ELSE
  22.         m.mesic = STR(m.mesic_pom - 50)
  23.         m.pohlavi = "žena"
  24.     ENDIF
  25. ENDIF
  26.  
  27. m.den = SUBSTR(m.rc,5,2) &&den muzeme rovnou vzit z rodneho cisla
  28.  
  29. &&lide do roku 1953 start
  30. IF (SUBSTR(m.rc,10,1) = " ") &&na 10.pozici je mezera -> 9mistne rodne cislo
  31.     IF !((VAL(SUBSTR(m.rc,1,2)) >= 0) .AND. (VAL(SUBSTR(m.rc,1,2)) <= 53)) &&pokud se nejedna o rok mezi 1900 a 1953, rodne cislo je neplatne
  32.         ThisForm.Label5.Caption = "Chyba - dvojčíslí roku"
  33.         ThisForm.Label3.Caption = ""
  34.         ThisForm.Label4.Caption = ""
  35.         RETURN
  36.     ELSE &&pokud se naopak jedna o rok mezi 1900 a 1953, je pripocteno 1900 a rok je ulozen do promenne
  37.         m.rok = STR(1900+VAL(SUBSTR(m.rc,1,2)))
  38.     ENDIF
  39. ENDIF
  40. &&lide do roku 1953 konec
  41.  
  42. &&lide po roce 1953 start
  43. IF !(SUBSTR(m.rc,10,1) = " ") &&nikde neni mezera -> vsude jsou cisla -> 10mistne rodne cislo
  44.     IF (VAL(m.rc) % 11 != 0) &&test delitelnosti 11
  45.         ThisForm.Label5.Caption = "Chyba - dělitelnost 11"
  46.         ThisForm.Label3.Caption = ""
  47.         ThisForm.Label4.Caption = ""
  48.         RETURN
  49.     ENDIF
  50.     IF ((VAL(SUBSTR(m.rc,1,2)) >= 54) .AND. (VAL(SUBSTR(m.rc,1,2)) <= 99)) &&rok je mezi 1954 a 1999
  51.         m.rok = STR(1900+VAL(SUBSTR(m.rc,1,2)))
  52.     ELSE
  53.         IF ((VAL(SUBSTR(m.rc,1,2)) >= 0) .AND. (VAL(SUBSTR(m.rc,1,2)) <= 53)) &&rok je mezi 2000 a 2053
  54.             m.rok = STR(2000+VAL(SUBSTR(m.rc,1,2)))
  55.         ELSE
  56.             ThisForm.Label5.Caption = "Chyba - dvojčíslí roku"
  57.             ThisForm.Label3.Caption = ""
  58.             ThisForm.Label4.Caption = ""
  59.             RETURN
  60.         ENDIF
  61.     ENDIF
  62. ENDIF
  63. &&lide po roce 1953 konec
  64.  
  65. m.datum = CTOD(m.den+"."+m.mesic+"."+m.rok) &&ze dne, mesice a roku poskladam datum
  66. IF m.datum = CTOD("") &&pokud je datum chybny tak se vrati prazdny datum a rodne cislo je neplatne
  67.     ThisForm.Label5.Caption = "Chyba - datum neexistuje"
  68.     ThisForm.Label3.Caption = ""
  69.     ThisForm.Label4.Caption = ""
  70.     RETURN
  71. ELSE &&nebo se vrati normalni datum a rodne cislo je platne
  72.     ThisForm.Label5.Caption = "Rodné číslo je platné"
  73.     ThisForm.Label3.Caption = DTOC(m.datum) &&pro vypis se musi datum prevest na string - funkce DTOC()
  74.     ThisForm.Label4.Caption = m.pohlavi
  75.     RETURN
  76. ENDIF
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement