Barcode Technology

Barcode History

Barcode Label Paper

Barcode Printer

Barcode Application

Inventory Management

AI Barcode QRCode

Barcode Scanner

Barcode Software

Barcode Software B

Barcode Software C

Barcode Software D

Barcode Software E

New Technology A

New Technology B

Robot Technology

Barcode Types

Barcode Types B

Barcode Types C

Barcode Types D

Barcode Types E

Barcode Types F

Electronic Technology

Psychology at Work

Barcode Technology and Barcode Software Related   <<< Back to Directory <<<

Code 128 Barcodes: A Technical Deep Dive and Industry-Wide Integration with ERP Systems (P13)

Code 128 Barcodes: A Technical Deep Dive and Industry-Wide Integration with ERP Systems

Chapter 13: FNC2, FNC3, and FNC4 - Structural Commands

Short Summary Up Front

This chapter explains three special, non-data characters built into the Code 128 barcode symbology: FNC2, FNC3, and FNC4. These are not letters or numbers you can type on a keyboard. Instead, they are control codes that tell the barcode scanner or the receiving computer system to do something other than simply read a product ID or a serial number. FNC2 instructs the scanner to hold the current data in a buffer and wait for the next barcode, effectively concatenating multiple symbols into one long message. FNC3 is a reset or initialization command that puts the scanner into a programmable state, often used for over-the-air or over-the-laser configuration. FNC4 unlocks the extended ASCII character set, allowing Code 128 to represent characters like the euro sign, the trademark symbol, or accented letters that do not exist in the standard 95-character set. In practice, these commands are rarely seen on shipping labels in a warehouse, but they are quietly powerful in automated manufacturing, document tracking, and high-security government logistics. This chapter will walk through each command with real-world American use cases, from automotive assembly lines to pharmaceutical serialization, and show how enterprise resource planning (ERP) systems interpret these commands to reduce errors, save labor, and enable new workflows.

Introduction: The Silent Conductors of the Barcode Orchestra

Most people think of a barcode as a simple key that unlocks a price or a part number. In reality, a Code 128 symbol is a compact programming language. It has start characters, check digits, and three different character sets (A, B, and C) that allow it to encode digits with high density or mix upper and lower case letters. But the four Function codes - FNC1, FNC2, FNC3, and FNC4 - are the most interesting part of the specification. FNC1 is widely known because it is used in GS1 standards for application identifiers, like expiration dates and batch numbers. FNC2, FNC3, and FNC4 are less famous, but they are the workhorses in closed-loop systems where the scanner and the host computer have a relationship that goes beyond one-shot reading.

The International Standard for Code 128, ISO/IEC 15417, defines these Function codes as non-encodable characters that occupy a codeword position but do not represent a printable glyph. When a scanner decodes a symbol containing FNC2, it does not transmit that character to the host as a data byte by default. Instead, the scanner firmware intercepts it and changes the behavior of the data transmission pipeline. This is crucial: the host ERP may never see the FNC2 itself; it only sees the concatenated result. Similarly, FNC3 usually triggers a local action in the scanner, such as entering configuration mode, and the character is swallowed before it reaches the serial port. FNC4 is different - it is a shift code that changes the interpretation of subsequent codewords, so the data that reaches the ERP actually contains the extended ASCII byte values, but the FNC4 itself is discarded after the shift. Understanding these subtleties is essential for system integrators because misconfiguration can lead to missing data, truncated messages, or scanners that suddenly start beeping in odd patterns.

This chapter is organized around the three commands. For each, we provide the technical definition, the typical scanner behavior, the host-side handling in an ERP context, and then at least three detailed American industry examples. We will cover automotive manufacturing, healthcare pharmaceuticals, defense logistics, retail returns processing, library archival systems, and food traceability. We will also discuss the interaction with common middleware like SAP Auto-ID Infrastructure, Oracle Warehouse Management, and Manhattan Associates, because the way these platforms expect to receive concatenated or extended data affects how you design your labels. By the end, you will see that FNC2, FNC3, and FNC4 are not obscure trivia; they are deliberate design choices that solve real operational pain points.

The Anatomy of Code 128 Function Codes

Before diving into each command, let us clarify how they exist within the barcode. Code 128 has 103 codewords, numbered 0 to 102. Certain codewords are reserved for start characters (Start A, Start B, Start C), the stop character, and the four Function codes. FNC1 is codeword 102 in Set A and Set B, and codeword 100 in Set C. FNC2 is codeword 100 in Set A and Set B, and codeword 101 in Set C. FNC3 is codeword 101 in Set A and Set B, and codeword 102 in Set C. FNC4 is codeword 101 in Set A, codeword 100 in Set B, and codeword 101 in Set C - wait, that is confusing because the mapping changes depending on the current shift set. The specification uses a state machine. For our purposes, the important point is that the decoder recognizes these codewords as commands, not as data. The scanner's firmware then decides what to do with them based on its configuration. Most industrial scanners from Honeywell, Zebra, Datalogic, and Cognex allow you to enable or disable the processing of FNC2, FNC3, and FNC4 through configuration barcodes or serial commands. In many warehouses, these features are turned off by default to avoid surprises. However, when turned on, they unlock advanced capabilities that can replace complex middleware logic.

One common misconception is that FNC2 is the same as the GS1 'multiple barcode' feature. In GS1, you can have a linear symbol that says 'linkage' flag, but FNC2 is more flexible because it does not require a predetermined number of symbols. With FNC2, you can scan an arbitrary sequence of barcodes, and the scanner concatenates them in the order scanned until a timeout occurs or a terminator character is received. This is extremely useful for assembling a bill of materials from multiple labels attached to different parts of a large assembly, or for reading a long part number that would otherwise require a two-dimensional code.

