関数は、次のように呼び出します。
INTEGER*4 alarm n = alarm ( time, sbrtn ) |
|||
time |
INTEGER*4 |
入力 |
待ち時間の秒数 (0 の場合は呼び出さない) |
sbrtn |
ルーチン名 |
入力 |
実行する副プログラムは EXTERNAL 文で宣言しなければならない |
戻り値 |
INTEGER*4 |
出力 |
前回呼び出した alarm の残り時間 |
例: alarm の使用例 - 9 秒待機してから sbrtn を呼び出します。
integer*4 alarm, time / 1 / common / alarmcom / i external sbrtn i = 9 write(*,*) i nseconds = alarm ( time, sbrtn ) do n = 1,100000 ! alarm が sbrtn をアクティブにするまで待機 r = n ! (時間がかかる計算) x=sqrt(r) end do write(*,*) i end subroutine sbrtn common / alarmcom / i i = 3 ! このルーチンでは I/O を行わない return end |
参照: alarm(3C)、sleep(3F)、signal(3F)。次の制限事項に注意してください。
サブルーチンは自分自身の名前を alarm に渡すことはできません。
alarm ルーチンは、入出力に干渉する可能性のあるシグナルを発生させます。呼び出されたサブルーチン (sbrtn) では、いっさい入出力を実行してはいけません。
Fortran の並列プログラムまたはマルチスレッドプログラムから alarm() を呼び出すと、予期しない結果を招くことがあります。