Software Details
Bar Codes
VariableText will now convert your imported text files into one of the many barcodes.
Normal Code 39


The Normal CODE 39 is a variable length symbology that can encode the following 44 characters: 1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ-. *$/+%. Code 39 is the most popular symbology in the non-retail world and is used extensively in manufacturing, military, and health care applications. Each Code 39 bar code is framed by a start/stop character represented by an asterisk (*). The Asterisk is reserved for this purpose and may not be used in the body of a message. VariableText automatically adds the start and stop character to each bar code therefore you should not include them as part of your bar code message. If you select the Normal version of Code 39 and your bar code text contains lower case characters, VariableText will convert them to upper case. If your bar code text contains invalid characters, VariableText will raise an error and the bar code will not be generated.
Code 39 allows for an optional (modulo 43) check. The health care industry has adopted the use of this check character for health care applications (HIBC bar codes). To enable the Code 39 check, set the Code39 Check Digit preference to True. When this option is enabled, VariableText will automatically calculate and append the proper check character to all Code 39 symbols. If you set the Symbology to Code39_HIBC then VariableText will automatically add the check digit no matter what value the Code39 Check Digit preference is set to.

 

The FULL ASCII version of Code 39 is a modification of the NORMAL (standard) version that can encode the complete 128 ASCII character set (including asterisks). The Full ASCII version is implemented by using the four characters: $/+%. as shift characters to change the meanings of the rest of the characters in the Normal Code 39 character set. Because the Full ASCII version uses shift characters in combination with other standard characters to represent data not in the Normal Code 39 character set, each non-standard character requires twice the width of a standard character in a printed symbol. The table below shows the character combinations used to produce the Full ASCII version of Code 39.

Note: Because all of the characters used to implement Full ASCII Code 39 are part of the Normal Code 39 character set, readers that do not support Full ASCII Code 39 will still read Full ASCII Code 39 symbols. The reader will output shifted characters as if they were normal Code 39 characters. For example the following string: PROGRAMMING=FUN will be read as: PROGRAMMING%HFUN by a reader that only supports Normal Code 39. Instead of converting the Full ASCII encoded characters %H to an equal sign, the reader blindly outputs %H.

 

HIBC or "Health Industry Bar Code" is a specification for a standard method of encoding data using Code 39 in healthcare applications. The standard requires that the first character in a HIBC bar code be a plus character (+) and that the symbol use a MOD 43 check digit. To generate HIBC bar codes, all you need to do is to set the bar code type to Code39_HIBC and VariableText will automatically add the starting plus sign to your bar code message as well as calculate and append the check digit for you.

Some bar code readers support a feature of Code 39 that allows for concatenation of two or more bar codes so that you can break long messages into multiple, shorter, symbols. If the first data character of a Code 39 symbol is a space, some readers will store the remainder of the symbol in a buffer and not transmit the data.

This operation continues for all successive Code 39 symbols with a leading space, with each message appended to the previous one. When a message without a leading space is read, it is appended to the previously scanned data and the entire buffer is transmitted as one long message.

 

UPC-A is a 12 digit, numeric symbology used in retail applications. UPC-A symbols consist of 11 data digits and one check digit. The first digit is a number system digit that usually represents the type of product being identified. The following 5 digits are a manufacturer’s code and the next 5 digits are used to identify a specific product. UPC numbers are assigned to manufacturers by the Uniform Code Council (UCC).

For more information, contact the UCC at 8163 Old Yankee Road, Suite J, Dayton, OH 45458
Tel: 937-435-3870, web site: http://www.uc-council.org

UPC-E is a smaller, six-digit UPC symbology for number system 0. It is often used for small retail items like candy and cigarettes. UPC-E is also called "zero suppressed" because UPC-E compresses a normal 12-digit UPC-A code into a six digit code by "suppressing" the number system digit, trailing zeros in the manufacturers code and leading zeros in the product identification part of the bar code. A seventh check digit is encoded into a parity pattern for the six main digits. Many bar code readers can be configured to automatically uncompress UPC-E symbols into their 12-digit equivalent before transferring the data to a computer.

When specifying UPC-A or UPC-E messages, you may pass a message with either 6,7,11 or 12 digits. If you pass a message with 6 or 7 digits VariableText will generate a UPC-E symbol. If you pass 7 digits the 7th digit will be removed. (VariableText will assume that you are entering a message complete with check digit.) If you pass a message with 11 or 12 digits VariableText will generate a UPC-A symbol. If you pass 12 digits the 12th digit will be removed. (Again VariableText will assume that you are entering a message with a check digit.) VariableText will automatically calculate the check digit for you and appends it to your bar code message text. This insures that you always have the correct check digit.

Both UPC-A and UPC-E allow for a supplemental two or five digit number to be appended to the main bar code symbol. The supplemental is a small additional bar code that is added onto the right side of a standard UPC symbol. This supplemental message was designed for use on publications and periodicals. To include a supplemental message, append it to the main message with a comma separating it from the main message. If you enter a supplemental message, it must consist of either two or five numeric digits.

The following table contains sample messages for the different variations of UPC symbols.

 

