Daniel,
Factorizing the code was on my mind. I'll probably do it a bit later. However ADIOS requires MPI, and I am not sure wether it is a good thing to change the original program to be compiled with mpif90.
That is said, I agree that preprocessor flags are ugly and redundant with the presence of combine_vol_data.f90.

I have got one question. Why do you want two executables? Of course it provides choices for the users, but it might also be harder to run scripts that were designed for xcombine_vol_data. My assumption was that, if you configure the code to use ADIOS, you probably want to use the ADIOS version of combine_vol_data.

I'll appreciate any additional feedback.