The name determines the type; that is, the name of a datum or function determines its data type, explicitly or implicitly, according to the following rules of data typing;
A symbolic name of a constant, variable, array, or function has only one data type for each program unit, except for generic functions.
If you explicitly list a name in a type statement, then that determines the data type.
If you do not explicitly list a name in a type statement, then the first letter of the name determines the data type implicitly.
The default implicit typing rule is that if the first letter of the name is I, J, K, L, M, or N, then the data type is integer, otherwise it is real.
You can change the default-implied types by using the IMPLICIT statement, even to the extent of turning off all implicit typing with the IMPLICIT NONE statement. You can also turn off all implicit typing by specifying the -u compiler flag on the command line; this is equivalent to beginning each program unit with the IMPLICIT NONE statement.