As far as formatted input is concerned, Ew.d is interpreted exactly as Fw.d. Below, I have underlined the part of the rule that pertains to your case, with the decimal symbol omitted.
The Fortran standard says, 'The form of the mantissa is an optional sign, followed by a string of one or more digits optionally containing a decimal symbol, including any blanks interpreted as zeros. The d has no effect on input if the input field contains a decimal symbol. If the decimal symbol is omitted,
the rightmost d digits of the string, with leading zeros assumed if necessary, are interpreted as the fractional part of the value represented.'
Application of the underlined sentence causes the mantissa portion of the input string, i.e., '4', to be interpreted as '.04' since 'd' in 'E10.2' is '2', and the decimal point was not provided. A leading zero was added since the string had fewer characters (= 1) than d (= 2).
More traps wait for you. The input string for KEYANIN is '0 '. Suppose that the value was '5 ' instead of '0 '. Depending on whether the corresponding format string contained a prior 'BZ', or if the input file was opened with BLANK = 'ZERO', the value of the variable would be 50 rather than the present value of 5.
For data safety, right justify integer input fields and include the decimal point in real input fields.
I created a reproducer for this issue, but ran into another bug related to opening the input file with BLANK='ZERO', which I reported at https://forums.silverfrost.com/Forum/Topic/4139 . You can, however, remove BLANK='ZERO' from the reproducer and what is left should serve to show the effect of reading into a REAL/DOUBLE variable from an input string that does not contain a decimal point.