EAN or European Article Numbering system (also called JAN in Japan) is a European version of UPC. It uses the same size requirements and a similar encoding scheme as UPC codes.

EAN-8 encodes 8 numeric digits consisting of two country code digits, five data digits and one check digit. EAN-13 is the European version of UPC-A. The difference between EAN-13 and UPC-A is that EAN-13 encodes a 13th digit into the parity pattern of the left six digits of a UPC-A symbol. This 13th digit, combined with the 12th digit, usually represent a country code.

EAN bar code numbers are assigned to specific products and manufacturers by an organization called ICOF located in Brussels, Belgium. Tel: 011-32-2218-7674, web site: http://www.ean.be/

When specifying EAN-8 or EAN-13 messages, you may pass a message with either 7, 8, 12 or 13 digits. If you pass a message with 7 or 8 digits VariableText will generate a EAN-8 symbol. If you pass 8 digits, the 8th digit will be removed. (VariableText will assume that you are entering a message complete with check digit.) If you pass a message with 12 or 13 digits VariableText will generate a EAN-13 symbol. If you pass 13 digits, the 13th digit will be removed. (Again VariableText will assume that you are entering a message with a check digit.) VariableText automatically calculates the check digit for you and appends it to your bar code message text. This insures that you always have the correct check digit.

Like UPC, EAN-8 and EAN-13 allow for a supplemental two or five digit number to be appended to the main bar code symbol. The supplemental is simply a small additional bar code that is added onto the right side of a standard EAN symbol. To include a supplemental message, append it to the main message with a comma separating it from the main message. If you enter a supplemental message, it must consist of either two or five numeric digits.

The following table contains sample messages for the different variations of EAN symbols.

 

EAN-13 has been adopted as the standard in the publishing industry for encoding ISBN numbers on books. An ISBN or BookLand bar code is simply an EAN-13 symbol consisting of the first 9 digits of an ISBN number preceded by the digits 978 and terminated with a standard EAN check digit. The supplemental in an ISBN bar code is usually the retail price of the book preceded by the digit 5 or it can be the number 90000 when no price is specified.
For example, if you want to encode the ISBN number 1-56276-008-4 and the price of the book is $29.95 then you could use 978156276008 as the main bar code message and 52995 for the supplemental with the Symbology property set to bcEAN_JAN_13 and VariableText would generate the correct BookLand bar code.

If you set the bar code type to BookLand, then VariableText only requires you to use the
10-digit ISBN number (with or without dashes) and optionally a price for the supplemental separated from the ISBN number with a comma. This feature saves you the trouble of having to remove the 10th digit from the ISBN number, insert the preceding 978 and further process the price supplemental.

The following table contains sample messages for the different variations of BookLand symbols. The following samples apply only when the bar code type is set to BookLand.

 

CODE 93 is a variable length symbology that can encode the complete 128 ASCII character set. Code 93 was developed as an enhancement to the CODE 39 symbology by providing a slightly higher character density than CODE 39. CODE 93 also incorporates two check digits as an added measure of security.
Although CODE 93 is considered more robust than CODE 39, it has never achieved the same popularity as Code 39. CODE 93 bar codes are framed by a special start/stop character. VariableText will automatically add the start and stop characters as well as the check digits to each Code 93 bar code therefore you should not attempt to include them as part of your bar code message.

CodaBar is a variable length symbology that allows encoding of the following 20 characters: 0123456789-$:/.+ABCD. CodaBar is commonly used in libraries, blood banks, and the air parcel business. CodaBar uses the characters A B C and D only as start and stop characters. Thus, the first and last digits of a CodaBar message must be A B C or D and the body of the message should not contain these characters. VariableText will allow any length of CodaBar message as long as it contains valid characters and starts and ends with a valid start/stop character. If you use lower case letters for A B C or D, VariableText will convert them to upper case.

 

Interleaved 2 of 5 is a high-density variable length numeric only symbology that encodes digit pairs in an interleaved manner. The odd position digits are encoded in the bars and the even position digits are encoded in the spaces. Because of this, Interleaved 2 of 5 bar codes must consist of an even number of digits. Also, because partial scans of I 2 of 5 bar codes have a slight chance of being decoded as a valid (but shorter) bar code, readers are usually configured to read a fixed (even) number of digits when reading Interleaved 2 of 5 symbols. The number of digits are usually pre-defined for a particular application and all readers used in the application are programmed to only accept ITF bar codes of the chosen length. Shorter data can be left padded with zeros to fit the proper length. VariableText will only accept numeric digits for Interleaved 2 of 5 bar codes. If an odd number of digits is entered, VariableText will Left-Pad one zero to the number entered.

Interleaved 2 of 5 optionally allows for a weighted modulo 10 check character for special situations where data security is important. To enable the Interleaved 2 of 5 check character, set the
I2of5 Check Digit preference to True and VariableText will automatically calculate and append the proper check character to all Interleaved 2 of 5 symbols.

 