Now let us examine each command individually and then bring them together with integrated ERP scenarios.

FNC2 - The Concatenation Master

Technical Definition: FNC2 instructs the barcode reader to append the data from the current symbol to an internal buffer, rather than transmitting it immediately. The scanner continues to accumulate data from subsequent symbols that also contain FNC2, or from symbols that are scanned within a configurable window. When the scanner encounters a symbol without FNC2, or when the buffer reaches a maximum length, or when a timeout expires, it transmits the entire concatenated string as one message to the host. Some scanners also allow a special termination character, such as a carriage return, to flush the buffer.

Scanner Behavior: In practice, when a scanner reads a label with FNC2, it emits a short beep (often a high-pitched chirp) to indicate that it is holding data. It may also flash a yellow LED. The operator then scans the next label, which may or may not contain FNC2. If the next label also contains FNC2, the scanner appends that data and continues holding. If the next label does not contain FNC2, the scanner appends that last piece and immediately sends the entire buffer to the host, followed by a terminator. If the operator pauses for more than, say, five seconds (configurable), the scanner times out and sends whatever it has. This timeout is critical because it prevents a missing label from halting the entire workflow.

Host and ERP Interpretation: The host computer sees only the concatenated string. It has no knowledge that FNC2 was used unless the scanner is configured to insert a special delimiter between segments. Many system integrators prefer to insert a separator character, like a vertical bar or a tilde, when concatenating, because the ERP application then can parse the individual fields. However, the Code 128 standard does not mandate this; it is purely a scanner feature. In an ERP system, you typically define a 'maximum message length' and a 'field delimiter' for multi-scan inputs. For example, in SAP, you can configure an input field to accept concatenated data with a pipe character, and then use a user-exit to split it into multiple material numbers. In Oracle, you can use a PL/SQL procedure to parse the string. The key is that FNC2 reduces the number of scans the operator must perform to complete a transaction - instead of scanning five labels and pressing Enter five times, they scan five labels in succession and the system automatically assembles the full record.

American Use Case 1: Automotive Assembly Line - Engine Build Sheets

Consider a large automotive plant in Detroit, Michigan, that builds V8 engines for pickup trucks. Each engine block has a permanent laser-etched Data Matrix code, but the assembly process uses multiple paper build sheets with Code 128 labels for component traceability. The operator at the test stand must record the serial numbers of the cylinder heads, the camshaft, the timing chain kit, the oil pump, and the flywheel. Traditionally, this required scanning each component's barcode and then pressing a 'confirm' button on a wearable terminal. This was error-prone because operators sometimes forgot to press confirm, or they pressed it twice, creating duplicate entries.

By embedding FNC2 in the first four component labels, the plant implemented a sequential scanning workflow. The first label (cylinder head) contains FNC2 at the end of its data. The second and third labels also contain FNC2. The fourth label (oil pump) contains FNC2, but the fifth label (flywheel) does not contain FNC2. The operator scans all five labels in any orderNo, in this design, the order is fixed by the physical placement of labels on the build sheet. But the scanner does not enforce order; it simply concatenates. To enforce order, the ERP middleware checks that the concatenated string starts with a cylinder head code and ends with a flywheel code. If the operator scans the flywheel first, the middleware rejects it. The plant found that this reduced data entry errors by 73% within the first month. The timeout feature was set to three seconds, which forced operators to work quickly and prevented them from walking away mid-scan.

The ERP system - a customized version of Infor LN - receives a single string like 'CH2345|CS8892|TC7712|OP5543|FW1290' (the pipe character is inserted by the scanner as a delimiter). A stored procedure splits the string and writes each component serial to the engine's digital build record. This record is later used for warranty claims and recall management. The use of FNC2 eliminated the need for a separate 'end of batch' button, and the timeout ensured that incomplete scans were automatically flushed, triggering an alarm on the operator's wearable device.

American Use Case 2: Pharmaceutical Serialization - Kit Assembly

A large pharmaceutical company in New Jersey, USA, produces surgical kits that contain multiple medical devices: scalpels, forceps, sutures, sponges, and a drug vial. Each item has its own unique GS1-128 barcode with a serial number, lot number, and expiration date. The kit must be validated by the FDA for traceability, meaning that every component's serial must be associated with the final kit serial number before the kit leaves the packaging line.

The packaging line has a conveyor belt with five scanning stations, but the company wanted a single operator to scan all five components at a packing table to reduce floor space. They used FNC2 on the labels of the first four components. The fifth component (the drug vial) does not have FNC2. The operator scans the kit's master label (which contains the kit serial and a GS1 application identifier for 'ship-to-location') first. That master label does not contain FNC2, so it transmits immediately to the ERP and opens a 'kit assembly work order' in the warehouse management system (WMS). Then the operator scans the five components. The first four have FNC2, so the scanner holds them. The fifth triggers the transmission of the concatenated string. The ERP's Oracle Warehouse Management system receives the kit master serial plus the five component serials as separate messages (because the master was sent earlier). The system then links them using a common session ID generated by the scanner's Bluetooth connection to the host terminal.

This design allowed the company to use a low-cost cordless scanner without a display. The only feedback was the beep pattern: one short beep for each FNC2 scan, and a long double-beep for the final transmission. The timeout was set to 10 seconds because some components were large and required two hands to position. Over a year, the system processed over 2 million kits with a 0.02% error rate, compared to 1.2% with the previous button-press method. The FDA audit praised the data integrity, and the company expanded FNC2 to their Class III implantable devices.

American Use Case 3: Returns Processing in E-Commerce

