例外ハンドラとして関数を設定するときは、監視する例外や対応動作といっしょに、関数の名前を ieee_handler() に渡します。 ハンドラを一度設定すると、特定の浮動小数点の例外が発生するたびに、SIGFPE シグナルが生成され、指定した関数が呼び出されます。
ieee_handler() を起動する形式を次の表に示します。
表 6–4 ieee_handler( action , exception , handler) の引数
引数 |
種類 |
可能な値 |
---|---|---|
action |
文字列 |
get、set、clear のいずれか |
exception |
文字列 |
invalid、division、overflow、underflow、inexact のいずれか |
handler |
関数名 |
ユーザーハンドラ関数の名前、または、SIGFPE_DEFAULT、SIGFPE_IGNORE、SIGFPE_ABORT のいずれか |
戻り値 |
整数 |
0 =OK |
f95 でコンパイルする Fortran 95 ルーチンで ieee_handler() を呼び出す場合は、次の宣言も必要です。
#include 'floatingpoint.h'
特別な引数 SIGFPE_DEFAULT、SIGFPE_IGNORE、および SIGFPE_ABORT は、これらのインクルードファイルで定義され、特定の例外に対するプログラムの動作を変更するのに使用できます。
SIGFPE_DEFAULT または SIGFPE_IGNORE |
指定した例外が発生しても何も動作しない。 |
SIGFPE_ABORT |
例外発生時にはプログラムが異常終了し、おそらくダンプファイルを生成する。 |