There might be a better way to do this, but here is a package with a couple of macros that join on all fields that are present in both input streams.
It is currently configured to only join on fields that have the same Name and Type. NOTE: In this case a String is not the same as a V_String.
You can remove the "Type" requirement by modifying the Join Tool in Macro1.yxmc.
The L, J, and, R output are the join outputs, The F output is a list of the fields that were used to join.
I hope this helps.