One or more watches must be specified. The argument watch
can be
a single variable of type watchtype
(see stopwatch(3))
to stop one
watch, an array of type watchtype
to stop several watches, or a variable of
type watchgroup
(see stopwatch(3))
to stop the watches in a group.

The optional argument clock
specifies which clocks to stop on the
specified watch(es). If omitted, the current default clocks (see
option_stopwatch(3))
are stopped. If
present, clock
must be a character string containing 'cpu', 'user',
'sys', or 'wall', or an array of such character strings.

DIAGNOSTICS
If present, the optional intent OUT integer argument err
returns
a status code. The code is the sum of the values listed below.

An error message will be printed to a specified I/O unit (unit 6
by default) if print_errors
is TRUE (default is TRUE).
The error message contains
more detail about the cause of the error than can be obtained from just the
status code, so you should set print_errors
to TRUE if you have
trouble determining the cause of the error.

If abort_errors
is TRUE (default is FALSE), the program will terminate
on an error condition. Otherwise, the program will continue execution
but the watch(es) will not be stopped.

See option_stopwatch(3)
for further
information on print_errors, abort_errors
and I/O units.

The relevant status codes and messages are:

0

No errors; execution successful.

1

Watch needs to be created.
This error occurs if you attempt to stop a watch that has been destroyed.
The watch must first be created again. See also the comment about watches
that have never been created in the BUGS section.

2

Watch is in the wrong state for this operation.
This occurs when you attempt to stop a watch that is currently paused or
not running.

4

Watch is in an unknown state.
This occurs if StopWatch
does not recognize the state (running, stopped, etc.)
that the watch is in. This error should not occur, and indicates an internal
bug in StopWatch
.

8

Invalid clock type.
This occurs if clock
is present and one of the specified clocks
is not supported by the implementation.
See inquiry_stopwatch(3)
to determine what clocks are
available.

512

Failed to allocate required memory.
When stop_watch
is called with an array or group of watches, temporary
memory is allocated. This error occurs if the Fortran
allocate
statement returns a
nonzero status indicating that memory could not be allocated. Avoid memory
leaks by always destroying watches and groups before recreating them, and
destroying local variable watches and groups before returning from a
subroutine.

1024

Error occurred while deallocating memory.
This error occurs if the Fortran deallocate
statement returns a nonzero status while
deallocating temporary memory used for an array or group of watches. The
watches are stopped, but be aware that other problems could develop as a
result of the deallocate error.

In addition to the run time diagnostics generated by StopWatch
, the following
problem may arise:

In Fortran 90, the character strings in an array constructor must all have the
same length. Pad three letter clock names with a blank on the right to make
a four character string, for example, 'cpu '.

The first call stops the default clocks on a single watch. The second call
stops the default clocks on three watches given as an array and returns a
status code. The third call stops the
cpu and wall clocks on the watches in the group g1,
and returns
a status code.

BUGS
It cannot be determined whether or not a watch variable or
watch group has been created (passed
as an argument to create_watch
or create_watchgroup).
If
a watch or watch group that has never been created
is passed into stop_watch,
it might
generate a Fortran error due to passing a pointer with undefined association
status to the Fortran intrinsic function associated.
Some compilers
will allow this as an extension to the Fortran 90 standard and recognize that
the pointer is not associated, in which case the ``Watch needs to be created''
error message is generated.