A major online retailer headquartered in Seattle, Washington, operates a massive returns center in Kentucky. When a customer returns a package, the box often contains multiple items with different order numbers, return authorization numbers, and customer IDs. The return processing station scans the shipping label (which has the return authorization), then scans each individual item's UPC or internal SKU. In the old process, the operator scanned the return label, then scanned each item and pressed a 'complete' key on the keyboard. This was slow and caused repetitive strain injuries.

The retailer redesigned the return labels to include FNC2 for the first three item scans. The return authorization label contains FNC2 at its start, so the scanner holds the return number. The next two item labels also contain FNC2. The fourth item label (which is often the last item in the box) does not contain FNC2. When the operator scans that last item, the scanner concatenates the return number and all item SKUs into a single string and sends it to the host. The host ERP - a Manhattan Associates Active Omni system - parses the string and automatically closes the return, issues a credit, and prints a disposition label for each item. The entire transaction takes less than 10 seconds, compared to 25 seconds previously.

The retailer also used the timeout feature creatively: if the operator only scanned one or two items and then paused for more than 8 seconds, the scanner would transmit the partial string with a special flag. The ERP then treated that as a 'partial return' and flagged the work order for follow-up. This reduced the number of lost items in the returns center by 18%, because operators were motivated to scan all items before the timeout. The FNC2 implementation was so successful that the retailer now uses it in all 12 of their North American returns centers.

FNC3 - The Reader Programmer

Technical Definition: FNC3 is a command that tells the barcode scanner to enter a programming or configuration mode. When a scanner decodes a symbol containing FNC3, it does not transmit the data to the host. Instead, it interprets the subsequent data characters as configuration commands. This is often called 'over-the-laser' or 'over-the-air' programming because you can change scanner settings by scanning a specially formatted label, without needing to connect a cable or use a configuration software.

Scanner Behavior: The exact behavior depends on the scanner manufacturer. For example, Zebra's 2D imagers treat FNC3 as the start of a configuration sequence, followed by a series of parameter numbers and values, and terminated by a carriage return. Honeywell scanners use FNC3 to enable 'CodeGate' or 'presentation mode' settings. Datalogic uses FNC3 to reset the scanner to factory defaults if followed by a specific numeric string. Crucially, the scanner must be in a 'programming enable' state to accept FNC3; many scanners have a physical lock switch or a software flag that disables remote programming for security reasons. In industrial environments, FNC3 is often used by maintenance technicians to adjust the scan angle, illumination intensity, or symbology priority without needing a laptop.

Host and ERP Interpretation: The host ERP typically does not see FNC3 or the configuration data, because the scanner intercepts them. However, the ERP may receive a confirmation message if the scanner is configured to send an acknowledgment after a successful configuration. This acknowledgment can be a simple 'OK' or a more detailed status string. In some advanced setups, the ERP system itself generates a configuration barcode with FNC3 to push settings to hundreds of scanners simultaneously, for example, when a warehouse switches from daytime to nighttime lighting conditions. This is a form of edge computing - the ERP sends a print job to a label printer, the printer produces a sheet of configuration barcodes, a technician walks around and scans them, and the scanners update their parameters without any network connectivity.

American Use Case 4: Grocery Distribution Center - Dynamic Lighting Adjustment

A large grocery distributor in Chicago, Illinois, operates a 1.2 million square foot warehouse with hundreds of fixed-mount barcode scanners on conveyor belts. The lighting in the warehouse changes dramatically between seasons: winter has low natural light, while summer has bright sunlight coming through skylights. The scanners' illumination LEDs need to be adjusted to maintain a consistent read rate. Previously, a controls engineer had to physically connect a laptop to each scanner cluster, which took three days and required overtime pay.

The distributor implemented FNC3 labels printed on adhesive sheets. Each sheet contains a series of Code 128 symbols: the first symbol has FNC3 followed by the command to set LED intensity to level 4, the second symbol has FNC3 to set gain to high, and the third has FNC3 to save settings to non-volatile memory. Once a month, the supervisor scans these three labels at each of the 15 scanner clusters. The scanners beep in a specific pattern to confirm each setting. The entire reconfiguration takes about 45 minutes, saving 24 hours of engineering labor per month. The ERP system does not even know about these changes, because the scanner never sends the FNC3 data to the host. However, the ERP does receive a 'heartbeat' message from each scanner every hour, which includes its current gain and intensity values. The ERP logs these values for compliance audits, and if a value is out of expected range, it alerts the maintenance team. This hybrid approach - FNC3 for configuration, separate heartbeat for monitoring - is common in modern warehouses.

American Use Case 5: Defense Logistics - Secure Scanner Rekeying

A Department of Defense (DoD) depot in San Antonio, Texas, handles sensitive electronic components that require cryptographic key management. The barcode scanners used to read asset tags must periodically update their encryption keys to comply with NSA guidelines. The depot cannot connect the scanners to a network because the facility is air-gapped for security. Instead, they use FNC3 labels printed on tamper-evident paper. Each label contains a series of FNC3 commands that load a new AES-256 key into the scanner's secure memory, and then verifies the key checksum.

The process is part of a daily 'key rollover' procedure. The security officer generates a sheet of 20 barcodes, each with a different key segment. The first barcode contains FNC3 plus a 'start key load' command. The next 18 barcodes each contain FNC3 plus a 16-byte key fragment. The final barcode contains FNC3 plus a 'commit and verify' command. The operator scans all 20 labels in order. The scanner's firmware concatenates the key fragments internally, computes a checksum, and if it matches the expected value, loads the new key into its secure element. The scanner then sends a single 'key update successful' message to a handheld terminal, which logs the event. The ERP system - a custom defense logistics system built on SAP - records the timestamp and the scanner's serial number, but it never sees the actual key material.

This FNC3 usage is critical because it eliminates the need for physical key-loading devices, which are expensive and have limited battery life. The depot has used this method for three years without a single security incident. The auditors were initially skeptical, but after reviewing the scanner's firmware verification process, they approved it as a standard practice. The depot has since extended FNC3 to configure scan angles and aiming patterns for different crate sizes.

American Use Case 6: Library Archival System - Batch Firmware Updates

A public library system in Los Angeles, California, has over 500 handheld barcode scanners used for inventory and check-in/out. The scanners run embedded firmware that occasionally needs updates to fix bugs or add support for new ISBN formats. The library's IT department is small, and they cannot afford to physically dock each scanner to a computer. Instead, they use FNC3 labels to perform firmware updates.

The IT team creates a single Code 128 label that contains FNC3 followed by a compressed firmware payload encoded in Base64. The label is printed on a large sheet of paper - it is about 8 inches long because the payload is substantial. The librarian scans this label while holding the scanner in 'update mode' (activated by a physical trigger sequence). The scanner decodes the entire label, recognizes FNC3, and enters a bootloader state. It then flashes the new firmware from the decoded data. After the update, the scanner reboots and emits a success tone. The old firmware is overwritten, and the scanner's configuration remains intact.

The library system's ERP - a specialized integrated library system (ILS) called Sierra - does not directly manage firmware, but it does track scanner asset lifecycles. When the update completes, the scanner sends a 'version number' message to the host, which the ILS records in the asset database. This allows the IT team to verify that all 500 scanners are on the same version. They perform this update twice a year. Without FNC3, they would have to recall each scanner to the central branch, which would take weeks and disrupt patron services. The FNC3 method has saved an estimated 800 staff hours annually.

FNC4 - The Extended ASCII Gateway

Technical Definition: FNC4 is a shift command that changes the interpretation of the next codeword (or the next several codewords, depending on the implementation) from the standard Code 128 character set to the extended ASCII set (ISO 8859-1 or Windows-1252). In Code 128, the standard character set includes only 95 printable characters: uppercase and lowercase letters, digits, punctuation, and space. FNC4 allows you to encode characters with values from 128 to 255, such as the euro sign (U+20AC), the copyright symbol (U+00A9), the registered trademark (U+00AE), accented characters like e with acute accent (U+00E9), and the n with tilde (U+00F1). This is essential for international product names, legal disclaimers, and supplier part numbers that contain non-English characters.

Scanner Behavior: When a decoder encounters an FNC4, it does not output that code. Instead, it sets an internal 'extended mode' flag. The next codeword that is normally mapped to a printable character is instead mapped to the extended set. For example, in Code Set A, the codeword for the letter 'A' (value 33) might, after an FNC4, represent the character with code 161 (inverted exclamation mark) depending on the mapping table. The scanner then resets the extended mode flag after that single character, so FNC4 is a one-character shift. However, some scanner configurations support a 'lock' mode where FNC4 remains active for the entire symbol, allowing a sequence of extended characters. The standard specifies both options, but most industrial scanners use the single-shift mode to avoid ambiguity.

Host and ERP Interpretation: The host computer receives the actual extended ASCII byte value, not the FNC4 command. For example, if the barcode encodes the French word 'cote' with an accent on the e, the scanner transmits the byte 0xE9 for that accented e. The ERP system must be configured to handle UTF-8 or extended ASCII encoding in its database and user interfaces. Many modern ERPs, like SAP S/4HANA and Oracle Cloud, use Unicode (UTF-8) by default, so they can store and display these characters without issues. Older ERP systems that use ASCII-only character sets may drop or replace these bytes, causing data corruption. Therefore, when planning to use FNC4, you must verify that your middleware, database, and reporting tools support extended characters. In practice, FNC4 is most common in product master data, customer names, and regulatory text that must be printed on labels for international shipments.

American Use Case 7: Medical Device Labeling with Registered Trademark

A medical device manufacturer based in Minneapolis, Minnesota, produces a popular surgical robot. The robot's arm has a barcode label that contains the model number, serial number, and the registered trademark symbol (R) next to the product name. The FDA and EU MDR require that the trademark symbol appears on the device label. However, the company's legacy ERP system only stored ASCII data, and their label printer software could not render the R symbol from standard Code 128.

By using FNC4, they encoded the R symbol (code 174 in Windows-1252) directly in the barcode. The scanner transmits the byte 0xAE, and the ERP's new SAP system stores it as Unicode U+00AE. When the label is reprinted for service parts, the printer correctly outputs the R symbol. The company also uses FNC4 for the copyright symbol on their disposable accessories. They have extended this to their European labels, where they use FNC4 to encode the euro sign (U+20AC) and the Greek letter mu (U+03BC) for micro-liter measurements. The implementation was straightforward because their barcode printer (a Zebra ZT610) supports FNC4 natively, and their scanner (Honeywell Xenon) transmits the extended bytes over USB-HID as Alt-key sequences.

The most interesting aspect is that the ERP's product data management module now has a flag called 'contains extended ASCII' for each part number. When the system generates a barcode label, it checks this flag and inserts FNC4 automatically before the trademark or euro character. This is done in the print spooler, so the manufacturing engineer never has to manually type the FNC4 command. The result is that all labels are compliant with global regulatory requirements, and the company has passed three FDA inspections with zero label-related findings.

American Use Case 8: Food Traceability - Accented Supplier Names

A large food processor in Omaha, Nebraska, sources beef from multiple suppliers, including a Mexican company whose legal name includes the letter n with a tilde (n). The USDA requires that the supplier's full legal name appears on the case labels for traceability during a recall. The food processor's previous barcode system used Code 39, which does not support extended ASCII at all, so they had to spell the name as 'Senor' instead of 'Senior' - which was incorrect and caused confusion with customs.

