gtool5 Fortran 90/95 Library 1.0.0-rc5
日本語
Loading...
Searching...
No Matches
gdncfileclose.f90 File Reference

Close a netCDF file . More...

Go to the source code of this file.

Functions/Subroutines

subroutine gdncfileclose (fileid, err)

Detailed Description

Close a netCDF file

.

Author
Yasuhiro MORIKAWA, Eizi TOYODA

Definition in file gdncfileclose.f90.

Function/Subroutine Documentation

◆ gdncfileclose()

subroutine gdncfileclose ( integer, intent(in) fileid,
logical, intent(out), optional err )

Close a netCDF file

Decrements the reference count of the specified file ID. When the reference count reaches zero, the file is actually closed using nf90_close and removed from the internal file list.

Parameters
[in]fileidnetCDF file ID
[out]errError flag (optional)

Definition at line 37 of file gdncfileclose.f90.

40 use netcdf, only: nf90_close, nf90_enotnc, nf90_noerr
41 use dc_error, only: storeerror
43 integer, intent(in):: fileid
44 logical, intent(out), optional:: err
45 type(GD_NC_FILE_ID_ENTRY), pointer:: identptr, prev
46 integer:: stat
47 character(*), parameter:: subname = "GDNcFileClose"
48continue
49 call beginsub(subname)
50 stat = nf90_enotnc
51 if (.not. id_used) goto 999
52 identptr => id_head
53 nullify(prev)
54 do
55 if (.not. associated(identptr)) goto 999
56 if (identptr % id == fileid) exit
57 prev => identptr
58 identptr => identptr % next
59 enddo
60 identptr % count = identptr % count - 1
61 if (identptr % count <= 0) then
62 stat = nf90_close(fileid)
63 if (associated(prev)) then
64 prev%next => identptr % next
65 else
66 id_head => identptr % next
67 if (.not. associated(id_head)) id_used = .false.
68 endif
69 call dbgmessage(subname // ': <%c> closed', c1=trim(identptr % filename))
70 deallocate(identptr)
71 else
72 call dbgmessage(subname // ': %d<%c> skipped for refcount=%d', &
73 & c1=trim(identptr % filename), i=(/fileid, identptr % count/))
74 stat = nf90_noerr
75 endif
76999 continue
77 call endsub(subname)
78 call storeerror(stat, 'GDNcFileClose', err)
Error handling module.
Definition dc_error.f90:454
subroutine, public storeerror(number, where, err, cause_c, cause_i)
Definition dc_error.f90:891
Debug tracing module.
Definition dc_trace.f90:150
subroutine, public dbgmessage(fmt, i, r, d, l, n, c1, c2, c3, ca)
Definition dc_trace.f90:661
subroutine, public beginsub(name, fmt, i, r, d, l, n, c1, c2, c3, ca, version)
Definition dc_trace.f90:457
subroutine, public endsub(name, fmt, i, r, d, l, n, c1, c2, c3, ca)
Definition dc_trace.f90:580
logical, save id_used
Flag indicating whether id_head has been initialized
type(gd_nc_file_id_entry), pointer, save id_head
ID table for open/close of netCDF files

References dc_trace::beginsub(), dc_trace::dbgmessage(), dc_trace::endsub(), gtdata_netcdf_file_internal::id_head, gtdata_netcdf_file_internal::id_used, and dc_error::storeerror().

Here is the call graph for this function: