DPD Paketschein Spezifikation 1.7 D
DPD Paketschein Spezifikation 1.7 D
DPD Paketschein Spezifikation 1.7 D
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