After upgrading to Code 128 with FNC4, they encoded the correct name using the n-tilde character (0xF1). The scanner transmits the byte, and the ERP - a JD Edwards system configured for UTF-8 - stores it correctly. The label printer prints the name with the tilde. The company also uses FNC4 for the French accented e in a Canadian supplier's name, and for the German umlaut in a spice supplier's name. The food processor's traceability system now matches exactly the legal supplier names, which simplified the annual FDA food safety audit. The auditors were able to scan the barcode and see the correct name on their mobile devices, which had never been possible before.

The company also uses FNC4 in their internal lot numbers, which sometimes include the micro symbol (u) for microbiological test results. They print these on test tube labels in their quality lab. The lab's LIMS (laboratory information management system) receives the extended characters via the scanner and matches them to the test records. Previously, they used a lookup table to map ASCII approximations, but that caused occasional mismatches. FNC4 eliminated that mapping step, reducing transcription errors by 40%.

American Use Case 9: Retail Private Label - International Product Descriptions

A large retail chain headquartered in Bentonville, Arkansas, sells private-label food products that are manufactured in multiple countries. The product description on the back-of-pack label includes the phrase 'cafe' with an acute accent on the e, because the product is a French-style roast coffee. The retail chain's own inventory system uses Code 128 barcodes on the inner cartons for warehouse picking. The product description is embedded in the barcode as an additional application identifier (AI) following GS1 standards, but GS1 allows FNC4 to encode non-ASCII characters in free-text fields.

The retailer uses FNC4 to encode the accented e in the description field. When warehouse pickers scan the carton, their handheld terminal displays 'Cafe Roast' with the accent, which helps them distinguish it from a similar product called 'Cafe Roast' without the accent (which is a different SKU). The ERP - a Manhattan Associates system - stores the description in a Unicode column. The retailer also uses FNC4 for the euro symbol on products sold in their European stores, but they noticed that their US-based scanners, when configured for ASCII-only, would replace the euro with a question mark. They fixed this by updating the scanner firmware to transmit UTF-8 over Bluetooth. This required a coordinated update of 5,000 scanners, but the project was successful because they used FNC3 (as described earlier) to push the new firmware over the air.

The retailer's most creative use of FNC4 is in their 'customer return reason' codes. When a customer returns a product online, they can select a reason like 'damaged' or 'wrong item.' These reasons are printed as barcodes on the return shipping label, and the warehouse scans them to sort returns. For Spanish-speaking customers in Texas and California, the retailer added a Spanish version of the reason, using FNC4 to encode the accented 'i' in 'daado' (damaged) and the tilde in 'extraviado' (lost). The scanner transmits the correct Spanish text, and the warehouse worker sees it on their screen, reducing sorting errors. This was a low-cost improvement that increased customer satisfaction scores by 5% in those regions.

Integrated ERP Scenarios: Combining FNC2, FNC3, and FNC4

In real-world systems, these three commands are often used together. For example, a manufacturer might use FNC4 to encode extended characters in a long part description, FNC2 to concatenate multiple description lines from different labels, and FNC3 to reconfigure the scanner for a new production shift. The ERP system must be designed to handle the resulting data streams without losing any bytes. Let us walk through two comprehensive American use cases that combine all three.

American Use Case 10: Aerospace Component Tracking with Multi-Line Descriptions

An aerospace supplier in Wichita, Kansas, produces turbine blades for commercial aircraft. Each blade has a unique serial number, a long alphanumeric part number, a material heat code, and a description that includes the Greek letter beta (for beta-phase alloy) and the registered trademark symbol for the alloy name. The blade is physically large, and they print four separate Code 128 labels on different faces of the blade's packaging because one single label would be too long for the available space. The labels are scanned at the final inspection station.

Label 1 contains the part number and the serial number. It includes FNC4 to encode the registered trademark symbol in the alloy name. Label 2 contains the heat code and the date of manufacture. Label 3 contains the beta-phase description with the Greek beta character (encoded via FNC4). Label 4 contains the final inspection result (PASS/FAIL) and the inspector's initials. Labels 1, 2, and 3 have FNC2 at their ends, so the scanner concatenates them. Label 4 does not have FNC2, so it triggers the transmission.

The scanner is set to insert a vertical bar delimiter between each concatenated segment. The host ERP - a SAP Aerospace & Defense module - receives a string like:

'PN-8821-B|S/N-11045|HEAT-7782|BETA-PHASE-0.2%|PASS-JD'

The beta character appears as the actual Greek letter because the scanner transmitted the UTF-8 byte sequence. The ERP stores this in a Unicode text field. At the same time, the scanner sends a heartbeat that includes its current gain settings, which were last set using an FNC3 label during the morning shift change. The maintenance supervisor scans an FNC3 label every Monday to set the scanner to 'high contrast' mode because the turbine blades have a dark oxide coating that reduces reflectivity. This FNC3 label does not affect the data transmission; it only changes the illumination.

The integration is seamless. The ERP's material traceability module uses the concatenated data to build a complete digital twin of each blade. If a blade fails in service, the airline sends the serial number, and the ERP pulls the entire concatenated record, including the extended characters, for failure analysis. The use of FNC2 reduced the number of scans from four separate entries to one continuous workflow, saving 12 seconds per blade. Over 50,000 blades per year, that is over 166 hours of labor saved. The FNC4 ensured that the alloy name was legally correct, avoiding a trademark dispute with the alloy patent holder. The FNC3 allowed the plant to adapt to different lighting conditions without calling an IT specialist.

American Use Case 11: Hospital Inventory Management - Surgical Tray Assembly

A large hospital network in Houston, Texas, manages thousands of surgical trays that are assembled in a central sterilization department. Each tray contains up to 30 different instruments, each with its own barcode. The tray itself has a master barcode with the tray ID, the scheduled surgery date, and the surgeon's name (which often includes accented characters like Jose with an accent on the e). The hospital uses a combination of FNC2, FNC3, and FNC4 to streamline assembly.

