GS1-128 Barcodes have a FNC1 character at the beginning but if a field is variable length a FNC1 is embedded to delimit the end of the field from the next AI code

Zint is a open source barcode generator and it already has the AI rules in it so that it knows when to plonk a FNC1 into the barcode.

Here is a glabels created SSCC Logistics Label showing the FNC1 characters highlighted with yellow dots

Another example a barcode with all variable length fields

zint -b 16 -d "[10]1234[21]ABC123XYZ[241]PART0[242]111"

{START_BARS}{FNC1}(10)1234{FNC1}(21)ABC123XYZ{FNC1}(241)PART0{FNC1}(242)111{END_BARS}

In this case all the AI fields are variable length so you have FNC1’s before each application identifier (AI)

The last variable length fields end is marked by the end of the barcode.

Tip: If you only have one variable length field put it last and you will not need a FNC1 as the delimiter.