例外パラメタ

例外は,そのビットが 1 に設定されていると無効になり,ビットが 0 にクリアされていると有効になります。例外が無効になっていると (例外を無効にするには,SETCONTROLFPQQ (ia32 のみ) でフラグを 1 に設定します),例外が発生しても割り込みシグナルは生成されません。浮動小数点プロセスは適切な特殊値 (たとえば NaN や符号付き無限大など) を返しますが,プログラムは実行を続けます。GETSTATUSFPQQ (ia32 のみ) を呼び出すことで,どの例外が発生したのか (発生していた場合) を調べることができます。

浮動小数点例外でのエラーが有効になっていると (SETCONTROLFPQQ (ia32 のみ) でフラグを 0 にクリアします),オペレーティング・システムはその例外が発生したときに割り込みを生成します。基本設定では,これらの割り込みは実行時のエラーを引き起こしますが,SIGNALQQ を使って割り込みを捕捉し,独自のエラー処理ルーチンに飛ぶことができます。

設定を変更するときには,既存の設定をすべてクリアしてしまわないように注意してください。すべてのオプションをリセットしたいわけではない場合,変更したい値を既存のコントロール・ワードと包含的 OR 演算 (ORIOR.OR.) で組み合わせます。次に例を示します。

	USE DFLIB
	INTEGER(2) control, newcontrol
	CALL GETCONTROLFPQQ(control)
	newcontrol = (control .OR. FPCW$INVALID)
	! 不正な例外を設定 (無効)
	CALL SETCONTROLFPQQ(newcontrol)