Code 128 is a variable length, high density, alphanumeric symbology. Code 128 has 106 different bar and space patterns and each pattern can have one of three different meanings depending on which of three different character sets is employed. Special start characters tell the reader which of the character sets is initially being used and three special shift codes permit changing character sets inside a symbol. One character set encodes all upper case characters and ASCII control characters, another encodes all upper and lower case characters and the third set encodes numeric digit pairs 00 through 99. This third character set effectively doubles the code density when printing numeric data. Code 128 also employs a check digit for data security. In addition to ASCII characters, Code 128 also allows encoding of four special function codes (FNC1 - FNC4). The meaning of function code FNC1 and FNC4 were originally left open for application specific purposes. Recently an agreement was made by the Automatic Identification Manufacturers Assoc. (AIM) and the European Article Numbering Assoc. (EAN) to reserve FNC1 for use in EAN applications. FNC4 remains available for use in closed system applications. FNC2 is used to instruct a bar code reader to concatenate the message in a bar code symbol with the message in the next symbol. FNC3 is used to instruct a bar code reader to perform a reset. When FNC3 is encoded anywhere in a symbol, any data also contained in the symbol is discarded. The four function codes can be included in a message by using the ASCII characters ASCII 128 for FNC1, ASCII 129 for FNC2, ASCII 130 for FNC3 and ASCII 131 for FNC4.

Note: VariableText will automatically select the proper character sets and insert the necessary start character and shift codes so that the resulting bar code will be as short as possible. The check digit will also be calculated automatically by VariableText.


The EAN/UCC 128 symbology is a variation of the original Code 128 symbology designed primarily for use in product identification applications. The EAN/UCC 128 specification uses the same code set as Code 128 except that it does not allow function codes FNC2-FNC4 to be used in a symbol and FNC1 is used as part of the start code in the symbol. Some applications for EAN/UCC 128 require an additional Mod 10 check digit.
You can enable this check digit by setting the UccEan Check Digit property to True. If the optional check digit is enabled, the data that you supply in the Message property must consist of numeric characters only otherwise an error event is raised and no bar code symbol is generated.


MSI-PLESSEY is a variable length, numeric only, symbology. The symbology is one of the earliest bar code symbologies ever developed and is based on a four bit binary number scheme. Each symbol is framed by a start and a stop pattern and contains a check character that is calculated from the values of each of the encoded data digits. MSI-Plessey is rarely used in anything other than grocery store shelf marking applications. Because the symbology is so rarely used, most modern bar code readers do not provide support for MSI-Plessey symbols.

 


POSTNET (Postal Numeric Encoding Technique) is a 5, 9 or 11 digit numeric only bar code symbology used by the US Postal Service to encode ZIP Code information for automatic mail sorting. The bar code may represent a five digit ZIP Code (32 bars), a nine digit ZIP + 4 code (52 bars) or an eleven digit Delivery Point code (62 bars).

POSTNET is unlike other bar codes because data is encoded in the height of the bars instead of in the widths of the bars and spaces. Most commercially available bar code readers cannot decode POSTNET.

This symbology was chosen by the Postal Service mainly because it is extremely easy to print on almost any type of printer. POSTNET is a fixed dimension symbology meaning that the height, width and spacing of all bars must fit within tight tolerances. VariableText will only create POSTNET bar codes that follow the guidelines published by the Postal Service. VariableText does not allow you to set the size of POSTNET bar codes. In other words the Narrow Bar Width, Bar Width Reduction and the Bar Height preferences are ignored. POSTNET also does not support human readable text, quiet zones, bearer bars or optional check digits. VariableText will ignore non-numeric data in any POSTNET bar code message. For example, if you supply "Chicago, IL 60601-3222" for the Message property of a POSTNET bar code, VariableText will still create a correct bar code.

 

PDF417 is a high density 2 dimensional bar code symbology that resembles a stacked set of smaller bar codes. The symbology is capable of encoding the entire (256 character) ASCII or ANSI character set. PDF stands for "Portable Data File" because it can encode as many as 2710 data characters in a single bar code.

The complete specification for PDF417 provides many encoding options including data compaction options, error checking and correction options, and variable size and aspect ratio symbols. The low level structure of a PDF417 symbol consists of an array of code words (small bar and space patterns) that are grouped together and stacked on top of each other to produce the complete printed symbol. An individual code word consists of a bar and space pattern 17 modules wide. The user may specify the module width, the module height, and the overall aspect ratio (overall height to width ratio) for the complete symbol. A complete PDF417 symbol consists of at least 3 rows of up to 30 code words and may contain up to 90 code word rows per symbol with a maximum of 928 code words per symbol.

The code words in a PDF417 symbol are generated using one of three data compaction modes currently defined in the symbology specifications. This allows more than one character to be encoded into a single data code word. Because different data compaction algorithms may be used, it is possible for different printed symbols to be created from the same input data. VariableText will automatically switch between the different data compaction modes to produce the smallest possible bar code symbol for a given bar code message.

The PDF417 symbology also allows for varying degrees of data security or error correction and detection.

Nine different error correction levels are available with each higher level adding additional overhead to the printed symbol. VariableText also provides an “automatic” error correction option that can help make the most efficient use of the error correction capabilities in PDF417.
VariableText allows complete control over all features of PDF417.

 

