destroys a StopWatch
subroutine destroy_watch (watch, clock, err)
Destroys the specified clocks of the specified watches. If the watch has no remaining clocks after the specified clocks are destroyed, then the watch is destroyed and associated memory freed. To avoid memory leaks, watches should be destroyed when no longer useful, before being recreated, and before returning from a subroutine in which the watch is a local variable.
One or more watches must be specified. The argument watch can be a single variable of type watchtype (see stopwatch(3)) to destroy one watch, or an array of type watchtype to destroy several watches.
The optional argument clock specifies which clocks to destroy on the specified watch(es). If omitted, the current default clocks (see option_stopwatch(3)) are destroyed. If present, clock must be a character string containing 'cpu', 'user', 'sys', or 'wall', or an array of such character strings.
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 destroyed.
See option_stopwatch(3) for further information on print_errors, abort_errors and I/O units.
The relevant status codes and messages are:
In addition to the run time diagnostics generated by StopWatch
, the following
problems may arise:
type (watchtype) w1, w2(3)
call destroy_watch(w2, (/'sys ', 'user'/), err=errcode)
The first call destroys the default clocks on a single watch. Assuming the default clocks have not changed since the watch was created, the watch will be destroyed. The second call destroys the sys and user clocks on three watches given as an array and returns a status code. Assuming the watch also had the cpu or wall clock, the watches are not destroyed.
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 destroy_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.