Suma lub cyfra kontrolna - cd.

Numery kolczyków krów według systemu IACS

ROZPORZĄDZENIE MINISTRA ROLNICTWA I ROZWOJU WSI z dnia 30 lipca 2002 r. w sprawie oznakowania bydła, paszportów bydła, prowadzenia rejestru bydła i księgi rejestracji stada bydła. (Dz. U. Nr 131, poz. 1114) § 2. punkt 4.

  1. numer identyfikacyjny zwierzęcia składający się z 14 znaków o wysokości nie mniejszej niż 5 mm, z których:
    1. dwa pierwsze to litery "PL",
    2. dwa następne to cyfry oznaczające numer serii kolczyka,
    3. dziewięć następnych to cyfry oznaczające numer zwierzęcia,
    4. ostatni znak to cyfra kontrolna;
  2. znak graficzny Agencji Restrukturyzacji i Modernizacji Rolnictwa, zwanej dalej "Agencją";
  3. kod kreskowy zawierający informacje, o których mowa w pkt 1 lit. b-d, w przypadku części żeńskiej.

Załącznik nr 1 do Rozporządzenia przedstawia wzór kolczyka, na którym widnieje numer 0050109 3711 7. Mając kilka numerów kolczyków sprawdziłem, że wagi do obliczenia sumy kontrolnej są takie jak dla kodów paskowych EAN (albo UCC-12)

Wzór kolczyka

Dla numeru kolczyka krowy w systemie IACS
wagi wynoszą kolejno 3,1,3,1,3,1,3,1,3,1,3
sumę dzielimy Modulo 10 i resztę odejmujemy od 10
(jeśli wynik wyjdzie 10 to cyfra kontrolna jest 0)

        3  1  3  1  3  1  3  1  3  1  3  wagi
      * 0  0  5  0  1  0  9  3  7  1  1  nr IACS (bez cyfry kontr.)
       ---------------------------------
suma= ( 0 +0+15 +0 +3 +0+27 +3+21 +1 +3 )=73
 
     73 mod 10 = 3     (10 - 3) = 7 -->  cyfra kontrolna

Niestety jak zwykle w Polsce jest bałagan i w Rozporządzeniu nie podano algorytmu obliczania cyfry kontrolnej. Prawdopodobnie dlatego niektóre serie kolczyków mają cyfrę kontrolną obliczaną według innego algorytmu.
Jeśliby ktoś znał jakieś pikantne szczegóły na ten temat to proszę się ze mną nimi podzielić :)

No i doczekałem się, cytuję:

Powód, dla którego na rynku są kolczyki o różnych algorytmach jest prosty. ARiMR w zeszłym roku (2002) w przetargu na dostawę kolczyków zapomniała dopisać, w jaki sposób ma być liczona cyfra kontrolna. Po wielu perturbacjach ostatecznie w przetargu wyloniono 3 zwycięzców, z których każdy dostarczał kolczyki do kilku województw. I każdy z nich liczył cyfrę według innego algorytmu.
ARiMR zorientowała się dopiero po jakimś czasie, jak zaczęli wpisywać kolczyki do systemu i okazało się, że ich software nie chce przyjmować części kolczyków. I wtedy zażądała ujednolicenia cyfry. Od tego czasu wszyscy dostawcy liczą tak samo.
koniec cytatu

... i tak to jest jak się obsadza agencje z klucza partyjnego - a trzeba było zapytać prezesa Pawlaka - najlepszego informatyka wśród premierów :)

nie ma chłopa bez laptopa

Ale zostawmy politykę na boku i podajmy "porąbany", jak się wyraził jeden z moich korespondentów, algorytm.

Przy obliczaniu cyfry kontrolnej pomija się pierwsze dwie cyfry serii 00, a bierze kolejne pięć cyfr numeru kolczyka (FN) i kolejne cztery cyfry (AN).

