# Code 39

Die Kodierung Code 39, auch kurz 3 of 9 (drei aus neun) genannt, ist eine diskrete Barcode-Symbologie mit variabler Länge. Sie stellt einen alphanumerischen Zeichensatz zur Verfügung. Außer Ziffern und Großbuchstaben sind sieben Sonderzeichen definiert. Start- und Stoppzeichen sind identisch und werden durch das Sonderzeichen „*“ dargestellt. Der Code 39 wurde 1973 von Intermec (USA) entwickelt und ist in der ISO/IEC 16388 spezifiziert.

## Aufbau

Jedem Zeichen des verfügbaren Alphabets wird ein Barcode aus fünf Strichen und vier Zwischenräumen zugeordnet, ein Zeichen besteht also aus 5 schwarzen und 4 weißen Balken. Es gibt verschiedene Balken- und Lückenbreiten: In jedem Zeichen sind drei Balken breit und alle anderen schmal. Ein weiterer schmaler Zwischenraum trennt zwei Zeichen voneinander. Die Bezeichnung Code 39 oder „3 of 9“ geht auf diese Struktur der Kodierung zurück. Dieser Aufbau ermöglicht die Darstellung von 44 verschiedenen Zeichen, davon 40 mit zwei breiten schwarzen und einem breiten weißen Balken. 39 dieser 40 Möglichkeiten entsprechen den Ziffern 0–9, dem Alphabet (A–Z), dem Punkt, dem Minuszeichen (bzw. Bindestrich) und dem Leerzeichen. Die 40. Möglichkeit codiert das Start-/Stoppzeichen „*“. Die letzten 4 Zeichen (Prüfsummenwert 39–42) werden mit drei breiten weißen Balken dargestellt.
Code 39 ist ein diskreter Code mit variabler Codelänge (variable Zeichenanzahl). Der Codeaufbau erlaubt die bidirektionale Abtastung der selbstüberprüfenden Elemente.
Für Anwendungen mit erhöhten Anforderungen an die Lesesicherheit existiert ein optionales Prüfsummenverfahren, das auf einer Wertetabelle für jedes Zeichen beruht. Hierbei besitzt das Zeichen „0“ den numerischen Wert 0, das Zeichen „1“ den Wert 1, das Zeichen „A“ den Wert 10, das Zeichen „Z“ den Wert 35. Als letztem Zeichen wird „%“ der Wert 42 zugeordnet. Der Wert $W$ des Prüfzeichens $P$ errechnet sich demnach wie folgt:
    $W(P)={\biglW(z_{1})+W(z_{2})+...+W(z_{n}){\bigr )}\mod 43$
So ist zum Beispiel „T“ das Prüfzeichen der Zeichenfolge „12345ABCDE/“. Durch folgende Berechnung kommt das „T“ zustande:
    $1+2+3+4+5+10+11+12+13+14+40=115$
    $115{\bmod {4}}3=29$
    $29\Rightarrow T$
Der Code 39 ist einfach herzustellen, da ein Zeichen Klarschrift einem Zeichen Barcode entspricht. Code 39 dominierte frühere Anwendungsgebiete, die eine alphanumerische Kodierung verlangten. Wegen der relativ geringen Informationsdichte und einer im Vergleich zu anderen Kodierungen geringen Zeichensatzauswahl wird er in jüngster Zeit jedoch zunehmend durch den Code128 ersetzt. Allerdings ist er durch die Beschränkung auf zwei deutlich unterscheidbare Breiten auch bei schlechter Druckqualität zuverlässig lesbar; nötigenfalls sogar mit bloßem Auge.

## Zeichenkodierung

| Zeichen | Code | Bedeutung | Wert für Prüfsumme |
| ‚1‘ | ▮| ||▮ | 1 | 1 |
| ‚2‘ | |▮ ||▮ | 2 | 2 |
| ‚3‘ | ▮▮ ||| | 3 | 3 |
| ‚4‘ | || ▮|▮ | 4 | 4 |
| ‚5‘ | ▮| ▮|| | 5 | 5 |
| ‚6‘ | |▮ ▮|| | 6 | 6 |
| ‚7‘ | || |▮▮ | 7 | 7 |
| ‚8‘ | ▮| |▮| | 8 | 8 |
| ‚9‘ | |▮ |▮| | 9 | 9 |
| ‚0‘ | || ▮▮| | 0 | 0 |
| ‚A‘ | ▮|| |▮ | A | 10 |
| ‚B‘ | |▮| |▮ | B | 11 |
| ‚C‘ | ▮▮| || | C | 12 |
| ‚D‘ | ||▮ |▮ | D | 13 |
| ‚E‘ | ▮|▮ || | E | 14 |
| ‚F‘ | |▮▮ || | F | 15 |
| ‚G‘ | ||| ▮▮ | G | 16 |
| ‚H‘ | ▮|| ▮| | H | 17 |
| ‚I‘ | |▮| ▮| | I | 18 |
| ‚J‘ | ||▮ ▮| | J | 19 |
| ‚K‘ | ▮||| ▮ | K | 20 |
| ‚L‘ | |▮|| ▮ | L | 21 |
| ‚M‘ | ▮▮|| | | M | 22 |
| ‚N‘ | ||▮| ▮ | N | 23 |
| ‚O‘ | ▮|▮| | | O | 24 |
| ‚P‘ | |▮▮| | | P | 25 |
| ‚Q‘ | |||▮ ▮ | Q | 26 |
| ‚R‘ | ▮||▮ | | R | 27 |
| ‚S‘ | |▮|▮ | | S | 28 |
| ‚T‘ | ||▮▮ | | T | 29 |
| ‚U‘ | ▮ |||▮ | U | 30 |
| ‚V‘ | | ▮||▮ | V | 31 |
| ‚W‘ | ▮ ▮||| | W | 32 |
| ‚X‘ | | |▮|▮ | X | 33 |
| ‚Y‘ | ▮ |▮|| | Y | 34 |
| ‚Z‘ | | ▮▮|| | Z | 35 |
| ‚-‘ | | ||▮▮ | Bindestrich, Minus | 36 |
| ‚.‘ | ▮ ||▮| | Punkt | 37 |
| ‚ ‘ | | ▮|▮| | Space, Leerzeichen | 38 |
| ‚*‘ | | |▮▮| | Start, Stopp | |
| ‚$‘ | | | | || | Dollar | 39 |
| ‚/‘ | | | || | | Schrägstrich | 40 |
| ‚+‘ | | || | | | Plus | 41 |
| ‚%‘ | || | | | | Prozent | 42 |

