The function is called by:
|
INTEGER*4 alarm n = alarm ( time, sbrtn ) |
|||
|
time |
INTEGER*4 |
Input |
Number of seconds to wait (0=do not call) |
|
sbrtn |
Routine name |
Input |
Subprogram to execute must be listed in an external statement. |
|
Return value |
INTEGER*4 |
Output |
Time remaining on the last alarm |
Example: alarm—wait 9 seconds then call sbrtn:
integer*4 alarm, time / 1 /
common / alarmcom / i
external sbrtn
i = 9
write(*,*) i
nseconds = alarm ( time, sbrtn )
do n = 1,100000 ! Wait until alarm activates sbrtn.
r = n ! (any calculations that take enough time)
x=sqrt(r)
end do
write(*,*) i
end
subroutine sbrtn
common / alarmcom / i
i = 3 ! Do no I/O in this routine.
return
end
|
See also: alarm(3C), sleep(3F), and signal(3F). Note the following restrictions:
A subroutine cannot pass its own name to alarm.
The alarm routine generates signals that could interfere with any I/O. The called subroutine, sbrtn, must not do any I/O itself.
Calling alarm() from a parallelized or multi-threaded Fortran program may have unpredictable results.