NetCDF-Fortran  4.4.4
nf_geninq.f90
Go to the documentation of this file.
1 !------- Routines for obtaining info on dimensions, varible sizes, etc -------
2 
3 ! Replacement for fort-geninq.c
4 
5 ! Written by: Richard Weed, Ph.D.
6 ! Center for Advanced Vehicular Systems
7 ! Mississippi State University
8 ! rweed@cavs.msstate.edu
9 
10 
11 ! License (and other Lawyer Language)
12 
13 ! This software is released under the Apache 2.0 Open Source License. The
14 ! full text of the License can be viewed at :
15 !
16 ! http:www.apache.org/licenses/LICENSE-2.0.html
17 !
18 ! The author grants to the University Corporation for Atmospheric Research
19 ! (UCAR), Boulder, CO, USA the right to revise and extend the software
20 ! without restriction. However, the author retains all copyrights and
21 ! intellectual property rights explicitly stated in or implied by the
22 ! Apache license
23 
24 ! Version 1.: Sept. 2005 - Initial Cray X1 version
25 ! April 2006 - Updated to include 3.6.1 function nf_inq_format
26 ! Version 2.: May 2006 - Updated to support g95
27 ! Version 3.: April 2009 - Updated to Netcdf 4.0.1
28 ! Version 4.: April 2010 - Updated to Netcdf 4.1.1
29 ! Version 5.: May 2014 - Ensure return error status checked from C API calls
30 ! Version 6.: Jan. 2016 - General code cleanup.
31 !
32 !-------------------------------- nf_inq ----------------------------------
33  Function nf_inq(ncid, ndims, nvars, ngatts, unlimdimid) RESULT(status)
34 
35 ! Inquire about number of dimensions, number of varibles, number of
36 ! global attributes, and the id of the ulimited dimension for NetCDF file
37 ! id ncid
38 
40 
41  Implicit NONE
42 
43  Integer, Intent(IN) :: ncid
44  Integer, Intent(OUT) :: ndims, nvars, ngatts, unlimdimid
45 
46  Integer :: status
47 
48  Integer(C_INT) :: cncid, cndims, cnvars, cngatts, cunlimdimid, cstatus
49 
50  cncid = ncid
51 
52  cstatus = nc_inq(cncid, cndims, cnvars, cngatts, cunlimdimid)
53 
54  If (cstatus == nc_noerr) Then
55  ndims = cndims
56  nvars = cnvars
57  ngatts = cngatts
58 
59 ! Shift C id by plus one to Fortran id if unlimdimid is not -1
60 
61  If (cunlimdimid == - 1) Then
62  unlimdimid = -1
63  Else
64  unlimdimid = cunlimdimid + 1
65  EndIf
66  EndIf
67  status = cstatus
68 
69  End Function nf_inq
70 !-------------------------------- nf_inq_ndims -----------------------------
71  Function nf_inq_ndims(ncid, ndims) RESULT(status)
72 
73 ! Inquire about number of dimensions for NetCDF file id ncid
74 
76 
77  Implicit NONE
78 
79  Integer, Intent(IN) :: ncid
80  Integer, Intent(OUT) :: ndims
81 
82  Integer :: status
83 
84  Integer(C_INT) :: cncid, cndims, cstatus
85 
86  cncid = ncid
87 
88  cstatus = nc_inq_ndims(cncid, cndims)
89 
90  If (cstatus == nc_noerr) Then
91  ndims = cndims
92  EndIf
93  status = cstatus
94 
95  End Function nf_inq_ndims
96 !-------------------------------- nf_inq_nvars -----------------------------
97  Function nf_inq_nvars(ncid, nvars) RESULT(status)
98 
99 ! Inquire about number of variables for NetCDF file id ncid
100 
102 
103  Implicit NONE
104 
105  Integer, Intent(IN) :: ncid
106  Integer, Intent(OUT) :: nvars
107 
108  Integer :: status
109 
110  Integer(C_INT) :: cncid, cnvars, cstatus
111 
112  cncid = ncid
113 
114  cstatus = nc_inq_nvars(cncid, cnvars)
115 
116  If (cstatus == nc_noerr) Then
117  nvars = cnvars
118  EndIf
119  status = cstatus
120 
121  End Function nf_inq_nvars
122 !-------------------------------- nf_inq_natts -----------------------------
123  Function nf_inq_natts(ncid, ngatts) RESULT(status)
125 ! Inquire about number of global attributes for NetCDF file id ncid
126 
128 
129  Implicit NONE
130 
131  Integer, Intent(IN) :: ncid
132  Integer, Intent(OUT) :: ngatts
133 
134  Integer :: status
135 
136  Integer(C_INT) :: cncid, cngatts, cstatus
137 
138  cncid = ncid
139 
140  cstatus = nc_inq_natts(cncid, cngatts)
141 
142  If (cstatus == nc_noerr) Then
143  ngatts = cngatts
144  EndIf
145  status = cstatus
146 
147  End Function nf_inq_natts
148 !-------------------------------- nf_inq_unlimdim --------------------------
149  Function nf_inq_unlimdim(ncid, unlimdimid) RESULT(status)
151 ! Inquire about id of unlimited dimension for NetCDF file id ncid
152 
154 
155  Implicit NONE
156 
157  Integer, Intent(IN) :: ncid
158  Integer, Intent(OUT) :: unlimdimid
159 
160  Integer :: status
161 
162  Integer(C_INT) :: cncid, cunlimdimid, cstatus
163 
164  cncid = ncid
165 
166  cstatus = nc_inq_unlimdim(cncid, cunlimdimid)
167 
168 ! Shift C id by plus one to Fortran id if unlimdimid is not -1
169 
170  If (cstatus == nc_noerr) Then
171  If (cunlimdimid == -1) Then
172  unlimdimid = -1
173  Else
174  unlimdimid = cunlimdimid + 1
175  EndIf
176  EndIf
177  status = cstatus
178 
179  End Function nf_inq_unlimdim
180 !-------------------------------- nf_inq_format -------------------------------
181  Function nf_inq_format(ncid, format_type) RESULT(status)
183 ! Inquire about internal file format for NetCDF file id ncid
184 
186 
187  Implicit NONE
188 
189  Integer, Intent(IN) :: ncid
190  Integer, Intent(OUT) :: format_type
191 
192  Integer :: status
193 
194  Integer(C_INT) :: cncid, cformatp, cstatus
195 
196  cncid = ncid
197 
198  cstatus = nc_inq_format(cncid, cformatp)
199 
200  If (cstatus == nc_noerr) Then
201 ! Return format_type
202 
203  format_type = cformatp
204  EndIf
205  status = cstatus
206 
207  End Function nf_inq_format
integer function nf_inq_unlimdim(ncid, unlimdimid)
Definition: nf_geninq.f90:150
integer function nf_inq_nvars(ncid, nvars)
Definition: nf_geninq.f90:98
integer function nf_inq(ncid, ndims, nvars, ngatts, unlimdimid)
Definition: nf_geninq.f90:34
integer(c_int), parameter nc_noerr
integer function nf_inq_format(ncid, format_type)
Definition: nf_geninq.f90:182
integer function nf_inq_ndims(ncid, ndims)
Definition: nf_geninq.f90:72
integer function nf_inq_natts(ncid, ngatts)
Definition: nf_geninq.f90:124

Return to the Main Unidata NetCDF page.
Generated on Thu Nov 9 2017 06:56:52 for NetCDF-Fortran. NetCDF is a Unidata library.