Although Fortran 95 introduced the intrinsic CPU_TIME(3f) to query CPU time, the intrinsic does not break down the time into user and system components. Therefore, the SYSTEM_CPU_TIME(3f) routine is used from module M_SYSTEM(3f).
If SYSTEM_CPU_TIME(3f) does not work on your system, you will have to write your own version. The interface is
subroutine system_cpu_second(cpu,user,sys) real, intent(OUT) :: cpu, user, sys
The first argument is for CPU time in seconds. Where available, the second and third arguments should break down the CPU time into ``user'' and ``system'' CPU time. If the underlying system does not provide for a way of accessing the breakdown (i.e., has only CPU time), then return a negative constant in user and sys (for example, user=-1.; sys=-1. ). The value returned in cpu (and user and sys where available) should be a nonnegative real number such that the difference between two successive calls is the amount of elapsed CPU time in seconds.
If the system produces no CPU clock information all three values should be returned as -1.0. In this case only the wall clock will be available.