30.10.2012 Aufrufe

DPD Paketschein Spezifikation 1.7 D

DPD Paketschein Spezifikation 1.7 D

DPD Paketschein Spezifikation 1.7 D

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

<strong>DPD</strong> <strong>Paketschein</strong> <strong>Spezifikation</strong> Version <strong>1.7</strong> _ 2011-11-17<br />

Beispiel 2:<br />

Zeichenkette: ABC987<br />

Initialisierung:<br />

mod = 36<br />

cd = 36<br />

Zeichen val cd = cd + val ? cd > mod cd = cd * 2 ? cd > mod cd<br />

cd = cd - mod<br />

cd = cd - (mod+1)<br />

A 10 36 + 10 = 46 46 – 36 = 10 10 * 2 = 20 20<br />

B 11 20 + 11 = 31 31 * 2 = 62 62 – 37 = 25 25<br />

C 12 25 + 12 = 37 37 – 36 = 1 1 * 2 = 2 2<br />

9 9 2 + 9 = 11 11 * 2 = 22 22<br />

8 8 22 + 8 = 30 30 * 2 = 60 60 – 37 = 23 23<br />

7 7 23 + 7 = 30 30 * 2 = 60 60 – 37 = 23 23<br />

Abschluss:<br />

cd = (mod + 1) – cd � (37) – 23 = 14<br />

? cd = mod � (nein)<br />

cd = 14 ���� entspricht ‘E’<br />

Implementation des Algorithmus in C:<br />

/*<br />

Document ISO/IEC 7064:2003<br />

Algorithm: hybrid system recursive<br />

as described in chapter 10.1.1<br />

Naming of variables and algorithm is related to the document for easier<br />

understanding<br />

ISO/IEC 7064, MOD 37,36<br />

param s String to generate check character for<br />

return check character<br />

or -1 if character exceeds ascii2isoval table<br />

Author: Marc Sierszen, Peter Liebel<br />

DELICom <strong>DPD</strong> GmbH & Co. KG<br />

*/<br />

char get_iso7064_mod37_36(char *s)<br />

{<br />

int i;<br />

int P=0;<br />

int M, M1; /* Modulus */<br />

/* table convert ASCII character to ISO/IEC 7064 values */<br />

char ascii2isoval[] = {<br />

0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,<br />

0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,<br />

0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,<br />

0, 1, 2 ,3, 4, 5, 6, 7, 8, 9, 0, 0, 0, 0, 0, 0,<br />

0,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,<br />

25,26,27,28,29,30,31,32,33,34,35,0, 0, 0, 0, 0,<br />

0,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24, /* handle lower<br />

characters like upper characters */<br />

25,26,27,28,29,30,31,32,33,34,35};<br />

DELICom<br />

Gerhard Lanzer, BA <strong>DPD</strong>_<strong>Paketschein</strong>spezifikation_V<strong>1.7</strong>_2011-11-17 Seite 26 / 101

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!