Index: README-f90 =================================================================== --- README-f90 (.../trunk) (revision 0) +++ README-f90 (.../branches/f90_datatypes_patch) (revision 531) @@ -0,0 +1,17 @@ +The NEC SX (and possibly other machines) have f90 options which +promote 1, 2 and sometimes 4-byte data to 4 or 8 bytes. A +consqeuence of this is that there is no difference between real*4 +and real*8, which can cause grief for f90 interfaces. This patch +provides for this via the preprocessor switches: + +-DHAVE_1BYTE_INT +-DHAVE_2BYTE_INT +-DHAVE_4BYTE_INT +-DHAVE_4BYTE_REAL + +for "normal" compilation all should be enabled (see env-vars for +an example) + +(a patch like this has been made independently by several people, +this patch is expanded from one by Jacob Poulsen of DMI) + Index: f90/netcdf_constants.f90 =================================================================== --- f90/netcdf_constants.f90 (.../trunk) (revision 531) +++ f90/netcdf_constants.f90 (.../branches/f90_datatypes_patch) (revision 531) @@ -1,128 +0,0 @@ - ! - ! external netcdf data types: - ! - integer, parameter, public :: & - nf90_byte = 1, & - nf90_int1 = nf90_byte, & - nf90_char = 2, & - nf90_short = 3, & - nf90_int2 = nf90_short, & - nf90_int = 4, & - nf90_int4 = nf90_int, & - nf90_float = 5, & - nf90_real = nf90_float, & - nf90_real4 = nf90_float, & - nf90_double = 6, & - nf90_real8 = nf90_double - - ! - ! default fill values: - ! - character (len = 1), parameter, public :: & - nf90_fill_char = achar(0) - integer (kind = OneByteInt), parameter, public :: & - nf90_fill_byte = -127, & - nf90_fill_int1 = nf90_fill_byte - integer (kind = TwoByteInt), parameter, public :: & - nf90_fill_short = -32767, & - nf90_fill_int2 = nf90_fill_short - integer (kind = FourByteInt), parameter, public :: & - nf90_fill_int = -2147483647 - real (kind = FourByteReal), parameter, public :: & - nf90_fill_float = 9.9692099683868690e+36, & - nf90_fill_real = nf90_fill_float, & - nf90_fill_real4 = nf90_fill_float - real (kind = EightByteReal), parameter, public :: & - nf90_fill_double = 9.9692099683868690e+36, & - nf90_fill_real8 = nf90_fill_double - - ! - ! mode flags for opening and creating a netcdf dataset: - ! - integer, parameter, public :: & - nf90_nowrite = 0, & - nf90_write = 1, & - nf90_clobber = 0, & - nf90_noclobber = 4, & - nf90_fill = 0, & - nf90_nofill = 256, & - nf90_64bit_offset = 512, & - nf90_lock = 1024, & - nf90_share = 2048 - - integer, parameter, public :: & - nf90_sizehint_default = 0, & - nf90_align_chunk = -1 - - ! - ! size argument for defining an unlimited dimension: - ! - integer, parameter, public :: nf90_unlimited = 0 - - ! - ! global attribute id: - ! - integer, parameter, public :: nf90_global = 0 - - ! - ! implementation limits: - ! - integer, parameter, public :: & - nf90_max_dims = 1024, & - nf90_max_attrs = 8192, & - nf90_max_vars = 8192, & - nf90_max_name = 256, & - nf90_max_var_dims = nf90_max_dims - - ! - ! error codes: - ! - integer, parameter, public :: & - nf90_noerr = 0, & - nf90_ebadid = -33, & - nf90_eexist = -35, & - nf90_einval = -36, & - nf90_eperm = -37, & - nf90_enotindefine = -38, & - nf90_eindefine = -39, & - nf90_einvalcoords = -40, & - nf90_emaxdims = -41, & - nf90_enameinuse = -42, & - nf90_enotatt = -43, & - nf90_emaxatts = -44, & - nf90_ebadtype = -45, & - nf90_ebaddim = -46, & - nf90_eunlimpos = -47, & - nf90_emaxvars = -48, & - nf90_enotvar = -49, & - nf90_eglobal = -50, & - nf90_enotnc = -51, & - nf90_ests = -52, & - nf90_emaxname = -53, & - nf90_eunlimit = -54, & - nf90_enorecvars = -55, & - nf90_echar = -56, & - nf90_eedge = -57, & - nf90_estride = -58, & - nf90_ebadname = -59, & - nf90_erange = -60, & - nf90_enomem = -61, & - nf90_evarsize = -62, & - nf90_edimsize = -63, & - nf90_etrunc = -64 - - ! - ! error handling modes: - ! - integer, parameter, public :: & - nf90_fatal = 1, & - nf90_verbose = 2 - - ! - ! format version numbers: - ! - integer, parameter, public :: & - nf90_format_classic = 1, & - nf90_format_64bit = 2, & - nf90_format_netcdf4 = 3, & - nf90_format_netcdf4_classic = 4 Index: f90/typeSizes.f90 =================================================================== --- f90/typeSizes.f90 (.../trunk) (revision 531) +++ f90/typeSizes.f90 (.../branches/f90_datatypes_patch) (revision 531) @@ -1,64 +0,0 @@ -! Description: -! Provide named kind parameters for use in declarations of real and integer -! variables with specific byte sizes (i.e. one, two, four, and eight byte -! integers; four and eight byte reals). The parameters can then be used -! in (KIND = XX) modifiers in declarations. -! A single function (byteSizesOK()) is provided to ensure that the selected -! kind parameters are correct. -! -! Input Parameters: -! None. -! -! Output Parameters: -! Public parameters, fixed at compile time: -! OneByteInt, TwoByteInt, FourByteInt, EightByteInt -! FourByteReal, EightByteRadl -! -! References and Credits: -! Written by -! Robert Pincus -! Cooperative Institue for Meteorological Satellite Studies -! University of Wisconsin - Madison -! 1225 W. Dayton St. -! Madison, Wisconsin 53706 -! Robert.Pincus@ssec.wisc.edu -! -! Design Notes: -! Fortran 90 doesn't allow one to check the number of bytes in a real variable; -! we check only that four byte and eight byte reals have different kind parameters. -! -module typeSizes - implicit none - public - integer, parameter :: OneByteInt = selected_int_kind(2), & - TwoByteInt = selected_int_kind(4), & - FourByteInt = selected_int_kind(9), & - EightByteInt = selected_int_kind(18) - - integer, parameter :: & - FourByteReal = selected_real_kind(P = 6, R = 37), & - EightByteReal = selected_real_kind(P = 13, R = 307) -contains - logical function byteSizesOK() - ! Users may call this function once to ensure that the kind parameters - ! the module defines are available with the current compiler. - ! We can't ensure that the two REAL kinds are actually four and - ! eight bytes long, but we can ensure that they are distinct. - ! Early Fortran 90 compilers would sometimes report incorrect results for - ! the bit_size intrinsic, but I haven't seen this in a long time. - - ! Local variables - integer (kind = OneByteInt) :: One - integer (kind = TwoByteInt) :: Two - integer (kind = FourByteInt) :: Four - - if (bit_size( One) == 8 .and. bit_size( Two) == 16 .and. & - bit_size(Four) == 32 .and. & - FourByteReal > 0 .and. EightByteReal > 0 .and. & - FourByteReal /= EightByteReal) then - byteSizesOK = .true. - else - byteSizesOK = .false. - end if - end function byteSizesOK -end module typeSizes Index: f90/netcdf_test.f90 =================================================================== --- f90/netcdf_test.f90 (.../trunk) (revision 531) +++ f90/netcdf_test.f90 (.../branches/f90_datatypes_patch) (revision 531) @@ -1,112 +0,0 @@ -! This program provides an elementary check of some of the parts of the -! Fortran 90 interface to netCDF 3.5. It is a Fortran 90 implementation -! of the nctst.cpp program provided with the C++ interface to netcdf -! (in the src/cxx directory of the netcdf distribution). -! -program netcdfTest - use typeSizes - use netcdf - implicit none - - ! netcdf related variables - integer :: ncFileID, & - latDimID, lonDimID, frTimeDimID, timeDimID, & - pressVarID, latVarID, lonVarID, frTimeVarID, refTimeVarID, scalarVarID - - ! Local variables - integer, parameter :: numLats = 4, numLons = 3, & - numFrTimes = 2, timeStringLen = 20 - character (len = *), parameter :: fileName = "example.nc" - integer :: counter - real, dimension(numLons, numLats, numFrTimes) :: pressure - integer (kind = FourByteInt), dimension(numFrTimes) :: frTimeVals - real (kind = FourByteReal) fillVal; - real (kind = FourByteReal), dimension(2) :: validRange; - - ! -------------------- - ! Code begins - ! -------------------- - if(.not. byteSizesOK()) then - print *, "Compiler does not appear to support required kinds of variables." - stop - end if - - ! Create the file - call check(nf90_create(path = trim(fileName), cmode = nf90_clobber, ncid = ncFileID)) - - ! Define the dimensions - call check(nf90_def_dim(ncid = ncFileID, name = "lat", len = numLats, dimid = latDimID)) - call check(nf90_def_dim(ncid = ncFileID, name = "lon", len = numLons, dimid = lonDimID)) - call check(nf90_def_dim(ncid = ncFileID, name = "frtime", len = nf90_unlimited, dimid = frTimeDimID)) - call check(nf90_def_dim(ncid = ncFileID, name = "timelen", len = timeStringLen, dimid = timeDimID)) - - ! Create variables and attributes - call check(nf90_def_var(ncid = ncFileID, name = "P", xtype = nf90_float, & - dimids = (/ lonDimID, latDimID, frTimeDimID /), varID = pressVarID) ) - call check(nf90_put_att(ncFileID, pressVarID, "long_name", "pressure at maximum wind")) - call check(nf90_put_att(ncFileID, pressVarID, "units", "hectopascals") ) - ! Use 4-byte reals explicitly, to match 4-byte attribute type in test file - validRange(1) = 0. - validRange(2) = 1500 - call check(nf90_put_att(ncFileID, pressVarID, "valid_range", validRange)) - ! Use a 4-byte float constant, to match variable type - fillVal = -9999.0 - call check(nf90_put_att(ncFileID, pressVarID, "_FillValue", fillVal ) ) - - call check(nf90_def_var(ncFileID, "lat", nf90_float, dimids = latDimID, varID = latVarID) ) - call check(nf90_put_att(ncFileID, latVarID, "long_name", "latitude")) - call check(nf90_put_att(ncFileID, latVarID, "units", "degrees_north")) - - call check(nf90_def_var(ncFileID, "lon", nf90_float, lonDimID, lonVarID) ) - call check(nf90_put_att(ncFileID, lonVarID, "long_name", "longitude")) - call check(nf90_put_att(ncFileID, lonVarID, "units", "degrees_east")) - - call check(nf90_def_var(ncFileID, "frtime", nf90_int, frTimeDimID, frTimeVarID) ) - call check(nf90_put_att(ncFileID, frTimeVarID, "long_name", "forecast time")) - call check(nf90_put_att(ncFileID, frTimeVarID, "units", "hours")) - - call check(nf90_def_var(ncFileID, "reftime", nf90_char, timeDimID, refTimeVarID) ) - call check(nf90_put_att(ncFileID, refTimeVarID, "long_name", "reference time")) - call check(nf90_put_att(ncFileID, refTimeVarID, "units", "text_time")) - - ! In the C++ interface the define a scalar variable - do we know how to do this? - call check(nf90_def_var(ncFileID, "ScalarVariable", nf90_real, scalarVarID)) - - ! Global attributes - call check(nf90_put_att(ncFileID, nf90_global, "history", & - "created by Unidata LDM from NPS broadcast")) - call check(nf90_put_att(ncFileID, nf90_global, "title", & - "NMC Global Product Set: Pressure at Maximum Wind")) - - ! Leave define mode - call check(nf90_enddef(ncfileID)) - - ! Write the dimension variables - call check(nf90_put_var(ncFileID, latVarId, (/ -90., -87.5, -85., -82.5 /)) ) - call check(nf90_put_var(ncFileID, lonVarId, (/ -180, -175, -170 /) ) ) - ! Don't use anonymous array here, in case platform has 8-byte integers - frTimeVals(1) = 12 - frTimeVals(2) = 18 - call check(nf90_put_var(ncFileID, frTimeVarId, frTimeVals ) ) - call check(nf90_put_var(ncFileID, reftimeVarID, "1992-3-21 12:00" ) ) - - ! Write the pressure variable. Write a slab at a time to check incrementing. - pressure = 949. + real(reshape( (/ (counter, counter = 1, numLats * numLons * numFrTimes) /), & - (/ numLons, numLats, numFrTimes /) ) ) - call check(nf90_put_var(ncFileID, pressVarID, pressure(:, :, 1:1)) ) - call check(nf90_put_var(ncFileID, pressVarID, pressure(:, :, 2:2), start = (/ 1, 1, 2 /)) ) - - call check(nf90_put_var(ncFileID, scalarVarID, 10)) - call check(nf90_close(ncFileID)) - -contains - ! Internal subroutine - checks error status after each netcdf, prints out text message each time - ! an error code is returned. - subroutine check(status) - integer, intent ( in) :: status - - if(status /= nf90_noerr) then - print *, trim(nf90_strerror(status)) - end if - end subroutine check -end program netcdfTest Index: f90/netcdf.f90 =================================================================== --- f90/netcdf.f90 (.../trunk) (revision 531) +++ f90/netcdf.f90 (.../branches/f90_datatypes_patch) (revision 531) @@ -1,53 +0,0 @@ -! Description: -! -! Input Parameters: -! None. -! -! Output Parameters: -! Many public constants are defined in "netcdf_constants.f90". The names follow -! the Fortran 77 names, with nf90_ used as a prefix instead of nf_77. -! Functions are made accessable through PUBLIC:: statements in "netcdf_visibility.f90". -! Only the functions listed in this file are available in the interface. -! -! References and Credits: -! Written by -! Robert Pincus -! Cooperative Institue for Meteorological Satellite Studies -! University of Wisconsin - Madison -! 1225 W. Dayton St. -! Madison, Wisconsin 53706 -! Robert.Pincus@ssec.wisc.edu -! -! Design Notes: -! Module elements are private by default. -! Many functions have optional arguments. In order to keep the interface easy to use, -! we've reordered the arguments (relative to the F77 interface) in some functions. -! The external datatype of attributes is the same as the internal type. -! By default, data is read from or put into the lowest part of the netCDF array with stride 1. -! We've made heavy use of overloading, especially in the variable put and get routines. -! A single function exists for putting all variables; a single function exists for getting -! variables. -! Text variables must be treated somewhat differently. When a character variable is defined, the -! fastest-varying index (first index in Fortran) must be the maxiumu length of the character -! string. N dimensional arrays of strings passed to the put or get functions are written/read -! from dimensions 2:N+1. The number of values along the first dimension is determined by the -! length of the argument character string. -! - module netcdf - use typeSizes, only: OneByteInt, TwoByteInt, FourByteInt, EightByteInt, & - FourByteReal, EightByteReal - implicit none - private - - include "netcdf_constants.f90" - include "netcdf_externals.f90" - include "netcdf_overloads.f90" - include "netcdf_visibility.f90" -contains - include "netcdf_file.f90" - include "netcdf_dims.f90" - include "netcdf_attributes.f90" - include "netcdf_variables.f90" - include "netcdf_text_variables.f90" - include "netcdf_expanded.f90" -end module netcdf Index: f90/netcdf_attributes.f90 =================================================================== --- f90/netcdf_attributes.f90 (.../trunk) (revision 531) +++ f90/netcdf_attributes.f90 (.../branches/f90_datatypes_patch) (revision 531) @@ -1,329 +0,0 @@ - ! - ! Attribute routines: - ! - ! ------- - function nf90_copy_att(ncid_in, varid_in, name, ncid_out, varid_out) - integer, intent( in) :: ncid_in, varid_in - character (len = *), intent( in) :: name - integer, intent( in) :: ncid_out, varid_out - integer :: nf90_copy_att - - nf90_copy_att = nf_copy_att(ncid_in, varid_in, name, ncid_out, varid_out) - end function nf90_copy_att - ! ------- - function nf90_rename_att(ncid, varid, curname, newname) - integer, intent( in) :: ncid, varid - character (len = *), intent( in) :: curname, newname - integer :: nf90_rename_att - - nf90_rename_att = nf_rename_att(ncid, varid, curname, newname) - end function nf90_rename_att - ! ------- - function nf90_del_att(ncid, varid, name) - integer, intent( in) :: ncid, varid - character (len = *), intent( in) :: name - integer :: nf90_del_att - - nf90_del_att = nf_del_att(ncid, varid, name) - end function nf90_del_att - ! ------- - ! Attribute inquiry functions - ! ------- - function nf90_inq_attname(ncid, varid, attnum, name) - integer, intent( in) :: ncid, varid, attnum - character (len = *), intent(out) :: name - integer :: nf90_inq_attname - - nf90_inq_attname = nf_inq_attname(ncid, varid, attnum, name) - end function nf90_inq_attname - ! ------- - function nf90_inquire_attribute(ncid, varid, name, xtype, len, attnum) - integer, intent( in) :: ncid, varid - character (len = *), intent( in) :: name - integer, intent(out), optional :: xtype, len, attnum - integer :: nf90_inquire_attribute - - integer :: local_xtype, local_len - - ! Do we need to worry about not saving the state from this call? - if(present(attnum)) & - nf90_inquire_attribute = nf_inq_attid(ncid, varid, name, attnum) - nf90_inquire_attribute = nf_inq_att (ncid, varid, name, local_xtype, local_len) - if(present(xtype)) xtype = local_xtype - if(present(len )) len = local_len - end function nf90_inquire_attribute - ! ------- - ! Put and get functions; these will get overloaded - ! ------- - ! Text - ! ------- - function nf90_put_att_text(ncid, varid, name, values) - integer, intent( in) :: ncid, varid - character(len = *), intent( in) :: name - character(len = *), intent( in) :: values - integer :: nf90_put_att_text - - nf90_put_att_text = nf_put_att_text(ncid, varid, name, len_trim(values), trim(values)) - end function nf90_put_att_text - ! ------- - function nf90_get_att_text(ncid, varid, name, values) - integer, intent( in) :: ncid, varid - character(len = *), intent( in) :: name - character(len = *), intent(out) :: values - integer :: nf90_get_att_text - - nf90_get_att_text = nf_get_att_text(ncid, varid, name, values) - end function nf90_get_att_text - ! ------- - ! Integer attributes - ! ------- - function nf90_put_att_OneByteInt(ncid, varid, name, values) - integer, intent( in) :: ncid, varid - character(len = *), intent( in) :: name - integer (kind = OneByteInt), dimension(:), intent( in) :: values - integer :: nf90_put_att_OneByteInt - - nf90_put_att_OneByteInt = nf_put_att_int1(ncid, varid, name, nf90_int1, size(values), values) - end function nf90_put_att_OneByteInt - ! ------- - function nf90_put_att_one_OneByteInt(ncid, varid, name, values) - integer, intent( in) :: ncid, varid - character(len = *), intent( in) :: name - integer (kind = OneByteInt), intent( in) :: values - integer :: nf90_put_att_one_OneByteInt - - integer (kind = OneByteInt), dimension(1) :: valuesA - valuesA(1) = values - nf90_put_att_one_OneByteInt = nf_put_att_int1(ncid, varid, name, nf90_int1, 1, valuesA) - end function nf90_put_att_one_OneByteInt - ! ------- - function nf90_get_att_OneByteInt(ncid, varid, name, values) - integer, intent( in) :: ncid, varid - character(len = *), intent( in) :: name - integer (kind = OneByteInt), dimension(:), intent(out) :: values - integer :: nf90_get_att_OneByteInt - - nf90_get_att_OneByteInt = nf_get_att_int1(ncid, varid, name, values) - end function nf90_get_att_OneByteInt - ! ------- - function nf90_get_att_one_OneByteInt(ncid, varid, name, values) - integer, intent( in) :: ncid, varid - character(len = *), intent( in) :: name - integer (kind = OneByteInt), intent(out) :: values - integer :: nf90_get_att_one_OneByteInt - - integer (kind = OneByteInt), dimension(1) :: valuesA - nf90_get_att_one_OneByteInt = nf_get_att_int1(ncid, varid, name, valuesA) - values = valuesA(1) - end function nf90_get_att_one_OneByteInt - ! ------- - function nf90_put_att_TwoByteInt(ncid, varid, name, values) - integer, intent( in) :: ncid, varid - character(len = *), intent( in) :: name - integer (kind = TwoByteInt), dimension(:), intent( in) :: values - integer :: nf90_put_att_TwoByteInt - - nf90_put_att_TwoByteInt = nf_put_att_int2(ncid, varid, name, nf90_int2, size(values), values) - end function nf90_put_att_TwoByteInt - ! ------- - function nf90_put_att_one_TwoByteInt(ncid, varid, name, values) - integer, intent( in) :: ncid, varid - character(len = *), intent( in) :: name - integer (kind = TwoByteInt), intent( in) :: values - integer :: nf90_put_att_one_TwoByteInt - - integer (kind = TwoByteInt), dimension(1) :: valuesA - valuesA(1) = values - nf90_put_att_one_TwoByteInt = nf_put_att_int2(ncid, varid, name, nf90_int2, 1, valuesA) - end function nf90_put_att_one_TwoByteInt - ! ------- - function nf90_get_att_TwoByteInt(ncid, varid, name, values) - integer, intent( in) :: ncid, varid - character(len = *), intent( in) :: name - integer (kind = TwoByteInt), dimension(:), intent(out) :: values - integer :: nf90_get_att_TwoByteInt - - nf90_get_att_TwoByteInt = nf_get_att_int2(ncid, varid, name, values) - end function nf90_get_att_TwoByteInt - ! ------- - function nf90_get_att_one_TwoByteInt(ncid, varid, name, values) - integer, intent( in) :: ncid, varid - character(len = *), intent( in) :: name - integer (kind = TwoByteInt), intent(out) :: values - integer :: nf90_get_att_one_TwoByteInt - - integer (kind = TwoByteInt), dimension(1) :: valuesA - nf90_get_att_one_TwoByteInt = nf_get_att_int2(ncid, varid, name, valuesA) - values = valuesA(1) - end function nf90_get_att_one_TwoByteInt - ! ------- - function nf90_put_att_FourByteInt(ncid, varid, name, values) - integer, intent( in) :: ncid, varid - character(len = *), intent( in) :: name - integer (kind = FourByteInt), dimension(:), intent( in) :: values - integer :: nf90_put_att_FourByteInt - - nf90_put_att_FourByteInt = nf_put_att_int(ncid, varid, name, nf90_int, size(values), int(values)) - end function nf90_put_att_FourByteInt - ! ------- - function nf90_put_att_one_FourByteInt(ncid, varid, name, values) - integer, intent( in) :: ncid, varid - character(len = *), intent( in) :: name - integer (kind = FourByteInt), intent( in) :: values - integer :: nf90_put_att_one_FourByteInt - - integer (kind = FourByteInt), dimension(1) :: valuesA - valuesA(1) = int(values) - nf90_put_att_one_FourByteInt = nf_put_att_int(ncid, varid, name, nf90_int, 1, valuesA) - end function nf90_put_att_one_FourByteInt - ! ------- - function nf90_get_att_FourByteInt(ncid, varid, name, values) - integer, intent( in) :: ncid, varid - character(len = *), intent( in) :: name - integer (kind = FourByteInt), dimension(:), intent(out) :: values - integer :: nf90_get_att_FourByteInt - - integer, dimension(size(values)) :: defaultInteger - - nf90_get_att_FourByteInt = nf_get_att_int(ncid, varid, name, defaultInteger) - values(:) = defaultInteger(:) - end function nf90_get_att_FourByteInt - ! ------- - function nf90_get_att_one_FourByteInt(ncid, varid, name, values) - integer, intent( in) :: ncid, varid - character(len = *), intent( in) :: name - integer (kind = FourByteInt), intent(out) :: values - integer :: nf90_get_att_one_FourByteInt - - integer, dimension(1) :: defaultInteger - - nf90_get_att_one_FourByteInt = nf_get_att_int(ncid, varid, name, defaultInteger) - values = defaultInteger(1) - end function nf90_get_att_one_FourByteInt - ! ------- - function nf90_put_att_EightByteInt(ncid, varid, name, values) - integer, intent( in) :: ncid, varid - character(len = *), intent( in) :: name - integer (kind = EightByteInt), dimension(:), intent( in) :: values - integer :: nf90_put_att_EightByteInt - - nf90_put_att_EightByteInt = nf_put_att_int(ncid, varid, name, nf90_int, size(values), int(values)) - end function nf90_put_att_EightByteInt - ! ------- - function nf90_put_att_one_EightByteInt(ncid, varid, name, values) - integer, intent( in) :: ncid, varid - character(len = *), intent( in) :: name - integer (kind = EightByteInt), intent( in) :: values - integer :: nf90_put_att_one_EightByteInt - - integer, dimension(1) :: valuesA - valuesA(1) = values - nf90_put_att_one_EightByteInt = nf_put_att_int(ncid, varid, name, nf90_int, 1, valuesA) - end function nf90_put_att_one_EightByteInt - ! ------- - function nf90_get_att_EightByteInt(ncid, varid, name, values) - integer, intent( in) :: ncid, varid - character(len = *), intent( in) :: name - integer (kind = EightByteInt), dimension(:), intent(out) :: values - integer :: nf90_get_att_EightByteInt - - integer, dimension(size(values)) :: defaultInteger - - nf90_get_att_EightByteInt = nf_get_att_int(ncid, varid, name, defaultInteger) - values(:) = defaultInteger(:) - end function nf90_get_att_EightByteInt - ! ------- - function nf90_get_att_one_EightByteInt(ncid, varid, name, values) - integer, intent( in) :: ncid, varid - character(len = *), intent( in) :: name - integer (kind = EightByteInt), intent(out) :: values - integer :: nf90_get_att_one_EightByteInt - - integer, dimension(1) :: defaultInteger - - nf90_get_att_one_EightByteInt = nf_get_att_int(ncid, varid, name, defaultInteger) - values = defaultInteger(1) - end function nf90_get_att_one_EightByteInt - ! ------- - ! Real attributes - ! ------- - function nf90_put_att_FourByteReal(ncid, varid, name, values) - integer, intent( in) :: ncid, varid - character(len = *), intent( in) :: name - real (kind = FourByteReal), dimension(:), intent( in) :: values - integer :: nf90_put_att_FourByteReal - - nf90_put_att_FourByteReal = nf_put_att_real(ncid, varid, name, nf90_real4, size(values), values) - end function nf90_put_att_FourByteReal - ! ------- - function nf90_put_att_one_FourByteReal(ncid, varid, name, values) - integer, intent( in) :: ncid, varid - character(len = *), intent( in) :: name - real (kind = FourByteReal), intent( in) :: values - integer :: nf90_put_att_one_FourByteReal - - real (kind = FourByteReal), dimension(1) :: valuesA - valuesA(1) = values - nf90_put_att_one_FourByteReal = nf_put_att_real(ncid, varid, name, nf90_real4, 1, valuesA) - end function nf90_put_att_one_FourByteReal - ! ------- - function nf90_get_att_FourByteReal(ncid, varid, name, values) - integer, intent( in) :: ncid, varid - character(len = *), intent( in) :: name - real (kind = FourByteReal), dimension(:), intent(out) :: values - integer :: nf90_get_att_FourByteReal - - nf90_get_att_FourByteReal = nf_get_att_real(ncid, varid, name, values) - end function nf90_get_att_FourByteReal - ! ------- - function nf90_get_att_one_FourByteReal(ncid, varid, name, values) - integer, intent( in) :: ncid, varid - character(len = *), intent( in) :: name - real (kind = FourByteReal), intent(out) :: values - integer :: nf90_get_att_one_FourByteReal - - real (kind = FourByteReal), dimension(1) :: valuesA - nf90_get_att_one_FourByteReal = nf_get_att_real(ncid, varid, name, valuesA) - values = valuesA(1) - end function nf90_get_att_one_FourByteReal - ! ------- - function nf90_put_att_EightByteReal(ncid, varid, name, values) - integer, intent( in) :: ncid, varid - character(len = *), intent( in) :: name - real (kind = EightByteReal), dimension(:), intent( in) :: values - integer :: nf90_put_att_EightByteReal - - nf90_put_att_EightByteReal = nf_put_att_double(ncid, varid, name, nf90_real8, size(values), values) - end function nf90_put_att_EightByteReal - ! ------- - function nf90_put_att_one_EightByteReal(ncid, varid, name, values) - integer, intent( in) :: ncid, varid - character(len = *), intent( in) :: name - real (kind = EightByteReal), intent( in) :: values - integer :: nf90_put_att_one_EightByteReal - - real (kind = EightByteReal), dimension(1) :: valuesA - valuesA(1) = values - nf90_put_att_one_EightByteReal = nf_put_att_double(ncid, varid, name, nf90_real8, 1, valuesA) - end function nf90_put_att_one_EightByteReal - ! ------- - function nf90_get_att_EightByteReal(ncid, varid, name, values) - integer, intent( in) :: ncid, varid - character(len = *), intent( in) :: name - real (kind = EightByteReal), dimension(:), intent(out) :: values - integer :: nf90_get_att_EightByteReal - - nf90_get_att_EightByteReal = nf_get_att_double(ncid, varid, name, values) - end function nf90_get_att_EightByteReal - ! ------- - function nf90_get_att_one_EightByteReal(ncid, varid, name, values) - integer, intent( in) :: ncid, varid - character(len = *), intent( in) :: name - real (kind = EightByteReal), intent(out) :: values - integer :: nf90_get_att_one_EightByteReal - - real (kind = EightByteReal), dimension(1) :: valuesA - nf90_get_att_one_EightByteReal = nf_get_att_double(ncid, varid, name, valuesA) - values = valuesA(1) - end function nf90_get_att_one_EightByteReal - ! ------- Index: f90/netcdf_expanded.f90 =================================================================== --- f90/netcdf_expanded.f90 (.../trunk) (revision 531) +++ f90/netcdf_expanded.f90 (.../branches/f90_datatypes_patch) (revision 531) @@ -1,3183 +0,0 @@ - - - - - - - function nf90_put_var_OneByteInt(ncid, varid, values, start) - integer, intent( in) :: ncid, varid - integer (kind = OneByteInt), intent( in) :: values - integer, dimension(:), optional, intent( in) :: start - integer :: nf90_put_var_OneByteInt - - integer, dimension(nf90_max_var_dims) :: localIndex - integer :: counter - - ! Set local arguments to default values - localIndex(:) = 1 - if(present(start)) localIndex(:size(start)) = start(:) - - nf90_put_var_OneByteInt = nf_put_var1_int1(ncid, varid, localIndex, values) - end function nf90_put_var_OneByteInt - - - function nf90_put_var_TwoByteInt(ncid, varid, values, start) - integer, intent( in) :: ncid, varid - integer (kind = TwoByteInt), intent( in) :: values - integer, dimension(:), optional, intent( in) :: start - integer :: nf90_put_var_TwoByteInt - - integer, dimension(nf90_max_var_dims) :: localIndex - integer :: counter - - ! Set local arguments to default values - localIndex(:) = 1 - if(present(start)) localIndex(:size(start)) = start(:) - - nf90_put_var_TwoByteInt = nf_put_var1_int2(ncid, varid, localIndex, values) - end function nf90_put_var_TwoByteInt - - - function nf90_put_var_FourByteInt(ncid, varid, values, start) - integer, intent( in) :: ncid, varid - integer (kind = FourByteInt), intent( in) :: values - integer, dimension(:), optional, intent( in) :: start - integer :: nf90_put_var_FourByteInt - - integer, dimension(nf90_max_var_dims) :: localIndex - integer :: counter - - ! Set local arguments to default values - localIndex(:) = 1 - if(present(start)) localIndex(:size(start)) = start(:) - - nf90_put_var_FourByteInt = nf_put_var1_int(ncid, varid, localIndex, int(values)) - end function nf90_put_var_FourByteInt - - - function nf90_put_var_EightByteInt(ncid, varid, values, start) - integer, intent( in) :: ncid, varid - integer (kind = EightByteInt), intent( in) :: values - integer, dimension(:), optional, intent( in) :: start - integer :: nf90_put_var_EightByteInt - - integer, dimension(nf90_max_var_dims) :: localIndex - integer :: counter - - ! Set local arguments to default values - localIndex(:) = 1 - if(present(start)) localIndex(:size(start)) = start(:) - - nf90_put_var_EightByteInt = nf_put_var1_int(ncid, varid, localIndex, int(values)) - end function nf90_put_var_EightByteInt - - - function nf90_put_var_FourByteReal(ncid, varid, values, start) - integer, intent( in) :: ncid, varid - real (kind = FourByteReal), intent( in) :: values - integer, dimension(:), optional, intent( in) :: start - integer :: nf90_put_var_FourByteReal - - integer, dimension(nf90_max_var_dims) :: localIndex - integer :: counter - - ! Set local arguments to default values - localIndex(:) = 1 - if(present(start)) localIndex(:size(start)) = start(:) - - nf90_put_var_FourByteReal = nf_put_var1_real(ncid, varid, localIndex, values) - end function nf90_put_var_FourByteReal - - - function nf90_put_var_EightByteReal(ncid, varid, values, start) - integer, intent( in) :: ncid, varid - real (kind = EightByteReal), intent( in) :: values - integer, dimension(:), optional, intent( in) :: start - integer :: nf90_put_var_EightByteReal - - integer, dimension(nf90_max_var_dims) :: localIndex - integer :: counter - - ! Set local arguments to default values - localIndex(:) = 1 - if(present(start)) localIndex(:size(start)) = start(:) - - nf90_put_var_EightByteReal = nf_put_var1_double(ncid, varid, localIndex, values) - end function nf90_put_var_EightByteReal - - - function nf90_get_var_OneByteInt(ncid, varid, values, start) - integer, intent( in) :: ncid, varid - integer (kind = OneByteInt), intent(out) :: values - integer, dimension(:), optional, intent( in) :: start - integer :: nf90_get_var_OneByteInt - - integer, dimension(nf90_max_var_dims) :: localIndex - integer :: counter - - ! Set local arguments to default values - localIndex(:) = 1 - if(present(start)) localIndex(:size(start)) = start(:) - - nf90_get_var_OneByteInt = nf_get_var1_int1(ncid, varid, localIndex, values) - end function nf90_get_var_OneByteInt - - - function nf90_get_var_TwoByteInt(ncid, varid, values, start) - integer, intent( in) :: ncid, varid - integer (kind = TwoByteInt), intent(out) :: values - integer, dimension(:), optional, intent( in) :: start - integer :: nf90_get_var_TwoByteInt - - integer, dimension(nf90_max_var_dims) :: localIndex - integer :: counter - - ! Set local arguments to default values - localIndex(:) = 1 - if(present(start)) localIndex(:size(start)) = start(:) - - nf90_get_var_TwoByteInt = nf_get_var1_int2(ncid, varid, localIndex, values) - end function nf90_get_var_TwoByteInt - - - function nf90_get_var_FourByteInt(ncid, varid, values, start) - integer, intent( in) :: ncid, varid - integer (kind = FourByteInt), intent(out) :: values - integer, dimension(:), optional, intent( in) :: start - integer :: nf90_get_var_FourByteInt - - integer, dimension(nf90_max_var_dims) :: localIndex - integer :: counter - integer :: defaultInteger - - ! Set local arguments to default values - localIndex(:) = 1 - if(present(start)) localIndex(:size(start)) = start(:) - - nf90_get_var_FourByteInt = nf_get_var1_int(ncid, varid, localIndex, defaultInteger) - values = defaultInteger - end function nf90_get_var_FourByteInt - - - function nf90_get_var_EightByteInt(ncid, varid, values, start) - integer, intent( in) :: ncid, varid - integer (kind = EightByteInt), intent(out) :: values - integer, dimension(:), optional, intent( in) :: start - integer :: nf90_get_var_EightByteInt - - integer, dimension(nf90_max_var_dims) :: localIndex - integer :: counter - integer :: defaultInteger - - ! Set local arguments to default values - localIndex(:) = 1 - if(present(start)) localIndex(:size(start)) = start(:) - - nf90_get_var_EightByteInt = nf_get_var1_int(ncid, varid, localIndex, defaultInteger) - values = defaultInteger - end function nf90_get_var_EightByteInt - - - function nf90_get_var_FourByteReal(ncid, varid, values, start) - integer, intent( in) :: ncid, varid - real (kind = FourByteReal), intent(out) :: values - integer, dimension(:), optional, intent( in) :: start - integer :: nf90_get_var_FourByteReal - - integer, dimension(nf90_max_var_dims) :: localIndex - integer :: counter - - ! Set local arguments to default values - localIndex(:) = 1 - if(present(start)) localIndex(:size(start)) = start(:) - - nf90_get_var_FourByteReal = nf_get_var1_real(ncid, varid, localIndex, values) - end function nf90_get_var_FourByteReal - - - function nf90_get_var_EightByteReal(ncid, varid, values, start) - integer, intent( in) :: ncid, varid - real (kind = EightByteReal), intent(out) :: values - integer, dimension(:), optional, intent( in) :: start - integer :: nf90_get_var_EightByteReal - - integer, dimension(nf90_max_var_dims) :: localIndex - integer :: counter - - ! Set local arguments to default values - localIndex(:) = 1 - if(present(start)) localIndex(:size(start)) = start(:) - - nf90_get_var_EightByteReal = nf_get_var1_double(ncid, varid, localIndex, values) - end function nf90_get_var_EightByteReal - - - - function nf90_put_var_1D_OneByteInt(ncid, varid, values, start, count, stride, map) - integer, intent( in) :: ncid, varid - integer (kind = OneByteInt), dimension(:), & - intent( in) :: values - integer, dimension(:), optional, intent( in) :: start, count, stride, map - integer :: nf90_put_var_1D_OneByteInt - - integer, dimension(nf90_max_var_dims) :: localStart, localCount, localStride, localMap - integer :: numDims, counter - - ! Set local arguments to default values - numDims = size(shape(values)) - localStart (: ) = 1 - localCount (:numDims ) = shape(values) - localCount (numDims+1:) = 1 - localStride(: ) = 1 - localMap (:numDims ) = (/ 1, (product(localCount(:counter)), counter = 1, numDims - 1) /) - - if(present(start)) localStart (:size(start) ) = start(:) - if(present(count)) localCount (:size(count) ) = count(:) - if(present(stride)) localStride(:size(stride)) = stride(:) - if(present(map)) then - localMap (:size(map)) = map(:) - nf90_put_var_1D_OneByteInt = & - nf_put_varm_int1(ncid, varid, localStart, localCount, localStride, localMap, values) - else if(present(stride)) then - nf90_put_var_1D_OneByteInt = & - nf_put_vars_int1(ncid, varid, localStart, localCount, localStride, values) - else - nf90_put_var_1D_OneByteInt = & - nf_put_vara_int1(ncid, varid, localStart, localCount, values) - end if - end function nf90_put_var_1D_OneByteInt - - - function nf90_put_var_2D_OneByteInt(ncid, varid, values, start, count, stride, map) - integer, intent( in) :: ncid, varid - integer (kind = OneByteInt), dimension(:, :), & - intent( in) :: values - integer, dimension(:), optional, intent( in) :: start, count, stride, map - integer :: nf90_put_var_2D_OneByteInt - - integer, dimension(nf90_max_var_dims) :: localStart, localCount, localStride, localMap - integer :: numDims, counter - - ! Set local arguments to default values - numDims = size(shape(values)) - localStart (: ) = 1 - localCount (:numDims ) = shape(values) - localCount (numDims+1:) = 1 - localStride(: ) = 1 - localMap (:numDims ) = (/ 1, (product(localCount(:counter)), counter = 1, numDims - 1) /) - - if(present(start)) localStart (:size(start) ) = start(:) - if(present(count)) localCount (:size(count) ) = count(:) - if(present(stride)) localStride(:size(stride)) = stride(:) - if(present(map)) then - localMap (:size(map)) = map(:) - nf90_put_var_2D_OneByteInt = & - nf_put_varm_int1(ncid, varid, localStart, localCount, localStride, localMap, values) - else if(present(stride)) then - nf90_put_var_2D_OneByteInt = & - nf_put_vars_int1(ncid, varid, localStart, localCount, localStride, values) - else - nf90_put_var_2D_OneByteInt = & - nf_put_vara_int1(ncid, varid, localStart, localCount, values) - end if - end function nf90_put_var_2D_OneByteInt - - - function nf90_put_var_3D_OneByteInt(ncid, varid, values, start, count, stride, map) - integer, intent( in) :: ncid, varid - integer (kind = OneByteInt), dimension(:, :, :), & - intent( in) :: values - integer, dimension(:), optional, intent( in) :: start, count, stride, map - integer :: nf90_put_var_3D_OneByteInt - - integer, dimension(nf90_max_var_dims) :: localStart, localCount, localStride, localMap - integer :: numDims, counter - - ! Set local arguments to default values - numDims = size(shape(values)) - localStart (: ) = 1 - localCount (:numDims ) = shape(values) - localCount (numDims+1:) = 1 - localStride(: ) = 1 - localMap (:numDims ) = (/ 1, (product(localCount(:counter)), counter = 1, numDims - 1) /) - - if(present(start)) localStart (:size(start) ) = start(:) - if(present(count)) localCount (:size(count) ) = count(:) - if(present(stride)) localStride(:size(stride)) = stride(:) - if(present(map)) then - localMap (:size(map)) = map(:) - nf90_put_var_3D_OneByteInt = & - nf_put_varm_int1(ncid, varid, localStart, localCount, localStride, localMap, values) - else if(present(stride)) then - nf90_put_var_3D_OneByteInt = & - nf_put_vars_int1(ncid, varid, localStart, localCount, localStride, values) - else - nf90_put_var_3D_OneByteInt = & - nf_put_vara_int1(ncid, varid, localStart, localCount, values) - end if - end function nf90_put_var_3D_OneByteInt - - - function nf90_put_var_4D_OneByteInt(ncid, varid, values, start, count, stride, map) - integer, intent( in) :: ncid, varid - integer (kind = OneByteInt), dimension(:, :, :, :), & - intent( in) :: values - integer, dimension(:), optional, intent( in) :: start, count, stride, map - integer :: nf90_put_var_4D_OneByteInt - - integer, dimension(nf90_max_var_dims) :: localStart, localCount, localStride, localMap - integer :: numDims, counter - - ! Set local arguments to default values - numDims = size(shape(values)) - localStart (: ) = 1 - localCount (:numDims ) = shape(values) - localCount (numDims+1:) = 1 - localStride(: ) = 1 - localMap (:numDims ) = (/ 1, (product(localCount(:counter)), counter = 1, numDims - 1) /) - - if(present(start)) localStart (:size(start) ) = start(:) - if(present(count)) localCount (:size(count) ) = count(:) - if(present(stride)) localStride(:size(stride)) = stride(:) - if(present(map)) then - localMap (:size(map)) = map(:) - nf90_put_var_4D_OneByteInt = & - nf_put_varm_int1(ncid, varid, localStart, localCount, localStride, localMap, values) - else if(present(stride)) then - nf90_put_var_4D_OneByteInt = & - nf_put_vars_int1(ncid, varid, localStart, localCount, localStride, values) - else - nf90_put_var_4D_OneByteInt = & - nf_put_vara_int1(ncid, varid, localStart, localCount, values) - end if - end function nf90_put_var_4D_OneByteInt - - - function nf90_put_var_5D_OneByteInt(ncid, varid, values, start, count, stride, map) - integer, intent( in) :: ncid, varid - integer (kind = OneByteInt), dimension(:, :, :, :, :), & - intent( in) :: values - integer, dimension(:), optional, intent( in) :: start, count, stride, map - integer :: nf90_put_var_5D_OneByteInt - - integer, dimension(nf90_max_var_dims) :: localStart, localCount, localStride, localMap - integer :: numDims, counter - - ! Set local arguments to default values - numDims = size(shape(values)) - localStart (: ) = 1 - localCount (:numDims ) = shape(values) - localCount (numDims+1:) = 1 - localStride(: ) = 1 - localMap (:numDims ) = (/ 1, (product(localCount(:counter)), counter = 1, numDims - 1) /) - - if(present(start)) localStart (:size(start) ) = start(:) - if(present(count)) localCount (:size(count) ) = count(:) - if(present(stride)) localStride(:size(stride)) = stride(:) - if(present(map)) then - localMap (:size(map)) = map(:) - nf90_put_var_5D_OneByteInt = & - nf_put_varm_int1(ncid, varid, localStart, localCount, localStride, localMap, values) - else if(present(stride)) then - nf90_put_var_5D_OneByteInt = & - nf_put_vars_int1(ncid, varid, localStart, localCount, localStride, values) - else - nf90_put_var_5D_OneByteInt = & - nf_put_vara_int1(ncid, varid, localStart, localCount, values) - end if - end function nf90_put_var_5D_OneByteInt - - - function nf90_put_var_6D_OneByteInt(ncid, varid, values, start, count, stride, map) - integer, intent( in) :: ncid, varid - integer (kind = OneByteInt), dimension(:, :, :, :, :, :), & - intent( in) :: values - integer, dimension(:), optional, intent( in) :: start, count, stride, map - integer :: nf90_put_var_6D_OneByteInt - - integer, dimension(nf90_max_var_dims) :: localStart, localCount, localStride, localMap - integer :: numDims, counter - - ! Set local arguments to default values - numDims = size(shape(values)) - localStart (: ) = 1 - localCount (:numDims ) = shape(values) - localCount (numDims+1:) = 1 - localStride(: ) = 1 - localMap (:numDims ) = (/ 1, (product(localCount(:counter)), counter = 1, numDims - 1) /) - - if(present(start)) localStart (:size(start) ) = start(:) - if(present(count)) localCount (:size(count) ) = count(:) - if(present(stride)) localStride(:size(stride)) = stride(:) - if(present(map)) then - localMap (:size(map)) = map(:) - nf90_put_var_6D_OneByteInt = & - nf_put_varm_int1(ncid, varid, localStart, localCount, localStride, localMap, values) - else if(present(stride)) then - nf90_put_var_6D_OneByteInt = & - nf_put_vars_int1(ncid, varid, localStart, localCount, localStride, values) - else - nf90_put_var_6D_OneByteInt = & - nf_put_vara_int1(ncid, varid, localStart, localCount, values) - end if - end function nf90_put_var_6D_OneByteInt - - - function nf90_put_var_7D_OneByteInt(ncid, varid, values, start, count, stride, map) - integer, intent( in) :: ncid, varid - integer (kind = OneByteInt), dimension(:, :, :, :, :, :, :), & - intent( in) :: values - integer, dimension(:), optional, intent( in) :: start, count, stride, map - integer :: nf90_put_var_7D_OneByteInt - - integer, dimension(nf90_max_var_dims) :: localStart, localCount, localStride, localMap - integer :: numDims, counter - - ! Set local arguments to default values - numDims = size(shape(values)) - localStart (: ) = 1 - localCount (:numDims ) = shape(values) - localCount (numDims+1:) = 1 - localStride(: ) = 1 - localMap (:numDims ) = (/ 1, (product(localCount(:counter)), counter = 1, numDims - 1) /) - - if(present(start)) localStart (:size(start) ) = start(:) - if(present(count)) localCount (:size(count) ) = count(:) - if(present(stride)) localStride(:size(stride)) = stride(:) - if(present(map)) then - localMap (:size(map)) = map(:) - nf90_put_var_7D_OneByteInt = & - nf_put_varm_int1(ncid, varid, localStart, localCount, localStride, localMap, values) - else if(present(stride)) then - nf90_put_var_7D_OneByteInt = & - nf_put_vars_int1(ncid, varid, localStart, localCount, localStride, values) - else - nf90_put_var_7D_OneByteInt = & - nf_put_vara_int1(ncid, varid, localStart, localCount, values) - end if - end function nf90_put_var_7D_OneByteInt - - - function nf90_put_var_1D_TwoByteInt(ncid, varid, values, start, count, stride, map) - integer, intent( in) :: ncid, varid - integer (kind = TwoByteInt), dimension(:), & - intent( in) :: values - integer, dimension(:), optional, intent( in) :: start, count, stride, map - integer :: nf90_put_var_1D_TwoByteInt - - integer, dimension(nf90_max_var_dims) :: localStart, localCount, localStride, localMap - integer :: numDims, counter - - ! Set local arguments to default values - numDims = size(shape(values)) - localStart (: ) = 1 - localCount (:numDims ) = shape(values) - localCount (numDims+1:) = 1 - localStride(: ) = 1 - localMap (:numDims ) = (/ 1, (product(localCount(:counter)), counter = 1, numDims - 1) /) - - if(present(start)) localStart (:size(start) ) = start(:) - if(present(count)) localCount (:size(count) ) = count(:) - if(present(stride)) localStride(:size(stride)) = stride(:) - if(present(map)) then - localMap (:size(map)) = map(:) - nf90_put_var_1D_TwoByteInt = & - nf_put_varm_int2(ncid, varid, localStart, localCount, localStride, localMap, values) - else if(present(stride)) then - nf90_put_var_1D_TwoByteInt = & - nf_put_vars_int2(ncid, varid, localStart, localCount, localStride, values) - else - nf90_put_var_1D_TwoByteInt = & - nf_put_vara_int2(ncid, varid, localStart, localCount, values) - end if - end function nf90_put_var_1D_TwoByteInt - - - function nf90_put_var_2D_TwoByteInt(ncid, varid, values, start, count, stride, map) - integer, intent( in) :: ncid, varid - integer (kind = TwoByteInt), dimension(:, :), & - intent( in) :: values - integer, dimension(:), optional, intent( in) :: start, count, stride, map - integer :: nf90_put_var_2D_TwoByteInt - - integer, dimension(nf90_max_var_dims) :: localStart, localCount, localStride, localMap - integer :: numDims, counter - - ! Set local arguments to default values - numDims = size(shape(values)) - localStart (: ) = 1 - localCount (:numDims ) = shape(values) - localCount (numDims+1:) = 1 - localStride(: ) = 1 - localMap (:numDims ) = (/ 1, (product(localCount(:counter)), counter = 1, numDims - 1) /) - - if(present(start)) localStart (:size(start) ) = start(:) - if(present(count)) localCount (:size(count) ) = count(:) - if(present(stride)) localStride(:size(stride)) = stride(:) - if(present(map)) then - localMap (:size(map)) = map(:) - nf90_put_var_2D_TwoByteInt = & - nf_put_varm_int2(ncid, varid, localStart, localCount, localStride, localMap, values) - else if(present(stride)) then - nf90_put_var_2D_TwoByteInt = & - nf_put_vars_int2(ncid, varid, localStart, localCount, localStride, values) - else - nf90_put_var_2D_TwoByteInt = & - nf_put_vara_int2(ncid, varid, localStart, localCount, values) - end if - end function nf90_put_var_2D_TwoByteInt - - - function nf90_put_var_3D_TwoByteInt(ncid, varid, values, start, count, stride, map) - integer, intent( in) :: ncid, varid - integer (kind = TwoByteInt), dimension(:, :, :), & - intent( in) :: values - integer, dimension(:), optional, intent( in) :: start, count, stride, map - integer :: nf90_put_var_3D_TwoByteInt - - integer, dimension(nf90_max_var_dims) :: localStart, localCount, localStride, localMap - integer :: numDims, counter - - ! Set local arguments to default values - numDims = size(shape(values)) - localStart (: ) = 1 - localCount (:numDims ) = shape(values) - localCount (numDims+1:) = 1 - localStride(: ) = 1 - localMap (:numDims ) = (/ 1, (product(localCount(:counter)), counter = 1, numDims - 1) /) - - if(present(start)) localStart (:size(start) ) = start(:) - if(present(count)) localCount (:size(count) ) = count(:) - if(present(stride)) localStride(:size(stride)) = stride(:) - if(present(map)) then - localMap (:size(map)) = map(:) - nf90_put_var_3D_TwoByteInt = & - nf_put_varm_int2(ncid, varid, localStart, localCount, localStride, localMap, values) - else if(present(stride)) then - nf90_put_var_3D_TwoByteInt = & - nf_put_vars_int2(ncid, varid, localStart, localCount, localStride, values) - else - nf90_put_var_3D_TwoByteInt = & - nf_put_vara_int2(ncid, varid, localStart, localCount, values) - end if - end function nf90_put_var_3D_TwoByteInt - - - function nf90_put_var_4D_TwoByteInt(ncid, varid, values, start, count, stride, map) - integer, intent( in) :: ncid, varid - integer (kind = TwoByteInt), dimension(:, :, :, :), & - intent( in) :: values - integer, dimension(:), optional, intent( in) :: start, count, stride, map - integer :: nf90_put_var_4D_TwoByteInt - - integer, dimension(nf90_max_var_dims) :: localStart, localCount, localStride, localMap - integer :: numDims, counter - - ! Set local arguments to default values - numDims = size(shape(values)) - localStart (: ) = 1 - localCount (:numDims ) = shape(values) - localCount (numDims+1:) = 1 - localStride(: ) = 1 - localMap (:numDims ) = (/ 1, (product(localCount(:counter)), counter = 1, numDims - 1) /) - - if(present(start)) localStart (:size(start) ) = start(:) - if(present(count)) localCount (:size(count) ) = count(:) - if(present(stride)) localStride(:size(stride)) = stride(:) - if(present(map)) then - localMap (:size(map)) = map(:) - nf90_put_var_4D_TwoByteInt = & - nf_put_varm_int2(ncid, varid, localStart, localCount, localStride, localMap, values) - else if(present(stride)) then - nf90_put_var_4D_TwoByteInt = & - nf_put_vars_int2(ncid, varid, localStart, localCount, localStride, values) - else - nf90_put_var_4D_TwoByteInt = & - nf_put_vara_int2(ncid, varid, localStart, localCount, values) - end if - end function nf90_put_var_4D_TwoByteInt - - - function nf90_put_var_5D_TwoByteInt(ncid, varid, values, start, count, stride, map) - integer, intent( in) :: ncid, varid - integer (kind = TwoByteInt), dimension(:, :, :, :, :), & - intent( in) :: values - integer, dimension(:), optional, intent( in) :: start, count, stride, map - integer :: nf90_put_var_5D_TwoByteInt - - integer, dimension(nf90_max_var_dims) :: localStart, localCount, localStride, localMap - integer :: numDims, counter - - ! Set local arguments to default values - numDims = size(shape(values)) - localStart (: ) = 1 - localCount (:numDims ) = shape(values) - localCount (numDims+1:) = 1 - localStride(: ) = 1 - localMap (:numDims ) = (/ 1, (product(localCount(:counter)), counter = 1, numDims - 1) /) - - if(present(start)) localStart (:size(start) ) = start(:) - if(present(count)) localCount (:size(count) ) = count(:) - if(present(stride)) localStride(:size(stride)) = stride(:) - if(present(map)) then - localMap (:size(map)) = map(:) - nf90_put_var_5D_TwoByteInt = & - nf_put_varm_int2(ncid, varid, localStart, localCount, localStride, localMap, values) - else if(present(stride)) then - nf90_put_var_5D_TwoByteInt = & - nf_put_vars_int2(ncid, varid, localStart, localCount, localStride, values) - else - nf90_put_var_5D_TwoByteInt = & - nf_put_vara_int2(ncid, varid, localStart, localCount, values) - end if - end function nf90_put_var_5D_TwoByteInt - - - function nf90_put_var_6D_TwoByteInt(ncid, varid, values, start, count, stride, map) - integer, intent( in) :: ncid, varid - integer (kind = TwoByteInt), dimension(:, :, :, :, :, :), & - intent( in) :: values - integer, dimension(:), optional, intent( in) :: start, count, stride, map - integer :: nf90_put_var_6D_TwoByteInt - - integer, dimension(nf90_max_var_dims) :: localStart, localCount, localStride, localMap - integer :: numDims, counter - - ! Set local arguments to default values - numDims = size(shape(values)) - localStart (: ) = 1 - localCount (:numDims ) = shape(values) - localCount (numDims+1:) = 1 - localStride(: ) = 1 - localMap (:numDims ) = (/ 1, (product(localCount(:counter)), counter = 1, numDims - 1) /) - - if(present(start)) localStart (:size(start) ) = start(:) - if(present(count)) localCount (:size(count) ) = count(:) - if(present(stride)) localStride(:size(stride)) = stride(:) - if(present(map)) then - localMap (:size(map)) = map(:) - nf90_put_var_6D_TwoByteInt = & - nf_put_varm_int2(ncid, varid, localStart, localCount, localStride, localMap, values) - else if(present(stride)) then - nf90_put_var_6D_TwoByteInt = & - nf_put_vars_int2(ncid, varid, localStart, localCount, localStride, values) - else - nf90_put_var_6D_TwoByteInt = & - nf_put_vara_int2(ncid, varid, localStart, localCount, values) - end if - end function nf90_put_var_6D_TwoByteInt - - - function nf90_put_var_7D_TwoByteInt(ncid, varid, values, start, count, stride, map) - integer, intent( in) :: ncid, varid - integer (kind = TwoByteInt), dimension(:, :, :, :, :, :, :), & - intent( in) :: values - integer, dimension(:), optional, intent( in) :: start, count, stride, map - integer :: nf90_put_var_7D_TwoByteInt - - integer, dimension(nf90_max_var_dims) :: localStart, localCount, localStride, localMap - integer :: numDims, counter - - ! Set local arguments to default values - numDims = size(shape(values)) - localStart (: ) = 1 - localCount (:numDims ) = shape(values) - localCount (numDims+1:) = 1 - localStride(: ) = 1 - localMap (:numDims ) = (/ 1, (product(localCount(:counter)), counter = 1, numDims - 1) /) - - if(present(start)) localStart (:size(start) ) = start(:) - if(present(count)) localCount (:size(count) ) = count(:) - if(present(stride)) localStride(:size(stride)) = stride(:) - if(present(map)) then - localMap (:size(map)) = map(:) - nf90_put_var_7D_TwoByteInt = & - nf_put_varm_int2(ncid, varid, localStart, localCount, localStride, localMap, values) - else if(present(stride)) then - nf90_put_var_7D_TwoByteInt = & - nf_put_vars_int2(ncid, varid, localStart, localCount, localStride, values) - else - nf90_put_var_7D_TwoByteInt = & - nf_put_vara_int2(ncid, varid, localStart, localCount, values) - end if - end function nf90_put_var_7D_TwoByteInt - - - function nf90_put_var_1D_FourByteInt(ncid, varid, values, start, count, stride, map) - integer, intent( in) :: ncid, varid - integer (kind = FourByteInt), dimension(:), & - intent( in) :: values - integer, dimension(:), optional, intent( in) :: start, count, stride, map - integer :: nf90_put_var_1D_FourByteInt - - integer, dimension(nf90_max_var_dims) :: localStart, localCount, localStride, localMap - integer :: numDims, counter - - ! Set local arguments to default values - numDims = size(shape(values)) - localStart (: ) = 1 - localCount (:numDims ) = shape(values) - localCount (numDims+1:) = 1 - localStride(: ) = 1 - localMap (:numDims ) = (/ 1, (product(localCount(:counter)), counter = 1, numDims - 1) /) - - if(present(start)) localStart (:size(start) ) = start(:) - if(present(count)) localCount (:size(count) ) = count(:) - if(present(stride)) localStride(:size(stride)) = stride(:) - if(present(map)) then - localMap (:size(map)) = map(:) - nf90_put_var_1D_FourByteInt = & - nf_put_varm_int(ncid, varid, localStart, localCount, localStride, localMap, int(values)) - else if(present(stride)) then - nf90_put_var_1D_FourByteInt = & - nf_put_vars_int(ncid, varid, localStart, localCount, localStride, int(values)) - else - nf90_put_var_1D_FourByteInt = & - nf_put_vara_int(ncid, varid, localStart, localCount, int(values)) - end if - end function nf90_put_var_1D_FourByteInt - - - function nf90_put_var_2D_FourByteInt(ncid, varid, values, start, count, stride, map) - integer, intent( in) :: ncid, varid - integer (kind = FourByteInt), dimension(:, :), & - intent( in) :: values - integer, dimension(:), optional, intent( in) :: start, count, stride, map - integer :: nf90_put_var_2D_FourByteInt - - integer, dimension(nf90_max_var_dims) :: localStart, localCount, localStride, localMap - integer :: numDims, counter - - ! Set local arguments to default values - numDims = size(shape(values)) - localStart (: ) = 1 - localCount (:numDims ) = shape(values) - localCount (numDims+1:) = 1 - localStride(: ) = 1 - localMap (:numDims ) = (/ 1, (product(localCount(:counter)), counter = 1, numDims - 1) /) - - if(present(start)) localStart (:size(start) ) = start(:) - if(present(count)) localCount (:size(count) ) = count(:) - if(present(stride)) localStride(:size(stride)) = stride(:) - if(present(map)) then - localMap (:size(map)) = map(:) - nf90_put_var_2D_FourByteInt = & - nf_put_varm_int(ncid, varid, localStart, localCount, localStride, localMap, int(values)) - else if(present(stride)) then - nf90_put_var_2D_FourByteInt = & - nf_put_vars_int(ncid, varid, localStart, localCount, localStride, int(values)) - else - nf90_put_var_2D_FourByteInt = & - nf_put_vara_int(ncid, varid, localStart, localCount, int(values)) - end if - end function nf90_put_var_2D_FourByteInt - - - function nf90_put_var_3D_FourByteInt(ncid, varid, values, start, count, stride, map) - integer, intent( in) :: ncid, varid - integer (kind = FourByteInt), dimension(:, :, :), & - intent( in) :: values - integer, dimension(:), optional, intent( in) :: start, count, stride, map - integer :: nf90_put_var_3D_FourByteInt - - integer, dimension(nf90_max_var_dims) :: localStart, localCount, localStride, localMap - integer :: numDims, counter - - ! Set local arguments to default values - numDims = size(shape(values)) - localStart (: ) = 1 - localCount (:numDims ) = shape(values) - localCount (numDims+1:) = 1 - localStride(: ) = 1 - localMap (:numDims ) = (/ 1, (product(localCount(:counter)), counter = 1, numDims - 1) /) - - if(present(start)) localStart (:size(start) ) = start(:) - if(present(count)) localCount (:size(count) ) = count(:) - if(present(stride)) localStride(:size(stride)) = stride(:) - if(present(map)) then - localMap (:size(map)) = map(:) - nf90_put_var_3D_FourByteInt = & - nf_put_varm_int(ncid, varid, localStart, localCount, localStride, localMap, int(values)) - else if(present(stride)) then - nf90_put_var_3D_FourByteInt = & - nf_put_vars_int(ncid, varid, localStart, localCount, localStride, int(values)) - else - nf90_put_var_3D_FourByteInt = & - nf_put_vara_int(ncid, varid, localStart, localCount, int(values)) - end if - end function nf90_put_var_3D_FourByteInt - - - function nf90_put_var_4D_FourByteInt(ncid, varid, values, start, count, stride, map) - integer, intent( in) :: ncid, varid - integer (kind = FourByteInt), dimension(:, :, :, :), & - intent( in) :: values - integer, dimension(:), optional, intent( in) :: start, count, stride, map - integer :: nf90_put_var_4D_FourByteInt - - integer, dimension(nf90_max_var_dims) :: localStart, localCount, localStride, localMap - integer :: numDims, counter - - ! Set local arguments to default values - numDims = size(shape(values)) - localStart (: ) = 1 - localCount (:numDims ) = shape(values) - localCount (numDims+1:) = 1 - localStride(: ) = 1 - localMap (:numDims ) = (/ 1, (product(localCount(:counter)), counter = 1, numDims - 1) /) - - if(present(start)) localStart (:size(start) ) = start(:) - if(present(count)) localCount (:size(count) ) = count(:) - if(present(stride)) localStride(:size(stride)) = stride(:) - if(present(map)) then - localMap (:size(map)) = map(:) - nf90_put_var_4D_FourByteInt = & - nf_put_varm_int(ncid, varid, localStart, localCount, localStride, localMap, int(values)) - else if(present(stride)) then - nf90_put_var_4D_FourByteInt = & - nf_put_vars_int(ncid, varid, localStart, localCount, localStride, int(values)) - else - nf90_put_var_4D_FourByteInt = & - nf_put_vara_int(ncid, varid, localStart, localCount, int(values)) - end if - end function nf90_put_var_4D_FourByteInt - - - function nf90_put_var_5D_FourByteInt(ncid, varid, values, start, count, stride, map) - integer, intent( in) :: ncid, varid - integer (kind = FourByteInt), dimension(:, :, :, :, :), & - intent( in) :: values - integer, dimension(:), optional, intent( in) :: start, count, stride, map - integer :: nf90_put_var_5D_FourByteInt - - integer, dimension(nf90_max_var_dims) :: localStart, localCount, localStride, localMap - integer :: numDims, counter - - ! Set local arguments to default values - numDims = size(shape(values)) - localStart (: ) = 1 - localCount (:numDims ) = shape(values) - localCount (numDims+1:) = 1 - localStride(: ) = 1 - localMap (:numDims ) = (/ 1, (product(localCount(:counter)), counter = 1, numDims - 1) /) - - if(present(start)) localStart (:size(start) ) = start(:) - if(present(count)) localCount (:size(count) ) = count(:) - if(present(stride)) localStride(:size(stride)) = stride(:) - if(present(map)) then - localMap (:size(map)) = map(:) - nf90_put_var_5D_FourByteInt = & - nf_put_varm_int(ncid, varid, localStart, localCount, localStride, localMap, int(values)) - else if(present(stride)) then - nf90_put_var_5D_FourByteInt = & - nf_put_vars_int(ncid, varid, localStart, localCount, localStride, int(values)) - else - nf90_put_var_5D_FourByteInt = & - nf_put_vara_int(ncid, varid, localStart, localCount, int(values)) - end if - end function nf90_put_var_5D_FourByteInt - - - function nf90_put_var_6D_FourByteInt(ncid, varid, values, start, count, stride, map) - integer, intent( in) :: ncid, varid - integer (kind = FourByteInt), dimension(:, :, :, :, :, :), & - intent( in) :: values - integer, dimension(:), optional, intent( in) :: start, count, stride, map - integer :: nf90_put_var_6D_FourByteInt - - integer, dimension(nf90_max_var_dims) :: localStart, localCount, localStride, localMap - integer :: numDims, counter - - ! Set local arguments to default values - numDims = size(shape(values)) - localStart (: ) = 1 - localCount (:numDims ) = shape(values) - localCount (numDims+1:) = 1 - localStride(: ) = 1 - localMap (:numDims ) = (/ 1, (product(localCount(:counter)), counter = 1, numDims - 1) /) - - if(present(start)) localStart (:size(start) ) = start(:) - if(present(count)) localCount (:size(count) ) = count(:) - if(present(stride)) localStride(:size(stride)) = stride(:) - if(present(map)) then - localMap (:size(map)) = map(:) - nf90_put_var_6D_FourByteInt = & - nf_put_varm_int(ncid, varid, localStart, localCount, localStride, localMap, int(values)) - else if(present(stride)) then - nf90_put_var_6D_FourByteInt = & - nf_put_vars_int(ncid, varid, localStart, localCount, localStride, int(values)) - else - nf90_put_var_6D_FourByteInt = & - nf_put_vara_int(ncid, varid, localStart, localCount, int(values)) - end if - end function nf90_put_var_6D_FourByteInt - - - function nf90_put_var_7D_FourByteInt(ncid, varid, values, start, count, stride, map) - integer, intent( in) :: ncid, varid - integer (kind = FourByteInt), dimension(:, :, :, :, :, :, :), & - intent( in) :: values - integer, dimension(:), optional, intent( in) :: start, count, stride, map - integer :: nf90_put_var_7D_FourByteInt - - integer, dimension(nf90_max_var_dims) :: localStart, localCount, localStride, localMap - integer :: numDims, counter - - ! Set local arguments to default values - numDims = size(shape(values)) - localStart (: ) = 1 - localCount (:numDims ) = shape(values) - localCount (numDims+1:) = 1 - localStride(: ) = 1 - localMap (:numDims ) = (/ 1, (product(localCount(:counter)), counter = 1, numDims - 1) /) - - if(present(start)) localStart (:size(start) ) = start(:) - if(present(count)) localCount (:size(count) ) = count(:) - if(present(stride)) localStride(:size(stride)) = stride(:) - if(present(map)) then - localMap (:size(map)) = map(:) - nf90_put_var_7D_FourByteInt = & - nf_put_varm_int(ncid, varid, localStart, localCount, localStride, localMap, int(values)) - else if(present(stride)) then - nf90_put_var_7D_FourByteInt = & - nf_put_vars_int(ncid, varid, localStart, localCount, localStride, int(values)) - else - nf90_put_var_7D_FourByteInt = & - nf_put_vara_int(ncid, varid, localStart, localCount, int(values)) - end if - end function nf90_put_var_7D_FourByteInt - - - function nf90_put_var_1D_EightByteInt(ncid, varid, values, start, count, stride, map) - integer, intent( in) :: ncid, varid - integer (kind = EightByteInt), dimension(:), & - intent( in) :: values - integer, dimension(:), optional, intent( in) :: start, count, stride, map - integer :: nf90_put_var_1D_EightByteInt - - integer, dimension(nf90_max_var_dims) :: localStart, localCount, localStride, localMap - integer :: numDims, counter - - ! Set local arguments to default values - numDims = size(shape(values)) - localStart (: ) = 1 - localCount (:numDims ) = shape(values) - localCount (numDims+1:) = 1 - localStride(: ) = 1 - localMap (:numDims ) = (/ 1, (product(localCount(:counter)), counter = 1, numDims - 1) /) - - if(present(start)) localStart (:size(start) ) = start(:) - if(present(count)) localCount (:size(count) ) = count(:) - if(present(stride)) localStride(:size(stride)) = stride(:) - if(present(map)) then - localMap (:size(map)) = map(:) - nf90_put_var_1D_EightByteInt = & - nf_put_varm_int(ncid, varid, localStart, localCount, localStride, localMap, int(values)) - else if(present(stride)) then - nf90_put_var_1D_EightByteInt = & - nf_put_vars_int(ncid, varid, localStart, localCount, localStride, int(values)) - else - nf90_put_var_1D_EightByteInt = & - nf_put_vara_int(ncid, varid, localStart, localCount, int(values)) - end if - end function nf90_put_var_1D_EightByteInt - - - function nf90_put_var_2D_EightByteInt(ncid, varid, values, start, count, stride, map) - integer, intent( in) :: ncid, varid - integer (kind = EightByteInt), dimension(:, :), & - intent( in) :: values - integer, dimension(:), optional, intent( in) :: start, count, stride, map - integer :: nf90_put_var_2D_EightByteInt - - integer, dimension(nf90_max_var_dims) :: localStart, localCount, localStride, localMap - integer :: numDims, counter - - ! Set local arguments to default values - numDims = size(shape(values)) - localStart (: ) = 1 - localCount (:numDims ) = shape(values) - localCount (numDims+1:) = 1 - localStride(: ) = 1 - localMap (:numDims ) = (/ 1, (product(localCount(:counter)), counter = 1, numDims - 1) /) - - if(present(start)) localStart (:size(start) ) = start(:) - if(present(count)) localCount (:size(count) ) = count(:) - if(present(stride)) localStride(:size(stride)) = stride(:) - if(present(map)) then - localMap (:size(map)) = map(:) - nf90_put_var_2D_EightByteInt = & - nf_put_varm_int(ncid, varid, localStart, localCount, localStride, localMap, int(values)) - else if(present(stride)) then - nf90_put_var_2D_EightByteInt = & - nf_put_vars_int(ncid, varid, localStart, localCount, localStride, int(values)) - else - nf90_put_var_2D_EightByteInt = & - nf_put_vara_int(ncid, varid, localStart, localCount, int(values)) - end if - end function nf90_put_var_2D_EightByteInt - - - function nf90_put_var_3D_EightByteInt(ncid, varid, values, start, count, stride, map) - integer, intent( in) :: ncid, varid - integer (kind = EightByteInt), dimension(:, :, :), & - intent( in) :: values - integer, dimension(:), optional, intent( in) :: start, count, stride, map - integer :: nf90_put_var_3D_EightByteInt - - integer, dimension(nf90_max_var_dims) :: localStart, localCount, localStride, localMap - integer :: numDims, counter - - ! Set local arguments to default values - numDims = size(shape(values)) - localStart (: ) = 1 - localCount (:numDims ) = shape(values) - localCount (numDims+1:) = 1 - localStride(: ) = 1 - localMap (:numDims ) = (/ 1, (product(localCount(:counter)), counter = 1, numDims - 1) /) - - if(present(start)) localStart (:size(start) ) = start(:) - if(present(count)) localCount (:size(count) ) = count(:) - if(present(stride)) localStride(:size(stride)) = stride(:) - if(present(map)) then - localMap (:size(map)) = map(:) - nf90_put_var_3D_EightByteInt = & - nf_put_varm_int(ncid, varid, localStart, localCount, localStride, localMap, int(values)) - else if(present(stride)) then - nf90_put_var_3D_EightByteInt = & - nf_put_vars_int(ncid, varid, localStart, localCount, localStride, int(values)) - else - nf90_put_var_3D_EightByteInt = & - nf_put_vara_int(ncid, varid, localStart, localCount, int(values)) - end if - end function nf90_put_var_3D_EightByteInt - - - function nf90_put_var_4D_EightByteInt(ncid, varid, values, start, count, stride, map) - integer, intent( in) :: ncid, varid - integer (kind = EightByteInt), dimension(:, :, :, :), & - intent( in) :: values - integer, dimension(:), optional, intent( in) :: start, count, stride, map - integer :: nf90_put_var_4D_EightByteInt - - integer, dimension(nf90_max_var_dims) :: localStart, localCount, localStride, localMap - integer :: numDims, counter - - ! Set local arguments to default values - numDims = size(shape(values)) - localStart (: ) = 1 - localCount (:numDims ) = shape(values) - localCount (numDims+1:) = 1 - localStride(: ) = 1 - localMap (:numDims ) = (/ 1, (product(localCount(:counter)), counter = 1, numDims - 1) /) - - if(present(start)) localStart (:size(start) ) = start(:) - if(present(count)) localCount (:size(count) ) = count(:) - if(present(stride)) localStride(:size(stride)) = stride(:) - if(present(map)) then - localMap (:size(map)) = map(:) - nf90_put_var_4D_EightByteInt = & - nf_put_varm_int(ncid, varid, localStart, localCount, localStride, localMap, int(values)) - else if(present(stride)) then - nf90_put_var_4D_EightByteInt = & - nf_put_vars_int(ncid, varid, localStart, localCount, localStride, int(values)) - else - nf90_put_var_4D_EightByteInt = & - nf_put_vara_int(ncid, varid, localStart, localCount, int(values)) - end if - end function nf90_put_var_4D_EightByteInt - - - function nf90_put_var_5D_EightByteInt(ncid, varid, values, start, count, stride, map) - integer, intent( in) :: ncid, varid - integer (kind = EightByteInt), dimension(:, :, :, :, :), & - intent( in) :: values - integer, dimension(:), optional, intent( in) :: start, count, stride, map - integer :: nf90_put_var_5D_EightByteInt - - integer, dimension(nf90_max_var_dims) :: localStart, localCount, localStride, localMap - integer :: numDims, counter - - ! Set local arguments to default values - numDims = size(shape(values)) - localStart (: ) = 1 - localCount (:numDims ) = shape(values) - localCount (numDims+1:) = 1 - localStride(: ) = 1 - localMap (:numDims ) = (/ 1, (product(localCount(:counter)), counter = 1, numDims - 1) /) - - if(present(start)) localStart (:size(start) ) = start(:) - if(present(count)) localCount (:size(count) ) = count(:) - if(present(stride)) localStride(:size(stride)) = stride(:) - if(present(map)) then - localMap (:size(map)) = map(:) - nf90_put_var_5D_EightByteInt = & - nf_put_varm_int(ncid, varid, localStart, localCount, localStride, localMap, int(values)) - else if(present(stride)) then - nf90_put_var_5D_EightByteInt = & - nf_put_vars_int(ncid, varid, localStart, localCount, localStride, int(values)) - else - nf90_put_var_5D_EightByteInt = & - nf_put_vara_int(ncid, varid, localStart, localCount, int(values)) - end if - end function nf90_put_var_5D_EightByteInt - - - function nf90_put_var_6D_EightByteInt(ncid, varid, values, start, count, stride, map) - integer, intent( in) :: ncid, varid - integer (kind = EightByteInt), dimension(:, :, :, :, :, :), & - intent( in) :: values - integer, dimension(:), optional, intent( in) :: start, count, stride, map - integer :: nf90_put_var_6D_EightByteInt - - integer, dimension(nf90_max_var_dims) :: localStart, localCount, localStride, localMap - integer :: numDims, counter - - ! Set local arguments to default values - numDims = size(shape(values)) - localStart (: ) = 1 - localCount (:numDims ) = shape(values) - localCount (numDims+1:) = 1 - localStride(: ) = 1 - localMap (:numDims ) = (/ 1, (product(localCount(:counter)), counter = 1, numDims - 1) /) - - if(present(start)) localStart (:size(start) ) = start(:) - if(present(count)) localCount (:size(count) ) = count(:) - if(present(stride)) localStride(:size(stride)) = stride(:) - if(present(map)) then - localMap (:size(map)) = map(:) - nf90_put_var_6D_EightByteInt = & - nf_put_varm_int(ncid, varid, localStart, localCount, localStride, localMap, int(values)) - else if(present(stride)) then - nf90_put_var_6D_EightByteInt = & - nf_put_vars_int(ncid, varid, localStart, localCount, localStride, int(values)) - else - nf90_put_var_6D_EightByteInt = & - nf_put_vara_int(ncid, varid, localStart, localCount, int(values)) - end if - end function nf90_put_var_6D_EightByteInt - - - function nf90_put_var_7D_EightByteInt(ncid, varid, values, start, count, stride, map) - integer, intent( in) :: ncid, varid - integer (kind = EightByteInt), dimension(:, :, :, :, :, :, :), & - intent( in) :: values - integer, dimension(:), optional, intent( in) :: start, count, stride, map - integer :: nf90_put_var_7D_EightByteInt - - integer, dimension(nf90_max_var_dims) :: localStart, localCount, localStride, localMap - integer :: numDims, counter - - ! Set local arguments to default values - numDims = size(shape(values)) - localStart (: ) = 1 - localCount (:numDims ) = shape(values) - localCount (numDims+1:) = 1 - localStride(: ) = 1 - localMap (:numDims ) = (/ 1, (product(localCount(:counter)), counter = 1, numDims - 1) /) - - if(present(start)) localStart (:size(start) ) = start(:) - if(present(count)) localCount (:size(count) ) = count(:) - if(present(stride)) localStride(:size(stride)) = stride(:) - if(present(map)) then - localMap (:size(map)) = map(:) - nf90_put_var_7D_EightByteInt = & - nf_put_varm_int(ncid, varid, localStart, localCount, localStride, localMap, int(values)) - else if(present(stride)) then - nf90_put_var_7D_EightByteInt = & - nf_put_vars_int(ncid, varid, localStart, localCount, localStride, int(values)) - else - nf90_put_var_7D_EightByteInt = & - nf_put_vara_int(ncid, varid, localStart, localCount, int(values)) - end if - end function nf90_put_var_7D_EightByteInt - - - function nf90_put_var_1D_FourByteReal(ncid, varid, values, start, count, stride, map) - integer, intent( in) :: ncid, varid - real (kind = FourByteReal), dimension(:), & - intent( in) :: values - integer, dimension(:), optional, intent( in) :: start, count, stride, map - integer :: nf90_put_var_1D_FourByteReal - - integer, dimension(nf90_max_var_dims) :: localStart, localCount, localStride, localMap - integer :: numDims, counter - - ! Set local arguments to default values - numDims = size(shape(values)) - localStart (: ) = 1 - localCount (:numDims ) = shape(values) - localCount (numDims+1:) = 1 - localStride(: ) = 1 - localMap (:numDims ) = (/ 1, (product(localCount(:counter)), counter = 1, numDims - 1) /) - - if(present(start)) localStart (:size(start) ) = start(:) - if(present(count)) localCount (:size(count) ) = count(:) - if(present(stride)) localStride(:size(stride)) = stride(:) - if(present(map)) then - localMap (:size(map)) = map(:) - nf90_put_var_1D_FourByteReal = & - nf_put_varm_real(ncid, varid, localStart, localCount, localStride, localMap, values) - else if(present(stride)) then - nf90_put_var_1D_FourByteReal = & - nf_put_vars_real(ncid, varid, localStart, localCount, localStride, values) - else - nf90_put_var_1D_FourByteReal = & - nf_put_vara_real(ncid, varid, localStart, localCount, values) - end if - end function nf90_put_var_1D_FourByteReal - - - function nf90_put_var_2D_FourByteReal(ncid, varid, values, start, count, stride, map) - integer, intent( in) :: ncid, varid - real (kind = FourByteReal), dimension(:, :), & - intent( in) :: values - integer, dimension(:), optional, intent( in) :: start, count, stride, map - integer :: nf90_put_var_2D_FourByteReal - - integer, dimension(nf90_max_var_dims) :: localStart, localCount, localStride, localMap - integer :: numDims, counter - - ! Set local arguments to default values - numDims = size(shape(values)) - localStart (: ) = 1 - localCount (:numDims ) = shape(values) - localCount (numDims+1:) = 1 - localStride(: ) = 1 - localMap (:numDims ) = (/ 1, (product(localCount(:counter)), counter = 1, numDims - 1) /) - - if(present(start)) localStart (:size(start) ) = start(:) - if(present(count)) localCount (:size(count) ) = count(:) - if(present(stride)) localStride(:size(stride)) = stride(:) - if(present(map)) then - localMap (:size(map)) = map(:) - nf90_put_var_2D_FourByteReal = & - nf_put_varm_real(ncid, varid, localStart, localCount, localStride, localMap, values) - else if(present(stride)) then - nf90_put_var_2D_FourByteReal = & - nf_put_vars_real(ncid, varid, localStart, localCount, localStride, values) - else - nf90_put_var_2D_FourByteReal = & - nf_put_vara_real(ncid, varid, localStart, localCount, values) - end if - end function nf90_put_var_2D_FourByteReal - - - function nf90_put_var_3D_FourByteReal(ncid, varid, values, start, count, stride, map) - integer, intent( in) :: ncid, varid - real (kind = FourByteReal), dimension(:, :, :), & - intent( in) :: values - integer, dimension(:), optional, intent( in) :: start, count, stride, map - integer :: nf90_put_var_3D_FourByteReal - - integer, dimension(nf90_max_var_dims) :: localStart, localCount, localStride, localMap - integer :: numDims, counter - - ! Set local arguments to default values - numDims = size(shape(values)) - localStart (: ) = 1 - localCount (:numDims ) = shape(values) - localCount (numDims+1:) = 1 - localStride(: ) = 1 - localMap (:numDims ) = (/ 1, (product(localCount(:counter)), counter = 1, numDims - 1) /) - - if(present(start)) localStart (:size(start) ) = start(:) - if(present(count)) localCount (:size(count) ) = count(:) - if(present(stride)) localStride(:size(stride)) = stride(:) - if(present(map)) then - localMap (:size(map)) = map(:) - nf90_put_var_3D_FourByteReal = & - nf_put_varm_real(ncid, varid, localStart, localCount, localStride, localMap, values) - else if(present(stride)) then - nf90_put_var_3D_FourByteReal = & - nf_put_vars_real(ncid, varid, localStart, localCount, localStride, values) - else - nf90_put_var_3D_FourByteReal = & - nf_put_vara_real(ncid, varid, localStart, localCount, values) - end if - end function nf90_put_var_3D_FourByteReal - - - function nf90_put_var_4D_FourByteReal(ncid, varid, values, start, count, stride, map) - integer, intent( in) :: ncid, varid - real (kind = FourByteReal), dimension(:, :, :, :), & - intent( in) :: values - integer, dimension(:), optional, intent( in) :: start, count, stride, map - integer :: nf90_put_var_4D_FourByteReal - - integer, dimension(nf90_max_var_dims) :: localStart, localCount, localStride, localMap - integer :: numDims, counter - - ! Set local arguments to default values - numDims = size(shape(values)) - localStart (: ) = 1 - localCount (:numDims ) = shape(values) - localCount (numDims+1:) = 1 - localStride(: ) = 1 - localMap (:numDims ) = (/ 1, (product(localCount(:counter)), counter = 1, numDims - 1) /) - - if(present(start)) localStart (:size(start) ) = start(:) - if(present(count)) localCount (:size(count) ) = count(:) - if(present(stride)) localStride(:size(stride)) = stride(:) - if(present(map)) then - localMap (:size(map)) = map(:) - nf90_put_var_4D_FourByteReal = & - nf_put_varm_real(ncid, varid, localStart, localCount, localStride, localMap, values) - else if(present(stride)) then - nf90_put_var_4D_FourByteReal = & - nf_put_vars_real(ncid, varid, localStart, localCount, localStride, values) - else - nf90_put_var_4D_FourByteReal = & - nf_put_vara_real(ncid, varid, localStart, localCount, values) - end if - end function nf90_put_var_4D_FourByteReal - - - function nf90_put_var_5D_FourByteReal(ncid, varid, values, start, count, stride, map) - integer, intent( in) :: ncid, varid - real (kind = FourByteReal), dimension(:, :, :, :, :), & - intent( in) :: values - integer, dimension(:), optional, intent( in) :: start, count, stride, map - integer :: nf90_put_var_5D_FourByteReal - - integer, dimension(nf90_max_var_dims) :: localStart, localCount, localStride, localMap - integer :: numDims, counter - - ! Set local arguments to default values - numDims = size(shape(values)) - localStart (: ) = 1 - localCount (:numDims ) = shape(values) - localCount (numDims+1:) = 1 - localStride(: ) = 1 - localMap (:numDims ) = (/ 1, (product(localCount(:counter)), counter = 1, numDims - 1) /) - - if(present(start)) localStart (:size(start) ) = start(:) - if(present(count)) localCount (:size(count) ) = count(:) - if(present(stride)) localStride(:size(stride)) = stride(:) - if(present(map)) then - localMap (:size(map)) = map(:) - nf90_put_var_5D_FourByteReal = & - nf_put_varm_real(ncid, varid, localStart, localCount, localStride, localMap, values) - else if(present(stride)) then - nf90_put_var_5D_FourByteReal = & - nf_put_vars_real(ncid, varid, localStart, localCount, localStride, values) - else - nf90_put_var_5D_FourByteReal = & - nf_put_vara_real(ncid, varid, localStart, localCount, values) - end if - end function nf90_put_var_5D_FourByteReal - - - function nf90_put_var_6D_FourByteReal(ncid, varid, values, start, count, stride, map) - integer, intent( in) :: ncid, varid - real (kind = FourByteReal), dimension(:, :, :, :, :, :), & - intent( in) :: values - integer, dimension(:), optional, intent( in) :: start, count, stride, map - integer :: nf90_put_var_6D_FourByteReal - - integer, dimension(nf90_max_var_dims) :: localStart, localCount, localStride, localMap - integer :: numDims, counter - - ! Set local arguments to default values - numDims = size(shape(values)) - localStart (: ) = 1 - localCount (:numDims ) = shape(values) - localCount (numDims+1:) = 1 - localStride(: ) = 1 - localMap (:numDims ) = (/ 1, (product(localCount(:counter)), counter = 1, numDims - 1) /) - - if(present(start)) localStart (:size(start) ) = start(:) - if(present(count)) localCount (:size(count) ) = count(:) - if(present(stride)) localStride(:size(stride)) = stride(:) - if(present(map)) then - localMap (:size(map)) = map(:) - nf90_put_var_6D_FourByteReal = & - nf_put_varm_real(ncid, varid, localStart, localCount, localStride, localMap, values) - else if(present(stride)) then - nf90_put_var_6D_FourByteReal = & - nf_put_vars_real(ncid, varid, localStart, localCount, localStride, values) - else - nf90_put_var_6D_FourByteReal = & - nf_put_vara_real(ncid, varid, localStart, localCount, values) - end if - end function nf90_put_var_6D_FourByteReal - - - function nf90_put_var_7D_FourByteReal(ncid, varid, values, start, count, stride, map) - integer, intent( in) :: ncid, varid - real (kind = FourByteReal), dimension(:, :, :, :, :, :, :), & - intent( in) :: values - integer, dimension(:), optional, intent( in) :: start, count, stride, map - integer :: nf90_put_var_7D_FourByteReal - - integer, dimension(nf90_max_var_dims) :: localStart, localCount, localStride, localMap - integer :: numDims, counter - - ! Set local arguments to default values - numDims = size(shape(values)) - localStart (: ) = 1 - localCount (:numDims ) = shape(values) - localCount (numDims+1:) = 1 - localStride(: ) = 1 - localMap (:numDims ) = (/ 1, (product(localCount(:counter)), counter = 1, numDims - 1) /) - - if(present(start)) localStart (:size(start) ) = start(:) - if(present(count)) localCount (:size(count) ) = count(:) - if(present(stride)) localStride(:size(stride)) = stride(:) - if(present(map)) then - localMap (:size(map)) = map(:) - nf90_put_var_7D_FourByteReal = & - nf_put_varm_real(ncid, varid, localStart, localCount, localStride, localMap, values) - else if(present(stride)) then - nf90_put_var_7D_FourByteReal = & - nf_put_vars_real(ncid, varid, localStart, localCount, localStride, values) - else - nf90_put_var_7D_FourByteReal = & - nf_put_vara_real(ncid, varid, localStart, localCount, values) - end if - end function nf90_put_var_7D_FourByteReal - - - function nf90_put_var_1D_EightByteReal(ncid, varid, values, start, count, stride, map) - integer, intent( in) :: ncid, varid - real (kind = EightByteReal), dimension(:), & - intent( in) :: values - integer, dimension(:), optional, intent( in) :: start, count, stride, map - integer :: nf90_put_var_1D_EightByteReal - - integer, dimension(nf90_max_var_dims) :: localStart, localCount, localStride, localMap - integer :: numDims, counter - - ! Set local arguments to default values - numDims = size(shape(values)) - localStart (: ) = 1 - localCount (:numDims ) = shape(values) - localCount (numDims+1:) = 1 - localStride(: ) = 1 - localMap (:numDims ) = (/ 1, (product(localCount(:counter)), counter = 1, numDims - 1) /) - - if(present(start)) localStart (:size(start) ) = start(:) - if(present(count)) localCount (:size(count) ) = count(:) - if(present(stride)) localStride(:size(stride)) = stride(:) - if(present(map)) then - localMap (:size(map)) = map(:) - nf90_put_var_1D_EightByteReal = & - nf_put_varm_double(ncid, varid, localStart, localCount, localStride, localMap, values) - else if(present(stride)) then - nf90_put_var_1D_EightByteReal = & - nf_put_vars_double(ncid, varid, localStart, localCount, localStride, values) - else - nf90_put_var_1D_EightByteReal = & - nf_put_vara_double(ncid, varid, localStart, localCount, values) - end if - end function nf90_put_var_1D_EightByteReal - - - function nf90_put_var_2D_EightByteReal(ncid, varid, values, start, count, stride, map) - integer, intent( in) :: ncid, varid - real (kind = EightByteReal), dimension(:, :), & - intent( in) :: values - integer, dimension(:), optional, intent( in) :: start, count, stride, map - integer :: nf90_put_var_2D_EightByteReal - - integer, dimension(nf90_max_var_dims) :: localStart, localCount, localStride, localMap - integer :: numDims, counter - - ! Set local arguments to default values - numDims = size(shape(values)) - localStart (: ) = 1 - localCount (:numDims ) = shape(values) - localCount (numDims+1:) = 1 - localStride(: ) = 1 - localMap (:numDims ) = (/ 1, (product(localCount(:counter)), counter = 1, numDims - 1) /) - - if(present(start)) localStart (:size(start) ) = start(:) - if(present(count)) localCount (:size(count) ) = count(:) - if(present(stride)) localStride(:size(stride)) = stride(:) - if(present(map)) then - localMap (:size(map)) = map(:) - nf90_put_var_2D_EightByteReal = & - nf_put_varm_double(ncid, varid, localStart, localCount, localStride, localMap, values) - else if(present(stride)) then - nf90_put_var_2D_EightByteReal = & - nf_put_vars_double(ncid, varid, localStart, localCount, localStride, values) - else - nf90_put_var_2D_EightByteReal = & - nf_put_vara_double(ncid, varid, localStart, localCount, values) - end if - end function nf90_put_var_2D_EightByteReal - - - function nf90_put_var_3D_EightByteReal(ncid, varid, values, start, count, stride, map) - integer, intent( in) :: ncid, varid - real (kind = EightByteReal), dimension(:, :, :), & - intent( in) :: values - integer, dimension(:), optional, intent( in) :: start, count, stride, map - integer :: nf90_put_var_3D_EightByteReal - - integer, dimension(nf90_max_var_dims) :: localStart, localCount, localStride, localMap - integer :: numDims, counter - - ! Set local arguments to default values - numDims = size(shape(values)) - localStart (: ) = 1 - localCount (:numDims ) = shape(values) - localCount (numDims+1:) = 1 - localStride(: ) = 1 - localMap (:numDims ) = (/ 1, (product(localCount(:counter)), counter = 1, numDims - 1) /) - - if(present(start)) localStart (:size(start) ) = start(:) - if(present(count)) localCount (:size(count) ) = count(:) - if(present(stride)) localStride(:size(stride)) = stride(:) - if(present(map)) then - localMap (:size(map)) = map(:) - nf90_put_var_3D_EightByteReal = & - nf_put_varm_double(ncid, varid, localStart, localCount, localStride, localMap, values) - else if(present(stride)) then - nf90_put_var_3D_EightByteReal = & - nf_put_vars_double(ncid, varid, localStart, localCount, localStride, values) - else - nf90_put_var_3D_EightByteReal = & - nf_put_vara_double(ncid, varid, localStart, localCount, values) - end if - end function nf90_put_var_3D_EightByteReal - - - function nf90_put_var_4D_EightByteReal(ncid, varid, values, start, count, stride, map) - integer, intent( in) :: ncid, varid - real (kind = EightByteReal), dimension(:, :, :, :), & - intent( in) :: values - integer, dimension(:), optional, intent( in) :: start, count, stride, map - integer :: nf90_put_var_4D_EightByteReal - - integer, dimension(nf90_max_var_dims) :: localStart, localCount, localStride, localMap - integer :: numDims, counter - - ! Set local arguments to default values - numDims = size(shape(values)) - localStart (: ) = 1 - localCount (:numDims ) = shape(values) - localCount (numDims+1:) = 1 - localStride(: ) = 1 - localMap (:numDims ) = (/ 1, (product(localCount(:counter)), counter = 1, numDims - 1) /) - - if(present(start)) localStart (:size(start) ) = start(:) - if(present(count)) localCount (:size(count) ) = count(:) - if(present(stride)) localStride(:size(stride)) = stride(:) - if(present(map)) then - localMap (:size(map)) = map(:) - nf90_put_var_4D_EightByteReal = & - nf_put_varm_double(ncid, varid, localStart, localCount, localStride, localMap, values) - else if(present(stride)) then - nf90_put_var_4D_EightByteReal = & - nf_put_vars_double(ncid, varid, localStart, localCount, localStride, values) - else - nf90_put_var_4D_EightByteReal = & - nf_put_vara_double(ncid, varid, localStart, localCount, values) - end if - end function nf90_put_var_4D_EightByteReal - - - function nf90_put_var_5D_EightByteReal(ncid, varid, values, start, count, stride, map) - integer, intent( in) :: ncid, varid - real (kind = EightByteReal), dimension(:, :, :, :, :), & - intent( in) :: values - integer, dimension(:), optional, intent( in) :: start, count, stride, map - integer :: nf90_put_var_5D_EightByteReal - - integer, dimension(nf90_max_var_dims) :: localStart, localCount, localStride, localMap - integer :: numDims, counter - - ! Set local arguments to default values - numDims = size(shape(values)) - localStart (: ) = 1 - localCount (:numDims ) = shape(values) - localCount (numDims+1:) = 1 - localStride(: ) = 1 - localMap (:numDims ) = (/ 1, (product(localCount(:counter)), counter = 1, numDims - 1) /) - - if(present(start)) localStart (:size(start) ) = start(:) - if(present(count)) localCount (:size(count) ) = count(:) - if(present(stride)) localStride(:size(stride)) = stride(:) - if(present(map)) then - localMap (:size(map)) = map(:) - nf90_put_var_5D_EightByteReal = & - nf_put_varm_double(ncid, varid, localStart, localCount, localStride, localMap, values) - else if(present(stride)) then - nf90_put_var_5D_EightByteReal = & - nf_put_vars_double(ncid, varid, localStart, localCount, localStride, values) - else - nf90_put_var_5D_EightByteReal = & - nf_put_vara_double(ncid, varid, localStart, localCount, values) - end if - end function nf90_put_var_5D_EightByteReal - - - function nf90_put_var_6D_EightByteReal(ncid, varid, values, start, count, stride, map) - integer, intent( in) :: ncid, varid - real (kind = EightByteReal), dimension(:, :, :, :, :, :), & - intent( in) :: values - integer, dimension(:), optional, intent( in) :: start, count, stride, map - integer :: nf90_put_var_6D_EightByteReal - - integer, dimension(nf90_max_var_dims) :: localStart, localCount, localStride, localMap - integer :: numDims, counter - - ! Set local arguments to default values - numDims = size(shape(values)) - localStart (: ) = 1 - localCount (:numDims ) = shape(values) - localCount (numDims+1:) = 1 - localStride(: ) = 1 - localMap (:numDims ) = (/ 1, (product(localCount(:counter)), counter = 1, numDims - 1) /) - - if(present(start)) localStart (:size(start) ) = start(:) - if(present(count)) localCount (:size(count) ) = count(:) - if(present(stride)) localStride(:size(stride)) = stride(:) - if(present(map)) then - localMap (:size(map)) = map(:) - nf90_put_var_6D_EightByteReal = & - nf_put_varm_double(ncid, varid, localStart, localCount, localStride, localMap, values) - else if(present(stride)) then - nf90_put_var_6D_EightByteReal = & - nf_put_vars_double(ncid, varid, localStart, localCount, localStride, values) - else - nf90_put_var_6D_EightByteReal = & - nf_put_vara_double(ncid, varid, localStart, localCount, values) - end if - end function nf90_put_var_6D_EightByteReal - - - function nf90_put_var_7D_EightByteReal(ncid, varid, values, start, count, stride, map) - integer, intent( in) :: ncid, varid - real (kind = EightByteReal), dimension(:, :, :, :, :, :, :), & - intent( in) :: values - integer, dimension(:), optional, intent( in) :: start, count, stride, map - integer :: nf90_put_var_7D_EightByteReal - - integer, dimension(nf90_max_var_dims) :: localStart, localCount, localStride, localMap - integer :: numDims, counter - - ! Set local arguments to default values - numDims = size(shape(values)) - localStart (: ) = 1 - localCount (:numDims ) = shape(values) - localCount (numDims+1:) = 1 - localStride(: ) = 1 - localMap (:numDims ) = (/ 1, (product(localCount(:counter)), counter = 1, numDims - 1) /) - - if(present(start)) localStart (:size(start) ) = start(:) - if(present(count)) localCount (:size(count) ) = count(:) - if(present(stride)) localStride(:size(stride)) = stride(:) - if(present(map)) then - localMap (:size(map)) = map(:) - nf90_put_var_7D_EightByteReal = & - nf_put_varm_double(ncid, varid, localStart, localCount, localStride, localMap, values) - else if(present(stride)) then - nf90_put_var_7D_EightByteReal = & - nf_put_vars_double(ncid, varid, localStart, localCount, localStride, values) - else - nf90_put_var_7D_EightByteReal = & - nf_put_vara_double(ncid, varid, localStart, localCount, values) - end if - end function nf90_put_var_7D_EightByteReal - - - function nf90_get_var_1D_OneByteInt(ncid, varid, values, start, count, stride, map) - integer, intent( in) :: ncid, varid - integer (kind = OneByteInt), dimension(:), & - intent(out) :: values - integer, dimension(:), optional, intent( in) :: start, count, stride, map - integer :: nf90_get_var_1D_OneByteInt - - integer, dimension(nf90_max_var_dims) :: localStart, localCount, localStride, localMap - integer :: numDims, counter - - ! Set local arguments to default values - numDims = size(shape(values)) - localStart (: ) = 1 - localCount (:numDims ) = shape(values) - localCount (numDims+1:) = 1 - localStride(: ) = 1 - localMap (:numDims ) = (/ 1, (product(localCount(:counter)), counter = 1, numDims - 1) /) - - if(present(start)) localStart (:size(start) ) = start(:) - if(present(count)) localCount (:size(count) ) = count(:) - if(present(stride)) localStride(:size(stride)) = stride(:) - if(present(map)) then - localMap (:size(map)) = map(:) - nf90_get_var_1D_OneByteInt = & - nf_get_varm_int1(ncid, varid, localStart, localCount, localStride, localMap, values) - else if(present(stride)) then - nf90_get_var_1D_OneByteInt = & - nf_get_vars_int1(ncid, varid, localStart, localCount, localStride, values) - else - nf90_get_var_1D_OneByteInt = & - nf_get_vara_int1(ncid, varid, localStart, localCount, values) - end if - end function nf90_get_var_1D_OneByteInt - - - function nf90_get_var_2D_OneByteInt(ncid, varid, values, start, count, stride, map) - integer, intent( in) :: ncid, varid - integer (kind = OneByteInt), dimension(:, :), & - intent(out) :: values - integer, dimension(:), optional, intent( in) :: start, count, stride, map - integer :: nf90_get_var_2D_OneByteInt - - integer, dimension(nf90_max_var_dims) :: localStart, localCount, localStride, localMap - integer :: numDims, counter - - ! Set local arguments to default values - numDims = size(shape(values)) - localStart (: ) = 1 - localCount (:numDims ) = shape(values) - localCount (numDims+1:) = 1 - localStride(: ) = 1 - localMap (:numDims ) = (/ 1, (product(localCount(:counter)), counter = 1, numDims - 1) /) - - if(present(start)) localStart (:size(start) ) = start(:) - if(present(count)) localCount (:size(count) ) = count(:) - if(present(stride)) localStride(:size(stride)) = stride(:) - if(present(map)) then - localMap (:size(map)) = map(:) - nf90_get_var_2D_OneByteInt = & - nf_get_varm_int1(ncid, varid, localStart, localCount, localStride, localMap, values) - else if(present(stride)) then - nf90_get_var_2D_OneByteInt = & - nf_get_vars_int1(ncid, varid, localStart, localCount, localStride, values) - else - nf90_get_var_2D_OneByteInt = & - nf_get_vara_int1(ncid, varid, localStart, localCount, values) - end if - end function nf90_get_var_2D_OneByteInt - - - function nf90_get_var_3D_OneByteInt(ncid, varid, values, start, count, stride, map) - integer, intent( in) :: ncid, varid - integer (kind = OneByteInt), dimension(:, :, :), & - intent(out) :: values - integer, dimension(:), optional, intent( in) :: start, count, stride, map - integer :: nf90_get_var_3D_OneByteInt - - integer, dimension(nf90_max_var_dims) :: localStart, localCount, localStride, localMap - integer :: numDims, counter - - ! Set local arguments to default values - numDims = size(shape(values)) - localStart (: ) = 1 - localCount (:numDims ) = shape(values) - localCount (numDims+1:) = 1 - localStride(: ) = 1 - localMap (:numDims ) = (/ 1, (product(localCount(:counter)), counter = 1, numDims - 1) /) - - if(present(start)) localStart (:size(start) ) = start(:) - if(present(count)) localCount (:size(count) ) = count(:) - if(present(stride)) localStride(:size(stride)) = stride(:) - if(present(map)) then - localMap (:size(map)) = map(:) - nf90_get_var_3D_OneByteInt = & - nf_get_varm_int1(ncid, varid, localStart, localCount, localStride, localMap, values) - else if(present(stride)) then - nf90_get_var_3D_OneByteInt = & - nf_get_vars_int1(ncid, varid, localStart, localCount, localStride, values) - else - nf90_get_var_3D_OneByteInt = & - nf_get_vara_int1(ncid, varid, localStart, localCount, values) - end if - end function nf90_get_var_3D_OneByteInt - - - function nf90_get_var_4D_OneByteInt(ncid, varid, values, start, count, stride, map) - integer, intent( in) :: ncid, varid - integer (kind = OneByteInt), dimension(:, :, :, :), & - intent(out) :: values - integer, dimension(:), optional, intent( in) :: start, count, stride, map - integer :: nf90_get_var_4D_OneByteInt - - integer, dimension(nf90_max_var_dims) :: localStart, localCount, localStride, localMap - integer :: numDims, counter - - ! Set local arguments to default values - numDims = size(shape(values)) - localStart (: ) = 1 - localCount (:numDims ) = shape(values) - localCount (numDims+1:) = 1 - localStride(: ) = 1 - localMap (:numDims ) = (/ 1, (product(localCount(:counter)), counter = 1, numDims - 1) /) - - if(present(start)) localStart (:size(start) ) = start(:) - if(present(count)) localCount (:size(count) ) = count(:) - if(present(stride)) localStride(:size(stride)) = stride(:) - if(present(map)) then - localMap (:size(map)) = map(:) - nf90_get_var_4D_OneByteInt = & - nf_get_varm_int1(ncid, varid, localStart, localCount, localStride, localMap, values) - else if(present(stride)) then - nf90_get_var_4D_OneByteInt = & - nf_get_vars_int1(ncid, varid, localStart, localCount, localStride, values) - else - nf90_get_var_4D_OneByteInt = & - nf_get_vara_int1(ncid, varid, localStart, localCount, values) - end if - end function nf90_get_var_4D_OneByteInt - - - function nf90_get_var_5D_OneByteInt(ncid, varid, values, start, count, stride, map) - integer, intent( in) :: ncid, varid - integer (kind = OneByteInt), dimension(:, :, :, :, :), & - intent(out) :: values - integer, dimension(:), optional, intent( in) :: start, count, stride, map - integer :: nf90_get_var_5D_OneByteInt - - integer, dimension(nf90_max_var_dims) :: localStart, localCount, localStride, localMap - integer :: numDims, counter - - ! Set local arguments to default values - numDims = size(shape(values)) - localStart (: ) = 1 - localCount (:numDims ) = shape(values) - localCount (numDims+1:) = 1 - localStride(: ) = 1 - localMap (:numDims ) = (/ 1, (product(localCount(:counter)), counter = 1, numDims - 1) /) - - if(present(start)) localStart (:size(start) ) = start(:) - if(present(count)) localCount (:size(count) ) = count(:) - if(present(stride)) localStride(:size(stride)) = stride(:) - if(present(map)) then - localMap (:size(map)) = map(:) - nf90_get_var_5D_OneByteInt = & - nf_get_varm_int1(ncid, varid, localStart, localCount, localStride, localMap, values) - else if(present(stride)) then - nf90_get_var_5D_OneByteInt = & - nf_get_vars_int1(ncid, varid, localStart, localCount, localStride, values) - else - nf90_get_var_5D_OneByteInt = & - nf_get_vara_int1(ncid, varid, localStart, localCount, values) - end if - end function nf90_get_var_5D_OneByteInt - - - function nf90_get_var_6D_OneByteInt(ncid, varid, values, start, count, stride, map) - integer, intent( in) :: ncid, varid - integer (kind = OneByteInt), dimension(:, :, :, :, :, :), & - intent(out) :: values - integer, dimension(:), optional, intent( in) :: start, count, stride, map - integer :: nf90_get_var_6D_OneByteInt - - integer, dimension(nf90_max_var_dims) :: localStart, localCount, localStride, localMap - integer :: numDims, counter - - ! Set local arguments to default values - numDims = size(shape(values)) - localStart (: ) = 1 - localCount (:numDims ) = shape(values) - localCount (numDims+1:) = 1 - localStride(: ) = 1 - localMap (:numDims ) = (/ 1, (product(localCount(:counter)), counter = 1, numDims - 1) /) - - if(present(start)) localStart (:size(start) ) = start(:) - if(present(count)) localCount (:size(count) ) = count(:) - if(present(stride)) localStride(:size(stride)) = stride(:) - if(present(map)) then - localMap (:size(map)) = map(:) - nf90_get_var_6D_OneByteInt = & - nf_get_varm_int1(ncid, varid, localStart, localCount, localStride, localMap, values) - else if(present(stride)) then - nf90_get_var_6D_OneByteInt = & - nf_get_vars_int1(ncid, varid, localStart, localCount, localStride, values) - else - nf90_get_var_6D_OneByteInt = & - nf_get_vara_int1(ncid, varid, localStart, localCount, values) - end if - end function nf90_get_var_6D_OneByteInt - - - function nf90_get_var_7D_OneByteInt(ncid, varid, values, start, count, stride, map) - integer, intent( in) :: ncid, varid - integer (kind = OneByteInt), dimension(:, :, :, :, :, :, :), & - intent(out) :: values - integer, dimension(:), optional, intent( in) :: start, count, stride, map - integer :: nf90_get_var_7D_OneByteInt - - integer, dimension(nf90_max_var_dims) :: localStart, localCount, localStride, localMap - integer :: numDims, counter - - ! Set local arguments to default values - numDims = size(shape(values)) - localStart (: ) = 1 - localCount (:numDims ) = shape(values) - localCount (numDims+1:) = 1 - localStride(: ) = 1 - localMap (:numDims ) = (/ 1, (product(localCount(:counter)), counter = 1, numDims - 1) /) - - if(present(start)) localStart (:size(start) ) = start(:) - if(present(count)) localCount (:size(count) ) = count(:) - if(present(stride)) localStride(:size(stride)) = stride(:) - if(present(map)) then - localMap (:size(map)) = map(:) - nf90_get_var_7D_OneByteInt = & - nf_get_varm_int1(ncid, varid, localStart, localCount, localStride, localMap, values) - else if(present(stride)) then - nf90_get_var_7D_OneByteInt = & - nf_get_vars_int1(ncid, varid, localStart, localCount, localStride, values) - else - nf90_get_var_7D_OneByteInt = & - nf_get_vara_int1(ncid, varid, localStart, localCount, values) - end if - end function nf90_get_var_7D_OneByteInt - - - function nf90_get_var_1D_TwoByteInt(ncid, varid, values, start, count, stride, map) - integer, intent( in) :: ncid, varid - integer (kind = TwoByteInt), dimension(:), & - intent(out) :: values - integer, dimension(:), optional, intent( in) :: start, count, stride, map - integer :: nf90_get_var_1D_TwoByteInt - - integer, dimension(nf90_max_var_dims) :: localStart, localCount, localStride, localMap - integer :: numDims, counter - - ! Set local arguments to default values - numDims = size(shape(values)) - localStart (: ) = 1 - localCount (:numDims ) = shape(values) - localCount (numDims+1:) = 1 - localStride(: ) = 1 - localMap (:numDims ) = (/ 1, (product(localCount(:counter)), counter = 1, numDims - 1) /) - - if(present(start)) localStart (:size(start) ) = start(:) - if(present(count)) localCount (:size(count) ) = count(:) - if(present(stride)) localStride(:size(stride)) = stride(:) - if(present(map)) then - localMap (:size(map)) = map(:) - nf90_get_var_1D_TwoByteInt = & - nf_get_varm_int2(ncid, varid, localStart, localCount, localStride, localMap, values) - else if(present(stride)) then - nf90_get_var_1D_TwoByteInt = & - nf_get_vars_int2(ncid, varid, localStart, localCount, localStride, values) - else - nf90_get_var_1D_TwoByteInt = & - nf_get_vara_int2(ncid, varid, localStart, localCount, values) - end if - end function nf90_get_var_1D_TwoByteInt - - - function nf90_get_var_2D_TwoByteInt(ncid, varid, values, start, count, stride, map) - integer, intent( in) :: ncid, varid - integer (kind = TwoByteInt), dimension(:, :), & - intent(out) :: values - integer, dimension(:), optional, intent( in) :: start, count, stride, map - integer :: nf90_get_var_2D_TwoByteInt - - integer, dimension(nf90_max_var_dims) :: localStart, localCount, localStride, localMap - integer :: numDims, counter - - ! Set local arguments to default values - numDims = size(shape(values)) - localStart (: ) = 1 - localCount (:numDims ) = shape(values) - localCount (numDims+1:) = 1 - localStride(: ) = 1 - localMap (:numDims ) = (/ 1, (product(localCount(:counter)), counter = 1, numDims - 1) /) - - if(present(start)) localStart (:size(start) ) = start(:) - if(present(count)) localCount (:size(count) ) = count(:) - if(present(stride)) localStride(:size(stride)) = stride(:) - if(present(map)) then - localMap (:size(map)) = map(:) - nf90_get_var_2D_TwoByteInt = & - nf_get_varm_int2(ncid, varid, localStart, localCount, localStride, localMap, values) - else if(present(stride)) then - nf90_get_var_2D_TwoByteInt = & - nf_get_vars_int2(ncid, varid, localStart, localCount, localStride, values) - else - nf90_get_var_2D_TwoByteInt = & - nf_get_vara_int2(ncid, varid, localStart, localCount, values) - end if - end function nf90_get_var_2D_TwoByteInt - - - function nf90_get_var_3D_TwoByteInt(ncid, varid, values, start, count, stride, map) - integer, intent( in) :: ncid, varid - integer (kind = TwoByteInt), dimension(:, :, :), & - intent(out) :: values - integer, dimension(:), optional, intent( in) :: start, count, stride, map - integer :: nf90_get_var_3D_TwoByteInt - - integer, dimension(nf90_max_var_dims) :: localStart, localCount, localStride, localMap - integer :: numDims, counter - - ! Set local arguments to default values - numDims = size(shape(values)) - localStart (: ) = 1 - localCount (:numDims ) = shape(values) - localCount (numDims+1:) = 1 - localStride(: ) = 1 - localMap (:numDims ) = (/ 1, (product(localCount(:counter)), counter = 1, numDims - 1) /) - - if(present(start)) localStart (:size(start) ) = start(:) - if(present(count)) localCount (:size(count) ) = count(:) - if(present(stride)) localStride(:size(stride)) = stride(:) - if(present(map)) then - localMap (:size(map)) = map(:) - nf90_get_var_3D_TwoByteInt = & - nf_get_varm_int2(ncid, varid, localStart, localCount, localStride, localMap, values) - else if(present(stride)) then - nf90_get_var_3D_TwoByteInt = & - nf_get_vars_int2(ncid, varid, localStart, localCount, localStride, values) - else - nf90_get_var_3D_TwoByteInt = & - nf_get_vara_int2(ncid, varid, localStart, localCount, values) - end if - end function nf90_get_var_3D_TwoByteInt - - - function nf90_get_var_4D_TwoByteInt(ncid, varid, values, start, count, stride, map) - integer, intent( in) :: ncid, varid - integer (kind = TwoByteInt), dimension(:, :, :, :), & - intent(out) :: values - integer, dimension(:), optional, intent( in) :: start, count, stride, map - integer :: nf90_get_var_4D_TwoByteInt - - integer, dimension(nf90_max_var_dims) :: localStart, localCount, localStride, localMap - integer :: numDims, counter - - ! Set local arguments to default values - numDims = size(shape(values)) - localStart (: ) = 1 - localCount (:numDims ) = shape(values) - localCount (numDims+1:) = 1 - localStride(: ) = 1 - localMap (:numDims ) = (/ 1, (product(localCount(:counter)), counter = 1, numDims - 1) /) - - if(present(start)) localStart (:size(start) ) = start(:) - if(present(count)) localCount (:size(count) ) = count(:) - if(present(stride)) localStride(:size(stride)) = stride(:) - if(present(map)) then - localMap (:size(map)) = map(:) - nf90_get_var_4D_TwoByteInt = & - nf_get_varm_int2(ncid, varid, localStart, localCount, localStride, localMap, values) - else if(present(stride)) then - nf90_get_var_4D_TwoByteInt = & - nf_get_vars_int2(ncid, varid, localStart, localCount, localStride, values) - else - nf90_get_var_4D_TwoByteInt = & - nf_get_vara_int2(ncid, varid, localStart, localCount, values) - end if - end function nf90_get_var_4D_TwoByteInt - - - function nf90_get_var_5D_TwoByteInt(ncid, varid, values, start, count, stride, map) - integer, intent( in) :: ncid, varid - integer (kind = TwoByteInt), dimension(:, :, :, :, :), & - intent(out) :: values - integer, dimension(:), optional, intent( in) :: start, count, stride, map - integer :: nf90_get_var_5D_TwoByteInt - - integer, dimension(nf90_max_var_dims) :: localStart, localCount, localStride, localMap - integer :: numDims, counter - - ! Set local arguments to default values - numDims = size(shape(values)) - localStart (: ) = 1 - localCount (:numDims ) = shape(values) - localCount (numDims+1:) = 1 - localStride(: ) = 1 - localMap (:numDims ) = (/ 1, (product(localCount(:counter)), counter = 1, numDims - 1) /) - - if(present(start)) localStart (:size(start) ) = start(:) - if(present(count)) localCount (:size(count) ) = count(:) - if(present(stride)) localStride(:size(stride)) = stride(:) - if(present(map)) then - localMap (:size(map)) = map(:) - nf90_get_var_5D_TwoByteInt = & - nf_get_varm_int2(ncid, varid, localStart, localCount, localStride, localMap, values) - else if(present(stride)) then - nf90_get_var_5D_TwoByteInt = & - nf_get_vars_int2(ncid, varid, localStart, localCount, localStride, values) - else - nf90_get_var_5D_TwoByteInt = & - nf_get_vara_int2(ncid, varid, localStart, localCount, values) - end if - end function nf90_get_var_5D_TwoByteInt - - - function nf90_get_var_6D_TwoByteInt(ncid, varid, values, start, count, stride, map) - integer, intent( in) :: ncid, varid - integer (kind = TwoByteInt), dimension(:, :, :, :, :, :), & - intent(out) :: values - integer, dimension(:), optional, intent( in) :: start, count, stride, map - integer :: nf90_get_var_6D_TwoByteInt - - integer, dimension(nf90_max_var_dims) :: localStart, localCount, localStride, localMap - integer :: numDims, counter - - ! Set local arguments to default values - numDims = size(shape(values)) - localStart (: ) = 1 - localCount (:numDims ) = shape(values) - localCount (numDims+1:) = 1 - localStride(: ) = 1 - localMap (:numDims ) = (/ 1, (product(localCount(:counter)), counter = 1, numDims - 1) /) - - if(present(start)) localStart (:size(start) ) = start(:) - if(present(count)) localCount (:size(count) ) = count(:) - if(present(stride)) localStride(:size(stride)) = stride(:) - if(present(map)) then - localMap (:size(map)) = map(:) - nf90_get_var_6D_TwoByteInt = & - nf_get_varm_int2(ncid, varid, localStart, localCount, localStride, localMap, values) - else if(present(stride)) then - nf90_get_var_6D_TwoByteInt = & - nf_get_vars_int2(ncid, varid, localStart, localCount, localStride, values) - else - nf90_get_var_6D_TwoByteInt = & - nf_get_vara_int2(ncid, varid, localStart, localCount, values) - end if - end function nf90_get_var_6D_TwoByteInt - - - function nf90_get_var_7D_TwoByteInt(ncid, varid, values, start, count, stride, map) - integer, intent( in) :: ncid, varid - integer (kind = TwoByteInt), dimension(:, :, :, :, :, :, :), & - intent(out) :: values - integer, dimension(:), optional, intent( in) :: start, count, stride, map - integer :: nf90_get_var_7D_TwoByteInt - - integer, dimension(nf90_max_var_dims) :: localStart, localCount, localStride, localMap - integer :: numDims, counter - - ! Set local arguments to default values - numDims = size(shape(values)) - localStart (: ) = 1 - localCount (:numDims ) = shape(values) - localCount (numDims+1:) = 1 - localStride(: ) = 1 - localMap (:numDims ) = (/ 1, (product(localCount(:counter)), counter = 1, numDims - 1) /) - - if(present(start)) localStart (:size(start) ) = start(:) - if(present(count)) localCount (:size(count) ) = count(:) - if(present(stride)) localStride(:size(stride)) = stride(:) - if(present(map)) then - localMap (:size(map)) = map(:) - nf90_get_var_7D_TwoByteInt = & - nf_get_varm_int2(ncid, varid, localStart, localCount, localStride, localMap, values) - else if(present(stride)) then - nf90_get_var_7D_TwoByteInt = & - nf_get_vars_int2(ncid, varid, localStart, localCount, localStride, values) - else - nf90_get_var_7D_TwoByteInt = & - nf_get_vara_int2(ncid, varid, localStart, localCount, values) - end if - end function nf90_get_var_7D_TwoByteInt - - - function nf90_get_var_1D_FourByteInt(ncid, varid, values, start, count, stride, map) - integer, intent( in) :: ncid, varid - integer (kind = FourByteInt), dimension(:), & - intent(out) :: values - integer, dimension(:), optional, intent( in) :: start, count, stride, map - integer :: nf90_get_var_1D_FourByteInt - - integer, dimension(nf90_max_var_dims) :: localStart, localCount, localStride, localMap - integer :: numDims, counter - integer, dimension(size(values)) :: defaultIntArray - - ! Set local arguments to default values - numDims = size(shape(values)) - localStart (: ) = 1 - localCount (:numDims ) = shape(values) - localCount (numDims+1:) = 1 - localStride(: ) = 1 - localMap (:numDims ) = (/ 1, (product(localCount(:counter)), counter = 1, numDims - 1) /) - - if(present(start)) localStart (:size(start) ) = start(:) - if(present(count)) localCount (:size(count) ) = count(:) - if(present(stride)) localStride(:size(stride)) = stride(:) - if(present(map)) then - localMap (:size(map)) = map(:) - nf90_get_var_1D_FourByteInt = & - nf_get_varm_int(ncid, varid, localStart, localCount, localStride, localMap, defaultIntArray) - else if(present(stride)) then - nf90_get_var_1D_FourByteInt = & - nf_get_vars_int(ncid, varid, localStart, localCount, localStride, defaultIntArray) - else - nf90_get_var_1D_FourByteInt = & - nf_get_vara_int(ncid, varid, localStart, localCount, defaultIntArray) - end if - values(:) = reshape(defaultIntArray(:), shape(values)) - end function nf90_get_var_1D_FourByteInt - - - function nf90_get_var_2D_FourByteInt(ncid, varid, values, start, count, stride, map) - integer, intent( in) :: ncid, varid - integer (kind = FourByteInt), dimension(:, :), & - intent(out) :: values - integer, dimension(:), optional, intent( in) :: start, count, stride, map - integer :: nf90_get_var_2D_FourByteInt - - integer, dimension(nf90_max_var_dims) :: localStart, localCount, localStride, localMap - integer :: numDims, counter - integer, dimension(size(values)) :: defaultIntArray - - ! Set local arguments to default values - numDims = size(shape(values)) - localStart (: ) = 1 - localCount (:numDims ) = shape(values) - localCount (numDims+1:) = 1 - localStride(: ) = 1 - localMap (:numDims ) = (/ 1, (product(localCount(:counter)), counter = 1, numDims - 1) /) - - if(present(start)) localStart (:size(start) ) = start(:) - if(present(count)) localCount (:size(count) ) = count(:) - if(present(stride)) localStride(:size(stride)) = stride(:) - if(present(map)) then - localMap (:size(map)) = map(:) - nf90_get_var_2D_FourByteInt = & - nf_get_varm_int(ncid, varid, localStart, localCount, localStride, localMap, defaultIntArray) - else if(present(stride)) then - nf90_get_var_2D_FourByteInt = & - nf_get_vars_int(ncid, varid, localStart, localCount, localStride, defaultIntArray) - else - nf90_get_var_2D_FourByteInt = & - nf_get_vara_int(ncid, varid, localStart, localCount, defaultIntArray) - end if - values(:, :) = reshape(defaultIntArray(:), shape(values)) - end function nf90_get_var_2D_FourByteInt - - - function nf90_get_var_3D_FourByteInt(ncid, varid, values, start, count, stride, map) - integer, intent( in) :: ncid, varid - integer (kind = FourByteInt), dimension(:, :, :), & - intent(out) :: values - integer, dimension(:), optional, intent( in) :: start, count, stride, map - integer :: nf90_get_var_3D_FourByteInt - - integer, dimension(nf90_max_var_dims) :: localStart, localCount, localStride, localMap - integer :: numDims, counter - integer, dimension(size(values)) :: defaultIntArray - - ! Set local arguments to default values - numDims = size(shape(values)) - localStart (: ) = 1 - localCount (:numDims ) = shape(values) - localCount (numDims+1:) = 1 - localStride(: ) = 1 - localMap (:numDims ) = (/ 1, (product(localCount(:counter)), counter = 1, numDims - 1) /) - - if(present(start)) localStart (:size(start) ) = start(:) - if(present(count)) localCount (:size(count) ) = count(:) - if(present(stride)) localStride(:size(stride)) = stride(:) - if(present(map)) then - localMap (:size(map)) = map(:) - nf90_get_var_3D_FourByteInt = & - nf_get_varm_int(ncid, varid, localStart, localCount, localStride, localMap, defaultIntArray) - else if(present(stride)) then - nf90_get_var_3D_FourByteInt = & - nf_get_vars_int(ncid, varid, localStart, localCount, localStride, defaultIntArray) - else - nf90_get_var_3D_FourByteInt = & - nf_get_vara_int(ncid, varid, localStart, localCount, defaultIntArray) - end if - values(:, :, :) = reshape(defaultIntArray(:), shape(values)) - end function nf90_get_var_3D_FourByteInt - - - function nf90_get_var_4D_FourByteInt(ncid, varid, values, start, count, stride, map) - integer, intent( in) :: ncid, varid - integer (kind = FourByteInt), dimension(:, :, :, :), & - intent(out) :: values - integer, dimension(:), optional, intent( in) :: start, count, stride, map - integer :: nf90_get_var_4D_FourByteInt - - integer, dimension(nf90_max_var_dims) :: localStart, localCount, localStride, localMap - integer :: numDims, counter - integer, dimension(size(values)) :: defaultIntArray - - ! Set local arguments to default values - numDims = size(shape(values)) - localStart (: ) = 1 - localCount (:numDims ) = shape(values) - localCount (numDims+1:) = 1 - localStride(: ) = 1 - localMap (:numDims ) = (/ 1, (product(localCount(:counter)), counter = 1, numDims - 1) /) - - if(present(start)) localStart (:size(start) ) = start(:) - if(present(count)) localCount (:size(count) ) = count(:) - if(present(stride)) localStride(:size(stride)) = stride(:) - if(present(map)) then - localMap (:size(map)) = map(:) - nf90_get_var_4D_FourByteInt = & - nf_get_varm_int(ncid, varid, localStart, localCount, localStride, localMap, defaultIntArray) - else if(present(stride)) then - nf90_get_var_4D_FourByteInt = & - nf_get_vars_int(ncid, varid, localStart, localCount, localStride, defaultIntArray) - else - nf90_get_var_4D_FourByteInt = & - nf_get_vara_int(ncid, varid, localStart, localCount, defaultIntArray) - end if - values(:, :, :, :) = reshape(defaultIntArray(:), shape(values)) - end function nf90_get_var_4D_FourByteInt - - - function nf90_get_var_5D_FourByteInt(ncid, varid, values, start, count, stride, map) - integer, intent( in) :: ncid, varid - integer (kind = FourByteInt), dimension(:, :, :, :, :), & - intent(out) :: values - integer, dimension(:), optional, intent( in) :: start, count, stride, map - integer :: nf90_get_var_5D_FourByteInt - - integer, dimension(nf90_max_var_dims) :: localStart, localCount, localStride, localMap - integer :: numDims, counter - integer, dimension(size(values)) :: defaultIntArray - - ! Set local arguments to default values - numDims = size(shape(values)) - localStart (: ) = 1 - localCount (:numDims ) = shape(values) - localCount (numDims+1:) = 1 - localStride(: ) = 1 - localMap (:numDims ) = (/ 1, (product(localCount(:counter)), counter = 1, numDims - 1) /) - - if(present(start)) localStart (:size(start) ) = start(:) - if(present(count)) localCount (:size(count) ) = count(:) - if(present(stride)) localStride(:size(stride)) = stride(:) - if(present(map)) then - localMap (:size(map)) = map(:) - nf90_get_var_5D_FourByteInt = & - nf_get_varm_int(ncid, varid, localStart, localCount, localStride, localMap, defaultIntArray) - else if(present(stride)) then - nf90_get_var_5D_FourByteInt = & - nf_get_vars_int(ncid, varid, localStart, localCount, localStride, defaultIntArray) - else - nf90_get_var_5D_FourByteInt = & - nf_get_vara_int(ncid, varid, localStart, localCount, defaultIntArray) - end if - values(:, :, :, :, :) = reshape(defaultIntArray(:), shape(values)) - end function nf90_get_var_5D_FourByteInt - - - function nf90_get_var_6D_FourByteInt(ncid, varid, values, start, count, stride, map) - integer, intent( in) :: ncid, varid - integer (kind = FourByteInt), dimension(:, :, :, :, :, :), & - intent(out) :: values - integer, dimension(:), optional, intent( in) :: start, count, stride, map - integer :: nf90_get_var_6D_FourByteInt - - integer, dimension(nf90_max_var_dims) :: localStart, localCount, localStride, localMap - integer :: numDims, counter - integer, dimension(size(values)) :: defaultIntArray - - ! Set local arguments to default values - numDims = size(shape(values)) - localStart (: ) = 1 - localCount (:numDims ) = shape(values) - localCount (numDims+1:) = 1 - localStride(: ) = 1 - localMap (:numDims ) = (/ 1, (product(localCount(:counter)), counter = 1, numDims - 1) /) - - if(present(start)) localStart (:size(start) ) = start(:) - if(present(count)) localCount (:size(count) ) = count(:) - if(present(stride)) localStride(:size(stride)) = stride(:) - if(present(map)) then - localMap (:size(map)) = map(:) - nf90_get_var_6D_FourByteInt = & - nf_get_varm_int(ncid, varid, localStart, localCount, localStride, localMap, defaultIntArray) - else if(present(stride)) then - nf90_get_var_6D_FourByteInt = & - nf_get_vars_int(ncid, varid, localStart, localCount, localStride, defaultIntArray) - else - nf90_get_var_6D_FourByteInt = & - nf_get_vara_int(ncid, varid, localStart, localCount, defaultIntArray) - end if - values(:, :, :, :, :, :) = reshape(defaultIntArray(:), shape(values)) - end function nf90_get_var_6D_FourByteInt - - - function nf90_get_var_7D_FourByteInt(ncid, varid, values, start, count, stride, map) - integer, intent( in) :: ncid, varid - integer (kind = FourByteInt), dimension(:, :, :, :, :, :, :), & - intent(out) :: values - integer, dimension(:), optional, intent( in) :: start, count, stride, map - integer :: nf90_get_var_7D_FourByteInt - - integer, dimension(nf90_max_var_dims) :: localStart, localCount, localStride, localMap - integer :: numDims, counter - integer, dimension(size(values)) :: defaultIntArray - - ! Set local arguments to default values - numDims = size(shape(values)) - localStart (: ) = 1 - localCount (:numDims ) = shape(values) - localCount (numDims+1:) = 1 - localStride(: ) = 1 - localMap (:numDims ) = (/ 1, (product(localCount(:counter)), counter = 1, numDims - 1) /) - - if(present(start)) localStart (:size(start) ) = start(:) - if(present(count)) localCount (:size(count) ) = count(:) - if(present(stride)) localStride(:size(stride)) = stride(:) - if(present(map)) then - localMap (:size(map)) = map(:) - nf90_get_var_7D_FourByteInt = & - nf_get_varm_int(ncid, varid, localStart, localCount, localStride, localMap, defaultIntArray) - else if(present(stride)) then - nf90_get_var_7D_FourByteInt = & - nf_get_vars_int(ncid, varid, localStart, localCount, localStride, defaultIntArray) - else - nf90_get_var_7D_FourByteInt = & - nf_get_vara_int(ncid, varid, localStart, localCount, defaultIntArray) - end if - values(:, :, :, :, :, :, :) = reshape(defaultIntArray(:), shape(values)) - end function nf90_get_var_7D_FourByteInt - - - function nf90_get_var_1D_EightByteInt(ncid, varid, values, start, count, stride, map) - integer, intent( in) :: ncid, varid - integer (kind = EightByteInt), dimension(:), & - intent(out) :: values - integer, dimension(:), optional, intent( in) :: start, count, stride, map - integer :: nf90_get_var_1D_EightByteInt - - integer, dimension(nf90_max_var_dims) :: localStart, localCount, localStride, localMap - integer :: numDims, counter - integer, dimension(size(values)) :: defaultIntArray - - ! Set local arguments to default values - numDims = size(shape(values)) - localStart (: ) = 1 - localCount (:numDims ) = shape(values) - localCount (numDims+1:) = 1 - localStride(: ) = 1 - localMap (:numDims ) = (/ 1, (product(localCount(:counter)), counter = 1, numDims - 1) /) - - if(present(start)) localStart (:size(start) ) = start(:) - if(present(count)) localCount (:size(count) ) = count(:) - if(present(stride)) localStride(:size(stride)) = stride(:) - if(present(map)) then - localMap (:size(map)) = map(:) - nf90_get_var_1D_EightByteInt = & - nf_get_varm_int(ncid, varid, localStart, localCount, localStride, localMap, defaultIntArray) - else if(present(stride)) then - nf90_get_var_1D_EightByteInt = & - nf_get_vars_int(ncid, varid, localStart, localCount, localStride, defaultIntArray) - else - nf90_get_var_1D_EightByteInt = & - nf_get_vara_int(ncid, varid, localStart, localCount, defaultIntArray) - end if - values(:) = reshape(defaultIntArray(:), shape(values)) - end function nf90_get_var_1D_EightByteInt - - - function nf90_get_var_2D_EightByteInt(ncid, varid, values, start, count, stride, map) - integer, intent( in) :: ncid, varid - integer (kind = EightByteInt), dimension(:, :), & - intent(out) :: values - integer, dimension(:), optional, intent( in) :: start, count, stride, map - integer :: nf90_get_var_2D_EightByteInt - - integer, dimension(nf90_max_var_dims) :: localStart, localCount, localStride, localMap - integer :: numDims, counter - integer, dimension(size(values)) :: defaultIntArray - - ! Set local arguments to default values - numDims = size(shape(values)) - localStart (: ) = 1 - localCount (:numDims ) = shape(values) - localCount (numDims+1:) = 1 - localStride(: ) = 1 - localMap (:numDims ) = (/ 1, (product(localCount(:counter)), counter = 1, numDims - 1) /) - - if(present(start)) localStart (:size(start) ) = start(:) - if(present(count)) localCount (:size(count) ) = count(:) - if(present(stride)) localStride(:size(stride)) = stride(:) - if(present(map)) then - localMap (:size(map)) = map(:) - nf90_get_var_2D_EightByteInt = & - nf_get_varm_int(ncid, varid, localStart, localCount, localStride, localMap, defaultIntArray) - else if(present(stride)) then - nf90_get_var_2D_EightByteInt = & - nf_get_vars_int(ncid, varid, localStart, localCount, localStride, defaultIntArray) - else - nf90_get_var_2D_EightByteInt = & - nf_get_vara_int(ncid, varid, localStart, localCount, defaultIntArray) - end if - values(:, :) = reshape(defaultIntArray(:), shape(values)) - end function nf90_get_var_2D_EightByteInt - - - function nf90_get_var_3D_EightByteInt(ncid, varid, values, start, count, stride, map) - integer, intent( in) :: ncid, varid - integer (kind = EightByteInt), dimension(:, :, :), & - intent(out) :: values - integer, dimension(:), optional, intent( in) :: start, count, stride, map - integer :: nf90_get_var_3D_EightByteInt - - integer, dimension(nf90_max_var_dims) :: localStart, localCount, localStride, localMap - integer :: numDims, counter - integer, dimension(size(values)) :: defaultIntArray - - ! Set local arguments to default values - numDims = size(shape(values)) - localStart (: ) = 1 - localCount (:numDims ) = shape(values) - localCount (numDims+1:) = 1 - localStride(: ) = 1 - localMap (:numDims ) = (/ 1, (product(localCount(:counter)), counter = 1, numDims - 1) /) - - if(present(start)) localStart (:size(start) ) = start(:) - if(present(count)) localCount (:size(count) ) = count(:) - if(present(stride)) localStride(:size(stride)) = stride(:) - if(present(map)) then - localMap (:size(map)) = map(:) - nf90_get_var_3D_EightByteInt = & - nf_get_varm_int(ncid, varid, localStart, localCount, localStride, localMap, defaultIntArray) - else if(present(stride)) then - nf90_get_var_3D_EightByteInt = & - nf_get_vars_int(ncid, varid, localStart, localCount, localStride, defaultIntArray) - else - nf90_get_var_3D_EightByteInt = & - nf_get_vara_int(ncid, varid, localStart, localCount, defaultIntArray) - end if - values(:, :, :) = reshape(defaultIntArray(:), shape(values)) - end function nf90_get_var_3D_EightByteInt - - - function nf90_get_var_4D_EightByteInt(ncid, varid, values, start, count, stride, map) - integer, intent( in) :: ncid, varid - integer (kind = EightByteInt), dimension(:, :, :, :), & - intent(out) :: values - integer, dimension(:), optional, intent( in) :: start, count, stride, map - integer :: nf90_get_var_4D_EightByteInt - - integer, dimension(nf90_max_var_dims) :: localStart, localCount, localStride, localMap - integer :: numDims, counter - integer, dimension(size(values)) :: defaultIntArray - - ! Set local arguments to default values - numDims = size(shape(values)) - localStart (: ) = 1 - localCount (:numDims ) = shape(values) - localCount (numDims+1:) = 1 - localStride(: ) = 1 - localMap (:numDims ) = (/ 1, (product(localCount(:counter)), counter = 1, numDims - 1) /) - - if(present(start)) localStart (:size(start) ) = start(:) - if(present(count)) localCount (:size(count) ) = count(:) - if(present(stride)) localStride(:size(stride)) = stride(:) - if(present(map)) then - localMap (:size(map)) = map(:) - nf90_get_var_4D_EightByteInt = & - nf_get_varm_int(ncid, varid, localStart, localCount, localStride, localMap, defaultIntArray) - else if(present(stride)) then - nf90_get_var_4D_EightByteInt = & - nf_get_vars_int(ncid, varid, localStart, localCount, localStride, defaultIntArray) - else - nf90_get_var_4D_EightByteInt = & - nf_get_vara_int(ncid, varid, localStart, localCount, defaultIntArray) - end if - values(:, :, :, :) = reshape(defaultIntArray(:), shape(values)) - end function nf90_get_var_4D_EightByteInt - - - function nf90_get_var_5D_EightByteInt(ncid, varid, values, start, count, stride, map) - integer, intent( in) :: ncid, varid - integer (kind = EightByteInt), dimension(:, :, :, :, :), & - intent(out) :: values - integer, dimension(:), optional, intent( in) :: start, count, stride, map - integer :: nf90_get_var_5D_EightByteInt - - integer, dimension(nf90_max_var_dims) :: localStart, localCount, localStride, localMap - integer :: numDims, counter - integer, dimension(size(values)) :: defaultIntArray - - ! Set local arguments to default values - numDims = size(shape(values)) - localStart (: ) = 1 - localCount (:numDims ) = shape(values) - localCount (numDims+1:) = 1 - localStride(: ) = 1 - localMap (:numDims ) = (/ 1, (product(localCount(:counter)), counter = 1, numDims - 1) /) - - if(present(start)) localStart (:size(start) ) = start(:) - if(present(count)) localCount (:size(count) ) = count(:) - if(present(stride)) localStride(:size(stride)) = stride(:) - if(present(map)) then - localMap (:size(map)) = map(:) - nf90_get_var_5D_EightByteInt = & - nf_get_varm_int(ncid, varid, localStart, localCount, localStride, localMap, defaultIntArray) - else if(present(stride)) then - nf90_get_var_5D_EightByteInt = & - nf_get_vars_int(ncid, varid, localStart, localCount, localStride, defaultIntArray) - else - nf90_get_var_5D_EightByteInt = & - nf_get_vara_int(ncid, varid, localStart, localCount, defaultIntArray) - end if - values(:, :, :, :, :) = reshape(defaultIntArray(:), shape(values)) - end function nf90_get_var_5D_EightByteInt - - - function nf90_get_var_6D_EightByteInt(ncid, varid, values, start, count, stride, map) - integer, intent( in) :: ncid, varid - integer (kind = EightByteInt), dimension(:, :, :, :, :, :), & - intent(out) :: values - integer, dimension(:), optional, intent( in) :: start, count, stride, map - integer :: nf90_get_var_6D_EightByteInt - - integer, dimension(nf90_max_var_dims) :: localStart, localCount, localStride, localMap - integer :: numDims, counter - integer, dimension(size(values)) :: defaultIntArray - - ! Set local arguments to default values - numDims = size(shape(values)) - localStart (: ) = 1 - localCount (:numDims ) = shape(values) - localCount (numDims+1:) = 1 - localStride(: ) = 1 - localMap (:numDims ) = (/ 1, (product(localCount(:counter)), counter = 1, numDims - 1) /) - - if(present(start)) localStart (:size(start) ) = start(:) - if(present(count)) localCount (:size(count) ) = count(:) - if(present(stride)) localStride(:size(stride)) = stride(:) - if(present(map)) then - localMap (:size(map)) = map(:) - nf90_get_var_6D_EightByteInt = & - nf_get_varm_int(ncid, varid, localStart, localCount, localStride, localMap, defaultIntArray) - else if(present(stride)) then - nf90_get_var_6D_EightByteInt = & - nf_get_vars_int(ncid, varid, localStart, localCount, localStride, defaultIntArray) - else - nf90_get_var_6D_EightByteInt = & - nf_get_vara_int(ncid, varid, localStart, localCount, defaultIntArray) - end if - values(:, :, :, :, :, :) = reshape(defaultIntArray(:), shape(values)) - end function nf90_get_var_6D_EightByteInt - - - function nf90_get_var_7D_EightByteInt(ncid, varid, values, start, count, stride, map) - integer, intent( in) :: ncid, varid - integer (kind = EightByteInt), dimension(:, :, :, :, :, :, :), & - intent(out) :: values - integer, dimension(:), optional, intent( in) :: start, count, stride, map - integer :: nf90_get_var_7D_EightByteInt - - integer, dimension(nf90_max_var_dims) :: localStart, localCount, localStride, localMap - integer :: numDims, counter - integer, dimension(size(values)) :: defaultIntArray - - ! Set local arguments to default values - numDims = size(shape(values)) - localStart (: ) = 1 - localCount (:numDims ) = shape(values) - localCount (numDims+1:) = 1 - localStride(: ) = 1 - localMap (:numDims ) = (/ 1, (product(localCount(:counter)), counter = 1, numDims - 1) /) - - if(present(start)) localStart (:size(start) ) = start(:) - if(present(count)) localCount (:size(count) ) = count(:) - if(present(stride)) localStride(:size(stride)) = stride(:) - if(present(map)) then - localMap (:size(map)) = map(:) - nf90_get_var_7D_EightByteInt = & - nf_get_varm_int(ncid, varid, localStart, localCount, localStride, localMap, defaultIntArray) - else if(present(stride)) then - nf90_get_var_7D_EightByteInt = & - nf_get_vars_int(ncid, varid, localStart, localCount, localStride, defaultIntArray) - else - nf90_get_var_7D_EightByteInt = & - nf_get_vara_int(ncid, varid, localStart, localCount, defaultIntArray) - end if - values(:, :, :, :, :, :, :) = reshape(defaultIntArray(:), shape(values)) - end function nf90_get_var_7D_EightByteInt - - - function nf90_get_var_1D_FourByteReal(ncid, varid, values, start, count, stride, map) - integer, intent( in) :: ncid, varid - real (kind = FourByteReal), dimension(:), & - intent(out) :: values - integer, dimension(:), optional, intent( in) :: start, count, stride, map - integer :: nf90_get_var_1D_FourByteReal - - integer, dimension(nf90_max_var_dims) :: localStart, localCount, localStride, localMap - integer :: numDims, counter - - ! Set local arguments to default values - numDims = size(shape(values)) - localStart (: ) = 1 - localCount (:numDims ) = shape(values) - localCount (numDims+1:) = 1 - localStride(: ) = 1 - localMap (:numDims ) = (/ 1, (product(localCount(:counter)), counter = 1, numDims - 1) /) - - if(present(start)) localStart (:size(start) ) = start(:) - if(present(count)) localCount (:size(count) ) = count(:) - if(present(stride)) localStride(:size(stride)) = stride(:) - if(present(map)) then - localMap (:size(map)) = map(:) - nf90_get_var_1D_FourByteReal = & - nf_get_varm_real(ncid, varid, localStart, localCount, localStride, localMap, values) - else if(present(stride)) then - nf90_get_var_1D_FourByteReal = & - nf_get_vars_real(ncid, varid, localStart, localCount, localStride, values) - else - nf90_get_var_1D_FourByteReal = & - nf_get_vara_real(ncid, varid, localStart, localCount, values) - end if - end function nf90_get_var_1D_FourByteReal - - - function nf90_get_var_2D_FourByteReal(ncid, varid, values, start, count, stride, map) - integer, intent( in) :: ncid, varid - real (kind = FourByteReal), dimension(:, :), & - intent(out) :: values - integer, dimension(:), optional, intent( in) :: start, count, stride, map - integer :: nf90_get_var_2D_FourByteReal - - integer, dimension(nf90_max_var_dims) :: localStart, localCount, localStride, localMap - integer :: numDims, counter - - ! Set local arguments to default values - numDims = size(shape(values)) - localStart (: ) = 1 - localCount (:numDims ) = shape(values) - localCount (numDims+1:) = 1 - localStride(: ) = 1 - localMap (:numDims ) = (/ 1, (product(localCount(:counter)), counter = 1, numDims - 1) /) - - if(present(start)) localStart (:size(start) ) = start(:) - if(present(count)) localCount (:size(count) ) = count(:) - if(present(stride)) localStride(:size(stride)) = stride(:) - if(present(map)) then - localMap (:size(map)) = map(:) - nf90_get_var_2D_FourByteReal = & - nf_get_varm_real(ncid, varid, localStart, localCount, localStride, localMap, values) - else if(present(stride)) then - nf90_get_var_2D_FourByteReal = & - nf_get_vars_real(ncid, varid, localStart, localCount, localStride, values) - else - nf90_get_var_2D_FourByteReal = & - nf_get_vara_real(ncid, varid, localStart, localCount, values) - end if - end function nf90_get_var_2D_FourByteReal - - - function nf90_get_var_3D_FourByteReal(ncid, varid, values, start, count, stride, map) - integer, intent( in) :: ncid, varid - real (kind = FourByteReal), dimension(:, :, :), & - intent(out) :: values - integer, dimension(:), optional, intent( in) :: start, count, stride, map - integer :: nf90_get_var_3D_FourByteReal - - integer, dimension(nf90_max_var_dims) :: localStart, localCount, localStride, localMap - integer :: numDims, counter - - ! Set local arguments to default values - numDims = size(shape(values)) - localStart (: ) = 1 - localCount (:numDims ) = shape(values) - localCount (numDims+1:) = 1 - localStride(: ) = 1 - localMap (:numDims ) = (/ 1, (product(localCount(:counter)), counter = 1, numDims - 1) /) - - if(present(start)) localStart (:size(start) ) = start(:) - if(present(count)) localCount (:size(count) ) = count(:) - if(present(stride)) localStride(:size(stride)) = stride(:) - if(present(map)) then - localMap (:size(map)) = map(:) - nf90_get_var_3D_FourByteReal = & - nf_get_varm_real(ncid, varid, localStart, localCount, localStride, localMap, values) - else if(present(stride)) then - nf90_get_var_3D_FourByteReal = & - nf_get_vars_real(ncid, varid, localStart, localCount, localStride, values) - else - nf90_get_var_3D_FourByteReal = & - nf_get_vara_real(ncid, varid, localStart, localCount, values) - end if - end function nf90_get_var_3D_FourByteReal - - - function nf90_get_var_4D_FourByteReal(ncid, varid, values, start, count, stride, map) - integer, intent( in) :: ncid, varid - real (kind = FourByteReal), dimension(:, :, :, :), & - intent(out) :: values - integer, dimension(:), optional, intent( in) :: start, count, stride, map - integer :: nf90_get_var_4D_FourByteReal - - integer, dimension(nf90_max_var_dims) :: localStart, localCount, localStride, localMap - integer :: numDims, counter - - ! Set local arguments to default values - numDims = size(shape(values)) - localStart (: ) = 1 - localCount (:numDims ) = shape(values) - localCount (numDims+1:) = 1 - localStride(: ) = 1 - localMap (:numDims ) = (/ 1, (product(localCount(:counter)), counter = 1, numDims - 1) /) - - if(present(start)) localStart (:size(start) ) = start(:) - if(present(count)) localCount (:size(count) ) = count(:) - if(present(stride)) localStride(:size(stride)) = stride(:) - if(present(map)) then - localMap (:size(map)) = map(:) - nf90_get_var_4D_FourByteReal = & - nf_get_varm_real(ncid, varid, localStart, localCount, localStride, localMap, values) - else if(present(stride)) then - nf90_get_var_4D_FourByteReal = & - nf_get_vars_real(ncid, varid, localStart, localCount, localStride, values) - else - nf90_get_var_4D_FourByteReal = & - nf_get_vara_real(ncid, varid, localStart, localCount, values) - end if - end function nf90_get_var_4D_FourByteReal - - - function nf90_get_var_5D_FourByteReal(ncid, varid, values, start, count, stride, map) - integer, intent( in) :: ncid, varid - real (kind = FourByteReal), dimension(:, :, :, :, :), & - intent(out) :: values - integer, dimension(:), optional, intent( in) :: start, count, stride, map - integer :: nf90_get_var_5D_FourByteReal - - integer, dimension(nf90_max_var_dims) :: localStart, localCount, localStride, localMap - integer :: numDims, counter - - ! Set local arguments to default values - numDims = size(shape(values)) - localStart (: ) = 1 - localCount (:numDims ) = shape(values) - localCount (numDims+1:) = 1 - localStride(: ) = 1 - localMap (:numDims ) = (/ 1, (product(localCount(:counter)), counter = 1, numDims - 1) /) - - if(present(start)) localStart (:size(start) ) = start(:) - if(present(count)) localCount (:size(count) ) = count(:) - if(present(stride)) localStride(:size(stride)) = stride(:) - if(present(map)) then - localMap (:size(map)) = map(:) - nf90_get_var_5D_FourByteReal = & - nf_get_varm_real(ncid, varid, localStart, localCount, localStride, localMap, values) - else if(present(stride)) then - nf90_get_var_5D_FourByteReal = & - nf_get_vars_real(ncid, varid, localStart, localCount, localStride, values) - else - nf90_get_var_5D_FourByteReal = & - nf_get_vara_real(ncid, varid, localStart, localCount, values) - end if - end function nf90_get_var_5D_FourByteReal - - - function nf90_get_var_6D_FourByteReal(ncid, varid, values, start, count, stride, map) - integer, intent( in) :: ncid, varid - real (kind = FourByteReal), dimension(:, :, :, :, :, :), & - intent(out) :: values - integer, dimension(:), optional, intent( in) :: start, count, stride, map - integer :: nf90_get_var_6D_FourByteReal - - integer, dimension(nf90_max_var_dims) :: localStart, localCount, localStride, localMap - integer :: numDims, counter - - ! Set local arguments to default values - numDims = size(shape(values)) - localStart (: ) = 1 - localCount (:numDims ) = shape(values) - localCount (numDims+1:) = 1 - localStride(: ) = 1 - localMap (:numDims ) = (/ 1, (product(localCount(:counter)), counter = 1, numDims - 1) /) - - if(present(start)) localStart (:size(start) ) = start(:) - if(present(count)) localCount (:size(count) ) = count(:) - if(present(stride)) localStride(:size(stride)) = stride(:) - if(present(map)) then - localMap (:size(map)) = map(:) - nf90_get_var_6D_FourByteReal = & - nf_get_varm_real(ncid, varid, localStart, localCount, localStride, localMap, values) - else if(present(stride)) then - nf90_get_var_6D_FourByteReal = & - nf_get_vars_real(ncid, varid, localStart, localCount, localStride, values) - else - nf90_get_var_6D_FourByteReal = & - nf_get_vara_real(ncid, varid, localStart, localCount, values) - end if - end function nf90_get_var_6D_FourByteReal - - - function nf90_get_var_7D_FourByteReal(ncid, varid, values, start, count, stride, map) - integer, intent( in) :: ncid, varid - real (kind = FourByteReal), dimension(:, :, :, :, :, :, :), & - intent(out) :: values - integer, dimension(:), optional, intent( in) :: start, count, stride, map - integer :: nf90_get_var_7D_FourByteReal - - integer, dimension(nf90_max_var_dims) :: localStart, localCount, localStride, localMap - integer :: numDims, counter - - ! Set local arguments to default values - numDims = size(shape(values)) - localStart (: ) = 1 - localCount (:numDims ) = shape(values) - localCount (numDims+1:) = 1 - localStride(: ) = 1 - localMap (:numDims ) = (/ 1, (product(localCount(:counter)), counter = 1, numDims - 1) /) - - if(present(start)) localStart (:size(start) ) = start(:) - if(present(count)) localCount (:size(count) ) = count(:) - if(present(stride)) localStride(:size(stride)) = stride(:) - if(present(map)) then - localMap (:size(map)) = map(:) - nf90_get_var_7D_FourByteReal = & - nf_get_varm_real(ncid, varid, localStart, localCount, localStride, localMap, values) - else if(present(stride)) then - nf90_get_var_7D_FourByteReal = & - nf_get_vars_real(ncid, varid, localStart, localCount, localStride, values) - else - nf90_get_var_7D_FourByteReal = & - nf_get_vara_real(ncid, varid, localStart, localCount, values) - end if - end function nf90_get_var_7D_FourByteReal - - - function nf90_get_var_1D_EightByteReal(ncid, varid, values, start, count, stride, map) - integer, intent( in) :: ncid, varid - real (kind = EightByteReal), dimension(:), & - intent(out) :: values - integer, dimension(:), optional, intent( in) :: start, count, stride, map - integer :: nf90_get_var_1D_EightByteReal - - integer, dimension(nf90_max_var_dims) :: localStart, localCount, localStride, localMap - integer :: numDims, counter - - ! Set local arguments to default values - numDims = size(shape(values)) - localStart (: ) = 1 - localCount (:numDims ) = shape(values) - localCount (numDims+1:) = 1 - localStride(: ) = 1 - localMap (:numDims ) = (/ 1, (product(localCount(:counter)), counter = 1, numDims - 1) /) - - if(present(start)) localStart (:size(start) ) = start(:) - if(present(count)) localCount (:size(count) ) = count(:) - if(present(stride)) localStride(:size(stride)) = stride(:) - if(present(map)) then - localMap (:size(map)) = map(:) - nf90_get_var_1D_EightByteReal = & - nf_get_varm_double(ncid, varid, localStart, localCount, localStride, localMap, values) - else if(present(stride)) then - nf90_get_var_1D_EightByteReal = & - nf_get_vars_double(ncid, varid, localStart, localCount, localStride, values) - else - nf90_get_var_1D_EightByteReal = & - nf_get_vara_double(ncid, varid, localStart, localCount, values) - end if - end function nf90_get_var_1D_EightByteReal - - - function nf90_get_var_2D_EightByteReal(ncid, varid, values, start, count, stride, map) - integer, intent( in) :: ncid, varid - real (kind = EightByteReal), dimension(:, :), & - intent(out) :: values - integer, dimension(:), optional, intent( in) :: start, count, stride, map - integer :: nf90_get_var_2D_EightByteReal - - integer, dimension(nf90_max_var_dims) :: localStart, localCount, localStride, localMap - integer :: numDims, counter - - ! Set local arguments to default values - numDims = size(shape(values)) - localStart (: ) = 1 - localCount (:numDims ) = shape(values) - localCount (numDims+1:) = 1 - localStride(: ) = 1 - localMap (:numDims ) = (/ 1, (product(localCount(:counter)), counter = 1, numDims - 1) /) - - if(present(start)) localStart (:size(start) ) = start(:) - if(present(count)) localCount (:size(count) ) = count(:) - if(present(stride)) localStride(:size(stride)) = stride(:) - if(present(map)) then - localMap (:size(map)) = map(:) - nf90_get_var_2D_EightByteReal = & - nf_get_varm_double(ncid, varid, localStart, localCount, localStride, localMap, values) - else if(present(stride)) then - nf90_get_var_2D_EightByteReal = & - nf_get_vars_double(ncid, varid, localStart, localCount, localStride, values) - else - nf90_get_var_2D_EightByteReal = & - nf_get_vara_double(ncid, varid, localStart, localCount, values) - end if - end function nf90_get_var_2D_EightByteReal - - - function nf90_get_var_3D_EightByteReal(ncid, varid, values, start, count, stride, map) - integer, intent( in) :: ncid, varid - real (kind = EightByteReal), dimension(:, :, :), & - intent(out) :: values - integer, dimension(:), optional, intent( in) :: start, count, stride, map - integer :: nf90_get_var_3D_EightByteReal - - integer, dimension(nf90_max_var_dims) :: localStart, localCount, localStride, localMap - integer :: numDims, counter - - ! Set local arguments to default values - numDims = size(shape(values)) - localStart (: ) = 1 - localCount (:numDims ) = shape(values) - localCount (numDims+1:) = 1 - localStride(: ) = 1 - localMap (:numDims ) = (/ 1, (product(localCount(:counter)), counter = 1, numDims - 1) /) - - if(present(start)) localStart (:size(start) ) = start(:) - if(present(count)) localCount (:size(count) ) = count(:) - if(present(stride)) localStride(:size(stride)) = stride(:) - if(present(map)) then - localMap (:size(map)) = map(:) - nf90_get_var_3D_EightByteReal = & - nf_get_varm_double(ncid, varid, localStart, localCount, localStride, localMap, values) - else if(present(stride)) then - nf90_get_var_3D_EightByteReal = & - nf_get_vars_double(ncid, varid, localStart, localCount, localStride, values) - else - nf90_get_var_3D_EightByteReal = & - nf_get_vara_double(ncid, varid, localStart, localCount, values) - end if - end function nf90_get_var_3D_EightByteReal - - - function nf90_get_var_4D_EightByteReal(ncid, varid, values, start, count, stride, map) - integer, intent( in) :: ncid, varid - real (kind = EightByteReal), dimension(:, :, :, :), & - intent(out) :: values - integer, dimension(:), optional, intent( in) :: start, count, stride, map - integer :: nf90_get_var_4D_EightByteReal - - integer, dimension(nf90_max_var_dims) :: localStart, localCount, localStride, localMap - integer :: numDims, counter - - ! Set local arguments to default values - numDims = size(shape(values)) - localStart (: ) = 1 - localCount (:numDims ) = shape(values) - localCount (numDims+1:) = 1 - localStride(: ) = 1 - localMap (:numDims ) = (/ 1, (product(localCount(:counter)), counter = 1, numDims - 1) /) - - if(present(start)) localStart (:size(start) ) = start(:) - if(present(count)) localCount (:size(count) ) = count(:) - if(present(stride)) localStride(:size(stride)) = stride(:) - if(present(map)) then - localMap (:size(map)) = map(:) - nf90_get_var_4D_EightByteReal = & - nf_get_varm_double(ncid, varid, localStart, localCount, localStride, localMap, values) - else if(present(stride)) then - nf90_get_var_4D_EightByteReal = & - nf_get_vars_double(ncid, varid, localStart, localCount, localStride, values) - else - nf90_get_var_4D_EightByteReal = & - nf_get_vara_double(ncid, varid, localStart, localCount, values) - end if - end function nf90_get_var_4D_EightByteReal - - - function nf90_get_var_5D_EightByteReal(ncid, varid, values, start, count, stride, map) - integer, intent( in) :: ncid, varid - real (kind = EightByteReal), dimension(:, :, :, :, :), & - intent(out) :: values - integer, dimension(:), optional, intent( in) :: start, count, stride, map - integer :: nf90_get_var_5D_EightByteReal - - integer, dimension(nf90_max_var_dims) :: localStart, localCount, localStride, localMap - integer :: numDims, counter - - ! Set local arguments to default values - numDims = size(shape(values)) - localStart (: ) = 1 - localCount (:numDims ) = shape(values) - localCount (numDims+1:) = 1 - localStride(: ) = 1 - localMap (:numDims ) = (/ 1, (product(localCount(:counter)), counter = 1, numDims - 1) /) - - if(present(start)) localStart (:size(start) ) = start(:) - if(present(count)) localCount (:size(count) ) = count(:) - if(present(stride)) localStride(:size(stride)) = stride(:) - if(present(map)) then - localMap (:size(map)) = map(:) - nf90_get_var_5D_EightByteReal = & - nf_get_varm_double(ncid, varid, localStart, localCount, localStride, localMap, values) - else if(present(stride)) then - nf90_get_var_5D_EightByteReal = & - nf_get_vars_double(ncid, varid, localStart, localCount, localStride, values) - else - nf90_get_var_5D_EightByteReal = & - nf_get_vara_double(ncid, varid, localStart, localCount, values) - end if - end function nf90_get_var_5D_EightByteReal - - - function nf90_get_var_6D_EightByteReal(ncid, varid, values, start, count, stride, map) - integer, intent( in) :: ncid, varid - real (kind = EightByteReal), dimension(:, :, :, :, :, :), & - intent(out) :: values - integer, dimension(:), optional, intent( in) :: start, count, stride, map - integer :: nf90_get_var_6D_EightByteReal - - integer, dimension(nf90_max_var_dims) :: localStart, localCount, localStride, localMap - integer :: numDims, counter - - ! Set local arguments to default values - numDims = size(shape(values)) - localStart (: ) = 1 - localCount (:numDims ) = shape(values) - localCount (numDims+1:) = 1 - localStride(: ) = 1 - localMap (:numDims ) = (/ 1, (product(localCount(:counter)), counter = 1, numDims - 1) /) - - if(present(start)) localStart (:size(start) ) = start(:) - if(present(count)) localCount (:size(count) ) = count(:) - if(present(stride)) localStride(:size(stride)) = stride(:) - if(present(map)) then - localMap (:size(map)) = map(:) - nf90_get_var_6D_EightByteReal = & - nf_get_varm_double(ncid, varid, localStart, localCount, localStride, localMap, values) - else if(present(stride)) then - nf90_get_var_6D_EightByteReal = & - nf_get_vars_double(ncid, varid, localStart, localCount, localStride, values) - else - nf90_get_var_6D_EightByteReal = & - nf_get_vara_double(ncid, varid, localStart, localCount, values) - end if - end function nf90_get_var_6D_EightByteReal - - - function nf90_get_var_7D_EightByteReal(ncid, varid, values, start, count, stride, map) - integer, intent( in) :: ncid, varid - real (kind = EightByteReal), dimension(:, :, :, :, :, :, :), & - intent(out) :: values - integer, dimension(:), optional, intent( in) :: start, count, stride, map - integer :: nf90_get_var_7D_EightByteReal - - integer, dimension(nf90_max_var_dims) :: localStart, localCount, localStride, localMap - integer :: numDims, counter - - ! Set local arguments to default values - numDims = size(shape(values)) - localStart (: ) = 1 - localCount (:numDims ) = shape(values) - localCount (numDims+1:) = 1 - localStride(: ) = 1 - localMap (:numDims ) = (/ 1, (product(localCount(:counter)), counter = 1, numDims - 1) /) - - if(present(start)) localStart (:size(start) ) = start(:) - if(present(count)) localCount (:size(count) ) = count(:) - if(present(stride)) localStride(:size(stride)) = stride(:) - if(present(map)) then - localMap (:size(map)) = map(:) - nf90_get_var_7D_EightByteReal = & - nf_get_varm_double(ncid, varid, localStart, localCount, localStride, localMap, values) - else if(present(stride)) then - nf90_get_var_7D_EightByteReal = & - nf_get_vars_double(ncid, varid, localStart, localCount, localStride, values) - else - nf90_get_var_7D_EightByteReal = & - nf_get_vara_double(ncid, varid, localStart, localCount, values) - end if - end function nf90_get_var_7D_EightByteReal - - Index: f90/netcdf_overloads.f90 =================================================================== --- f90/netcdf_overloads.f90 (.../trunk) (revision 531) +++ f90/netcdf_overloads.f90 (.../branches/f90_datatypes_patch) (revision 531) @@ -1,95 +0,0 @@ - ! Overloaded variable functions - interface nf90_def_var - module procedure nf90_def_var_Scalar, nf90_def_var_oneDim, nf90_def_var_ManyDims - end interface ! nf90_def_var - - ! Overloaded attribute functions - interface nf90_put_att - module procedure nf90_put_att_text, & - nf90_put_att_OneByteInt, nf90_put_att_TwoByteInt, & - nf90_put_att_FourByteInt, nf90_put_att_EightByteInt, & - nf90_put_att_FourByteReal, nf90_put_att_EightByteReal - module procedure nf90_put_att_one_OneByteInt, nf90_put_att_one_TwoByteInt, & - nf90_put_att_one_FourByteInt, nf90_put_att_one_EightByteInt, & - nf90_put_att_one_FourByteReal, nf90_put_att_one_EightByteReal - end interface !nf90_put_att - interface nf90_get_att - module procedure nf90_get_att_text, & - nf90_get_att_OneByteInt, nf90_get_att_TwoByteInt, & - nf90_get_att_FourByteInt, nf90_get_att_EightByteInt, & - nf90_get_att_FourByteReal, nf90_get_att_EightByteReal - module procedure nf90_get_att_one_OneByteInt, nf90_get_att_one_TwoByteInt, & - nf90_get_att_one_FourByteInt, nf90_get_att_one_EightByteInt, & - nf90_get_att_one_FourByteReal, nf90_get_att_one_EightByteReal - end interface ! nf90_get_att - - ! Overloaded variable functions - interface nf90_put_var - module procedure nf90_put_var_text, & - nf90_put_var_OneByteInt, nf90_put_var_TwoByteInt, & - nf90_put_var_FourByteInt, nf90_put_var_EightByteInt, & - nf90_put_var_FourByteReal, nf90_put_var_EightByteReal - module procedure nf90_put_var_1D_text, & - nf90_put_var_1D_OneByteInt, nf90_put_var_1D_TwoByteInt, & - nf90_put_var_1D_FourByteInt, nf90_put_var_1D_EightByteInt, & - nf90_put_var_1D_FourByteReal, nf90_put_var_1D_EightByteReal - module procedure nf90_put_var_2D_text, & - nf90_put_var_2D_OneByteInt, nf90_put_var_2D_TwoByteInt, & - nf90_put_var_2D_FourByteInt, nf90_put_var_2D_EightByteInt, & - nf90_put_var_2D_FourByteReal, nf90_put_var_2D_EightByteReal - module procedure nf90_put_var_3D_text, & - nf90_put_var_3D_OneByteInt, nf90_put_var_3D_TwoByteInt, & - nf90_put_var_3D_FourByteInt, nf90_put_var_3D_EightByteInt, & - nf90_put_var_3D_FourByteReal, nf90_put_var_3D_EightByteReal - module procedure nf90_put_var_4D_text, & - nf90_put_var_4D_OneByteInt, nf90_put_var_4D_TwoByteInt, & - nf90_put_var_4D_FourByteInt, nf90_put_var_4D_EightByteInt, & - nf90_put_var_4D_FourByteReal, nf90_put_var_4D_EightByteReal - module procedure nf90_put_var_5D_text, & - nf90_put_var_5D_OneByteInt, nf90_put_var_5D_TwoByteInt, & - nf90_put_var_5D_FourByteInt, nf90_put_var_5D_EightByteInt, & - nf90_put_var_5D_FourByteReal, nf90_put_var_5D_EightByteReal - module procedure nf90_put_var_6D_text, & - nf90_put_var_6D_OneByteInt, nf90_put_var_6D_TwoByteInt, & - nf90_put_var_6D_FourByteInt, nf90_put_var_6D_EightByteInt, & - nf90_put_var_6D_FourByteReal, nf90_put_var_6D_EightByteReal - module procedure nf90_put_var_7D_text, & - nf90_put_var_7D_OneByteInt, nf90_put_var_7D_TwoByteInt, & - nf90_put_var_7D_FourByteInt, nf90_put_var_7D_EightByteInt, & - nf90_put_var_7D_FourByteReal, nf90_put_var_7D_EightByteReal - end interface ! nf90_put_var - - interface nf90_get_var - module procedure nf90_get_var_text, & - nf90_get_var_OneByteInt, nf90_get_var_TwoByteInt, & - nf90_get_var_FourByteInt, nf90_get_var_EightByteInt, & - nf90_get_var_FourByteReal, nf90_get_var_EightByteReal - module procedure nf90_get_var_1D_text, & - nf90_get_var_1D_OneByteInt, nf90_get_var_1D_TwoByteInt, & - nf90_get_var_1D_FourByteInt, nf90_get_var_1D_EightByteInt, & - nf90_get_var_1D_FourByteReal, nf90_get_var_1D_EightByteReal - module procedure nf90_get_var_2D_text, & - nf90_get_var_2D_OneByteInt, nf90_get_var_2D_TwoByteInt, & - nf90_get_var_2D_FourByteInt, nf90_get_var_2D_EightByteInt, & - nf90_get_var_2D_FourByteReal, nf90_get_var_2D_EightByteReal - module procedure nf90_get_var_3D_text, & - nf90_get_var_3D_OneByteInt, nf90_get_var_3D_TwoByteInt, & - nf90_get_var_3D_FourByteInt, nf90_get_var_3D_EightByteInt, & - nf90_get_var_3D_FourByteReal, nf90_get_var_3D_EightByteReal - module procedure nf90_get_var_4D_text, & - nf90_get_var_4D_OneByteInt, nf90_get_var_4D_TwoByteInt, & - nf90_get_var_4D_FourByteInt, nf90_get_var_4D_EightByteInt, & - nf90_get_var_4D_FourByteReal, nf90_get_var_4D_EightByteReal - module procedure nf90_get_var_5D_text, & - nf90_get_var_5D_OneByteInt, nf90_get_var_5D_TwoByteInt, & - nf90_get_var_5D_FourByteInt, nf90_get_var_5D_EightByteInt, & - nf90_get_var_5D_FourByteReal, nf90_get_var_5D_EightByteReal - module procedure nf90_get_var_6D_text, & - nf90_get_var_6D_OneByteInt, nf90_get_var_6D_TwoByteInt, & - nf90_get_var_6D_FourByteInt, nf90_get_var_6D_EightByteInt, & - nf90_get_var_6D_FourByteReal, nf90_get_var_6D_EightByteReal - module procedure nf90_get_var_7D_text, & - nf90_get_var_7D_OneByteInt, nf90_get_var_7D_TwoByteInt, & - nf90_get_var_7D_FourByteInt, nf90_get_var_7D_EightByteInt, & - nf90_get_var_7D_FourByteReal, nf90_get_var_7D_EightByteReal - end interface ! nf90_get_var Index: f90/netcdf.3f90 =================================================================== --- f90/netcdf.3f90 (.../trunk) (revision 531) +++ f90/netcdf.3f90 (.../branches/f90_datatypes_patch) (revision 531) @@ -312,15 +312,14 @@ After a dataset is closed, its ID may be reassigned to another dataset. .RE .HP -\fBfunction nf90_inquire(\fIncid\fP, \fIndims\fP, \fInvars\fP, -\fInatts\fP, \fIunlimdimid\fP, \fInformat\fP)\fR +\fBfunction nf90_Inquire(\fIncid\fP, \fIndims\fP, \fInvars\fP, +\fInatts\fP, \fIunlimdimid\fP)\fR .RS .nf integer, intent(in) :: ncid integer, optional, intent(out) :: ndims, nvars integer, optional, intent(out) :: natts, unlimdimid -integer, optional, intent(out) :: nformat -integer :: nf90_inquire +integer :: nf90_Inquire .fi .sp Inquire about an open netCDF dataset. @@ -333,9 +332,6 @@ \fIunlimdimid\fP will contain the dimension ID of the unlimited dimension if one exists, or 0 otherwise. -\fInformat\fP will contain the format version number, rarely needed -because the library detects the format version and behaves -appropriately. .RE .HP \fBfunction nf90_def_dim(\fIncid\fP, \fIname\fP, \fIlen\fP, \fIdimid\fP)\fR @@ -374,13 +370,13 @@ netCDF dimension in \fIdimid\fP. .RE .HP -\fBfunction nf90_inquire_dimension(\fIncid\fP, \fIdimid\fP, \fIname\fP, \fIlen\fP)\fR +\fBfunction nf90_Inquire_Dimension(\fIncid\fP, \fIdimid\fP, \fIname\fP, \fIlen\fP)\fR .RS .nf integer, intent(in) :: ncid, dimid character(len=*), optional, intent(out) :: name integer, optional, intent(out) :: len -integer :: nf90_inquire_dimension +integer :: nf90_Inquire_dimension .fi .sp Inquire about a dimension. @@ -465,7 +461,7 @@ integer, optional, intent(out) :: xtype, ndims integer, dimension(*), optional, intent(out) :: dimids integer, optional, intent(out) :: natts -integer :: nf90_inquire_variable +integer :: nf90_Inquire_Variable .fi .sp Inquire about a netCDF variable in an open netCDF dataset, given its @@ -578,14 +574,14 @@ values (see COMMON ARGUMENT DESCRIPTIONS below). .RE .HP -\fBfunction nf90_inquire_attribute(\fIncid\fP, \fIvarid\fP, \fIname\fP, +\fBfunction nf90_Inquire_Attribute(\fIncid\fP, \fIvarid\fP, \fIname\fP, \fIxtype\fP, \fIlen\fP, \fIattnum\fP)\fR .RS .nf integer, intent(in) :: ncid, varid character(len=*), intent(in) :: name integer, optional, intent(out) :: xtype, len, attnum -integer :: nf90_inquire_attribute +integer :: nf90_Inquire_Attribute .fi .sp Inquires about the netCDF attribute named \fIname\fP, of variable \fIvarid\fP, @@ -617,7 +613,7 @@ from 1 (the first attribute) to \fInatts\fP, where \fInatts\fP is the number of attributes for the variable, as returned from a call to -\fBnf90_inquire_variable(\|)\fR. +\fBnf90_Inquire_Variable(\|)\fR. .RE .HP \fBfunction nf90_put_att(\fIncid\fP, \fIvarid\fP, \fIname\fP, @@ -676,7 +672,7 @@ All values of the attribute are returned, so you must allocate enough space to hold them. If you don't know how much space to reserve, call -\fBnf90_inquire_attribute(\|)\fR +\fBnf90_Inquire_Attribute(\|)\fR first to find out the length of the attribute. .RE .HP Index: f90/gen.m4 =================================================================== --- f90/gen.m4 (.../trunk) (revision 531) +++ f90/gen.m4 (.../branches/f90_datatypes_patch) (revision 531) @@ -46,19 +46,36 @@ include(nveaget48.m4) ')dnl +#if (HAVE_1BYTE_INT) NVES(OneByteInt, put) +#endif +#if (HAVE_2BYTE_INT) NVES(TwoByteInt, put) +#endif +#if (HAVE_4BYTE_INT) NVESPUT48(FourByteInt, put) +#endif NVESPUT48(EightByteInt, put) +#if (HAVE_4BYTE_REAL) NVES(FourByteReal, put) +#endif NVES(EightByteReal, put) +#if (HAVE_1BYTE_INT) NVES(OneByteInt, get) +#endif +#if (HAVE_2BYTE_INT) NVES(TwoByteInt, get) +#endif +#if (HAVE_4BYTE_INT) NVESGET48(FourByteInt, get) +#endif NVESGET48(EightByteInt, get) +#if (HAVE_4BYTE_REAL) NVES(FourByteReal, get) +#endif NVES(EightByteReal, get) +#if (HAVE_1BYTE_INT) NVEA(1, OneByteInt, put) NVEA(2, OneByteInt, put) NVEA(3, OneByteInt, put) @@ -66,6 +83,8 @@ NVEA(5, OneByteInt, put) NVEA(6, OneByteInt, put) NVEA(7, OneByteInt, put) +#endif +#if (HAVE_2BYTE_INT) NVEA(1, TwoByteInt, put) NVEA(2, TwoByteInt, put) NVEA(3, TwoByteInt, put) @@ -73,6 +92,8 @@ NVEA(5, TwoByteInt, put) NVEA(6, TwoByteInt, put) NVEA(7, TwoByteInt, put) +#endif +#if (HAVE_4BYTE_INT) NVEAPUT48(1, FourByteInt, put) NVEAPUT48(2, FourByteInt, put) NVEAPUT48(3, FourByteInt, put) @@ -80,6 +101,7 @@ NVEAPUT48(5, FourByteInt, put) NVEAPUT48(6, FourByteInt, put) NVEAPUT48(7, FourByteInt, put) +#endif NVEAPUT48(1, EightByteInt, put) NVEAPUT48(2, EightByteInt, put) NVEAPUT48(3, EightByteInt, put) @@ -87,6 +109,7 @@ NVEAPUT48(5, EightByteInt, put) NVEAPUT48(6, EightByteInt, put) NVEAPUT48(7, EightByteInt, put) +#if (HAVE_4BYTE_REAL) NVEA(1, FourByteReal, put) NVEA(2, FourByteReal, put) NVEA(3, FourByteReal, put) @@ -94,6 +117,7 @@ NVEA(5, FourByteReal, put) NVEA(6, FourByteReal, put) NVEA(7, FourByteReal, put) +#endif NVEA(1, EightByteReal, put) NVEA(2, EightByteReal, put) NVEA(3, EightByteReal, put) @@ -101,6 +125,7 @@ NVEA(5, EightByteReal, put) NVEA(6, EightByteReal, put) NVEA(7, EightByteReal, put) +#if (HAVE_1BYTE_INT) NVEA(1, OneByteInt, get) NVEA(2, OneByteInt, get) NVEA(3, OneByteInt, get) @@ -108,6 +133,8 @@ NVEA(5, OneByteInt, get) NVEA(6, OneByteInt, get) NVEA(7, OneByteInt, get) +#endif +#if (HAVE_2BYTE_INT) NVEA(1, TwoByteInt, get) NVEA(2, TwoByteInt, get) NVEA(3, TwoByteInt, get) @@ -115,6 +142,8 @@ NVEA(5, TwoByteInt, get) NVEA(6, TwoByteInt, get) NVEA(7, TwoByteInt, get) +#endif +#if (HAVE_4BYTE_INT) NVEAGET48(1, FourByteInt, get) NVEAGET48(2, FourByteInt, get) NVEAGET48(3, FourByteInt, get) @@ -122,6 +151,7 @@ NVEAGET48(5, FourByteInt, get) NVEAGET48(6, FourByteInt, get) NVEAGET48(7, FourByteInt, get) +#endif NVEAGET48(1, EightByteInt, get) NVEAGET48(2, EightByteInt, get) NVEAGET48(3, EightByteInt, get) @@ -129,6 +159,7 @@ NVEAGET48(5, EightByteInt, get) NVEAGET48(6, EightByteInt, get) NVEAGET48(7, EightByteInt, get) +#if (HAVE_4BYTE_REAL) NVEA(1, FourByteReal, get) NVEA(2, FourByteReal, get) NVEA(3, FourByteReal, get) @@ -136,6 +167,7 @@ NVEA(5, FourByteReal, get) NVEA(6, FourByteReal, get) NVEA(7, FourByteReal, get) +#endif NVEA(1, EightByteReal, get) NVEA(2, EightByteReal, get) NVEA(3, EightByteReal, get) Index: f90/netcdf_constants.F90 =================================================================== --- f90/netcdf_constants.F90 (.../trunk) (revision 0) +++ f90/netcdf_constants.F90 (.../branches/f90_datatypes_patch) (revision 531) @@ -0,0 +1,136 @@ + ! + ! external netcdf data types: + ! + integer, parameter, public :: & + nf90_byte = 1, & + nf90_int1 = nf90_byte, & + nf90_char = 2, & + nf90_short = 3, & + nf90_int2 = nf90_short, & + nf90_int = 4, & + nf90_int4 = nf90_int, & + nf90_float = 5, & + nf90_real = nf90_float, & + nf90_real4 = nf90_float, & + nf90_double = 6, & + nf90_real8 = nf90_double + + ! + ! default fill values: + ! + character (len = 1), parameter, public :: & + nf90_fill_char = achar(0) +#if (HAVE_1BYTE_INT) + integer (kind = OneByteInt), parameter, public :: & + nf90_fill_byte = -127, & + nf90_fill_int1 = nf90_fill_byte +#endif +#if (HAVE_2BYTE_INT) + integer (kind = TwoByteInt), parameter, public :: & + nf90_fill_short = -32767, & + nf90_fill_int2 = nf90_fill_short +#endif +#if (HAVE_4BYTE_INT) + integer (kind = FourByteInt), parameter, public :: & + nf90_fill_int = -2147483647 +#endif +#if (HAVE_4BYTE_REAL) + real (kind = FourByteReal), parameter, public :: & + nf90_fill_float = 9.9692099683868690e+36, & + nf90_fill_real = nf90_fill_float, & + nf90_fill_real4 = nf90_fill_float +#endif + real (kind = EightByteReal), parameter, public :: & + nf90_fill_double = 9.9692099683868690e+36, & + nf90_fill_real8 = nf90_fill_double + + ! + ! mode flags for opening and creating a netcdf dataset: + ! + integer, parameter, public :: & + nf90_nowrite = 0, & + nf90_write = 1, & + nf90_clobber = 0, & + nf90_noclobber = 4, & + nf90_fill = 0, & + nf90_nofill = 256, & + nf90_64bit_offset = 512, & + nf90_lock = 1024, & + nf90_share = 2048 + + integer, parameter, public :: & + nf90_sizehint_default = 0, & + nf90_align_chunk = -1 + + ! + ! size argument for defining an unlimited dimension: + ! + integer, parameter, public :: nf90_unlimited = 0 + + ! + ! global attribute id: + ! + integer, parameter, public :: nf90_global = 0 + + ! + ! implementation limits: + ! + integer, parameter, public :: & + nf90_max_dims = 1024, & + nf90_max_attrs = 8192, & + nf90_max_vars = 8192, & + nf90_max_name = 256, & + nf90_max_var_dims = nf90_max_dims + + ! + ! error codes: + ! + integer, parameter, public :: & + nf90_noerr = 0, & + nf90_ebadid = -33, & + nf90_eexist = -35, & + nf90_einval = -36, & + nf90_eperm = -37, & + nf90_enotindefine = -38, & + nf90_eindefine = -39, & + nf90_einvalcoords = -40, & + nf90_emaxdims = -41, & + nf90_enameinuse = -42, & + nf90_enotatt = -43, & + nf90_emaxatts = -44, & + nf90_ebadtype = -45, & + nf90_ebaddim = -46, & + nf90_eunlimpos = -47, & + nf90_emaxvars = -48, & + nf90_enotvar = -49, & + nf90_eglobal = -50, & + nf90_enotnc = -51, & + nf90_ests = -52, & + nf90_emaxname = -53, & + nf90_eunlimit = -54, & + nf90_enorecvars = -55, & + nf90_echar = -56, & + nf90_eedge = -57, & + nf90_estride = -58, & + nf90_ebadname = -59, & + nf90_erange = -60, & + nf90_enomem = -61, & + nf90_evarsize = -62, & + nf90_edimsize = -63, & + nf90_etrunc = -64 + + ! + ! error handling modes: + ! + integer, parameter, public :: & + nf90_fatal = 1, & + nf90_verbose = 2 + + ! + ! format version numbers: + ! + integer, parameter, public :: & + nf90_format_classic = 1, & + nf90_format_64bit = 2, & + nf90_format_netcdf4 = 3, & + nf90_format_netcdf4_classic = 4 Index: f90/typeSizes.F90 =================================================================== --- f90/typeSizes.F90 (.../trunk) (revision 0) +++ f90/typeSizes.F90 (.../branches/f90_datatypes_patch) (revision 531) @@ -0,0 +1,101 @@ +! Description: +! Provide named kind parameters for use in declarations of real and integer +! variables with specific byte sizes (i.e. one, two, four, and eight byte +! integers; four and eight byte reals). The parameters can then be used +! in (KIND = XX) modifiers in declarations. +! A single function (byteSizesOK()) is provided to ensure that the selected +! kind parameters are correct. +! +! Input Parameters: +! None. +! +! Output Parameters: +! Public parameters, fixed at compile time: +! OneByteInt, TwoByteInt, FourByteInt, EightByteInt +! FourByteReal, EightByteRadl +! +! References and Credits: +! Written by +! Robert Pincus +! Cooperative Institue for Meteorological Satellite Studies +! University of Wisconsin - Madison +! 1225 W. Dayton St. +! Madison, Wisconsin 53706 +! Robert.Pincus@ssec.wisc.edu +! +! Design Notes: +! Fortran 90 doesn't allow one to check the number of bytes in a real variable; +! we check only that four byte and eight byte reals have different kind parameters. +! sjl: on NEC-SX, the -ew flag specifies that all values are 8-byte. This kind-of +! violates the F90 standard because real and double are no longer +! distinguishable, but a lot of programs use it anyway (hangover from old Cray +! days). I guess the sensible return value the is "false" and let the program +! deal with it +! +module typeSizes + implicit none + public + integer, parameter :: & +#if (HAVE_1BYTE_INT) + OneByteInt = selected_int_kind(2), & +#endif +#if (HAVE_2BYTE_INT) + TwoByteInt = selected_int_kind(4), & +#endif +! FourByteInt = selected_int_kind(9), & +! EightByteInt = selected_int_kind(18) +! for SX numbers are different +#if (HAVE_4BYTE_INT) + FourByteInt = selected_int_kind(8), & +#endif + EightByteInt = selected_int_kind(10) + + + integer, parameter :: & +#if (HAVE_4BYTE_REAL) + FourByteReal = selected_real_kind(P = 6, R = 37), & +#endif + EightByteReal = selected_real_kind(P = 13, R = 307) +contains + logical function byteSizesOK() + ! Users may call this function once to ensure that the kind parameters + ! the module defines are available with the current compiler. + ! We can't ensure that the two REAL kinds are actually four and + ! eight bytes long, but we can ensure that they are distinct. + ! Early Fortran 90 compilers would sometimes report incorrect results for + ! the bit_size intrinsic, but I haven't seen this in a long time. + + ! Local variables +#if (HAVE_1BYTE_INT) + integer (kind = OneByteInt) :: One +#endif +#if (HAVE_2BYTE_INT) + integer (kind = TwoByteInt) :: Two +#endif +#if (HAVE_4BYTE_INT) + integer (kind = FourByteInt) :: Four +#endif + +#if (HAVE_4BYTE_INT) + if ( & +#if (HAVE_1BYTE_INT) + bit_size( One) == 8 .and. & +#endif +#if (HAVE_2BYTE_INT) + bit_size( Two) == 16 .and. & +#endif +!sjl: if no four byte reals, then this function is a bit meaningless ..? + bit_size(Four) == 32 .and. & + FourByteReal > 0 .and. & + EightByteReal > 0 .and. & + FourByteReal /= EightByteReal) then + byteSizesOK = .true. + else + byteSizesOK = .false. + end if +#else + ! no fourbyte int + byteSizesOK = .false. +#endif + end function byteSizesOK +end module typeSizes Index: f90/netcdf_test.F90 =================================================================== --- f90/netcdf_test.F90 (.../trunk) (revision 0) +++ f90/netcdf_test.F90 (.../branches/f90_datatypes_patch) (revision 531) @@ -0,0 +1,121 @@ +! This program provides an elementary check of some of the parts of the +! Fortran 90 interface to netCDF 3.5. It is a Fortran 90 implementation +! of the nctst.cpp program provided with the C++ interface to netcdf +! (in the src/cxx directory of the netcdf distribution). +! +program netcdfTest + use typeSizes + use netcdf + implicit none + + ! netcdf related variables + integer :: ncFileID, & + latDimID, lonDimID, frTimeDimID, timeDimID, & + pressVarID, latVarID, lonVarID, frTimeVarID, refTimeVarID, scalarVarID + + ! Local variables + integer, parameter :: numLats = 4, numLons = 3, & + numFrTimes = 2, timeStringLen = 20 + character (len = *), parameter :: fileName = "example.nc" + integer :: counter + real, dimension(numLons, numLats, numFrTimes) :: pressure +#if HAVE_4BYTE_INT + integer (kind = FourByteInt), dimension(numFrTimes) :: frTimeVals +#else + integer (kind = EightByteInt), dimension(numFrTimes) :: frTimeVals +#endif +#if HAVE_4BYTE_REAL + real (kind = FourByteReal) fillVal; + real (kind = FourByteReal), dimension(2) :: validRange; +#else + real (kind = EightByteReal) fillVal; + real (kind = EightByteReal), dimension(2) :: validRange; +#endif + + ! -------------------- + ! Code begins + ! -------------------- + if(.not. byteSizesOK()) then + print *, "Compiler does not appear to support required kinds of variables." + stop + end if + + ! Create the file + call check(nf90_create(path = trim(fileName), cmode = nf90_clobber, ncid = ncFileID)) + + ! Define the dimensions + call check(nf90_def_dim(ncid = ncFileID, name = "lat", len = numLats, dimid = latDimID)) + call check(nf90_def_dim(ncid = ncFileID, name = "lon", len = numLons, dimid = lonDimID)) + call check(nf90_def_dim(ncid = ncFileID, name = "frtime", len = nf90_unlimited, dimid = frTimeDimID)) + call check(nf90_def_dim(ncid = ncFileID, name = "timelen", len = timeStringLen, dimid = timeDimID)) + + ! Create variables and attributes + call check(nf90_def_var(ncid = ncFileID, name = "P", xtype = nf90_float, & + dimids = (/ lonDimID, latDimID, frTimeDimID /), varID = pressVarID) ) + call check(nf90_put_att(ncFileID, pressVarID, "long_name", "pressure at maximum wind")) + call check(nf90_put_att(ncFileID, pressVarID, "units", "hectopascals") ) + ! Use 4-byte reals explicitly, to match 4-byte attribute type in test file + validRange(1) = 0. + validRange(2) = 1500 + call check(nf90_put_att(ncFileID, pressVarID, "valid_range", validRange)) + ! Use a 4-byte float constant, to match variable type + fillVal = -9999.0 + call check(nf90_put_att(ncFileID, pressVarID, "_FillValue", fillVal ) ) + + call check(nf90_def_var(ncFileID, "lat", nf90_float, dimids = latDimID, varID = latVarID) ) + call check(nf90_put_att(ncFileID, latVarID, "long_name", "latitude")) + call check(nf90_put_att(ncFileID, latVarID, "units", "degrees_north")) + + call check(nf90_def_var(ncFileID, "lon", nf90_float, lonDimID, lonVarID) ) + call check(nf90_put_att(ncFileID, lonVarID, "long_name", "longitude")) + call check(nf90_put_att(ncFileID, lonVarID, "units", "degrees_east")) + + call check(nf90_def_var(ncFileID, "frtime", nf90_int, frTimeDimID, frTimeVarID) ) + call check(nf90_put_att(ncFileID, frTimeVarID, "long_name", "forecast time")) + call check(nf90_put_att(ncFileID, frTimeVarID, "units", "hours")) + + call check(nf90_def_var(ncFileID, "reftime", nf90_char, timeDimID, refTimeVarID) ) + call check(nf90_put_att(ncFileID, refTimeVarID, "long_name", "reference time")) + call check(nf90_put_att(ncFileID, refTimeVarID, "units", "text_time")) + + ! In the C++ interface the define a scalar variable - do we know how to do this? + call check(nf90_def_var(ncFileID, "ScalarVariable", nf90_real, scalarVarID)) + + ! Global attributes + call check(nf90_put_att(ncFileID, nf90_global, "history", & + "created by Unidata LDM from NPS broadcast")) + call check(nf90_put_att(ncFileID, nf90_global, "title", & + "NMC Global Product Set: Pressure at Maximum Wind")) + + ! Leave define mode + call check(nf90_enddef(ncfileID)) + + ! Write the dimension variables + call check(nf90_put_var(ncFileID, latVarId, (/ -90., -87.5, -85., -82.5 /)) ) + call check(nf90_put_var(ncFileID, lonVarId, (/ -180, -175, -170 /) ) ) + ! Don't use anonymous array here, in case platform has 8-byte integers + frTimeVals(1) = 12 + frTimeVals(2) = 18 + call check(nf90_put_var(ncFileID, frTimeVarId, frTimeVals ) ) + call check(nf90_put_var(ncFileID, reftimeVarID, "1992-3-21 12:00" ) ) + + ! Write the pressure variable. Write a slab at a time to check incrementing. + pressure = 949. + real(reshape( (/ (counter, counter = 1, numLats * numLons * numFrTimes) /), & + (/ numLons, numLats, numFrTimes /) ) ) + call check(nf90_put_var(ncFileID, pressVarID, pressure(:, :, 1:1)) ) + call check(nf90_put_var(ncFileID, pressVarID, pressure(:, :, 2:2), start = (/ 1, 1, 2 /)) ) + + call check(nf90_put_var(ncFileID, scalarVarID, 10)) + call check(nf90_close(ncFileID)) + +contains + ! Internal subroutine - checks error status after each netcdf, prints out text message each time + ! an error code is returned. + subroutine check(status) + integer, intent ( in) :: status + + if(status /= nf90_noerr) then + print *, trim(nf90_strerror(status)) + end if + end subroutine check +end program netcdfTest Index: f90/netcdf.F90 =================================================================== --- f90/netcdf.F90 (.../trunk) (revision 0) +++ f90/netcdf.F90 (.../branches/f90_datatypes_patch) (revision 531) @@ -0,0 +1,66 @@ +! Description: +! +! Input Parameters: +! None. +! +! Output Parameters: +! Many public constants are defined in "netcdf_constants.f90". The names follow +! the Fortran 77 names, with nf90_ used as a prefix instead of nf_77. +! Functions are made accessable through PUBLIC:: statements in "netcdf_visibility.f90". +! Only the functions listed in this file are available in the interface. +! +! References and Credits: +! Written by +! Robert Pincus +! Cooperative Institue for Meteorological Satellite Studies +! University of Wisconsin - Madison +! 1225 W. Dayton St. +! Madison, Wisconsin 53706 +! Robert.Pincus@ssec.wisc.edu +! +! Design Notes: +! Module elements are private by default. +! Many functions have optional arguments. In order to keep the interface easy to use, +! we've reordered the arguments (relative to the F77 interface) in some functions. +! The external datatype of attributes is the same as the internal type. +! By default, data is read from or put into the lowest part of the netCDF array with stride 1. +! We've made heavy use of overloading, especially in the variable put and get routines. +! A single function exists for putting all variables; a single function exists for getting +! variables. +! Text variables must be treated somewhat differently. When a character variable is defined, the +! fastest-varying index (first index in Fortran) must be the maxiumu length of the character +! string. N dimensional arrays of strings passed to the put or get functions are written/read +! from dimensions 2:N+1. The number of values along the first dimension is determined by the +! length of the argument character string. +! + module netcdf + use typeSizes, only: & +#if (HAVE_1BYTE_INT) + OneByteInt, & +#endif +#if (HAVE_2BYTE_INT) + TwoByteInt, & +#endif +#if (HAVE_4BYTE_INT) + FourByteInt, & +#endif + EightByteInt, & +#if (HAVE_4BYTE_REAL) + FourByteReal, & +#endif + EightByteReal + implicit none + private + + include "netcdf_constants.f90" + include "netcdf_externals.f90" + include "netcdf_overloads.f90" + include "netcdf_visibility.f90" +contains + include "netcdf_file.f90" + include "netcdf_dims.f90" + include "netcdf_attributes.f90" + include "netcdf_variables.f90" + include "netcdf_text_variables.f90" + include "netcdf_expanded.f90" +end module netcdf Index: f90/netcdf_attributes.F90 =================================================================== --- f90/netcdf_attributes.F90 (.../trunk) (revision 0) +++ f90/netcdf_attributes.F90 (.../branches/f90_datatypes_patch) (revision 531) @@ -0,0 +1,337 @@ + ! + ! Attribute routines: + ! + ! ------- + function nf90_copy_att(ncid_in, varid_in, name, ncid_out, varid_out) + integer, intent( in) :: ncid_in, varid_in + character (len = *), intent( in) :: name + integer, intent( in) :: ncid_out, varid_out + integer :: nf90_copy_att + + nf90_copy_att = nf_copy_att(ncid_in, varid_in, name, ncid_out, varid_out) + end function nf90_copy_att + ! ------- + function nf90_rename_att(ncid, varid, curname, newname) + integer, intent( in) :: ncid, varid + character (len = *), intent( in) :: curname, newname + integer :: nf90_rename_att + + nf90_rename_att = nf_rename_att(ncid, varid, curname, newname) + end function nf90_rename_att + ! ------- + function nf90_del_att(ncid, varid, name) + integer, intent( in) :: ncid, varid + character (len = *), intent( in) :: name + integer :: nf90_del_att + + nf90_del_att = nf_del_att(ncid, varid, name) + end function nf90_del_att + ! ------- + ! Attribute inquiry functions + ! ------- + function nf90_inq_attname(ncid, varid, attnum, name) + integer, intent( in) :: ncid, varid, attnum + character (len = *), intent(out) :: name + integer :: nf90_inq_attname + + nf90_inq_attname = nf_inq_attname(ncid, varid, attnum, name) + end function nf90_inq_attname + ! ------- + function nf90_inquire_attribute(ncid, varid, name, xtype, len, attnum) + integer, intent( in) :: ncid, varid + character (len = *), intent( in) :: name + integer, intent(out), optional :: xtype, len, attnum + integer :: nf90_inquire_attribute + + integer :: local_xtype, local_len + + ! Do we need to worry about not saving the state from this call? + if(present(attnum)) & + nf90_inquire_attribute = nf_inq_attid(ncid, varid, name, attnum) + nf90_inquire_attribute = nf_inq_att (ncid, varid, name, local_xtype, local_len) + if(present(xtype)) xtype = local_xtype + if(present(len )) len = local_len + end function nf90_inquire_attribute + ! ------- + ! Put and get functions; these will get overloaded + ! ------- + ! Text + ! ------- + function nf90_put_att_text(ncid, varid, name, values) + integer, intent( in) :: ncid, varid + character(len = *), intent( in) :: name + character(len = *), intent( in) :: values + integer :: nf90_put_att_text + + nf90_put_att_text = nf_put_att_text(ncid, varid, name, len_trim(values), trim(values)) + end function nf90_put_att_text + ! ------- + function nf90_get_att_text(ncid, varid, name, values) + integer, intent( in) :: ncid, varid + character(len = *), intent( in) :: name + character(len = *), intent(out) :: values + integer :: nf90_get_att_text + + nf90_get_att_text = nf_get_att_text(ncid, varid, name, values) + end function nf90_get_att_text + ! ------- + ! Integer attributes + ! ------- +#if (HAVE_1BYTE_INT) + function nf90_put_att_OneByteInt(ncid, varid, name, values) + integer, intent( in) :: ncid, varid + character(len = *), intent( in) :: name + integer (kind = OneByteInt), dimension(:), intent( in) :: values + integer :: nf90_put_att_OneByteInt + + nf90_put_att_OneByteInt = nf_put_att_int1(ncid, varid, name, nf90_int1, size(values), values) + end function nf90_put_att_OneByteInt + ! ------- + function nf90_put_att_one_OneByteInt(ncid, varid, name, values) + integer, intent( in) :: ncid, varid + character(len = *), intent( in) :: name + integer (kind = OneByteInt), intent( in) :: values + integer :: nf90_put_att_one_OneByteInt + + integer (kind = OneByteInt), dimension(1) :: valuesA + valuesA(1) = values + nf90_put_att_one_OneByteInt = nf_put_att_int1(ncid, varid, name, nf90_int1, 1, valuesA) + end function nf90_put_att_one_OneByteInt + ! ------- + function nf90_get_att_OneByteInt(ncid, varid, name, values) + integer, intent( in) :: ncid, varid + character(len = *), intent( in) :: name + integer (kind = OneByteInt), dimension(:), intent(out) :: values + integer :: nf90_get_att_OneByteInt + + nf90_get_att_OneByteInt = nf_get_att_int1(ncid, varid, name, values) + end function nf90_get_att_OneByteInt + ! ------- + function nf90_get_att_one_OneByteInt(ncid, varid, name, values) + integer, intent( in) :: ncid, varid + character(len = *), intent( in) :: name + integer (kind = OneByteInt), intent(out) :: values + integer :: nf90_get_att_one_OneByteInt + + integer (kind = OneByteInt), dimension(1) :: valuesA + nf90_get_att_one_OneByteInt = nf_get_att_int1(ncid, varid, name, valuesA) + values = valuesA(1) + end function nf90_get_att_one_OneByteInt + ! ------- +#endif +#if (HAVE_2BYTE_INT) + function nf90_put_att_TwoByteInt(ncid, varid, name, values) + integer, intent( in) :: ncid, varid + character(len = *), intent( in) :: name + integer (kind = TwoByteInt), dimension(:), intent( in) :: values + integer :: nf90_put_att_TwoByteInt + + nf90_put_att_TwoByteInt = nf_put_att_int2(ncid, varid, name, nf90_int2, size(values), values) + end function nf90_put_att_TwoByteInt + ! ------- + function nf90_put_att_one_TwoByteInt(ncid, varid, name, values) + integer, intent( in) :: ncid, varid + character(len = *), intent( in) :: name + integer (kind = TwoByteInt), intent( in) :: values + integer :: nf90_put_att_one_TwoByteInt + + integer (kind = TwoByteInt), dimension(1) :: valuesA + valuesA(1) = values + nf90_put_att_one_TwoByteInt = nf_put_att_int2(ncid, varid, name, nf90_int2, 1, valuesA) + end function nf90_put_att_one_TwoByteInt + ! ------- + function nf90_get_att_TwoByteInt(ncid, varid, name, values) + integer, intent( in) :: ncid, varid + character(len = *), intent( in) :: name + integer (kind = TwoByteInt), dimension(:), intent(out) :: values + integer :: nf90_get_att_TwoByteInt + + nf90_get_att_TwoByteInt = nf_get_att_int2(ncid, varid, name, values) + end function nf90_get_att_TwoByteInt + ! ------- + function nf90_get_att_one_TwoByteInt(ncid, varid, name, values) + integer, intent( in) :: ncid, varid + character(len = *), intent( in) :: name + integer (kind = TwoByteInt), intent(out) :: values + integer :: nf90_get_att_one_TwoByteInt + + integer (kind = TwoByteInt), dimension(1) :: valuesA + nf90_get_att_one_TwoByteInt = nf_get_att_int2(ncid, varid, name, valuesA) + values = valuesA(1) + end function nf90_get_att_one_TwoByteInt +#endif + ! ------- +#if (HAVE_4BYTE_INT) + function nf90_put_att_FourByteInt(ncid, varid, name, values) + integer, intent( in) :: ncid, varid + character(len = *), intent( in) :: name + integer (kind = FourByteInt), dimension(:), intent( in) :: values + integer :: nf90_put_att_FourByteInt + + nf90_put_att_FourByteInt = nf_put_att_int(ncid, varid, name, nf90_int, size(values), int(values)) + end function nf90_put_att_FourByteInt + ! ------- + function nf90_put_att_one_FourByteInt(ncid, varid, name, values) + integer, intent( in) :: ncid, varid + character(len = *), intent( in) :: name + integer (kind = FourByteInt), intent( in) :: values + integer :: nf90_put_att_one_FourByteInt + + integer (kind = FourByteInt), dimension(1) :: valuesA + valuesA(1) = int(values) + nf90_put_att_one_FourByteInt = nf_put_att_int(ncid, varid, name, nf90_int, 1, valuesA) + end function nf90_put_att_one_FourByteInt + ! ------- + function nf90_get_att_FourByteInt(ncid, varid, name, values) + integer, intent( in) :: ncid, varid + character(len = *), intent( in) :: name + integer (kind = FourByteInt), dimension(:), intent(out) :: values + integer :: nf90_get_att_FourByteInt + + integer, dimension(size(values)) :: defaultInteger + + nf90_get_att_FourByteInt = nf_get_att_int(ncid, varid, name, defaultInteger) + values(:) = defaultInteger(:) + end function nf90_get_att_FourByteInt + ! ------- + function nf90_get_att_one_FourByteInt(ncid, varid, name, values) + integer, intent( in) :: ncid, varid + character(len = *), intent( in) :: name + integer (kind = FourByteInt), intent(out) :: values + integer :: nf90_get_att_one_FourByteInt + + integer, dimension(1) :: defaultInteger + + nf90_get_att_one_FourByteInt = nf_get_att_int(ncid, varid, name, defaultInteger) + values = defaultInteger(1) + end function nf90_get_att_one_FourByteInt +#endif + ! ------- + function nf90_put_att_EightByteInt(ncid, varid, name, values) + integer, intent( in) :: ncid, varid + character(len = *), intent( in) :: name + integer (kind = EightByteInt), dimension(:), intent( in) :: values + integer :: nf90_put_att_EightByteInt + + nf90_put_att_EightByteInt = nf_put_att_int(ncid, varid, name, nf90_int, size(values), int(values)) + end function nf90_put_att_EightByteInt + ! ------- + function nf90_put_att_one_EightByteInt(ncid, varid, name, values) + integer, intent( in) :: ncid, varid + character(len = *), intent( in) :: name + integer (kind = EightByteInt), intent( in) :: values + integer :: nf90_put_att_one_EightByteInt + + integer, dimension(1) :: valuesA + valuesA(1) = values + nf90_put_att_one_EightByteInt = nf_put_att_int(ncid, varid, name, nf90_int, 1, valuesA) + end function nf90_put_att_one_EightByteInt + ! ------- + function nf90_get_att_EightByteInt(ncid, varid, name, values) + integer, intent( in) :: ncid, varid + character(len = *), intent( in) :: name + integer (kind = EightByteInt), dimension(:), intent(out) :: values + integer :: nf90_get_att_EightByteInt + + integer, dimension(size(values)) :: defaultInteger + + nf90_get_att_EightByteInt = nf_get_att_int(ncid, varid, name, defaultInteger) + values(:) = defaultInteger(:) + end function nf90_get_att_EightByteInt + ! ------- + function nf90_get_att_one_EightByteInt(ncid, varid, name, values) + integer, intent( in) :: ncid, varid + character(len = *), intent( in) :: name + integer (kind = EightByteInt), intent(out) :: values + integer :: nf90_get_att_one_EightByteInt + + integer, dimension(1) :: defaultInteger + + nf90_get_att_one_EightByteInt = nf_get_att_int(ncid, varid, name, defaultInteger) + values = defaultInteger(1) + end function nf90_get_att_one_EightByteInt + ! ------- + ! Real attributes + ! ------- +#if (HAVE_4BYTE_REAL) + function nf90_put_att_FourByteReal(ncid, varid, name, values) + integer, intent( in) :: ncid, varid + character(len = *), intent( in) :: name + real (kind = FourByteReal), dimension(:), intent( in) :: values + integer :: nf90_put_att_FourByteReal + + nf90_put_att_FourByteReal = nf_put_att_real(ncid, varid, name, nf90_real4, size(values), values) + end function nf90_put_att_FourByteReal + ! ------- + function nf90_put_att_one_FourByteReal(ncid, varid, name, values) + integer, intent( in) :: ncid, varid + character(len = *), intent( in) :: name + real (kind = FourByteReal), intent( in) :: values + integer :: nf90_put_att_one_FourByteReal + + real (kind = FourByteReal), dimension(1) :: valuesA + valuesA(1) = values + nf90_put_att_one_FourByteReal = nf_put_att_real(ncid, varid, name, nf90_real4, 1, valuesA) + end function nf90_put_att_one_FourByteReal + ! ------- + function nf90_get_att_FourByteReal(ncid, varid, name, values) + integer, intent( in) :: ncid, varid + character(len = *), intent( in) :: name + real (kind = FourByteReal), dimension(:), intent(out) :: values + integer :: nf90_get_att_FourByteReal + + nf90_get_att_FourByteReal = nf_get_att_real(ncid, varid, name, values) + end function nf90_get_att_FourByteReal + ! ------- + function nf90_get_att_one_FourByteReal(ncid, varid, name, values) + integer, intent( in) :: ncid, varid + character(len = *), intent( in) :: name + real (kind = FourByteReal), intent(out) :: values + integer :: nf90_get_att_one_FourByteReal + + real (kind = FourByteReal), dimension(1) :: valuesA + nf90_get_att_one_FourByteReal = nf_get_att_real(ncid, varid, name, valuesA) + values = valuesA(1) + end function nf90_get_att_one_FourByteReal +#endif + ! ------- + function nf90_put_att_EightByteReal(ncid, varid, name, values) + integer, intent( in) :: ncid, varid + character(len = *), intent( in) :: name + real (kind = EightByteReal), dimension(:), intent( in) :: values + integer :: nf90_put_att_EightByteReal + + nf90_put_att_EightByteReal = nf_put_att_double(ncid, varid, name, nf90_real8, size(values), values) + end function nf90_put_att_EightByteReal + ! ------- + function nf90_put_att_one_EightByteReal(ncid, varid, name, values) + integer, intent( in) :: ncid, varid + character(len = *), intent( in) :: name + real (kind = EightByteReal), intent( in) :: values + integer :: nf90_put_att_one_EightByteReal + + real (kind = EightByteReal), dimension(1) :: valuesA + valuesA(1) = values + nf90_put_att_one_EightByteReal = nf_put_att_double(ncid, varid, name, nf90_real8, 1, valuesA) + end function nf90_put_att_one_EightByteReal + ! ------- + function nf90_get_att_EightByteReal(ncid, varid, name, values) + integer, intent( in) :: ncid, varid + character(len = *), intent( in) :: name + real (kind = EightByteReal), dimension(:), intent(out) :: values + integer :: nf90_get_att_EightByteReal + + nf90_get_att_EightByteReal = nf_get_att_double(ncid, varid, name, values) + end function nf90_get_att_EightByteReal + ! ------- + function nf90_get_att_one_EightByteReal(ncid, varid, name, values) + integer, intent( in) :: ncid, varid + character(len = *), intent( in) :: name + real (kind = EightByteReal), intent(out) :: values + integer :: nf90_get_att_one_EightByteReal + + real (kind = EightByteReal), dimension(1) :: valuesA + nf90_get_att_one_EightByteReal = nf_get_att_double(ncid, varid, name, valuesA) + values = valuesA(1) + end function nf90_get_att_one_EightByteReal + ! ------- Index: f90/Makefile =================================================================== --- f90/Makefile (.../trunk) (revision 531) +++ f90/Makefile (.../branches/f90_datatypes_patch) (revision 531) @@ -6,7 +6,9 @@ LIBRARY = ../libsrc/libnetcdf.a LIB_OBJS = netcdf.o typeSizes.o GARBAGE = netcdf_test *.mod *.d example.nc example.cdl \ - eightByteIntExample.nc + eightByteIntExample.nc \ + netcdf.f90 netcdf_attributes.f90 netcdf_expanded.f90 \ + typeSizes.f90 netcdf_constants.f90 netcdf_overloads.f90 MANUAL = netcdf.3f90 PACKING_LIST = \ Makefile \ @@ -15,21 +17,20 @@ example_good.cdl \ gen.m4 \ netcdf.3f90 \ - netcdf.f90 \ - netcdf_attributes.f90 \ - netcdf_constants.f90 \ + netcdf.F90 \ + netcdf_attributes.F90 \ + netcdf_constants.F90 \ netcdf_dims.f90 \ - netcdf_expanded.f90 \ netcdf_externals.f90 \ netcdf_file.f90 \ - netcdf_overloads.f90 \ + netcdf_overloads.F90 \ netcdf_test.f90 \ netcdf_text_variables.f90 \ netcdf_variables.f90 \ netcdf_visibility.f90 \ nvea.m4 nveaput48.m4 nveaget48.m4\ nves.m4 nvesput48.m4 nvesget48.m4 \ - typeSizes.f90 install-sh + typeSizes.F90 install-sh all: $(LIBRARY) @@ -58,7 +59,7 @@ typeSizes.o: typeSizes.f90 $(COMPILE.F90) typeSizes.f90 -netcdf_expanded.f90: gen.m4 f90aux.m4 nves.m4 nvea.m4 \ +netcdf_expanded.F90: gen.m4 f90aux.m4 nves.m4 nvea.m4 \ nvesput48.m4 nvesget48.m4 nveaput48.m4 nveaget48.m4 $(M4) gen.m4 >$@ @@ -128,8 +129,11 @@ include ../rules.make -.SUFFIXES: .o .f90 +.SUFFIXES: .o .f90 .F90 +.F90.f90: + $(CPP) $(CPPFLAGS) $< > $@ + .f90.o: $(COMPILE.F90) $< Index: f90/netcdf_overloads.F90 =================================================================== --- f90/netcdf_overloads.F90 (.../trunk) (revision 0) +++ f90/netcdf_overloads.F90 (.../branches/f90_datatypes_patch) (revision 531) @@ -0,0 +1,317 @@ + ! Overloaded variable functions + interface nf90_def_var + module procedure nf90_def_var_Scalar, nf90_def_var_oneDim, nf90_def_var_ManyDims + end interface ! nf90_def_var + + ! Overloaded attribute functions + interface nf90_put_att + module procedure nf90_put_att_text, & +#if (HAVE_1BYTE_INT) + nf90_put_att_OneByteInt, & +#endif +#if (HAVE_2BYTE_INT) + nf90_put_att_TwoByteInt, & +#endif +#if (HAVE_4BYTE_INT) + nf90_put_att_FourByteInt, & +#endif + nf90_put_att_EightByteInt, & +#if (HAVE_4BYTE_REAL) + nf90_put_att_FourByteReal, & +#endif + nf90_put_att_EightByteReal + module procedure & +#if (HAVE_1BYTE_INT) + nf90_put_att_one_OneByteInt, & +#endif +#if (HAVE_2BYTE_INT) + nf90_put_att_one_TwoByteInt, & +#endif +#if (HAVE_4BYTE_INT) + nf90_put_att_one_FourByteInt, & +#endif + nf90_put_att_one_EightByteInt, & +#if (HAVE_4BYTE_REAL) + nf90_put_att_one_FourByteReal, & +#endif + nf90_put_att_one_EightByteReal + end interface !nf90_put_att + interface nf90_get_att + module procedure nf90_get_att_text, & +#if (HAVE_1BYTE_INT) + nf90_get_att_OneByteInt, & +#endif +#if (HAVE_2BYTE_INT) + nf90_get_att_TwoByteInt, & +#endif +#if (HAVE_4BYTE_INT) + nf90_get_att_FourByteInt, & +#endif + nf90_get_att_EightByteInt, & +#if (HAVE_4BYTE_REAL) + nf90_get_att_FourByteReal, & +#endif + nf90_get_att_EightByteReal + module procedure & +#if (HAVE_1BYTE_INT) + nf90_get_att_one_OneByteInt, & +#endif +#if (HAVE_2BYTE_INT) + nf90_get_att_one_TwoByteInt, & +#endif +#if (HAVE_4BYTE_INT) + nf90_get_att_one_FourByteInt, & +#endif + nf90_get_att_one_EightByteInt, & +#if (HAVE_4BYTE_REAL) + nf90_get_att_one_FourByteReal, & +#endif + nf90_get_att_one_EightByteReal + end interface ! nf90_get_att + + ! Overloaded variable functions + interface nf90_put_var + module procedure nf90_put_var_text, & +#if (HAVE_1BYTE_INT) + nf90_put_var_one_OneByteInt, & +#endif +#if (HAVE_2BYTE_INT) + nf90_put_var_one_TwoByteInt, & +#endif +#if (HAVE_4BYTE_INT) + nf90_put_var_FourByteInt, & +#endif + nf90_put_var_EightByteInt, & +#if (HAVE_4BYTE_REAL) + nf90_put_var_FourByteReal, & +#endif + nf90_put_var_EightByteReal + module procedure nf90_put_var_1D_text, & +#if (HAVE_1BYTE_INT) + nf90_put_var_1D_OneByteInt, & +#endif +#if (HAVE_2BYTE_INT) + nf90_put_var_1D_TwoByteInt, & +#endif +#if (HAVE_4BYTE_INT) + nf90_put_var_1D_FourByteInt, & +#endif + nf90_put_var_1D_EightByteInt, & +#if (HAVE_4BYTE_REAL) + nf90_put_var_1D_FourByteReal, & +#endif + nf90_put_var_1D_EightByteReal + module procedure nf90_put_var_2D_text, & +#if (HAVE_1BYTE_INT) + nf90_put_var_2D_OneByteInt, & +#endif +#if (HAVE_2BYTE_INT) + nf90_put_var_2D_TwoByteInt, & +#endif +#if (HAVE_4BYTE_INT) + nf90_put_var_2D_FourByteInt, & +#endif + nf90_put_var_2D_EightByteInt, & +#if (HAVE_4BYTE_REAL) + nf90_put_var_2D_FourByteReal, & +#endif + nf90_put_var_2D_EightByteReal + module procedure nf90_put_var_3D_text, & +#if (HAVE_1BYTE_INT) + nf90_put_var_3D_OneByteInt, & +#endif +#if (HAVE_2BYTE_INT) + nf90_put_var_3D_TwoByteInt, & +#endif +#if (HAVE_4BYTE_INT) + nf90_put_var_3D_FourByteInt, & +#endif + nf90_put_var_3D_EightByteInt, & +#if (HAVE_4BYTE_REAL) + nf90_put_var_3D_FourByteReal, & +#endif + nf90_put_var_3D_EightByteReal + module procedure nf90_put_var_4D_text, & +#if (HAVE_1BYTE_INT) + nf90_put_var_4D_OneByteInt, & +#endif +#if (HAVE_2BYTE_INT) + nf90_put_var_4D_TwoByteInt, & +#endif +#if (HAVE_4BYTE_INT) + nf90_put_var_4D_FourByteInt, & +#endif + nf90_put_var_4D_EightByteInt, & +#if (HAVE_4BYTE_REAL) + nf90_put_var_4D_FourByteReal, & +#endif + nf90_put_var_4D_EightByteReal + module procedure nf90_put_var_5D_text, & +#if (HAVE_1BYTE_INT) + nf90_put_var_5D_OneByteInt, & +#endif +#if (HAVE_2BYTE_INT) + nf90_put_var_5D_TwoByteInt, & +#endif +#if (HAVE_4BYTE_INT) + nf90_put_var_5D_FourByteInt, & +#endif + nf90_put_var_5D_EightByteInt, & +#if (HAVE_4BYTE_REAL) + nf90_put_var_5D_FourByteReal, & +#endif + nf90_put_var_5D_EightByteReal + module procedure nf90_put_var_6D_text, & +#if (HAVE_1BYTE_INT) + nf90_put_var_6D_OneByteInt, & +#endif +#if (HAVE_2BYTE_INT) + nf90_put_var_6D_TwoByteInt, & +#endif +#if (HAVE_4BYTE_INT) + nf90_put_var_6D_FourByteInt, & +#endif + nf90_put_var_6D_EightByteInt, & +#if (HAVE_4BYTE_REAL) + nf90_put_var_6D_FourByteReal, & +#endif + nf90_put_var_6D_EightByteReal + module procedure nf90_put_var_7D_text, & +#if (HAVE_1BYTE_INT) + nf90_put_var_7D_OneByteInt, & +#endif +#if (HAVE_2BYTE_INT) + nf90_put_var_7D_TwoByteInt, & +#endif +#if (HAVE_4BYTE_INT) + nf90_put_var_7D_FourByteInt, & +#endif + nf90_put_var_7D_EightByteInt, & +#if (HAVE_4BYTE_REAL) + nf90_put_var_7D_FourByteReal, & +#endif + nf90_put_var_7D_EightByteReal + end interface ! nf90_put_var + + interface nf90_get_var + module procedure nf90_get_var_text, & +#if (HAVE_1BYTE_INT) + nf90_get_var_one_OneByteInt, & +#endif +#if (HAVE_2BYTE_INT) + nf90_get_var_one_TwoByteInt, & +#endif +#if (HAVE_4BYTE_INT) + nf90_get_var_FourByteInt, & +#endif + nf90_get_var_EightByteInt, & +#if (HAVE_4BYTE_REAL) + nf90_get_var_FourByteReal, & +#endif + nf90_get_var_EightByteReal + module procedure nf90_get_var_1D_text, & +#if (HAVE_1BYTE_INT) + nf90_put_var_1D_OneByteInt, & +#endif +#if (HAVE_2BYTE_INT) + nf90_put_var_1D_TwoByteInt, & +#endif +#if (HAVE_4BYTE_INT) + nf90_get_var_1D_FourByteInt, & +#endif + nf90_get_var_1D_EightByteInt, & +#if (HAVE_4BYTE_REAL) + nf90_get_var_1D_FourByteReal, & +#endif + nf90_get_var_1D_EightByteReal + module procedure nf90_get_var_2D_text, & +#if (HAVE_1BYTE_INT) + nf90_put_var_2D_OneByteInt, & +#endif +#if (HAVE_2BYTE_INT) + nf90_put_var_2D_TwoByteInt, & +#endif +#if (HAVE_4BYTE_INT) + nf90_get_var_2D_FourByteInt, & +#endif + nf90_get_var_2D_EightByteInt, & +#if (HAVE_4BYTE_REAL) + nf90_get_var_2D_FourByteReal, & +#endif + nf90_get_var_2D_EightByteReal + module procedure nf90_get_var_3D_text, & +#if (HAVE_1BYTE_INT) + nf90_put_var_3D_OneByteInt, & +#endif +#if (HAVE_2BYTE_INT) + nf90_put_var_3D_TwoByteInt, & +#endif +#if (HAVE_4BYTE_INT) + nf90_get_var_3D_FourByteInt, & +#endif + nf90_get_var_3D_EightByteInt, & +#if (HAVE_4BYTE_REAL) + nf90_get_var_3D_FourByteReal, & +#endif + nf90_get_var_3D_EightByteReal + module procedure nf90_get_var_4D_text, & +#if (HAVE_1BYTE_INT) + nf90_put_var_4D_OneByteInt, & +#endif +#if (HAVE_2BYTE_INT) + nf90_put_var_4D_TwoByteInt, & +#endif +#if (HAVE_4BYTE_INT) + nf90_get_var_4D_FourByteInt, & +#endif + nf90_get_var_4D_EightByteInt, & +#if (HAVE_4BYTE_REAL) + nf90_get_var_4D_FourByteReal, & +#endif + nf90_get_var_4D_EightByteReal + module procedure nf90_get_var_5D_text, & +#if (HAVE_1BYTE_INT) + nf90_put_var_5D_OneByteInt, & +#endif +#if (HAVE_2BYTE_INT) + nf90_put_var_5D_TwoByteInt, & +#endif +#if (HAVE_4BYTE_INT) + nf90_get_var_5D_FourByteInt, & +#endif + nf90_get_var_5D_EightByteInt, & +#if (HAVE_4BYTE_REAL) + nf90_get_var_5D_FourByteReal, & +#endif + nf90_get_var_5D_EightByteReal + module procedure nf90_get_var_6D_text, & +#if (HAVE_1BYTE_INT) + nf90_put_var_6D_OneByteInt, & +#endif +#if (HAVE_2BYTE_INT) + nf90_put_var_6D_TwoByteInt, & +#endif +#if (HAVE_4BYTE_INT) + nf90_get_var_6D_FourByteInt, & +#endif + nf90_get_var_6D_EightByteInt, & +#if (HAVE_4BYTE_REAL) + nf90_get_var_6D_FourByteReal, & +#endif + nf90_get_var_6D_EightByteReal + module procedure nf90_get_var_7D_text, & +#if (HAVE_1BYTE_INT) + nf90_put_var_7D_OneByteInt, & +#endif +#if (HAVE_2BYTE_INT) + nf90_put_var_7D_TwoByteInt, & +#endif +#if (HAVE_4BYTE_INT) + nf90_get_var_7D_FourByteInt, & +#endif + nf90_get_var_7D_EightByteInt, & +#if (HAVE_4BYTE_REAL) + nf90_get_var_7D_FourByteReal, & +#endif + nf90_get_var_7D_EightByteReal + end interface ! nf90_get_var Index: env-vars =================================================================== --- env-vars (.../trunk) (revision 0) +++ env-vars (.../branches/f90_datatypes_patch) (revision 531) @@ -0,0 +1,14 @@ +# for "standard" compilation (non-NEC-SX) +setenv CPPFLAGS "-DNDEBUG -DHAVE_1BYTE_INT -DHAVE_2BYTE_INT \ + -DHAVE_4BYTE_INT -DHAVE_4BYTE_REAL" + +# for promotion of one-byte values (eg logicals) (-dw -dW on NEC SX) +setenv CPPFLAGS "-DNDEBUG -DHAVE_2BYTE_INT -DHAVE_4BYTE_INT -DHAVE_4BYTE_REAL" + +# for 1- and 2-byte quantites promoted to 4 bytes (-dw on NEC SX) +setenv CPPFLAGS "-DNDEBUG -DHAVE_4BYTE_INT -DHAVE_4BYTE_REAL" + +# for promotion of all quatities to 8-bytes (-ew on NEC SX, common +# also on older Crays) +setenv CPPFLAGS "-DNDEBUG" +