Numer kolczyka dzieli się na:
00 50303 1251 4
Seria
2 cyfry
FN
5 cyfr
AN
4 cyfry
CK
1 cyfra

  • FN mnożymy przez 5 i dodajemy AN
    Wynik 1 = 5 x FN + AN
  • Obliczamy resztę z dzielenia otrzymanej liczby przez 7
    Wynik 2 = reszta z dzielenia Wyniku 1 przez 7
  • Do reszty z dzielenia dodajemy 1
    Cyfra kontrolna = Wynik 2 +1
Przykład:     PL 00 50303 1251   FN = 50303   AN = 1251
  • Wynik 1 = 5 x 50303 + 1251 = 252766
  • Wynik 2 = reszta z dzielenia 252766 przez 7 = 3
  • Cyfra kontrolna = 3 +1 = 4

Numer kolczyka:     PL 00 50303 1251 4


Oto 13 trefnych serii, których cyfrę kontrolną oblicza się według powyższego algorytmu.

Lp od do
1   501369726 - 501681125
2   501913026 - 502066375
3   502326376 - 502357425
4   502376526 - 502384225
5   502386076 - 502516975
6   502524626 - 502568525
7   503693526 - 503744925
8   504186926 - 504252075
9   504390426 - 504392425
10   504394726 - 504395725
11   504405176 - 504407025
12   504413026 - 504416625
13   505693526 - 505841325

 

Numer Identyfikacyjny Gospodarstwa w   ARiMR

Podczas procedury wnioskowania o dopłaty bezpośrednie nadaje się gospodarstwom rolnym numery. Numer NIG składa się z 8-iu cyfr właściwego numeru i cyfry kontrolnej. Cyfra kontrolna obliczana jest według dziwnego algorytmu. Oblicza się sumę cyfr parzystych tego numeru, liczbę cyfr parzystych oraz sumę cyfr nieparzystych w numerze. Następnie oblicza się:

cyfraKontr = ( 23*SumaParz + 17*SumaNieParz + LiczParz ) MOD 7

Warto zauważyć, że tak sformułowany algorytm generowania cyfry kontrolnej absolutnie nie zabezpiecza przed wpuszczeniem czeskiego błędu przy wczytywaniu danych. Zabezpieczenie przed czeskimi błędami jest obecne w numerach PESEL, REGON, NIP itd. Trochę to dziwne, więc zapytałem w ARiMR; oto krótka odpowiedź:

Cyfra kontrolna numeru producenta i numeru kolczyka identyfikacyjnego dla zwierząt są obliczane w każdym kraju wg własnych algorytmów. Tak samo liczba znaków w numerze jest różna dla różnych krajów UE. Jest to po prostu algorytm wymyślony przez firmę HP POLSKA. Jedynym zabezpieczeniem przed popełnieniem błędu jest ogólnokrajowa baza producentów i baza zwierząt, która w dużej części uniemożliwia wprowadzenie bądź modyfikowanie niepoprawnych numerów na każdym etapie kontroli administracyjnej.

Po krótkim rozumowaniu dochodzimy do wniosku, że sprawdzanie istnienia numeru w bazie też nie zabezpiecza w 100% przed czeskimi błędami przy wprowadzaniu numeru.

Poniżej algorytm obliczania cyfry kontrolnej w Numerze Identyfikacyjnym Gospodarstwa (BASIC)

Public Function CyfraKontrProd(nr_prod) As String
  sp = 0
  snp = 0
  ip = 0
  For n = 1 To 8
    cyferka = CInt(Mid(nr_prod, n, 1))
    If cyferka Mod 2 Then
       snp = snp + cyferka
    Else
       sp = sp + cyferka
       ip = ip + 1
    End If
  Next
  X = 23 * sp + 17 * snp + ip
  CyfraKontrProd = X Mod 7
End Function

 

Czytaj także:

IACS Problemy ze znakowaniem i rejestracją bydła
(Rzeczpospolita -7.08.2002)

Sprawozdanie Komisji Rolnictwa i Rozwoju Wsi o poselskich projektach ustaw o: ... systemie identyfikacji i rejestracji zwierzšt oraz koniowatych ...

ciąg dalszy


          Licznik = (od 28 sierpnia 2003)
          ostatnie poprawki

Valid HTML 4.01!