fortran中FPE相关问题

您好!
我在读fortran90代码文件时遇到了一些看不懂的定义,这些定义似乎是默认的,但我在网上找不到它们的解释。
如:
FPE$INVALID,FPE$DENORMAL,FPE$ZERODIVIDE,FPE$OVERFLOW,FPE$UNDERFLOW,FPE$INEXACT
我感到它们似乎是某一个体系的(因为前面都有FPE)。但我不太明白它们各自具体的涵义,也不明白$这个符号在这里起到怎样的作用,看起来也和%有点像?
谢谢!

附代码如下:(这一整段我都没看懂QAQ)
module sim_mod
use mpi
use ifport
……
function hand_fpe(sigid, except)
!DEC$ ATTRIBUTES C :: hand_fpe
use ifport
INTEGER(4) :: hand_fpe
INTEGER(2) :: sigid, except

  if (sigid/=SIG$FPE) then
     print "('The hand_fpe is not for signal ', I0)", sigid
     hand_fpe = 1
     return
  end if
  select case(except)!select case
     case( FPE$INVALID )
        print *, ' Floating point exception: Invalid number'
     case( FPE$DENORMAL )
        print *, ' Floating point exception: Denormalized number'
     case( FPE$ZERODIVIDE )
        print *, ' Floating point exception: Zero divide'
     case( FPE$OVERFLOW )
        print *, ' Floating point exception: Overflow'
     case( FPE$UNDERFLOW )
        print *, ' Floating point exception: Underflow'
     case( FPE$INEXACT )
        print *, ' Floating point exception: Inexact precision'
     case default
        print *, ' Floating point exception: Non-IEEE type'
  end select
  print *, 'lake failed: ', lake_info
  hand_fpe = 1

end function
end module

!DEC$ 是编译指令,不是fortran语法,属于编译器自己的扩展。
FPE$DENORMAL是模块ifport中定义的普通变量,其中的$没有特殊意义,就是个字符而已。

img

书还是要看的 Fortran90经典教材