Many legacy Fortran codes contain declarations of the type REAL4, INTEGER2, etc., with the expectation that the suffix number is the byte size of the variable (for COMPLEX, the suffix number is the byte size of each part, real and imaginary).
The alternative syntax, REAL(4), etc., is slightly less common, but FTN95 supports this syntax (and the *n type syntax) with the /alt_kinds option. This support does not work as expected for COMPLEX(4), which is rejected by FTN95 /alt_kind; the compiler accepts but with a non-traditional meaning the type COMPLEX(8).
The following program illustrates the inconsistency. Please see, for example, https://gcc.gnu.org/onlinedocs/gfortran/KIND-Type-Parameters.html#KIND-Type-Parameters , for a description of the traditional meaning of COMPLEX(4) and COMPLEX(8).
program tst
complex(4) x
complex(8) y
complex z
complex*16 w
write(*,10)'COMPLEX(4) : ',kind(x),range(x),precision(x)
write(*,10)'COMPLEX(8) : ',kind(y),range(y),precision(y)
write(*,10)'COMPLEX : ',kind(z),range(z),precision(z)
write(*,10)'COMPLEX*16 : ',kind(w),range(w),precision(w)
10 format(A13,3i5)
end program
The two lines that pertain to x are rejected by FTN95 with the /alt_kinds option. Furthermore, FTN95 regards the complex variable y as a pair of 4-byte reals, whereas y is expected to be a pair of 8-byte reals.
The results from GFortran and Intel Fortran:
COMPLEX(4) : 4 37 6
COMPLEX(8) : 8 307 15
COMPLEX : 4 37 6
COMPLEX*16 : 8 307 15
With the lines containing the variable x commented out, FTN95 /alt_kinds gives:
COMPLEX(8) : 4 37 6
COMPLEX : 4 37 6
COMPLEX*16 : 8 307 15