CLEARSTATUSFPQQ

Portability Subroutine: Clears the exception flags in the floating-point processor status word.

Module

USE IFPORT

Syntax

CALL CLEARSTATUSFPQQ()

Description

The floating-point status word indicates which floating-point exception conditions have occurred. Intel® Fortran initially clears (sets to 0) all floating-point status flags, but as exceptions occur, the status flags accumulate until the program clears the flags again. CLEARSTATUSFPQQ will clear the flags.

CLEARSTATUSFPQQ is appropriate for use in applications that poll the floating-point status register as the method for detecting a floating-point exception has occurred.

For a full description of the floating-point status word, exceptions, and error handling, see Floating-Point Operations: Floating-Point Environment.

Compatibility

CONSOLE STANDARD GRAPHICS QUICKWIN GRAPHICS DLL LIB

Example

! Program to demonstrate CLEARSTATUSFPQQ.

! This program uses polling to detect that a

! floating-point exception has occurred.

! So, build this console application with the default

! floating-point exception behavior, fpe3.

! You need to specify compiler option /debug or /Od (Windows)

! or -O0 (Linux) to get the correct results

! PROGRAM CLEARFP

USE IFPORT

REAL*4 A,B,C

INTEGER*2 STS

A = 2.0E0

B = 0.0E0

! Poll and display initial floating point status

CALL GETSTATUSFPQQ(STS)

WRITE(*,'(1X,A,Z4.4)') 'Initial fp status = ',STS

! Cause a divide-by-zero exception

! Poll and display the new floating point status

C = A/B

CALL GETSTATUSFPQQ(STS)

WRITE(*,'(1X,A,Z4.4)') 'After div-by-zero fp status = ',STS

! If a divide by zero error occurred, clear the floating point

! status register so future exceptions can be detected.

IF ((STS .AND. FPSW$ZERODIVIDE) > 0) THEN

CALL CLEARSTATUSFPQQ()

CALL GETSTATUSFPQQ(STS)

WRITE(*,'(1X,A,Z4.4)') 'After CLEARSTATUSFPQQ fp status = ',STS

ENDIF

END

This program is available in the online samples.

See Also