A PDF417 bar code symbol consists of multiple rows of data encoded in units called code words. Each symbol can contain from 3 to 90 rows and each row consists of a Start/Stop pattern and from 3 to 32 code words (1 to 30 code words for data and 2 for Right and Left Row Indicators). The smallest element in a PDF417 symbol is called a module. Each code word consists of a unique pattern of 4 bars and 4 spaces each with a width of up to 6 modules within a total width of 17 modules per code word. This is where the 417 comes from in the name PDF417 - 4 bars within 17 modules. Because the number of code words in a row and the total number of rows in a symbol are variable quantities, the three primary dimensions used to define the size of a PDF417 bar code are the PDF Module Width, PDF Module Height, and the PDF Aspect Ratio preferences. The PDF Module Height and PDF Module Width values define the height and width of the smallest rectangular element in the PDF417 symbol and the PDF Aspect Ratio value specifies the overall height to width ratio of the symbol.

The best choice for the PDF Module Width preference depends partly on the resolution of your bar code reading equipment and also on the resolution of the printer being used to produce the bar code. The specification for PDF417 recommends that the module width should fall in a range between 10 and 30 mils. The smallest allowable module width defined in the symbology specification is 6.56 mils. (This translates to 2 printer dots when printing to a 300 DPI laser printer.) The best way to determine the ideal module width for your application is to actually print out a sample bar code using several different values and try reading each one with your scanning equipment. Again, you should choose the value that produces bar codes with the best read rate.

The recommended value for the PDF Module Height is three times the value for the PDF Module Width however the symbol specifications allow for module heights as small as 10 mils (3 printer dots on a 300 DPI laser printer).

The value for the PDF Aspect Ratio property determines the overall shape of the PDF417 symbol and is defined as the overall height to width ratio. Higher values for the PDF Aspect Ratio (greater than 1) produce tall, thin PDF417 bar codes and small values (greater than zero and less than 1) produce short, wide bar codes. A value of 1 should produce approximately square bar codes. Because each row of data in a PDF417 symbol contains 2 additional code words of overhead (right and left row indicators) as well as start and stop patterns, tall and thin bar codes with lots of rows (high aspect ratios) will be larger in total area and contain more overhead than short wide bar codes (low aspect ratios). On the other hand, short wide bar codes (low aspect ratios) may be difficult to read depending on the type of scanner that you use.

NOTE: For any given PDF417 bar code symbol there are only a small number of possible aspect ratios that are physically possible. Because of this, you will probably not be able to produce a bar code with the exact PDF Aspect Ratio that you specify. VariableText will automatically generate a bar code with the closest match to the PDF Aspect Ratio value that you specify, within the limits of the symbol specification.

VariableText also provides more detailed control over the size and shape of a PDF417 symbol by allowing you to specify the maximum number of rows and a maximum number of data code word columns in a symbol using the PDF Max Rows and PDF Max Cols properties. The default maximum number of data rows and columns are the maximum values allowable in the PDF417 symbol specification (i.e. 30 rows and 90 Columns). If you specify smaller values for these parameters, you are essentially defining an upper limit to the overall height or width of all generated PDF symbols. For example, suppose you need to generate a PDF symbol that absolutely must be no wider than two inches and you chose 10 mils for the PDF Module Width property. Because there are 17 modules in a code word and there are 69 modules of overhead per row, (start/stop patterns and right/left row indicators) the maximum number of code word columns allowable in a 2 inch wide symbol can be calculated using the formula:

10mils x [(17 x PDF Max Cols) + 69]<=2000 mils (2 inches)

If we solve the equation above we obtain the value of 7 for the Maximum number of code word columns (PDF Max Cols). Thus, if we set the Maximum Number of Data Columns parameter to 7, VariableText will only produce PDF417 symbols that are less than 2 inches wide.

You can also cause VariableText to produce a version of PDF417 called Truncated PDF417 that removes the Right Row Indicator code words and the stop pattern on the right hand side of the symbol thus reducing the total size of a PDF417 symbol. When creating Truncated PDF417 symbols, there are only 35 overhead modules per row instead of the normal 69 overhead modules. This option can be selected by setting the PDF Truncated Symbol preference to True. Truncated is shown below.

One of PDF417's primary features is error detection and correction or data security. Each PDF417 symbol has 2 code words for error detection. (Similar to a check digit in standard bar code symbols.) The error correction capacity may be selected by the user, based on the needs of a specific application. Error correction compensates for label defects and misdecodes. There are essentially 2 types of errors that can occur in a bar code symbol, Erasures and Misdecodes. Erasures are missing or undecodable code words and misdecodes are errors that cause the reader to interpret a particular code word incorrectly. Nine error correction levels numbered 0 through 8 are available in the symbol specification. Each higher security level allows for a higher number of erasures and misdecodes to be recovered from. (Since it requires 2 code words to recover from a misdecode, one to detect the error and one to correct for it, a given security level can support half the number of misdecodes that it can undecoded or missing code words.)

Since error correction is encoded into additional code words, each higher security level adds additional overhead to a printed symbol. Higher security levels reduce the maximum number of data characters that can be encoded and also increase the size of a printed symbol. (A PDF417 symbol can contain a maximum of 928 total code words for data and error correction combined.)

