You have described a perfect case for reentrant execution. Open up the VI Properties of your subVI and select Reentrant Execution. When a VI is reentrant, each instance of that VI has its own data space. Without that quality, each time the subVI is called (no matter where in your code) the data space is overwritten.
Remember, Alliance Members are here to help. We do this stuff every day.
Daniel L. Press
PrimeTest Corp.
www.primetest.com