and NML= can be omitted sometimes is hard to understand the syntax READ (*, *) A, B ➔ READ (UNIT=6, FMT=*) A, B READ (6, 101) A, B ➔ READ (UNIT=6, FMT=101) A, B READ (*, "(A,I6)") A, B ➔ READ (UNIT=*, FMT="(A,I6)") A, B READ (*, *) A, B ➔ READ (UNIT=6, FMT=*) A, B READ (6, 101) A, B ➔ READ (UNIT=6, FMT=101) A, B READ (*, "(A,I6)") A, B ➔ READ (UNIT=*, FMT="(A,I6)") A, B INTEGER :: UNIT_NUMBER CHARACTER(LEN=12) :: STR READ (UNIT_NUMBER, LEN) A, B ➔ READ (UNIT = UNIT_NUMBER, FMT=STR) A, B INTEGER :: UNIT_NUMBER CHARACTER(LEN=12) :: STR READ (UNIT_NUMBER, LEN) A, B ➔ READ (UNIT = UNIT_NUMBER, FMT=STR) A, B INTEGER :: UNIT_NUMBER NAMELIST / N / ... ! Soon we will see what is a namelist READ (UNIT_NUMBER, N) A, B ➔ READ (UNIT = UNIT_NUMBER, NML=N) A, B INTEGER :: UNIT_NUMBER NAMELIST / N / ... ! Soon we will see what is a namelist READ (UNIT_NUMBER, N) A, B ➔ READ (UNIT = UNIT_NUMBER, NML=N) A, B My advice: do not omit any of these in newly written code