The relationship between security level, error correction capacity and the number of additional code words or overhead required for a given security level is as follows:

The PDF Security Level property allows you to select a specific PDF417 error correction level from 0 to 8. You can also have the VariableText automatically select a security level based on a percentage of total symbol area to be used for error correction. If you set the PDF Security Level property to 9, you can then pass a percentage value in the PDF Pct Overhead property (from 0% to 99%). This "automatic" PDF Security Level mode is the best way to specify a security level because it guarantees that you will not waste symbol real estate with more error correction overhead than is necessary for small messages. It also insures that enough error correction will be generated for larger messages - A small message only needs a small amount of error correction capacity while a larger message needs more. If you set the value for the PDF Pct Overhead property to zero, the default percentage of 10% overhead will be used.

 


Aztec Code is a high density 2 dimensional matrix style symbology that can encode up to 3750 characters from the entire 256 byte ASCII character set. The symbol is built on a square grid with a bulls-eye pattern at its center. Data is encoded in a series of "layers" that circle around the bulls-eye pattern. Each additional layer completely surrounds the previous layer thus causing the symbol to grow in size as more data is encoded. Aztec's primary features include: a wide range of sizes allowing both small and large messages to be encoded, orientation independent scanning and a user selectable error checking and correction mechanism.

The smallest element in an Aztec symbol is called a "module" (i.e. a square dot). The module size and the amount of error correction are the only "dimensions" that can be specified for an Aztec symbol and both are user selectable. It is recommended that the module size should range between 15 to 30 mils in order to be readable by most of the scanners that are currently available. The module size is specified using the Matrix Module Size property.

The overall size of an Aztec symbol is dependent on the Matrix Module Size setting, the total amount of encoded data and also on the level of error correction capacity chosen by the user. The smallest Aztec symbol is 15 modules square and can encode up to 14 digits with 40% error correction. The largest symbol is 151 modules square and can encode 3000 characters or 3750 numeric digits with 25% error correction. There are four types of Aztec symbols, “Normal”, "Compact", "Full Range" and "Menu" symbols. You specify the type of Aztec symbol to generate using the Aztec Symbol Type property. Normal Aztec symbols can grow or shrink in size depending on the amount of data that you are encoding. With Normal Aztec symbols you also specify the amount of error correction overhead to include by specifying the percentage of the total symbol area to use for error correction. The Aztec Error Correction property is used for this purpose. Compact symbols have a smaller bulls-eye pattern and are limited in their overall size to having up to four "layers" of data surrounding the bulls-eye pattern. Full Range symbols have a larger bulls-eye pattern and can have up to 32 layers of data surrounding the bulls-eye. Do not confuse "Layers" with modules. A layer actually is made up of two stacked modules resembling a domino with each domino laid out around the bulls-eye pattern so that the long edge of the domino points away from the center of the symbol. If you set VariableText to generate Compact or Full Range Aztec symbols, you must also specify the total number of data layers in the symbol using the Aztec Total Layers property. If the total number of data layers is greater than the amount of layers required to encode a particular message, the remaining layers are filled with error correction data. If the amount of data that you need to encode will not fit in the number of data layers that you specify, an error event will be raised and no bar code symbol will be generated. Menu symbols are a special type of Aztec bar code that are typically used by scanner manufacturers to create bar codes that contain commands for enabling and disabling features in a bar code reader. Menu symbols can be either Compact or Full Range symbols and are only useful if you know the commands that a particular reader will recognize. VariableText does not provide support for Aztec Menu symbols.

 

Data Matrix is a high density 2 dimensional matrix style bar code symbology that can encode up to 3116 characters from the entire 256 byte ASCII character set. The symbol is built on a square grid arranged with a finder pattern around the perimeter of the bar code symbol.

There are two types of Data Matrix symbols each using a different error checking and correction scheme (ECC). The different types of Data Matrix symbols are identified using the terminology "ECC" followed by a number representing the type of error correction that is used by the encoding software. ECC 000 to ECC 140 are the original type of Data Matrix symbols and are now considered obsolete. The newest version of Data Matrix is called ECC 200 and is recommended for all new Data Matrix applications. The ECC 200 version of Data Matrix uses a much more efficient algorithm for encoding data in a symbol as well as an advanced error checking and correction scheme. VariableText fully supports all variations of the Data Matrix symbology however the author of the original symbology specification (CI Matrix Co.) highly recommends that ECC 000 - ECC 140 be used only where absolutely necessary to remain compatible with older systems.

VariableText allows you to select the ECC value using the Data Matrix Error Correction property. Each of the different ECC options are outlined below:

Data Matrix symbols designated by the terms ECC 000 to ECC 140 are the original type of Data Matrix symbol that uses a convolutional error correction scheme. There are actually five levels of error correction available for this type of Data Matrix symbol with each higher level of error correction designated as follows.

For all five ECC levels ECC 000 - ECC 140 there is also a user selectable option for a "Data Format" which defines the type of data that may be encoded in a Data Matrix symbol. The data format is selected using the Data Matrix Format ID property. The available formats are listed below:

 

