Using the substitute() function you can replace the underscore with eg a return character.
They then become values which can be referred to in other calculations by their value number.
You can also use a mix of left(), right(), leftwords(), rightwords(), position(), middle() etc to extract bits...
eg. Find the position of the first underscore and get left (field, position - 1)
I was looking at the "return character" but did not make the connection.
I'll try it tomorrow - out of time now.