Consider
Program bloky implicit none real :: t(2) t = 1.0 print *, t block real :: t((2) t = 2.0 end block print *, t end program
The Fortran works OK but the debugger thinks t is [2.0, 2.0] after the end block. Also if t was not declared outside the block the debugger still things it is valid both before and after the block. ( VS2013 Upd 5, Fortran XE2017 Upd 4)