I got my example down to six rungs. The approach was to examine each bytes of the ProductDataString.Data[x] array to see if it was a semicolon, then use the MID instruction to extract the string data between the semicolon and the previous semicolon (or the beginning of the array).
A couple of tricky bits:
The String.Data[x] array begins at 0, but that's considered "Position 1" when you are using the MID instruction. No problem, we calculated an offset.
It's easy to totally clear a String element or array of String elements; the File Fill instruction really doesn't care what sort of data it is filling so it will happily write over all subelements (LEN, DATA[x]) in the target array.
The example is written in v15 for SoftLogix; you will of course have to import the Program and routine into your RSLogix 5000 project.