The main documentation of the Reset_Timer Procedure contains additional explanation of this code listing.
subroutine Reset_Timer (Timer)
! Input/Output variable.
type(Timer_type), intent(inout) :: Timer ! Timer to be reset.
! Internal variables.
type(character,80) :: Name ! Timer name.
!~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
! Verify requirements.
VERIFY(Valid_State(Timer),5) ! Timer is valid.
! Save name of Timer.
Name = Timer%Name
! Reset Timer to initial state.
call Finalize (Timer)
call Initialize (Timer, Name)
! Verify guarantees.
VERIFY(Valid_State(Timer),5) ! Timer is valid.
VERIFY(.not.Timer%Running,5) ! Timer is not running.
return
end subroutine Reset_Timer