The following valid code is rejected by gfortran: (When the lines giving explicit type to mode and dis are uncommented, gfortran compiles it fine.)
$ cat a.f90 subroutine mysub1(a,b,mode,dis) ! integer :: mode ! real :: dis dimension a(abs(mode)),b(int(dis)) print *, mod write (*,*) abs(mode), nint(dis) end subroutine program testprog call mysub1((/1.,2./),(/1.,2.,3./),-2, 3.2) end $ gfortran a.f90 a.f90:4.18: dimension a(abs(mode)),b(int(dis)) 1 Error: 'a' argument of 'abs' intrinsic at (1) must be a numeric type a.f90:4.31: dimension a(abs(mode)),b(int(dis)) 1 Error: 'a' argument of 'int' intrinsic at (1) must be a numeric type -- Summary: gfortran dislikes implicitly type subroutine arguments Product: gcc Version: 4.3.0 Status: UNCONFIRMED Keywords: rejects-valid Severity: normal Priority: P3 Component: fortran AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: fxcoudert at gcc dot gnu dot org http://gcc.gnu.org/bugzilla/show_bug.cgi?id=31225