I have been observing different outputs for the same Sort/Join Step across 2 separate Jobs. The input files/sort card are all exactly same. The only difference is that one process is running outside of the Production environment and the other is locally on my spool under my ID.
I can't find any logical reason for such a difference in output.
I am sure only variable between two is input Dataset. I would suggest to pick up the same Generation or PS used outside production and then see if they are really 100% match.
Second, I don't think DFSORT version difference would impact this but no harm to compare that as well.
Third, remeber you coded DISP=OLD, try creating NEW Data set and compare at both places or look for the SORT messages for IN and OUT counts in the job log.