gtool5 Fortran 90/95 Library 1.0.0-rc5
日本語
Loading...
Searching...
No Matches
gdncfileclose.f90
Go to the documentation of this file.
1
16
37subroutine gdncfileclose(fileid, err)
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)
79end subroutine gdncfileclose
subroutine gdncfileclose(fileid, 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:680
subroutine, public beginsub(name, fmt, i, r, d, l, n, c1, c2, c3, ca, version)
Definition dc_trace.f90:476
subroutine, public endsub(name, fmt, i, r, d, l, n, c1, c2, c3, ca)
Definition dc_trace.f90:599
logical, save id_used
Flag indicating whether id_head has been initialized
type(gd_nc_file_id_entry), pointer, save id_head