The new coupon code (AI 8110) is required to be printed in GS1 DataBar Expanded Stacked. Its data can be quite long. In fact the length is the longest we have ever seen in GS1-128 - from 25 to 39 digits. GS1 DataBar Expanded Stacked can have multiple rows, depending on the data and the value of SegmentPerRow. The value of SegmentsPerRow can be anywhere between 2 and 22. 22 also produces one-row barcode.
In some cases, it is desirable to find out the range of SegmentPerRow, based on the data encoded and the number of rows desired. For example, our coupon codes can be between 25 to 39 digits, but we want all barcodes created two rows.
To find out the relationship among the data length, segment per row and the number of rows in the barcode created, we wrote a simple perl program. It calls the encoder DLL included in Morovia DataBar Fontware to get the barcode string, then parses the string to find out how many rows in the result. It generates randomized data as input (based on DataBar Spec, it is not necessary as numeric data with the same length should always create the same length barcodes, all things being equal). It increases the number of digits one by one, and calculates using all possible SegmentsperRow values. Warning: if you are running the trial version, do not run this program - you will have to press OK button hundreds of times to complete the program (each call pops up a ‘trial notice’ message box).
We found that the results can be divided into five groups - 25 digits, 26-32, 33-39, 40-46 and 47-49. It seems that each segment encodes 6 digits. Note - the digits we talked here refer to the coupon code, not including the AI portion.