# Codablock

Codablock is a family of stacked 1D barcodes (Codablock A,. Codablock F, Codablock 256) which was invented in Identcode Systeme GmbH in Germany in 1989 by Heinrich Oehlmann. Codablock barcodes are based on stacked Code 39 and Code 128 symbologies and have some advantages of 2D barcodes.
The barcodes were used mostly in health care industry (HIBC) and presently, Codablock codes are fully replaced by Data Matrix

## History

Codablock codes invention were proceeded from 1989 to 1995 year. Codablock A was invented in 1989 and standardized as AIM standard in 1994. Codablock A was based on stacked Code 39 barcodes and wasn’t widely used because of Code 39 restrictions.
The next Codablock F was based on stacked Code 128 symbology and was standardized as AIM standard in 1995. As this time Codablock F is officially accessed as historical standard and isn’t recommended to use in new applications.
Codablock 256 was invented as internal ICS Identcode-Systeme standard and wasn’t standardized. It was also based on stacked Code 128 symbology. Codablock 256 could encode all 256 symbol ISO 8859-1 charset with FNC4 character and each line had error correction. Because of it has issues with reading by code128 scanners, 8-bit charset encoding was added to Codablock F standard and Codablock 256 almost was not used.
The Codablock also played an important pioneering role in the advance of 2D codes, because only it could be read reliably with the slightest modification of the laser scanners used at the time.

## Codablock types

Codablock symbologies has been developed as a stacked version of Code 39 and Code 128 barcodes and has some advantages of 2D barcodes. They allow to utilize rectangular space more effectively then 1D barcode and have additional checking characters to ensure the content of the overall message.
Codablock can be compared with a line break in a text editor. As soon as one line is full, the next is broken, whereby the line number is inserted into each line and the number of lines is inserted into the finished block. First line contains row counts. Each code line also contains an indicator for orientation for the readers and additional checksum values at the end of last line.

### Codablock A

Codablock A is based on the Code 39 barcode, consists of 2 to a maximum of 22 barcode lines of 1 to 61 data character each and can encode up to 1,340 characters. The checksum for the error correction is calculated according to modulo 43 over the entire code block.

### Codablock F

Codablock F is based on Code 128 barcode, consists of 2 to a maximum of 44 lines, of 4 to 62 data character each and can encode up to 2,725 characters. Codablock F can encode full ISO 8859-1 8-bit charset. Codablock F start character always must be Start A(Code 128).

### Codablock 256

Codablock 256 has the same structure as Codablock F with the difference that each line has its own start character. Codablock 256, like Codablock F can encode a maximum of 2,725 characters. Additionally, each code line has its own error correction so small damage can be repaired. This version of Codablock was not standardized as international standard and left as internal Identcode Systeme GmbH development.

## Codablock F structure

Codablock F consists from stacked Code 128 barcode lines and have the following features:
* has from 2 to 44 lines;
* each line has from 4 to 62 data characters;
* can encode up to 2,725 characters;
* can more effectively use rectangular space then any 1D barcode;
* can use any code 128 reading equipment with slight modification or even without it;
* when printing consists from standard Code 128 rows;
* secured by two mod-86 check sums in addition to the row check sums;
* can encode full ASCII character set. 8-bit character set is available using the ISO 8859-1 (Latin-1) character set (FNC4);
* numeric compression: allows to encode blocks of numbers (minimum 4) using only the half of the usual space;
* additionally, secured by a row checksum with modulo 103.
Codablock F constructed from Code 128 data rows which are blocked between Start A (Code128) character and Code 128 Stop character. Every row has its number in second position after encoding mode selector or data character. The first row has rows count on the number place. The last row has two additional checksum characters.
Codablock F structure :
| Start | Data(Code 128) | Data(Code 128) | Data(Code 128) | Data(Code 128) | Data(Code 128) | Data(Code 128) | Stop |
| Start | Mode/Data | Row Number | Row Data(Code 128) | Row Data(Code 128) | Row Data(Code 128) | Row CS | Stop |
| Start A(Code 128) | MD1 | Rows Count | Row 1 Data | Row 1 Data | Row 1 Data | CS1 | Stop(Code 128) |
| Start A(Code 128) | MDX | RX | Row X Data | Row X Data | Row X Data | CSX | Stop(Code 128) |
| Start A(Code 128) | MDN | RN | Row N Data | CBS1 | CBS2 | CSN | Stop(Code 128) |
MDX - encoding mode selector or data character if data can be encode in Code A mode. Rows Count - count of rows in barcode, set in the first row. RX - row number. Row X Data - encode data in the code 128 row. CSX - Code 128 checksum. CBS1, CBS2 two Codablock F checksum characters.