disable_ieee_interrupt(3I)

DISABLE_IEEE_INTERRUPT - Disables floating-point interrupt

As shipped in IRIX 6.5.15. Last changed in IRIX 6.5.5.

NAME
     DISABLE_IEEE_INTERRUPT - Disables floating-point interrupt

SYNOPSIS
     DISABLE_IEEE_INTERRUPT ([INTERRUPT=]interrupt)

IMPLEMENTATION
     UNICOS/mk, IRIX systems, CRAY T90 systems that support IEEE
     floating-point arithmetic

     CF90, MIPSpro 7 Fortran 90

STANDARDS
     Fortran extension

     IEEE Standard for Binary Floating-point Arithmetic

DESCRIPTION
     The DISABLE_IEEE_INTERRUPT intrinsic subroutine disables the specified
     floating-point interrupt.  It accepts the following argument:

     interrupt  Must be of an integer type that occupies a full word.  If
                interrupt is an array, it must be 1-dimensional.  The
                single value in the scalar argument case, or each element
                in the array argument case, must be set to one of the
                values represented by one of the following named constants:

                * IEEE_NTPT_CRI_INVALID_OPND (accepted only on CRAY T90
                  systems that support IEEE floating-point arithmetic)

                * IEEE_NTPT_INEXACT_RESULT

                * IEEE_NTPT_UNDERFLOW

                * IEEE_NTPT_OVERFLOW

                * IEEE_NTPT_DIV_BY_ZERO

                * IEEE_NTPT_INVALID_OPR

                * IEEE_NTPT_ALL (all interrupts in this list)

     The name of this intrinsic cannot be passed as an argument.

NOTES
     The IEEE intrinsic procedures use the named constants contained in a
     system module, so you must include the following statement in your
     program:

          USE FTN_IEEE_DEFINITIONS

     On UNICOS/mk systems, you cannot use DISABLE_IEEE_INTERRUPT to set the
     following bits:

     * IEEE_NTPT_INVALID_OPR

     * IEEE_NTPT_DIV_BY_ZERO

     * IEEE_NTPT_OVERFLOW

     The hardware ignores attempts to set these bits.

RETURN VALUES
     Upon return, the interrupt, or each element of interrupt, is disabled.
     If interrupt, or any element of interrupt, has the value
     IEEE_NTPT_ALL, all interrupts are disabled.

EXAMPLES
     The following program can be run on UNICOS and IRIX systems:

          SUBROUTINE calculate
          USE FTN_IEEE_DEFINITIONS

          INTEGER interrupt_status

          ! Save the current floating point interrupt status.

          CALL GET_IEEE_INTERRUPTS(interrupt_status)

          ! Enable interrupt on divide by zero if it hasn't already been
          ! enabled.

          IF (.NOT. TEST_IEEE_INTERRUPT(IEEE_NTPT_DIV_BY_ZERO))  &
          CALL ENABLE_IEEE_INTERRUPT(IEEE_NTPT_DIV_BY_ZERO)

          ! Perform a floating point divide.
          ! If z = 0, the program error terminates.

          x  = y / z

          ! Disable interrupt on divide by zero.

          CALL DISABLE_IEEE_INTERRUPT(IEEE_NTPT_DIV_BY_ZERO))

          ! If z = 0, q = Infinity (quietly).

          q  = y / z

          ! Restore the floating point interrupt status to what it was
          ! when this procedure was called.

          CALL SET_IEEE_INTERRUPTS(interrupt_status)

          END SUBROUTINE

SEE ALSO
     Intrinsic Procedures Reference Manual for the printed version of this
     man page.