This is a beginners question but I haven\'t found a comprehensive answer.
What are the differences (if any) of the following declarations?
CHARACTER(
Regardless of the type, and are identical and denote an array of length 5. can be e.g. character, integer, real, logical, etc.
character(5) is a short-hand of character(len=5) and declares a string of length 5. If the length is omitted, it is assumed to be on. character :: d(5) is an array of five length-1 strings.
character :: e*5 is an older variant to specify the string length.
len is intrinsic to strings (and makes no sence for e.g. floats). You can specify your own derived types to have an length len, though ("Parameterized derived types"). For integers and floats (and some others) you can specify the kind of the variable in a similar way.
For details consult the Fortran 2008 Standard, Ch. 4.4.3.2 "Character type specifier".