Seit knapp einem Jahr sind alle Schulbücher an meiner Schule elektronisch erfasst. Jedes Buch besitzt nun eine eindeutige Nummer, die als Strichcode vorne im Buch eingeklebt ist, damit sie mit einem Scanner schnell ausgelesen werden kann. Wir benutzen dabei den sogenannten Code-128. Da sich hier so schön meine beiden Unterrichtsfächer überschneiden, lohnt sich ein genauerer Blick.
Ein Symbol besteht bei Code-128 aus drei Linien, die einfache, doppelte, dreifache oder vierfache Dicke haben können. Aber auch die Zwischenräume nach jeder Linie sind entscheidend. Auch hier kann die einfache, doppelte, dreifache und vierfache Breite auftreten. Aus Gründen der besseren Lesbarkeit ergibt die Summe aller Linien und Zwischenräume pro Symbol das elffache einer einfachen Linie; so ist jedes Symbol gleich breit. Daraus ergeben sich 107 mögliche Linienmuster. Umranden wir das mal; dann sieht man, dass der Strichcode dieses Buchs aus 6 Symbolen besteht.
Die naheliegende Idee, dass jedes Symbol eine der Ziffern der Buchnummer darstellt, ist leider falsch. Das erste Symbol von links gesehen ist eine Startmarkierung, damit der Scanner erkennt, dass hier der Strichcode beginnt. Code-128 kennt 3 verschiedene Startmarkierungen, durch die die nachfolgenden Symbole jeweils unterschiedlich zu interpretieren sind. Startmarkierung A bedeutet, dass die Symbole als Ziffern, Großbuchstaben und Steuerzeichen zu interpretieren sind, Startmarkierung B, dass es sich um Ziffern, Groß- und Kleinbuchstaben handelt und Startmarkierung C, dass es sich um zweistellige Zahlen handelt. Letzteres ist hier der Fall und so bedeuten die folgenden drei Symbole 11, 85 und 58 (siehe Symboltabelle).
Verbleiben noch zwei Symbole. Das vorletzte Symbol ist eine Prüfziffer, damit der Scanner prüfen kann, ob er die Daten richtig gelesen hat. Die Prüfziffer wird berechnet, indem man die Datensymbole mit ihrer Position im Code multipliziert und dann aufsummiert. Hier also 11 * 1 + 85 * 2 + 58 * 3 = 355. Da wir Standard C nutzen, kommen noch 2 hinzu, also 357. Das ganze wird nun Modulo 103 gerechnet, damit wir eine Prüfziffer zwischen 0 und 102 erhalten (Symbole zwischen 103 und 106 dürfen nicht verwendet werden, da sie Start- und Endmarkierungen bilden, alles darüber ist nicht definiert). Somit erhalten wir hier als Prüfziffer 48. Das letzte Symbol ist die Endmarkierung, die als Ausnahme noch eine Linie mehr aufweist; schließlich ist es sonst etwas schwierig den Zwischenraum richtig auszulesen, wenn keine Linie mehr folgt. Gleichzeitig ist die Liniendicke so gewählt, dass sich über Kopf gelesen, kein anderes gültiges Symbol ergibt, wodurch der Scanner weiß, wie herum der Code zu lesen ist.