Ugh. I believe the problem here is within the standard C library implementation of the underlying strtok() function, which uses an internal static variable to keep track of the position within the string being parsed. (A-Shell's STRTOK.SBR wraps around the OS version of strtok(), making multiple calls to peel off all the parameters passed.)
The only workaround I can think of would be to completely parse out the STRING1 first, and only then to parse the ITEMs (again parsing each to completion before proceeding to the next).