module_netcdf_fortv2_c_interfaces.f90
Go to the documentation of this file.
Module netcdf_fortv2_c_interfaces
! Fortran 20003 interfaces to C routines in fort_v2compat.c called by
! the V2 Fortran interfaces. Interface routine names are the same
! as the C routine names.
! Written by : Richard Weed, Ph.D.
! Center for Advanced Vehicular Systems
! Mississipi State University
! rweed@cavs.msstate.edu
! License (and other Lawyer Language)
! This software is released under the Apache 2.0 Open Source License. The
! full text of the License can be viewed at :
!
! http:www.apache.org/licenses/LICENSE-2.0.html
!
! The author grants to the University Corporation for Atmospheric Research
! (UCAR), Boulder, CO, USA the right to revise and extend the software
! without restriction. However, the author retains all copyrights and
! intellectual property rights explicitly stated in or implied by the
! Apache license
! Version 1.: May, 2006 - Initial version 2 interfaces
! Version 2.; April, 2009 - Redone to reflect passing void data types
! in C with C_PTR and C_CHAR strings and
! NetCDF 4.0.1
! Version 3.; April, 2010 - Updated to NetCDF 4.1.1
! Version 4.: Jan. 2016 - General code cleanup. Changed cmap argument
! in convert_v2_imap routine to assumed shape
USE netcdf_nc_interfaces
Implicit NONE
! The following interfaces are for the netCDF V2 functions. Note that
! the actual C routines return a void pointer for arrays etc. This
! forced me to adopt a commonly used kludge for interfacing old Fortran
! 77 with C, namely, passing the void pointer to an array of C_CHARs.
! Also note that each interface has an explicit USE ISO_C_BINDING. A better
! solution is to use the F2003 IMPORT statement (I originally had it this way)
! However its best to leave the interfaces as is for now because there might
! be a few compilers out there that support most of the C-interop facility but
! for some reason haven't implemented IMPORT yet.
! Begin fortv2 C interface definitions
!-------------------------------- c_ncpopt ------------------------------------
Interface
Subroutine c_ncpopt(val) bind(C)
USE iso_c_binding, ONLY: c_int
Integer(C_INT), VALUE :: val
End Subroutine c_ncpopt
End Interface
!-------------------------------- c_ncgopt ------------------------------------
Interface
Subroutine c_ncgopt(val) bind(C)
USE iso_c_binding, ONLY: c_int
Integer(C_INT), Intent(OUT) :: val
End Subroutine c_ncgopt
End Interface
!-------------------------------- c_nccre -------------------------------------
Interface
Function c_nccre(pathname, clobmode, rcode) bind(C)
USE iso_c_binding, ONLY: c_int, c_char
Character(KIND=C_CHAR), Intent(IN) :: pathname(*)
Integer(C_INT), VALUE :: clobmode
Integer(C_INT), Intent(OUT) :: rcode
Integer(C_INT) :: c_nccre
End Function c_nccre
End Interface
!-------------------------------- c_ncopn -------------------------------------
Interface
Function c_ncopn(pathname, rwmode, rcode) bind(C)
USE iso_c_binding, ONLY: c_int, c_char
Character(KIND=C_CHAR), Intent(IN) :: pathname(*)
Integer(C_INT), VALUE :: rwmode
Integer(C_INT), Intent(OUT) :: rcode
Integer(C_INT) :: c_ncopn
End Function c_ncopn
End Interface
!-------------------------------- c_ncddef ------------------------------------
Interface
Function c_ncddef(ncid, dimname, dimlen, rcode) bind(C)
USE iso_c_binding, ONLY: c_int, c_char
Integer(C_INT), VALUE :: ncid, dimlen
Character(KIND=C_CHAR), Intent(IN) :: dimname(*)
Integer(C_INT), Intent(OUT) :: rcode
Integer(C_INT) :: c_ncddef
End Function c_ncddef
End Interface
!-------------------------------- c_ncdid -------------------------------------
Interface
Function c_ncdid(ncid, dimname, rcode) bind(C)
USE iso_c_binding, ONLY: c_int, c_char
Integer(C_INT), VALUE :: ncid
Character(KIND=C_CHAR), Intent(IN) :: dimname(*)
Integer(C_INT), Intent(OUT) :: rcode
Integer(C_INT) :: c_ncdid
End Function c_ncdid
End Interface
!-------------------------------- c_ncvdef ------------------------------------
Interface
Function c_ncvdef(ncid, varname, datatype, ndims, dimidp, rcode) bind(C)
USE iso_c_binding, ONLY: c_int, c_char, c_ptr
Integer(C_INT), VALUE :: ncid
Character(KIND=C_CHAR), Intent(IN) :: varname(*)
Integer(C_INT), VALUE :: datatype ! nc_type variable in C
Integer(C_INT), VALUE :: ndims
Type(c_ptr), VALUE :: dimidp
Integer(C_INT), Intent(OUT) :: rcode
Integer(C_INT) :: c_ncvdef
End Function c_ncvdef
End Interface
!-------------------------------- c_ncvid -------------------------------------
Interface
Function c_ncvid(ncid, varname, rcode) bind(C)
USE iso_c_binding, ONLY: c_int, c_char
Integer(C_INT), VALUE :: ncid
Character(KIND=C_CHAR), Intent(IN) :: varname(*)
Integer(C_INT), Intent(OUT) :: rcode
Integer(C_INT) :: c_ncvid
End Function c_ncvid
End Interface
!-------------------------------- c_nctlen ------------------------------------
Interface
Function c_nctlen(datatype, rcode) bind(C)
USE iso_c_binding, ONLY: c_int
Integer(C_INT), VALUE :: datatype ! nc_type var in C
Integer(C_INT), Intent(OUT) :: rcode
Integer(C_INT) :: c_nctlen
End Function c_nctlen
End Interface
!-------------------------------- c_ncclos ------------------------------------
Interface
Subroutine c_ncclos(ncid, rcode) bind(C)
USE iso_c_binding, ONLY: c_int
Integer(C_INT), VALUE :: ncid
Integer(C_INT), Intent(OUT) :: rcode
End Subroutine c_ncclos
End Interface
!-------------------------------- c_ncredf ------------------------------------
Interface
Subroutine c_ncredf(ncid, rcode) bind(C)
USE iso_c_binding, ONLY: c_int
Integer(C_INT), VALUE :: ncid
Integer(C_INT), Intent(OUT) :: rcode
End Subroutine c_ncredf
End Interface
!-------------------------------- c_ncendf ------------------------------------
Interface
Subroutine c_ncendf(ncid, rcode) bind(C)
USE iso_c_binding, ONLY: c_int
Integer(C_INT), VALUE :: ncid
Integer(C_INT), Intent(OUT) :: rcode
End Subroutine c_ncendf
End Interface
!-------------------------------- c_ncinq -------------------------------------
Interface
Subroutine c_ncinq(ncid, indims, invars, inatts, irecdim, rcode) bind(C)
USE iso_c_binding, ONLY: c_int
Integer(C_INT), VALUE :: ncid
Integer(C_INT), Intent(OUT) :: indims, invars, inatts, irecdim, rcode
End Subroutine c_ncinq
End Interface
!-------------------------------- c_ncsnc -------------------------------------
Interface
Subroutine c_ncsnc(ncid, rcode) bind(C)
USE iso_c_binding, ONLY: c_int
Integer(C_INT), VALUE :: ncid
Integer(C_INT), Intent(OUT) :: rcode
End Subroutine c_ncsnc
End Interface
!-------------------------------- c_ncabor ------------------------------------
Interface
Subroutine c_ncabor(ncid, rcode) bind(C)
USE iso_c_binding, ONLY: c_int
Integer(C_INT), VALUE :: ncid
Integer(C_INT), Intent(OUT) :: rcode
End Subroutine c_ncabor
End Interface
!-------------------------------- c_ncdinq -----------------------------------
Interface
Subroutine c_ncdinq(ncid, dimid, dimname, size, rcode) bind(C)
USE iso_c_binding, ONLY: c_int, c_char
Integer(C_INT), VALUE :: ncid , dimid
Character(KIND=C_CHAR), Intent(OUT) :: dimname(*)
Integer(C_INT), Intent(OUT) :: size, rcode
End Subroutine c_ncdinq
End Interface
!-------------------------------- c_ncdren ------------------------------------
Interface
Subroutine c_ncdren(ncid, dimid, dimname, rcode) bind(C)
USE iso_c_binding, ONLY: c_int, c_char
Integer(C_INT), VALUE :: ncid , dimid
Character(KIND=C_CHAR), Intent(IN) :: dimname(*)
Integer(C_INT), Intent(OUT) :: rcode
End Subroutine c_ncdren
End Interface
!-------------------------------- c_ncviq -------------------------------------
Interface
Subroutine c_ncvinq(ncid, varid, varname, datatype, indims, dimarray, &
inatts, rcode) bind(C)
USE iso_c_binding, ONLY: c_int, c_char
Integer(C_INT), VALUE :: ncid , varid
Character(KIND=C_CHAR), Intent(INOUT) :: varname(*)
Integer(C_INT), Intent(OUT) :: datatype ! nc_type var in C
Integer(C_INT), Intent(OUT) :: dimarray(*)
Integer(C_INT), Intent(OUT) :: indims, inatts, rcode
End Subroutine c_ncvinq
End Interface
!-------------------------------- c_ncvpt1 ------------------------------------
Interface
Subroutine c_ncvpt1(ncid, varid, indices, value, rcode) bind(C)
USE iso_c_binding, ONLY: c_int, c_ptr
Integer(C_INT), VALUE :: ncid , varid
TYPE(c_ptr), VALUE :: indices
Type(c_ptr), VALUE :: value
Integer(C_INT), Intent(OUT) :: rcode
End Subroutine c_ncvpt1
End Interface
!-------------------------------- c_ncvp1c ------------------------------------
Interface
Subroutine c_ncvp1c(ncid, varid, indices, value, rcode) bind(C)
USE iso_c_binding, ONLY: c_int, c_ptr, c_char
Integer(C_INT), VALUE :: ncid , varid
TYPE(c_ptr), VALUE :: indices
Character(KIND=C_CHAR), Intent(IN) :: value(*) ! void in C
Integer(C_INT), Intent(OUT) :: rcode
End Subroutine c_ncvp1c
End Interface
!-------------------------------- c_ncvpt -------------------------------------
Interface
Subroutine c_ncvpt(ncid, varid, start, count, value, rcode) bind(C)
USE iso_c_binding, ONLY: c_int, c_ptr
Integer(C_INT), VALUE :: ncid , varid
Type(c_ptr), VALUE :: start, count
Type(c_ptr), VALUE :: value
Integer(C_INT), Intent(OUT) :: rcode
End Subroutine c_ncvpt
End Interface
!-------------------------------- c_ncvptc ------------------------------------
Interface
Subroutine c_ncvptc(ncid, varid, start, count, value, lenstr, rcode) bind(C)
USE iso_c_binding, ONLY: c_int, c_ptr, c_char
Integer(C_INT), VALUE :: ncid , varid, lenstr
Type(c_ptr), VALUE :: start, count
Character(KIND=C_CHAR), Intent(IN) :: value(*) ! char in C
Integer(C_INT), Intent(OUT) :: rcode
End Subroutine c_ncvptc
End Interface
!-------------------------------- c_ncvptg ------------------------------------
Interface
Subroutine c_ncvptg(ncid, varid, start, count, strides, imap, value, &
rcode) bind(C)
USE iso_c_binding, ONLY: c_int, c_ptr
Integer(C_INT), VALUE :: ncid , varid
Type(c_ptr), VALUE :: start, count, strides, imap
Type(c_ptr), VALUE :: value
Integer(C_INT), Intent(OUT) :: rcode
End Subroutine c_ncvptg
End Interface
!-------------------------------- c_ncvpgc ------------------------------------
Interface
Subroutine c_ncvpgc(ncid, varid, start, count, strides, imap, value, &
rcode) bind(C)
USE iso_c_binding, ONLY: c_int, c_ptr, c_char
Integer(C_INT), VALUE :: ncid , varid
Type(c_ptr), VALUE :: start, count, strides, imap
Character(KIND=C_CHAR), Intent(IN) :: value(*) ! char in C
Integer(C_INT), Intent(OUT) :: rcode
End Subroutine c_ncvpgc
End Interface
!-------------------------------- c_ncvgt1 ------------------------------------
Interface
Subroutine c_ncvgt1(ncid, varid, indices, value, rcode) bind(C)
USE iso_c_binding, ONLY: c_int, c_ptr, c_char
Integer(C_INT), VALUE :: ncid , varid
Type(c_ptr), VALUE :: indices
Character(KIND=C_CHAR), Intent(OUT) :: value(*) ! void in C
Integer(C_INT), Intent(OUT) :: rcode
End Subroutine c_ncvgt1
End Interface
!-------------------------------- c_ncvg1c ------------------------------------
Interface
Subroutine c_ncvg1c(ncid, varid, indices, value, rcode) bind(C)
USE iso_c_binding, ONLY: c_int, c_ptr, c_char
Integer(C_INT), VALUE :: ncid , varid
Type(c_ptr), VALUE :: indices
Character(KIND=C_CHAR), Intent(INOUT) :: value(*) ! char in C
Integer(C_INT), Intent(OUT) :: rcode
End Subroutine c_ncvg1c
End Interface
!-------------------------------- c_ncvgt -------------------------------------
Interface
Subroutine c_ncvgt(ncid, varid, start, count, value, rcode) bind(C)
USE iso_c_binding, ONLY: c_int, c_ptr, c_char
Integer(C_INT), VALUE :: ncid , varid
Type(c_ptr), VALUE :: start, count
Character(KIND=C_CHAR), Intent(OUT) :: value(*) ! void in C
Integer(C_INT), Intent(OUT) :: rcode
End Subroutine c_ncvgt
End Interface
!-------------------------------- c_ncvgtc ------------------------------------
Interface
Subroutine c_ncvgtc(ncid, varid, start, count, value, lenstr, rcode) bind(C)
USE iso_c_binding, ONLY: c_int, c_ptr, c_char
Integer(C_INT), VALUE :: ncid , varid, lenstr
Type(c_ptr), VALUE :: start, count
Character(KIND=C_CHAR), Intent(INOUT) :: value(*) ! char in C
Integer(C_INT), Intent(OUT) :: rcode
End Subroutine c_ncvgtc
End Interface
!-------------------------------- c_ncvgtg ------------------------------------
Interface
Subroutine c_ncvgtg(ncid, varid, start, count, strides, imap, value, &
rcode) bind(C)
USE iso_c_binding, ONLY: c_int, c_ptr, c_char
Integer(C_INT), VALUE :: ncid , varid
Type(c_ptr), VALUE :: start, count, strides, imap
Character(KIND=C_CHAR), Intent(OUT) :: value(*) ! void in C
Integer(C_INT), Intent(OUT) :: rcode
End Subroutine c_ncvgtg
End Interface
!-------------------------------- c_ncvggc ------------------------------------
Interface
Subroutine c_ncvggc(ncid, varid, start, count, strides, imap, value, &
rcode) bind(C)
USE iso_c_binding, ONLY: c_int, c_ptr, c_char
Integer(C_INT), VALUE :: ncid , varid
Type(c_ptr), VALUE :: start, count, strides, imap
Character(KIND=C_CHAR), Intent(OUT) :: value(*) ! char in C
Integer(C_INT), Intent(OUT) :: rcode
End Subroutine c_ncvggc
End Interface
!-------------------------------- c_ncvren ------------------------------------
Interface
Subroutine c_ncvren(ncid, varid, varname, rcode) bind(C)
USE iso_c_binding, ONLY: c_int, c_char
Integer(C_INT), VALUE :: ncid , varid
Character(KIND=C_CHAR), Intent(IN) :: varname(*)
Integer(C_INT), Intent(OUT) :: rcode
End Subroutine c_ncvren
End Interface
!-------------------------------- c_ncapt -------------------------------------
Interface
Subroutine c_ncapt(ncid, varid, attname, datatype, attlen, value, &
rcode) bind(C)
USE iso_c_binding, ONLY: c_int, c_size_t, c_char, c_ptr
Integer(C_INT), VALUE :: ncid , varid
Character(KIND=C_CHAR), Intent(IN) :: attname(*)
Integer(C_INT), VALUE :: datatype ! nc_type var in C
Integer(C_SIZE_T), VALUE :: attlen
Type(c_ptr), VALUE :: value ! void in C
Integer(C_INT), Intent(OUT) :: rcode
End Subroutine c_ncapt
End Interface
!-------------------------------- c_ncaptc ------------------------------------
Interface
Subroutine c_ncaptc(ncid, varid, attname, datatype, attlen, string, &
rcode) bind(C)
USE iso_c_binding, ONLY: c_int, c_size_t, c_char
Integer(C_INT), VALUE :: ncid , varid
Character(KIND=C_CHAR), Intent(IN) :: attname(*)
Integer(C_INT), VALUE :: datatype ! nc_type var in C
Integer(C_SIZE_T), VALUE :: attlen
Character(KIND=C_CHAR), Intent(IN) :: string(*) ! char in C
Integer(C_INT), Intent(OUT) :: rcode
End Subroutine c_ncaptc
End Interface
!-------------------------------- c_ncainq ------------------------------------
Interface
Subroutine c_ncainq(ncid, varid, attname, datatype, attlen, rcode) bind(C)
USE iso_c_binding, ONLY: c_int, c_char
Integer(C_INT), VALUE :: ncid , varid
Character(KIND=C_CHAR), Intent(IN) :: attname(*)
Integer(C_INT), Intent(OUT) :: datatype ! nc_type var in C
Integer(C_INT), Intent(OUT) :: attlen
Integer(C_INT), Intent(OUT) :: rcode
End Subroutine c_ncainq
End Interface
!-------------------------------- c_ncagt -------------------------------------
Interface
Subroutine c_ncagt(ncid, varid, attname, value, rcode) bind(C)
USE iso_c_binding, ONLY: c_int, c_char
Integer(C_INT), VALUE :: ncid , varid
Character(KIND=C_CHAR), Intent(IN) :: attname(*)
Character(KIND=C_CHAR), Intent(OUT) :: value(*) ! void in C
Integer(C_INT), Intent(OUT) :: rcode
End Subroutine c_ncagt
End Interface
!-------------------------------- c_ncagtc ------------------------------------
Interface
Subroutine c_ncagtc(ncid, varid, attname, value, attlen, rcode) bind(C)
USE iso_c_binding, ONLY: c_int, c_char
Integer(C_INT), VALUE :: ncid , varid, attlen
Character(KIND=C_CHAR), Intent(IN) :: attname(*)
Character(KIND=C_CHAR), Intent(OUT) :: value(*) ! char in C
Integer(C_INT), Intent(OUT) :: rcode
End Subroutine c_ncagtc
End Interface
!-------------------------------- c_ncacpy ------------------------------------
Interface
Subroutine c_ncacpy(inncid, invarid, attname, outncid, outvarid, &
rcode) bind(C)
USE iso_c_binding, ONLY: c_int, c_char
Integer(C_INT), VALUE :: inncid , invarid, outncid, outvarid
Character(KIND=C_CHAR), Intent(IN) :: attname(*)
Integer(C_INT), Intent(OUT) :: rcode
End Subroutine c_ncacpy
End Interface
!-------------------------------- c_ncanam ------------------------------------
Interface
Subroutine c_ncanam(ncid, varid, attnum, newname, rcode) bind(C)
USE iso_c_binding, ONLY: c_int, c_char
Integer(C_INT), VALUE :: ncid , varid, attnum
Character(KIND=C_CHAR), Intent(INOUT) :: newname(*)
Integer(C_INT), Intent(OUT) :: rcode
End Subroutine c_ncanam
End Interface
!-------------------------------- c_ncaren ------------------------------------
Interface
Subroutine c_ncaren(ncid, varid, attnam, newname, rcode) bind(C)
USE iso_c_binding, ONLY: c_int, c_char
Integer(C_INT), VALUE :: ncid , varid
Character(KIND=C_CHAR), Intent(IN) :: attnam(*), newname(*)
Integer(C_INT), Intent(OUT) :: rcode
End Subroutine c_ncaren
End Interface
!-------------------------------- c_ncadel ------------------------------------
Interface
Subroutine c_ncadel(ncid, varid, attname, rcode) bind(C)
USE iso_c_binding, ONLY: c_int, c_char
Integer(C_INT), VALUE :: ncid , varid
Character(KIND=C_CHAR), Intent(IN) :: attname(*)
Integer(C_INT), Intent(OUT) :: rcode
End Subroutine c_ncadel
End Interface
!-------------------------------- c_ncsfil ------------------------------------
Interface
Function c_ncsfil(ncid, fillmode, rcode) bind(C)
USE iso_c_binding, ONLY: c_int
Integer(C_INT), VALUE :: ncid , fillmode
Integer(C_INT), Intent(OUT) :: rcode
Integer(C_INT) :: c_ncsfil
End Function c_ncsfil
End Interface
!---------------------------------v2data_size ---------------------------------
Interface
Function v2data_size(datatype) bind(C)
!
! New function added to fort-v2compat.c
!
USE iso_c_binding, ONLY: c_int, c_size_t
Integer(C_INT), VALUE :: datatype
Integer(C_SIZE_T) :: v2data_size
End Function v2data_size
End Interface
CONTAINS
Subroutine convert_v2_imap(cncid, cvarid, fmap, cmap, inullp)
! Replacement for f2c_v2imap C function. Uses v2data_size to return
! data size defined for C code. A futher test will be made using
! C interop values for FORTRAN side. Made cmap a assumed shape arry
! for Jan. 2016 update to use allocatable arrays
!
Implicit NONE
Integer(C_INT), Intent(IN) :: cncid, cvarid
Integer(C_INT), Intent(IN) :: fmap(*)
Integer(C_PTRDIFF_T), Intent(INOUT) :: cmap(:)
Integer, Intent(OUT) :: inullp
Integer(C_INT) :: rank, datatype, cstat1, cstat2, cstat3, cstat4
Integer(C_SIZE_T) :: total, length, csize
Integer :: ii, idim
Integer(C_INT), ALLOCATABLE :: dimids(:)
!
inullp=0
cstat1 = nc_inq_vartype(cncid, cvarid, datatype)
cstat2 = nc_inq_varndims(cncid, cvarid, rank)
! Return if nc_inq_vartype or nc_inq_varndims returns an error
! code. Set inullp to trigger use of NULL pointer in calling
! routine
If (cstat1/=nc_noerr) Then
inullp=1
Return
EndIf
If (cstat2/=nc_noerr) Then
inullp=1
Return
EndIf
If (rank <= 0) Then
inullp=1
Return
EndIf
If (rank > 0) Then
ALLOCATE(dimids(rank))
EndIf
If (fmap(1)==0) Then ! Special Fortran version 2 sematics
cstat3 = nc_inq_vardimid(cncid, cvarid, dimids)
If (cstat3 /= nc_noerr) Then
inullp=1
Return
EndIf
!
total = 1
loop1: Do ii=1, rank
idim = rank-ii+1
cmap(idim) = total
cstat4 = nc_inq_dimlen(cncid, dimids(idim), length)
If (cstat4 /= nc_noerr) Then
inullp=1
Exit loop1
EndIf
total = total*length
EndDo loop1
If (inullp==1) Return
Else ! Standard version 2 format - Use KIND parameters to set size
! Get C data type size using v2data_size. Unfortunately, the F03
! standard didn't specify a C_SIZEOF function. This will be
! remedied in the next upgrade to FORTRAN (2008) but for now
! we will rely on a C function to provide the value
csize = v2data_size(datatype)
If (csize <= 0) Then
inullp=1
Return
EndIf
cmap(1:rank) = fmap(rank:1:-1) / csize
EndIf
End Subroutine convert_v2_imap
!-------------------- End module_netcdf_fortv2_c_interfaces -------------------
End Module netcdf_fortv2_c_interfaces
netcdf_fortv2_c_interfaces
Definition: module_netcdf_fortv2_c_interfaces.f90:1
netcdf_fortv2_c_interfaces::c_ncainq
Definition: module_netcdf_fortv2_c_interfaces.f90:481
netcdf_fortv2_c_interfaces::c_ncanam
Definition: module_netcdf_fortv2_c_interfaces.f90:534
netcdf_fortv2_c_interfaces::c_ncvgt
Definition: module_netcdf_fortv2_c_interfaces.f90:383
netcdf_fortv2_c_interfaces::c_ncadel
Definition: module_netcdf_fortv2_c_interfaces.f90:558
netcdf_fortv2_c_interfaces::c_ncagt
Definition: module_netcdf_fortv2_c_interfaces.f90:495
netcdf_fortv2_c_interfaces::c_ncvdef
Definition: module_netcdf_fortv2_c_interfaces.f90:128
netcdf_fortv2_c_interfaces::c_ncabor
Definition: module_netcdf_fortv2_c_interfaces.f90:227
netcdf_fortv2_c_interfaces::c_ncinq
Definition: module_netcdf_fortv2_c_interfaces.f90:205
netcdf_fortv2_c_interfaces::c_ncclos
Definition: module_netcdf_fortv2_c_interfaces.f90:172
netcdf_fortv2_c_interfaces::c_ncvggc
Definition: module_netcdf_fortv2_c_interfaces.f90:423
netcdf_fortv2_c_interfaces::convert_v2_imap
subroutine convert_v2_imap(cncid, cvarid, fmap, cmap, inullp)
Definition: module_netcdf_fortv2_c_interfaces.f90:598
netcdf_fortv2_c_interfaces::c_ncvpgc
Definition: module_netcdf_fortv2_c_interfaces.f90:343
netcdf_fortv2_c_interfaces::c_ncvpt
Definition: module_netcdf_fortv2_c_interfaces.f90:303
netcdf_fortv2_c_interfaces::c_ncdren
Definition: module_netcdf_fortv2_c_interfaces.f90:250
netcdf_fortv2_c_interfaces::c_ncaren
Definition: module_netcdf_fortv2_c_interfaces.f90:546
netcdf_nc_interfaces
Definition: module_netcdf_nc_interfaces.f90:1
netcdf_fortv2_c_interfaces::c_ncapt
Definition: module_netcdf_fortv2_c_interfaces.f90:449
netcdf_fortv2_c_interfaces::c_ncvgt1
Definition: module_netcdf_fortv2_c_interfaces.f90:357
netcdf_fortv2_c_interfaces::c_ncvpt1
Definition: module_netcdf_fortv2_c_interfaces.f90:277
netcdf_fortv2_c_interfaces::c_ncvgtc
Definition: module_netcdf_fortv2_c_interfaces.f90:396
netcdf_fortv2_c_interfaces::c_ncvptc
Definition: module_netcdf_fortv2_c_interfaces.f90:316
netcdf_fortv2_c_interfaces::c_ncddef
Definition: module_netcdf_fortv2_c_interfaces.f90:100
netcdf_fortv2_c_interfaces::c_ncvinq
Definition: module_netcdf_fortv2_c_interfaces.f90:262
netcdf_fortv2_c_interfaces::c_ncpopt
Definition: module_netcdf_fortv2_c_interfaces.f90:52
netcdf_fortv2_c_interfaces::c_ncredf
Definition: module_netcdf_fortv2_c_interfaces.f90:183
netcdf_fortv2_c_interfaces::c_ncvg1c
Definition: module_netcdf_fortv2_c_interfaces.f90:370
netcdf_fortv2_c_interfaces::c_ncvgtg
Definition: module_netcdf_fortv2_c_interfaces.f90:409
netcdf_fortv2_c_interfaces::c_ncvp1c
Definition: module_netcdf_fortv2_c_interfaces.f90:290
netcdf_fortv2_c_interfaces::c_ncvptg
Definition: module_netcdf_fortv2_c_interfaces.f90:329
netcdf_fortv2_c_interfaces::c_ncgopt
Definition: module_netcdf_fortv2_c_interfaces.f90:62
netcdf_fortv2_c_interfaces::c_ncvid
Definition: module_netcdf_fortv2_c_interfaces.f90:145
netcdf_nc_interfaces::nc_inq_dimlen
Definition: module_netcdf_nc_interfaces.f90:485
netcdf_fortv2_c_interfaces::c_ncsfil
Definition: module_netcdf_fortv2_c_interfaces.f90:570
netcdf_fortv2_c_interfaces::c_ncacpy
Definition: module_netcdf_fortv2_c_interfaces.f90:521
netcdf_fortv2_c_interfaces::c_ncaptc
Definition: module_netcdf_fortv2_c_interfaces.f90:465
netcdf_fortv2_c_interfaces::c_ncdid
Definition: module_netcdf_fortv2_c_interfaces.f90:114
netcdf_fortv2_c_interfaces::c_ncdinq
Definition: module_netcdf_fortv2_c_interfaces.f90:238
netcdf_nc_interfaces::nc_inq_vardimid
Definition: module_netcdf_nc_interfaces.f90:601
netcdf_nc_interfaces::nc_inq_varndims
Definition: module_netcdf_nc_interfaces.f90:588
netcdf_fortv2_c_interfaces::c_ncsnc
Definition: module_netcdf_fortv2_c_interfaces.f90:216
netcdf_fortv2_c_interfaces::c_nctlen
Definition: module_netcdf_fortv2_c_interfaces.f90:159
netcdf_fortv2_c_interfaces::c_nccre
Definition: module_netcdf_fortv2_c_interfaces.f90:72
netcdf_fortv2_c_interfaces::c_ncopn
Definition: module_netcdf_fortv2_c_interfaces.f90:86
netcdf_nc_interfaces::nc_inq_vartype
Definition: module_netcdf_nc_interfaces.f90:575
netcdf_fortv2_c_interfaces::c_ncagtc
Definition: module_netcdf_fortv2_c_interfaces.f90:508
netcdf_fortv2_c_interfaces::v2data_size
Definition: module_netcdf_fortv2_c_interfaces.f90:583
netcdf_fortv2_c_interfaces::c_ncendf
Definition: module_netcdf_fortv2_c_interfaces.f90:194
netcdf_fortv2_c_interfaces::c_ncvren
Definition: module_netcdf_fortv2_c_interfaces.f90:437

Return to the Main Unidata NetCDF page.