^BL - LOGMARS Bar Code
Code 39 profile mandated by US Department of Defense LOGMARS labeling, with a compulsory mod-43 check character.
^BL prints a LOGMARS symbol. LOGMARS is Logistics Applications of Automated
Marking and Reading Symbols, the US Department of Defense profile of Code 39. The
symbology is identical to ^B3. ^BL fixes the profile around it:
- the mod-43 check character is compulsory;
- the printer always prints the interpretation line;
- the printer converts lower case in the field data to upper case.
Use ^BL where a DoD specification names LOGMARS. Use ^B3 for every other
label.
Syntax
^BLo,h,gSupport
Every documented parameter renders the same output Labelary produces.
The renderer always prints the interpretation line for LOGMARS, so no argument suppresses it. The third argument chooses only whether the line sits above the symbol or below. — not pinned by a test
Labelary renders this command.
Parameters
oBar code orientationoptional · one of a setRotation of the symbol and interpretation line.
- Default
- the orientation set by
^FW, which itself defaults toN - Invalid value
- discarded, and the default applies. The renderer reports an unrecognized character as invalid, and uses the default.
- Test coverage
- No documented value is exercised by a test (N, R, I, B). The invalid-value rule is not pinned by a test.
N- No rotation (default)
R- Rotated 90° clockwise
I- Rotated 180°. The symbol reads upside down
B- Rotated 270° clockwise
hBar code heightoptional · dotsHeight of the bars, without the interpretation line.
- Default
- the height set by
^BY, which itself defaults to 10 dots - Accepted range
- 1 to 32000 dots
- Invalid value
- clamped to the nearest allowed value. We measured this against live Labelary on 2026-07-12. The renderer clamps an out-of-range value to the violated bound, and does not ignore it.
- Test coverage
- Bounds pinned: below the minimum (0), above the maximum (33000). No test at the minimum or maximum. The invalid-value rule is not pinned by a test.
gInterpretation line aboveoptional · Y or NWhere the interpretation line sits. It has no effect without that line.
- Default
- N
- Invalid value
- discarded, and the default applies. The renderer reports any character except
YorN, and uses the default. - Test coverage
- No documented value is exercised by a test (Y, N). The invalid-value rule is not pinned by a test.
Y- Above the symbol
N- Below the symbol (default)
Behavior
The command takes three arguments only, and the two absent arguments are absent
on purpose. There is no check-digit flag, because the mod-43 check character is
mandatory. We measured this against Labelary on 2026-07-30. ^FDLOGMARS-1234
prints LOGMARS-1234M, and M is the computed check character.
No flag removes the interpretation line either. The third argument controls the only choice, the position of the line above or below the symbol.
The printer converts lower-case letters in the field data to the upper-case
LOGMARS characters and does not reject them. Mixed-case field data is therefore
safe in ^BL, and not in plain Code 39.
LOGMARS is a two-width symbology, so the ^BY ratio applies over the guide's
range of 2.0:1 to 3.0:1. The width of the label limits the field data. For a
rotated symbol, the length of the label limits it.
The renderer parses ^BL and draws no symbol. It reports a diagnostic and does
not default to a text run. The parser also reads five arguments in the shape of
^B3, so the third argument, the interpretation-line-above flag, lands in the
wrong field. The renderer release fixes that gap.
^B3 with its check digit on is the closest command that renders today.
Tested behavior
Differences from the specification
zpl.tools against the ZPL II guide
Where our renderer behaves differently from the specification.
- The guide takes the default orientation from
^FW. The renderer applies^FWto text fields only. A barcode after^FWRprints unrotated unless its ownoargument rotates it. — not pinned by a test
Example
The interpretation line below the symbol, with the mandatory check character appended to it:
^XA
^FO50,50^BY3
^BLN,80,N
^FDLOGMARS-1234^FS
^XZ
Related commands
^BYBar Code Field DefaultSets the module width, wide-to-narrow ratio and height that every later bar code inherits.^FDField DataSupplies the text or barcode content of the field.^FOField OriginSets the top-left corner of the next field.^FTField TypesetPositions the next field by its text baseline rather than its top edge.^B3Code 39 Bar CodeThe general-purpose alphanumeric symbology, readable by every scanner and the safest default for internal labeling.