You are correct in thinking to use Mat MyF$ and Mat MyF to pass the data back and forth, and then save it in your calling routine only when they're ready to exit all the tabs at once.
However, the good news is the run.br library that comes with ScreenIO has a function called fnRunTabs that helps for running tabs made of screenio screens.
All you have to do is pass the fnRunTabs function 2 arrays - one of descriptions to put on the tabs themselves, and the other of Screen Names to load and display in each tab. By default it will do the saving and loading inside each screen which is ideal if each tab represents a different and unrelated data file. However, you can pass the optional parameter of File Layout, and if thats passed, then fnRunTabs will automatically use Mat MyF$ and Mat MyF for you, and automatically save it when they exit all tabs (only if they click "Yes" to the Do You want to Save? Message box).
So that will do most of the work for you.
The tricky part for you will be, in this specific case you want to show several edit screens (where you DO want to pass in Mat MyF$ and Mat MyF) but you also want to show other screens from other data files (where you wouldn't pass in MyF$ and MyF but instead would only want to pass in the key.) FnRunTabs doesn't handle it both ways at the same time - you have to choose one or the other. So, depending on how it goes, you may end up having to make your own loop of BR code to print the tabs and do the input the way you want.
The good news is, ScreenIO Screens are ideal for putting on tabs, no matter how you do the tabs, whether with a function, or with traditional BR code.
Start by making each of your screens the way you want. And when they're all designed and you're ready to put them together on tabs, if you have any further questions, either write here, or call me, or find me on google chat, and i'll help you get it all working.