Geoff Graham's solution came thru just as I was composing the
following, but what the heck, I'll send it along anyway because it
shows one technique for breaking things down into bite-size pieces
leading up to the solution:
Formats:
Middle ( text ; start ; numberOfCharacters )
Position ( text ; searchString ; start ; occurrence )
Pseudocode:
Middle ( given; P1; P2 - P1 ), where ...
• P1 is the starting position (the character right after the ")"
and
• P2 is the ending position (the character right before the ";")
and
• both are computed using the "Position" function