^BM
MSI Bar CodePreview: partialA numeric symbology built for shelf labels in retail warehouses, and still found on them.
Syntax
^BMo,e,h,f,g,e2Parameters
| Parameter | Description and accepted values | If omitted |
|---|---|---|
| o | Rotation of the bar code on the label.N normal, R 90°, I 180°, B 270° | Last ^FW value, else N |
| e | Which check digits to append: A mod 10, B none, C two mod 10s, D mod 11 then mod 10.A, B, C or D — which check digits to add | B |
| h | Bar height in dots. Overrides the height set by ^BY for this field only.1 to 32000 dots | Height set by ^BY |
| f | Prints the digits underneath the bars as text.Y or N — print the human-readable line | Y |
| g | Moves that text above the bars instead.Y or N — put that line above the bars | N |
| e2 | Includes the check digit in that text.Y or N — include the check digit in that line | N |
How it works
^BM prints MSI, a variant of Plessey developed for inventory control. It encodes digits only, four bits per digit, each bit a pair of bars — which makes it wide, but also extremely tolerant of the printing quality a shelf-edge label gets.
It survives almost entirely in warehouse and retail shelf labelling, where the installed base of scanners and the labels themselves have outlasted several generations of better symbologies.
MSI's check digits are its complicated part: the `e` parameter picks between mod 10, two mod 10s, mod 11 with mod 10, and none. Which one a system expects is part of its specification, not something to guess.
Example
^XA
^BY2,3,80
^FO60,60^BMN,B,80,Y,N,N^FD1234567^FS
^XZRendering…
How the preview on this site handles it
Drawn with a real MSI encoder, so it scans, and rotation is applied. The check-digit scheme from `e` is not applied to the bars, so a symbol that asks for one scans a character shorter here than it will on the printer. The wide-to-narrow ratio from ^BY is not applied either.
Common mistakes
- Guessing the check-digit scheme. Four are on offer and the receiving system accepts exactly one; the wrong choice scans cleanly and means the wrong thing.
- Sending non-digits. MSI is numeric only.
- Choosing it for a new system. MSI is wide and weakly specified — ^BC does the same job in less space.