ECC 200 is the latest and most advanced version of Data Matrix and is therefore strongly recommended for use in all new Data Matrix applications. ECC 200 uses a Reed-Solomon error correction algorithm that will automatically provide a varying degree of error correction for damage ranging from a minimum of roughly 20% to greater than 60% damage depending on the amount of data encoded ECC200 also uses a code set switching mechanism that is much more efficient at packing data into a symbol than any of the earlier encoding schemes (ECC 000 - ECC 140). ECC 200 is capable of encoding the entire 8 bit ASCII character set in a highly efficient manner and therefore does not provide for or require any Data Format options. In addition to encoding 8 bit ASCII data, ECC 200 also allows for a special function code called "FNC1" as well as special indicators for features like "Structured Append" and "Extended Channel Interpretation".
Structured append is a means for generating multiple bar codes containing a much larger data message than can be encoded into a single symbol. With structured append, each bar code contains a portion of a larger data message along with a number that identifies the portion of the message contained in the symbol.
When a bar code reader scans a symbol that is part of a sequence, it will not transmit the data until all symbols in a sequence have been read. It does not matter what order the bar codes are read in - the reader will correctly build the complete message.
Extended Channel Interpretation is a mechanism for creating user definable data encoding schemes. For example, suppose you wanted to replace the standard ASCII character set with a different character set (a foreign language character set for example), you could use the Extended Channel Interpretation feature in ECC 200 to indicate that the message encoded in a symbol conforms to the new interpretation.
Notes: To encode data to conform to specific industry standard it needs to be authorized by AIM International.

VariableText supports all features of the ECC 200 version of Data Matrix. Because ECC 200 supports the entire 8 bit ASCII character set and therefore cannot use ASCII character values to represent special features (like FNC1), VariableText provides two methods for interpreting the input data message. VariableText provides a Data Matrix Tilde Codes property that determines how the input data message is interpreted. If the Data Matrix Tilde Codes property is set to False then the Message property is assumed to not contain any special function codes like FNC1 or Extended Channel Interpretation codes. For most normal applications this option would normally be used.
If the Data Matrix Tilde Codes property is set to True then the tilde character (~) can be used in the input message as an indicator that the character(s) following the tilde are to be interpreted with a special meaning as outlined below. To encode a tilde (~) use the string: ~~ (i.e. two tilde characters). If no tilde characters or Nulls (ASCII 0) are present in the input message, then setting the Data Matrix Tilde Codes property to True has no effect on the resulting bar code symbol.

~X (a tilde character followed by any upper case alpha character) is used as a shift character for inserting control codes (characters with ASCII values 0 to 26) into a bar code message. For example, ~@ = NUL, ~A = ASCII 1,~G = BEL (ASCII 7), ~M = ASCII 13 (carriage return). If you need to insert ASCII control codes into a message, take the ASCII value for VariableText code (1-26) and find the corresponding letter in the alphabet and precede it with a tilde. i.e. The ASCII value for a carriage return character is ASCII 13 and the thirteenth letter of the alphabet is "M" therefore to insert a carriage return in a bar code message, you would use "~M".

~1 is used to represent the FNC1 code and is followed by normal data.

To encode data to conform to specific industry standards as authorized by AIM International, a FNC1 character shall appear in the first or second symbol character position (or fifth or sixth data position of the first symbol of structured append). FNC1 encoded in any other position is used as a field separator and shall be transmitted as a GS control character (ASCII value 29).

Notes: To encode data to conform to specific industry standard, it needs to be authorized by AIM
International. Contact AIM International at Tel: 703-391-7621 or email: adc@aimi.org
If the FNC1 code is used in the second character position, the input data before '~1' must be, between 'A' and 'Z', or between 'a' and 'z' or 2-digits between '01' and '99'. ~2 : is used to represent Structured Append and must be followed by a three 3-digit number between 1 and 255 representing the symbol sequence as well as a file identifier of six numeric digits. The file identifier is used to uniquely identify a sequence so that only logically linked sequences are processed as part of the same sequence. The symbol sequence identifier is a number between 1 and 255 that indicates the position
of the symbol within a sequence of up to 16 symbols. The sequence identifier actually contains two four bit values representing the sequence number and the total number of symbols in the sequence (i.e. m of n where m is the sequence number and n is the total number of symbols). The upper four bits of this value represent the position of the particular symbol as the binary value of (m-1) and the lower order four bits identify the total number of symbols to be concatenated as the binary value of (17-n). For example, symbol 3 in a sequence of 7 symbols with file ID: 001015 is represented by ~2042001015. The number 042 is derived as follows: 3-1=2 which equals 0010 when represented as a 4 bit binary number. 17-7=10, which equals 1010, when represented as a 4 bit binary number. After concatenating the two 4 bit binary values we end up with 00101010 which equals 42 in decimal.
~3 : Indicates that a message is to be used for reader programming purposes and is followed by normal data. This feature is only useful if you know the specific programming commands for your bar code reader. ~5 and ~6 : indicates that the data will contain an abbreviated format header and trailer followed by normal data. The ~5 or ~6 must appear as the first two characters in a message and must not be used in conjunction with structured append. Data Matrix provides a means of abbreviating an industry specific header and trailer in one symbol character. This feature exists to reduce the number of characters needed to encode data using certain structured formats. If a ~5 is used as the first two characters of a message, the header [)> + ASCII 30 + 05 + ASCII 29 will be transmitted by the reader before the data in the message and the trailer ASCII 30 + ASCII 4 will be transmitted following the data. Likewise, if a ~6 is used as the first two characters of a message, the header [)>+ ASCII 30 + 06 + ASCII 29 will be transmitted by the reader before the data in the message and the trailer ASCII 30 + ASCII 4 will be transmitted following the data.

