# RM4SCC

RM4SCC (Royal Mail 4-State Customer Code) is the name of the barcode character set based on the Royal Mail 4-State Bar Code symbology created by Royal Mail. The RM4SCC is used for the Royal Mail Cleanmail service. It enables UK postcodes as well as Delivery Point Suffixes (DPSs) to be easily read by a machine at high speed.
This barcode is known as CBC (Customer Bar Code) within Royal Mail.
PostNL uses a slightly modified version called KIX which stands for Klant index (Customer index); it differs from CBC in that it does not use the start and end symbols or the checksum, separates the house number and suffixes with an X, and is placed below the address. Singapore Post uses RM4SCC without alteration.
There are strict guidelines governing usage of these barcodes, which allow for maximum readability by machines.
They can be used with Royal Mail's Cleanmail system, as an alternative to OCR readable fonts, to allow businesses to easily and cheaply send large quantities of letters.

## Encoding and content

An individual bar can be short, extend upwards, extend downwards, or extend both up and down. These four possibilities are reflected in the "four-state" name of the encoding. Each character is then made up of four of these bars, giving a possible 4$^4$ = 256 combinations. For readability however, only a subset is included. There are 6 combinations of four bars that have two short and two long bars. With bars extending to the top and bars extending to the bottom, there are 6 x 6 = 36 possible combinations like this, with which the ten numerical symbols (0 to 9) and the 26 letters of the alphabet can be encoded. In addition, single-bar start and stop characters are defined.
As the example shows, the complete barcode consists of a start character, the postcode, the Delivery Point Suffix (DPS), a checksum character, and a stop character. The DPS is a two-character code ranging from 1A to 9T, with codes 9U to 9Z being accepted as default codes when no DPS has been allocated. The DPS can be found in Royal Mail's Postcode Address File.

## Checksum

For the purpose of calculating the checksum, the top and bottom halves of each character can be assigned the values shown in the table below. Each such value is derived by assigning weights of 4,2,1 and 0 to the extensions according to their position in the character, summing the weights, and taking modulo 6 of the sum. For example the symbol for 'B' has bottom half extensions of its first two bars, represented below as 1100, the sum of their weights being 4+2+0+0 = 6, modulo 6 of which is 0.
RM4SCC bar code symbols :
| Top | Top | Bottom (1=long bar, 0=short) | Bottom (1=long bar, 0=short) | Bottom (1=long bar, 0=short) | Bottom (1=long bar, 0=short) | Bottom (1=long bar, 0=short) | Bottom (1=long bar, 0=short) |
| Top | Top | 0011 | 0101 | 0110 | 1001 | 1010 | 1100 |
| Top | Top | 1 | 2 | 3 | 4 | 5 | 0 |
| 0011 | 1 | 0 | 1 | 2 | 3 | 4 | 5 |
| 0101 | 2 | 6 | 7 | 8 | 9 | A | B |
| 0110 | 3 | C | D | E | F | G | H |
| 1001 | 4 | I | J | K | L | M | N |
| 1010 | 5 | O | P | Q | R | S | T |
| 1100 | 0 | U | V | W | X | Y | Z |
The check symbol is computed by summing the top and bottom half values separately, modulo 6, and combining the final sums to find the symbol. In the example above, the top half values are 2,6,1,1,4,5,1,2. This sums to 22 = 6×3 + 4. Thus the check symbol has a top value of 4. The bottom half values are 6,4,2,2,4,0,2,5, which sum to 25 = 6×4 + 1. The check symbol's bottom half value is 1, so it corresponds to the letter I.