SYSTEM_CLOCK

Intrinsic Subroutine: Returns integer data from a real-time clock. SYSTEM_CLOCK returns the number of seconds from 00:00 Coordinated Universal Time (CUT) on 1 JAN 1970. The number is returned with no bias. To get the elapsed time, you must call SYSTEM_CLOCK twice, and subtract the starting time value from the ending time value.

Syntax

CALL SYSTEM_CLOCK ([count] [, count_rate] [, count_max])

count

(Output; optional) Must be scalar and of type integer. It is set to a value based on the current value of the processor clock. The value is increased by one for each clock count until the value count_max is reached, and is reset to zero at the next count. ( count lies in the range 0 to count_max.)

count_rate

(Output; optional) Must be scalar and of type integer. It is set to the number of processor clock counts per second.

If the type is INTEGER(2), count_rate is 1000. If the type is INTEGER(4), count_rate is 10000. If the type is INTEGER(8), count_rate is 1000000.

count_max

(Output; optional) Must be scalar and of type integer. It is set to the maximum value that count can have, HUGE(0).

All arguments used must have the same integer kind parameter. If the type is INTEGER(1), count, count_rate, and count_max are all zero, indicating that there is no clock available to Intel Fortran with an 8-bit range.

Example

Consider the following:

integer(2) :: ic2, crate2, cmax2

integer(4) :: ic4, crate4, cmax4

call system_clock(count=ic2, count_rate=crate2, count_max=cmax2)

call system_clock(count=ic4, count_rate=crate4, count_max=cmax4)

print *, ic2, crate2, cmax2

print *, ic4, crate4, cmax4

end

This program was run on Thursday Dec 11, 1997 at 14:23:55 EST and produced the following output:

13880 1000 32767

1129498807 10000 2147483647

See Also