Dug a little deeper into this issue -- it's a problem which is a little beyond my pay grade.
Down around line 24800 in FUNCTION refer$, you'll see this bit of code:
IF we change what's after that to the following, we then have GET and PUT working properly with fixed length strings:
offset$ = "((uint8*)(" + n$ + "[0]))[(" + a$ + ")*" + str2(id.tsize) + "]"
r$ = offset$
The problem with this, however, is that we then end up breaking other things, where we reference the array by individual elements. Stuff like array(1) = "H" will give us the c++ compilation failure.
Seems to me that we need two different outputs here -- one for when the array is indexed (X(1), for example) vs one for the whole array (which would be X(), from the previous example).
I'm not proficient enough in c to sort out exactly what has to be done to get this to work in both cases here, so I'll pass off the baton at this point and leave it up to someone else to carry us over the finish line.
I can make GET/PUT work, *OR* I can have arrays work with indexes (as it currently exists), but I can't make it do both. :P