~7NNNNNN is used to indicate Extended Channel NNNNNN where NNNNNN is 6-digit EC value (000000 - 999999). e.g. Extended Channel 9 is represented by ~7000009 ~dNNN creates ASCII decimal value NNN for a codeword (must be 3 digits).

Please refer to the official Data Matrix symbology specification for details on the meanings of all
codeword values for ECC 200. Contact AIM International at Tel: 703-391-7621 or email:
adc@aimi.org

 

The ECC 200 version of Data Matrix supports the ability to produce rectangular bar codes.
VariableText uses the Data Matrix Format ID property to indicate the overall shape of all ECC200 bar codes. Six options are available that force the bar code symbol to be both fixed in size and rectangular in shape. The overall size of the rectangular symbols is dependent on the size of the module that you have selected for the Matrix Module Size property. The table below shows the 6 different rectangular symbol options available along with size in modules and the amount of data that may be encoded for each option.

MaxiCode is a fixed size matrix style symbology made up of rows of hexagonal modules arranged around a bulls-eye finder pattern. A MaxiCode symbol has 884 hexagonal modules arranged in 33 rows with each row containing up to 30 modules. The maximum data capacity for a MaxiCode symbol is 93 Alphanumeric or 138 Numeric characters. The symbology was designed by United Parcel Service for package tracking applications. The design of the MaxiCode symbology was chosen because it is well suited to high speed, orientation independent scanning. Although the capacity of a MaxiCode symbol is not as high as other matrix style symbologies, it was primarily designed to encode address data, which rarely requires more than 80 characters. MaxiCode symbols actually encode two messages; a Primary and a Secondary message. The Primary message normally encodes a postal code, a 3 digit country code and a 3 digit class of service number. The Secondary message normally encodes an address and any other required data.

MaxiCode Modes:

MaxiCode has several "Modes" that determine how data is encoded in the symbol. The original MaxiCode specification supported modes 0 and 1, which are now obsolete and are therefore not supported by the VariableText. The mode is selected using the Maxi Code Mode property. The current specification supports the following Modes:

Modes 2 and 3 are reserved for use as a destination sortation symbol for use by carriers in the transportation industry. In Modes 2 and 3 a postal code, a country code and a service class number must be supplied along with a secondary message usually consisting of an address.
Mode 4 is designed to encode data as a "standard bar code symbol" where the data encoded in the symbol is not restricted to a specific application. In other words, Mode 4 should be used in all general purpose bar code applications other than transportation industry applications. Mode 5 is similar to mode 4 except that a higher level of error correction is employed. Because more symbol real estate us used for error correction in Mode 5, the amount of actual data that can be encoded in a Mode 5 symbol is reduced. The VariableText does not support Mode 5.
Mode 6 is reserved for bar code reader programming purposes and it has been left up to the bar code reader manufacturers to determine how to interpret data encoded using Mode 6.

Structured Carrier Messages in Mode 2 and 3 MaxiCode Symbols:

VariableText provides input properties for each of the three required Primary message fields
(Postal Code, Country Code and Service Class) as well as a property for the secondary message (the Message property). United Parcel Service has defined a special standard for formatting data in a MaxiCode symbol for use in UPS package tracking applications. The standard defines several things including the content and format of the data in the primary and secondary messages, a special sequence of "header" characters, and the specific characters to be used as delimiters or format codes and application identifiers.

For complete details on how to encode Structured Carrier Messages conforming to the UPS standards, please contact your local United Parcel Service representative or visit the UPS web site at
http://www.maxicode.com.

VariableText does not attempt to format the data in any way except in a special case as outlined below. In other words, when you use VariableText to produce a Mode 2 or Mode 3 bar code, you must provide all required data for the primary message and the data in the secondary message must contain all required header, delimiter and special formatting characters.
As a convenience VariableText will automatically parse out a Postal Code, the Country Code and the Service Class from any message that is passed in as a structured carrier message starting with the character sequence: [)>RS01 GS yy. In other words, if the input message (passed in the Message property) to VariableText starts with the string: [)>RS 01 GS yyaaaaaaaaa GS bbb GS ccc GS where yy is a two digit year, aaaaaaaaa is a valid postal code, bbb is a three digit country code and ccc is a class value, VariableText will automatically set the Postal Code, Country Code and Service Class parameters for the primary message to the values embedded in the input message. These values will also be removed from the secondary message.
(Note: The RS and GS symbols used here represent ASCII characters 30 and 29 respectively.)
For example, if the following message is supplied in the Message property, the Postal Code, Country Code and Service Class will be extracted from the Message and placed in the Maxi Zip Code, Maxi Country Code and Maxi Code Class properties automatically so that you do not need to fill in these properties in advance.

