I was looking at having ways of updating the variables on the fly, but reviewing my code passing the Elaborate Record as a parameter and localising it may work.
The one thing I am trying to do is for one subroutine to pass a Elaborate Record as a parameter to a second subroutine, this second subroutine will update the Elaborate Record and then send it back to the 1st subroutine. The two subroutines are most likely going to be in different packages so just trying to work out how to best do this.
Thanks for your reply and the help in understanding all this. I also really appreciate the final example aswell. Very helpful.