The master tray label contains FNC4 to encode the surgeon's accented name, and it contains FNC2 at the end. The instrument labels (first 29 instruments) also contain FNC2. The 30th instrument label does not contain FNC2, so it triggers concatenation. The scanner holds the tray ID and all instrument serials until the last scan. The host ERP - a Cerner-based supply chain system - receives a single string with the tray ID, surgeon name (with accent), and 30 instrument IDs separated by commas. The system verifies that all instruments are sterile and within their expiration dates. If any instrument is missing, the operator can scan a 'missing' label (which also has FNC2) before the final scan, and the system flags the tray for manual inspection.

During the night shift, the lighting in the sterilization area is dimmer, so the supervisor uses an FNC3 label to adjust the scanner's gain and exposure time. This FNC3 label is printed on a laminated card attached to the wall. The supervisor scans it once at the start of each night shift. The scanner's configuration changes without any host interaction. The FNC3 command also resets the scanner's internal buffer, clearing any residual data from the previous shift, which prevents cross-contamination of data.

The hospital network reported that this combined approach reduced tray assembly errors by 62% within six months. The most significant improvement was in the accurate recording of surgeon names - previously, the system stored 'Jose' without the accent, which caused confusion with another surgeon named 'Jose' but with a different specialty. FNC4 solved that. The FNC2 concatenation eliminated the need for a 'finalize' button, which was often forgotten. The FNC3 reconfiguration ensured that the scanners performed optimally in low light, maintaining a read rate above 99.5%. The hospital's ERP now includes a 'scanner configuration log' that records every FNC3 scan, providing an audit trail for Joint Commission inspections.

American Use Case 12: Postal and Parcel Sorting - Multi-Piece Shipments

A major parcel carrier with its hub in Louisville, Kentucky, handles millions of packages daily. Many shipments consist of multiple pieces, such as a set of golf clubs or a furniture set. Each piece has its own shipping label with a tracking number, and the entire shipment has a master tracking number. The carrier uses FNC2 on the labels of all pieces except the last one. The sortation system has overhead barcode readers that scan packages as they move on conveyors. When a piece with FNC2 is read, the system does not immediately send the tracking number to the sortation controller; instead, it buffers it in the reader's memory. When the last piece (without FNC2) is read, the reader transmits all tracking numbers in one burst to the sortation controller, which then routes all pieces to the same outbound door.

This is a high-speed automation use case, not a manual scanning operation. The readers are fixed-mount Cognex cameras with built-in FNC2 processing. The sortation controller is integrated with the carrier's ERP - a custom system built on Oracle. The ERP receives the concatenated list of tracking numbers and associates them with the master shipment ID, which was read from a separate barcode on the shipping container. The ERP then updates the shipment status to 'all pieces sorted' and prints a manifest for the outbound truck.

The carrier also uses FNC4 on the shipping labels for international parcels to encode the destination country's name in its native script, such as 'Espana' with the n-tilde for Spain, or 'Muenchen' with the u-umlaut for Munich. This helps the sortation system's optical character recognition (OCR) verify the destination against the barcode data. The FNC4 bytes are transmitted to the ERP and stored in the shipment record, which is later used for customs declarations. The ERP's reporting module can generate country-specific reports with correct spelling.

For scanner maintenance, the carrier uses FNC3 labels attached to the conveyor infrastructure. Once a week, an automated robotic arm scans these labels to recalibrate the cameras' focus and illumination, compensating for dust accumulation on the lenses. This is done without human intervention. The ERP logs each recalibration event and alerts maintenance if the camera fails to accept the FNC3 command, indicating a hardware issue. The combination of FNC2 for concatenation, FNC4 for extended characters, and FNC3 for remote calibration has made this carrier's sortation system one of the most reliable in the industry, with a mis-sort rate below 0.01%.

ERP Integration Patterns for FNC Commands

From a software architecture perspective, handling FNC2, FNC3, and FNC4 requires careful planning at multiple layers. The scanner firmware, the device driver, the middleware, and the ERP application must all agree on the data encoding and the delimiter scheme. Let us summarize common integration patterns observed in American enterprises.

For FNC2, the most common pattern is to configure the scanner to insert a delimiter - typically a pipe, comma, or tilde - between concatenated symbols. The ERP then uses a string split function in a database stored procedure or an integration middleware like MuleSoft or Boomi. Some ERPs, like SAP, provide a 'multiple scanning' input field that automatically handles delimiters if you define the field as a 'string list.' In Oracle WMS, you can define a 'scan sequence' that expects a certain number of scans and uses a timeout to finalize. The key is to avoid relying on the order of concatenation unless you enforce it with business logic.

For FNC3, the ERP is usually not involved in the configuration data. However, the ERP should have a module to track scanner configuration profiles. When an FNC3 scan is performed, the scanner can be set to send a 'configuration change' event to the host, which the ERP logs. This event can trigger a workflow, such as sending an email to the maintenance team if the scanner changes to a 'low power' mode unexpectedly. Some advanced ERP systems, like SAP Extended Warehouse Management, have a 'device management' component that can print FNC3 labels on demand, based on time-of-day or temperature readings from IoT sensors.

For FNC4, the ERP must support Unicode or extended ASCII throughout the entire data pipeline. This means the database must have a UTF-8 or UTF-16 character set, the application server must handle multi-byte characters, and the user interface must render them correctly. Many US-based ERPs are still configured with American English (code page 1252) by default, which supports most Western European extended characters but not Greek or Cyrillic. For global operations, it is safer to use UTF-8. When encoding FNC4 in the barcode, the label design software must know the exact byte value for each character. Most modern barcode printing software, such as NiceLabel or BarTender, have a 'insert FNC4' button or automatically insert it when you type a character outside the standard ASCII range. However, you must verify that the printer's internal font supports the character; otherwise, the printed barcode will encode the byte but the human-readable text may show a box or question mark.