## Full ASCII Code 39

Code 39 ist auf 43 Zeichen beschränkt. Um alle 128 ASCII-Zeichen darstellen zu können, wird das System so erweitert: Die Symbole 0–9, A–Z, „.“ und „-“ sind die gleichen wie bei Code 39. Kleinbuchstaben, weitere Zeichen und Steuerungszeichen werden durch zwei aufeinanderfolgende Symbole von Code 39 gebildet.
| Nr | Zeichen | Kodierung |
| 0 | NUL | %U |
| 1 | SOH | $A |
| 2 | STX | $B |
| 3 | ETX | $C |
| 4 | EOT | $D |
| 5 | ENQ | $E |
| 6 | ACK | $F |
| 7 | BEL | $G |
| 8 | BS | $H |
| 9 | HT | $I |
| 10 | LF | $J |
| 11 | VT | $K |
| 12 | FF | $L |
| 13 | CR | $M |
| 14 | SO | $N |
| 15 | SI | $O |
| 16 | DLE | $P |
| 17 | DC1 | $Q |
| 18 | DC2 | $R |
| 19 | DC3 | $S |
| 20 | DC4 | $T |
| 21 | NAK | $U |
| 22 | SYN | $V |
| 23 | ETB | $W |
| 24 | CAN | $X |
| 25 | EM | $Y |
| 26 | SUB | $Z |
| 27 | ESC | %A |
| 28 | FS | %B |
| 29 | GS | %C |
| 30 | RS | %D |
| 31 | US | %E |
| Nr | Zeichen | Kodierung |
| 32 | [space] | [space] |
| 33 | ! | /A |
| 34 | " | /B |
| 35 | # | /C |
| 36 | $ | /D |
| 37 | % | /E |
| 38 | & | /F |
| 39 | ' | /G |
| 40 | ( | /H |
| 41 | ) | /I |
| 42 | * | /J |
| 43 | + | /K |
| 44 | , | /L |
| 45 | - | - |
| 46 | . | . |
| 47 | / | /O |
| 48 | 0 | 0 |
| 49 | 1 | 1 |
| 50 | 2 | 2 |
| 51 | 3 | 3 |
| 52 | 4 | 4 |
| 53 | 5 | 5 |
| 54 | 6 | 6 |
| 55 | 7 | 7 |
| 56 | 8 | 8 |
| 57 | 9 | 9 |
| 58 | : | /Z |
| 59 | ; | %F |
| 60 | < | %G |
| 61 | = | %H |
| 62 | > | %I |
| 63 | ? | %J |
| Nr | Zeichen | Kodierung |
| 64 | @ | %V |
| 65 | A | A |
| 66 | B | B |
| 67 | C | C |
| 68 | D | D |
| 69 | E | E |
| 70 | F | F |
| 71 | G | G |
| 72 | H | H |
| 73 | I | I |
| 74 | J | J |
| 75 | K | K |
| 76 | L | L |
| 77 | M | M |
| 78 | N | N |
| 79 | O | O |
| 80 | P | P |
| 81 | Q | Q |
| 82 | R | R |
| 83 | S | S |
| 84 | T | T |
| 85 | U | U |
| 86 | V | V |
| 87 | W | W |
| 88 | X | X |
| 89 | Y | Y |
| 90 | Z | Z |
| 91 | [ | %K |
| 92 | \ | %L |
| 93 | ] | %M |
| 94 | ^ | %N |
| 95 | _ | %O |
| Nr | Zeichen | Kodierung |
| 96 | ` | %W |
| 97 | a | +A |
| 98 | b | +B |
| 99 | c | +C |
| 100 | d | +D |
| 101 | e | +E |
| 102 | f | +F |
| 103 | g | +G |
| 104 | h | +H |
| 105 | i | +I |
| 106 | j | +J |
| 107 | k | +K |
| 108 | l | +L |
| 109 | m | +M |
| 110 | n | +N |
| 111 | o | +O |
| 112 | p | +P |
| 113 | q | +Q |
| 114 | r | +R |
| 115 | s | +S |
| 116 | t | +T |
| 117 | u | +U |
| 118 | v | +V |
| 119 | w | +W |
| 120 | x | +X |
| 121 | y | +Y |
| 122 | z | +Z |
| 123 | { | %P |
| 124 | | %Q |
| 125 | } | %R |
| 126 | ~ | %S |
| 127 | DEL | %T, %X, %Y, %Z |

## Code 39 reduced

Ist eine Variante, die nur aus den Zeichen 0 bis 9 und A bis Z besteht und das Prüfzeichen wird modulo 36 berechnet.

## Unterstützung

Als altbewährte Symbolik wird Code 39 von fast allen gängigen Strichcodelesern und Etikettendruckern unterstützt. Für Textverarbeitungs-Software wird Code 39 als Schriftart von verschiedenen Anbietern (auch kostenfrei) angeboten, und für LaTeX empfiehlt sich das barcodes-Paket.