If your division into subVIs is based on functionality, then using a wire is usually the best way to go.
If, for whatever reason, you don't want this, you do have several other options:
- Bundle the data you're passing into clusters. This will result in a single terminal, but you will have to bundle\unbundle the cluster to get to the data.
- Use global variables. These can be dangerous if not used correctly, because they can cause race conditions. Search the example finder for examples of how to use globals.
- Use functional globals. These have some advantages over globals, mainly in preventing race conditions and memory-wise. Search this site for functional or LV2 style globals for some more details.
- Use control references. This is probably the least convenient way and most dangerous way, and you should not use it unless you have a good reason.
In your case, it seems that option 2 is the best one, but you should be careful about it. Once again, if the VI is designed well, then a wire is the way to go. Try reading the LabVIEW style guide for some more details.
___________________
Try to take over the world!