Dan, argument checking in newer versions of Gfortran can become a nuisance with old codes in which scalar arguments are passed as arguments when the corresponding dummy argument is an array. If such mismatched arguments are then passed along as arguments to other subroutines in a chain, fixing the code can be time-consuming.
If you do not mind taking a slight risk, and you are sure that the code being compiled is otherwise error free, try the Gfortran option -fallow-argument-mismatch .
Another solution to the mismatch problem is to surround the scalar actual argument(s) in question with brackets. For example, replace the 4th argument n in the CALL
if ( miter <= 2 ) call dlsodi(res,addafl,jacfl,n,y,ydoti,t,tout(io),itol,rtol(j),atol(j),1, &
& istate,0,rwork,lrw,iwork,liw,mf)
by [n], as in
if ( miter <= 2 ) call dlsodi(res,addafl,jacfl,[n],y,ydoti,t,tout(io),itol,rtol(j),atol(j),1, &
& istate,0,rwork,lrw,iwork,liw,mf)