>>outer loop counts words split at tilde, inner pulls starting digits from these words until a non-digit is encountered..
>
>I did it like this:
>
>
>
>CLEAR
>
>m.ModString = "23^^C4~21^^C4~22^^C4~27^^C4"
>
>m.ModCount = OCCURS('~', m.ModString)
>
>m.Mods = ''
>
>FOR ModLoop = 1 TO m.ModCount
> m.Mods = m.Mods + SUBSTR(m.ModString, AT('~', m.ModString, ModLoop) +1, 2)
>ENDFOR
>
>? m.Mods
>
>
>But I think yours is cleaner.
You didn't specify that these will always be two digit groups, so I assumed any number of digits.