[)>RS01GS98152382802 GS 840GS001GS1Z00004951GSUPSNGS06X610GS159GS1234567GS
1/1GSGSYGS634 ALPHA DRIVEGSPITTSBURGHGSPARSEOT

If the above message is supplied in the Message property with the Maxi Code Mode property set to 2 or 3, the Postal Code value "152382802" and the Country Code value "840" and the Service Class value "001" will be removed from the secondary message and automatically encoded in the primary message. The actual message that will be encoded in the secondary message will be:
[)>RS01 GS981Z00004951 GS UPSN GS 06X610 GS 159 GS 1234567 GS 1/1 GS GS Y GS 634 ALPHA DRIVEGSPITTSBURGHGSPA RS EOT
Note: In Mode 2, the Postal Code parameter must be either a 5 or 9 digit number (all numeric characters) and in Mode 3, the Postal Code may contain up to 6 Alphanumeric characters.

 

RSS (Reduced Space Symbology) is a relatively new symbology that encodes up to 14 numeric digits along with an optional two-dimensional “Composite” bar code component that can encode up to 338 additional bytes of alpha/numeric data. The linear portion of a RSS-14 bar code symbol is capable of encoding 14 digits comprised of 13 numeric digits of user specified data and a single check digit that is automatically calculated for you. (i.e. 14 total digits). If you specify less than 13 digits for the linear portion of a RSS bar code, the number will automatically be left padded with an appropriate number of zeros so that the total number of digits (not counting the check digit) is 13.

The principle use of the RSS symbology is to identify items that cannot be marked with current linear symbols because of size restrictions. The Composite symbols provide additional supply chain data while allowing for the co-existence of symbologies already being used.

For more information on the RSS14 symbology, visit: http://www.uc-council.org
There are currently several variations of the RSS symbology including: RSS-14, RSS-14
Truncated, RSS-14 Stacked, RSS-14 Stacked Omni directional, RSS Limited and RSS Expanded.

RSS-14 and RSS-14 Truncated Symbols
For standard RSS-14 bar code symbols, the recommended Narrow Bar Width is 13 mils and the recommended Bar Height is 33 times the Narrow Bar Width (i.e. .43 inches for a standard symbol). The RSS-14 Truncated symbology is identical to the standard RSS-14 symbology except that the height of the bars is reduced to 14 times the Narrow Bar Width (i.e. .18 inches for a standard RSS-14 Truncated symbol). Although VariableText does not have a specific RSS-14 Truncated Symbology option, you can produce RSS-14 Truncated bar codes by selecting RSS-14 for the Symbology property and then setting the Bar Height property to 14 times the value that you choose for the Narrow Bar Width property.

To include a composite message in a RSS-14 bar code, append the composite message to the main numeric message in the Message property with a comma between the two strings. For example, if you set the Message property to: “1234567890123,Testing 123”, the RSS-14 bar code that is produced will have “1234567890123” encoded in the main symbol and “Testing 123” encoded in the composite portion of the symbol.

RSS bar codes do not require a “quiet zone” at either end of the bar code symbol however if you enable the Quiet Zone property, a quiet zone ten times the Narrow Bar Width value will be included at both ends of the symbol.

 

RSS-14 Stacked
RSS-14 Stacked is a variation of the standard RSS-14 symbology that allows the bar code to be printed in two rows. The purpose of RSS-14 Stacked is to reduce the overall length of the RSS-14 linear bar code so it can fit better on certain packaging configurations. This form of RSS-14 can be printed very small and is not generally intended for Omni directional scanning. It is used to encode 14 digits of numerical data and just like the Standard RSS-14 symbology; it can also contain a composite component.

The top row of the linear portion of a RSS-14 Stacked bar code symbol is always 5 times the narrow bar width in height and the bottom row is always 7 times the narrow bar width in height and the two rows are separated by a special separator pattern that is 1 times the narrow bar width in height. With RSS-14 Stacked bar codes, you cannot set the bar height independently of the Narrow Bar Width value.

RSS-14 Stacked Omni directional
The RSS-14 Stacked Omni directional symbology is almost identical to RSS-14 Stacked except that the two rows of the linear portion of a RSS-14 Stacked Omni directional bar code symbol are always 33 times the narrow bar width in height and the two rows are separated by a special separator pattern that is 3 times the narrow bar width in height. The unlike RSS-14 Stacked, the RSS-14 Stacked Omni directional symbology is designed to facilitate unidirectional scanning.
With RSS-14 Stacked Omni directional bar codes, you cannot set the bar height independently of the Narrow Bar Width value.

RSS Limited
RSS Expanded is yet another smaller variation of the RSS-14 symbology. It is printed in a single row however it is slightly narrower than a standard RSS-14 symbol. The number that you encode in a RSS Limited bar code must be less than or equal to 1999999999999. In other words the first digit in a full 13-digit number cannot be greater than one.

RSS Expanded
RSS Expanded is a variable length linear symbology capable of encoding up to 74 numeric digits or 41 alphanumeric characters in either a single or multiple rows. RSS Expanded is currently not supported by VariableText.