A famous engineer named Bob Pease (1940-2011) wrote many famous technical articles, and they were often (always?) titled “What all this …Stuff Anyway“. I was explaining to someone the other day that GS1-128 is the same as UCC/EAN-128, and what a Function 1 character was, and I thought “What’s all this GS1-128 Stuff Anyway”. So this article is in honor of Bob Pease.
GS1 is an organization that was formed by the merger of UCC and EAN about 10 years ago. They renamed the symbology that they previously called UCC-128 or EAN-128 to GS1-128 after the merger. It is the same symbology by whichever name.
The barcode verification software in some of our TruCheck systems was created before the symbology was renamed and still reports the symbology name of UCC/EAN-128. This gives rise to questions sometimes, like “What is UCC/EAN-128” and what is “GS1-128”.
In fact, the symbology known alternately as UCC-128, EAN-128, or UCC/EAN-128, or GS1-128 is really just Code 128 with the use of a special function character, known as Function 1, at the beginning of the data in the Code 128 symbol. Knowing your symbology is key, because it’s one of the essential steps in bardcode testing.
Although the Function 1 character has no printable representation, we want to show it in our report so that you can be sure that you correctly created a Code 128 symbol with this required Function 1 character at the beginning. In some of our older systems, our software will print a ‘#’ (pound sign) to represent this Function 1 character. In our newer systems we represent the Function character with the string “<F1>”.
You can confirm that the bar code actually encodes the Function 1 character and not a ‘#’, or <F1> by checking the C128 Encodation which shows the data in the bar code, exactly as it was encoded in Code 128 symbol characters. The Function 1 character is shown by an F above a 1.
Another way to confirm that the barcode does not contain ‘#’ at the beginning is to read it with an ordinary barcode reader and check what the reader transmits. A way to see if the Function 1 is encoded is to turn on “Symbology Identifiers” in a reader which should then pre-pend the barcode data with “]C1”, where the C indicates that the symbology is Code 128 and the 1 indicates that there is a Function 1 character at the beginning. Note that a Code 128 symbol without a Function 1 character at the beginning would have Symbology Identifier “]C0”. You may be interested to know for example that a UPC symbol would have “]E0” added to the front of the transmitted data. Each symbology has a unique letter and a uniquely defined set of “flag” characters after this letter to indicate special modes of the symbology, such as whether a Function 1 Character was present, but also whether an optional check digit has been encoded in the barcode and some other similar things.
Lastly, it is worthy of note that other symbologies have taken the lead from Code 128 and provide a way to encode a Function 1 at the beginning to indicate that the bar code is encoded according to GS1 rules. For example, a Data Matrix symbol (which is a two dimension matrix symbol) can encode a Function 1 character at the beginning and when it does it is referred to as GS1-Data Matrix. Likewise, a GS1-QR Code can be encoded with a symbology specific mode that indicates the intended inclusion of a Function 1 character. Even though there really is no Function 1 character in these GS1-QR Code symbols, it is the functionality of the Function 1 character, that is to make it a GS1 QR Code, that is indicated by the symbology encodation mode.
In any case in which a symbology is used as a GS1 symbology, the data content of the symbol must follow the GS1 system. This means that the data will contain defined fields of data, such as an item number, a serial number, an expiration date, or a batch number, to name only a few. The actual data that is encoded is specified in the bar code itself by prefixes to the data fields. These prefixes are called Application Identifiers (AI’s) which are defined by GS1 so that everyone can parse the data in the bar code and extract the data with confidence that they can understand the data.
For example the barcode data:
(01)00012345678905(17)141231(10)ABC123 means that the item number (01) is 00012345678905 and the expiration date (17) is December 31, 2014 and the Lot Number (10) is ABC123. In the bar code, the application identifiers are encoded without the helpful (to human readers) parenthesis, but the parenthesis are added in any text representation of the data for clarity to a human reader.
Even though GS1 has created confusion by renaming the Code 128 symbology more than once, the venerable Code 128 symbology continues to be used in thousands of applications every day with Function 1 characters, whether they are referred to as UCC-128 or GS1-128, or whatever. So what is all this GS1-128 stuff anyway? It’s all just Code 128, just as it has always been.
by Glenn Spitz