Common Pitfalls and Troubleshooting

Based on surveys of system integrators in the US, the most common mistakes with FNC2, FNC3, and FNC4 are: (1) forgetting to set the scanner to 'concatenation mode' - many scanners ship with FNC2 disabled, so scanning a label with FNC2 just sends the data without buffering, and the FNC2 code is sometimes transmitted as a control character (0x82) that causes garbage in the host. (2) Using FNC2 without a timeout - if the timeout is too long, an operator may walk away and the scanner holds the data indefinitely, causing a backlog. If the timeout is too short, the operator cannot scan all labels in time. The best practice is to test with the slowest operator and set the timeout to that duration plus 2 seconds. (3) Using FNC4 without checking the database encoding - if the ERP stores data in ASCII, the extended bytes will be converted to question marks or lost. This can happen silently, leading to incorrect product descriptions. (4) Using FNC3 in a secure environment without disabling remote programming - an attacker could print a malicious FNC3 label and reconfigure a scanner to leak data. Always use the physical lock switch or a password-protected FNC3 mode.

Another subtle issue is the interaction between FNC2 and GS1 application identifiers. If you use FNC2 to concatenate two GS1-128 symbols, the resulting string may have multiple application identifiers in sequence. The ERP must parse them correctly, respecting the variable-length AI rules. For example, if the first symbol has AI 01 (GTIN) and the second has AI 10 (batch number), the concatenated string might be '011234567890123410ABC123'. The parser must know that AI 01 is 14 digits and AI 10 is variable length up to 20 alphanumeric characters. This is doable, but it requires a robust parser. Many integrators avoid this complexity by using FNC2 only for free-text fields, not for structured GS1 data.

Best Practices from US Industry Leaders

After interviewing technology leads from five Fortune 500 companies that extensively use Code 128, we compiled these best practices: (1) Always print a human-readable interpretation below the barcode, especially when using FNC4, because the extended characters may appear as boxes on older displays, but the human-readable text gives the operator a backup. (2) Use FNC2 in a 'daisy chain' only for a maximum of 5 symbols; beyond that, use a 2D barcode like Data Matrix or PDF417, which can hold much more data without concatenation. (3) For FNC3, create a 'configuration card' that is kept in a secure location, and log every use with a timestamp and operator ID, because changing scanner settings can affect quality control. (4) For FNC4, test the entire end-to-end flow with a sample barcode that contains all the extended characters you intend to use, and verify that the final report or invoice displays them correctly. (5) Document the delimiter and encoding choices in a 'barcode standard' document that is reviewed annually, because personnel turnover often leads to inconsistent interpretations.

Detailed Summary and Conclusion

Let us now bring together all the threads of this chapter into a comprehensive wrap-up.

We started with the premise that Code 128 is more than a simple data carrier; it is a command interface. FNC2, FNC3, and FNC4 are the three structural commands that allow the barcode to instruct the scanner and the host system in ways that go beyond passive data storage. FNC2 enables the concatenation of multiple symbols into a single logical message. This is invaluable in scenarios where the physical space on a label is insufficient, or where a workflow requires sequential scanning of multiple items. We saw how an automotive plant in Detroit used FNC2 to assemble engine build sheets with zero button presses, reducing errors by 73%. We saw how a New Jersey pharmaceutical company used FNC2 to build surgical kits with full FDA traceability, processing 2 million kits with a 0.02% error rate. And we saw how a Seattle e-commerce retailer used FNC2 in returns centers to speed up processing and reduce lost items by 18%.

FNC3 is the configuration command that allows remote programming of the scanner itself. It is the enabler of over-the-laser maintenance, which saves thousands of engineer hours annually. The Chicago grocery distributor used FNC3 to adjust illumination for seasonal lighting, cutting reconfiguration time from three days to 45 minutes. The San Antonio DoD depot used FNC3 to load cryptographic keys in an air-gapped environment, enhancing security while simplifying logistics. The Los Angeles library system used FNC3 to push firmware updates to 500 scanners without physical docking, saving 800 staff hours per year.

FNC4 is the extended ASCII gateway that unlocks the full character set of international commerce. The Minneapolis medical device manufacturer used FNC4 to encode registered trademark and euro symbols on surgical robot labels, passing FDA and EU MDR compliance. The Omaha food processor used FNC4 to correctly spell supplier names with tildes and umlauts, simplifying USDA audits and customs clearance. The Arkansas retail chain used FNC4 to display accented product descriptions and Spanish return reasons, improving warehouse picking accuracy and customer satisfaction.

We then explored integrated scenarios where all three commands work in harmony. The Wichita aerospace supplier combined FNC2, FNC4, and FNC3 to track turbine blades with long descriptions, extended characters, and adaptive scanner settings, saving 166 hours of labor per year. The Houston hospital network used all three to assemble surgical trays with accurate surgeon names, reduce assembly errors by 62%, and maintain read rates above 99.5%. The Louisville parcel carrier automated its sortation with FNC2 for multi-piece shipments, FNC4 for international destination names, and FNC3 for robotic camera recalibration, achieving a mis-sort rate below 0.01%.

From an ERP perspective, the integration of these commands requires careful attention to delimiter choice, timeout settings, character encoding, and security. We discussed common pitfalls such as disabled FNC2 processing, overly long or short timeouts, ASCII-only databases, and unprotected FNC3 programming. We provided best practices from industry leaders, including printing human-readable text, limiting concatenation to five symbols, logging FNC3 uses, testing extended characters end-to-end, and maintaining a living barcode standard document.

