PROGRAM ReadBadData

implicit none

Integer :: i, ierr 
Real, Dimension(100) :: MyData
Real :: OneNum
Real :: Inf = 2.0**800
Real :: NaN = 0.0/0.0
Logical :: isFinite=.true., isFinite2=.true.
Logical :: isNaN=.false., isNaN2=.false.

Open (Unit=10, File='MyDataFile.txt', Form='Formatted')
! Read (Unit=10, FMT='(f10.6)')  MyData

do i=1,100
	Read(Unit=10, FMT='(f10.6)', iostat=ierr) OneNum
	if(ierr == 10016) then
		print *, 'Bad Data on line:', i
		OneNum = Inf
	endif
	MyData(i) = OneNum
enddo

Close (Unit=10)

print *, MyData(1:15)

isFinite = abs(MyData(10)) <= huge(MyData(10))
isFinite2 = MyData(10) == Inf

print *, 'For INF:'
print *, 'isFinite?', isFinite, 'isFinite2?', isFinite2, 'huge(x):', huge(MyData(10))

isFinite = abs(MyData(13)) <= huge(MyData(13))
isFinite2 = MyData(13) == Inf
isNaN = .not.(MyData(13) == MyData(13))
isNaN2 = MyData(13) == NaN

print *, 'For NaN:'
print *, 'isFinite?', isFinite, 'isFinite2?', isFinite2, 'huge(x):', huge(MyData(10))
print *, 'isNaN?', isNaN, 'isNaN2?', isNaN2

ENDPROGRAM ReadBadData
