CLEARSTATUSFPQQ (ia32 のみ)

実行時サブルーチン:浮動小数点プロセッサー・ステイタス・ワードの例外フラグをクリアします。このルーチンは,ia32 プロセッサーのみで利用可能です。

モジュールUSE DFLIB

形式

CALL CLEARSTATUSFPQQ ()

浮動小数点ステイタス・ワードは,浮動小数点例外条件が発生したかどうかを示します。Visual Fortran は,初期状態で全ての浮動小数点ステイタス・フラグをクリア (0 に設定) していますが,例外が発生すると,ステイタス・フラグはプログラムがフラグを再びクリアするまで蓄積します。CLEARSTATUSFPQQ がフラグをクリアします。

CLEARSTATUSFPQQ は,浮動小数点例外が発生したかどうかを検知するための方法として浮動小数点ステイタス・レジスタをポーリングするアプリケーションでの使用に適しています。

浮動小数点ステイタス・ワードとエラー処理の詳細については,「浮動小数点環境」を参照してください。

互換性

CONSOLE STANDARD GRAPHICS QUICKWIN GRAPHICS DLL LIB

関連情報

GETCONTROLFPQQ, GETSTATUSFPQQ, MATHERRQQ, SETCONTROLFPQQ, SIGNALQQ

	! CLEARSTATUSFPQQ のデモ・プログラム
	! このプログラムは,浮動小数点例外が発生したこと
	! を検知するためにポーリングを使用します。
	! そのため,基本浮動小数点例外動作 fpe3 で
	! この Console アプリケーションをビルドします。
	! 
	  PROGRAM CLEARFP
	  USE DFLIB
	  REAL*4 A,B,C
	  INTEGER*2 STS

	  A = 2.0E0
	  B = 0.0E0

	! ポーリングを行い,初期浮動小数点ステイタス
	! を表示します。
	  CALL GETSTATUSFPQQ(STS)
	  WRITE(*,'(1X,A,Z4.4)') 'Initial fp status = ',STS

	! ゼロによる除算を発生させます。
	! ポーリングを行い,新しい浮動小数点ステイタス
	! を表示します。
	  C = A/B
	  CALL GETSTATUSFPQQ(STS)
	  WRITE(*,'(1X,A,Z4.4)') 'After div-by-zero fp status = ',STS

	! ゼロによる除算が発生した場合,
	! 浮動小数点ステイタス・レジスタをクリアし,
	! 将来の例外が検知できるようにします。
	  IF ((STS .AND. FPSW$ZERODIVIDE) > 0) THEN
	    CALL CLEARSTATUSFPQQ()
	    CALL GETSTATUSFPQQ(STS)
	    WRITE(*,'(1X,A,Z4.4)') 'After CLEARSTATUSFPQQ fp status = ',STS
	  ENDIF

	  END

このプログラムは,キット中に提供されています。