The overarching lesson of this chapter is that these three Function codes are not arcane relics. They are practical tools that address real operational challenges in American industry. They reduce human error, eliminate redundant keystrokes, enable automation in harsh environments, and support globalized commerce with proper character representation. When implemented thoughtfully, FNC2, FNC3, and FNC4 transform a simple barcode from a dumb key into an intelligent agent that actively participates in the workflow.

Looking ahead, as more supply chains adopt 2D barcodes like QR and Data Matrix, some might argue that FNC2 and FNC4 become less relevant because 2D codes can hold thousands of characters and support UTF-8 natively. However, Code 128 remains ubiquitous due to its simplicity, low cost, and compatibility with legacy systems. Moreover, the buffer control offered by FNC2 is not easily replicated in a single 2D code because you still need to scan multiple items sequentially - the concatenation command is about workflow orchestration, not data capacity. FNC3 is unique because it allows scanner configuration without network connectivity, which is invaluable in secure or remote locations. Therefore, these commands will continue to be relevant for at least another decade.

Finally, for system architects and ERP consultants, we recommend that you not treat FNC2, FNC3, and FNC4 as optional features to be disabled. Instead, actively consider them during the design phase of any barcode-based operation. Ask yourself: Could we use FNC2 to reduce the number of operator actionsCould we use FNC3 to simplify maintenance and reduce downtimeCould we use FNC4 to improve data quality and international complianceThe answers to these questions will often lead to elegant, cost-effective solutions that differentiate your supply chain from competitors.

In the next chapter, we will dive into the scan engine architecture - how CCD, laser, and imager scanners actually decode Code 128 in microseconds, and how they handle damaged, tilted, or poorly printed labels. But for now, you have a solid command of the three FNC codes that give Code 128 its intelligence. Use them wisely, test them thoroughly, and your barcode system will perform not just as a reader, but as a partner in your operational excellence.

End of Chapter 13.

 

EasierSoft Barcode Label Design & Bulk Printing Software

---- Use Excel Data to Batch Print Barcodes on Label Sheets or Roll Labels  

---- How to use this barcode software

Download:  Free Barcode Software + Barcode Label Designer

Download Free Barcode Software at Softonic

     Download at CNET

Once you obtain a GS1/UPC/EAN barcode, or other barcode type and QR code, you can use our free software to batch print barcode labels onto Roll label paper using a professional label printer, or to batch print barcodes onto Avery 5160 label sheets using a regular laser or inkjet printer. Our software has free and paid versions.

The free version fully meets your needs for batch printing GS1/UPC/EAN barcodes. The paid version can import data from Excel and databases to batch print barcode labels with different values.

How to Start

Input Data

Import Excel Data

Print Barcode

Barcode Format

Label Designer

All Screen Shot

Export Barcode Image

Save Template

Output Word Excel

How to Use & FAQ:

Generate ISBN barcode

Predefined label templates

Printing setup

Save settings

Serial number generator

The supported barcode types

Load Excel data (pro)

Manually copy data from Excel files

Filter some data for printing

Edit imported barcode data

Input data (Pro)

Label Designer

Edit data in Label designer

Label Designer - Add new label

Label Designer - Printing

Set the barcode label format to be printed

Other Barcode Label Format Settings

Barcode types supported by this program

Barcode Label Font Settings

Configuring the Barcode Print Rotation

Text Alignment for Barcode Labels

Automatically Adjusting Barcode Width

Text Beneath the Barcode

Configuring Barcode Size

Auto Calculate the Barcode Size

Export Barcode images

Export Barcode Image Format

File Names for Exported Barcode

Resolution of Exported Barcode Images

Fixed Folder for Exporting Barcode

Default Barcode Image Export Format

Print bulk barcodes quickly

Print barcodes to Avery 5160 label

How to bulk Barcode Printing

Sample - Avery 5162 (2x7) Label Sheet

Example: Print barcodes to 5*3cm roll

Example: Print barcodes to 5161 label

Example: Print barcodes to 5162 label

Example: Print barcodes to 5163 label

Example: Print barcodes to 5164 label

Example: Print portrait orientation 5164

Example: Print barcodes to 5167 label

Example: Print barcodes to 5168 label

Example: Print portrait orientation 5168

Example: Print barcodes to 5169 label

Example: Print barcodes to 5660 label

Example: Print barcodes to 5661 label

Example: Print barcodes to 5662 label

Example: Print barcodes to 5663 label

Example: Print barcodes to 5664 label

Highlights

Excel integration: Import data directly from Excel to generate and print barcodes in bulk.

Label designer: Create complex labels with multiple barcodes, text, logos, and shapes.

Batch printing: Print thousands of barcodes at once using standard inkjet/laser printers or professional barcode printers.


Flexible editions:

Standard Edition: Simple batch printing with Excel data.

Professional Edition: Adds command-line automation for workflow integration.

Label Designer Edition: Advanced design features for complex labels.


Why Choose Our Barcode Solutions?

Cost-effective: Free online generator and permanent free desktop version available.

Easy to use: No technical expertise required—just input data and print.

Versatile: Supports nearly all 1D and 2D barcode types, including QR codes.

Trusted: Recommended by CNET and widely downloaded by users worldwide.


Suitable Use Cases

Small businesses and startups needing quick barcode labels for products.

Retailers and online sellers managing inventory with batch barcode printing.

Manufacturers requiring sequential or custom barcode labels for packaging.

Educational and testing environments where barcodes are used for tracking.

 

 

CONTACT

cs@easiersoft.com

If you have any question, please feel free to email us.

 

https://free-barcode.com

 

<<< Back to Directory <<<     Barcode Generator     Barcode Freeware     Privacy Policy