source: LMDZ6/trunk/tools/netcdf95/Variables/nf95_inquire_variable.f90 @ 5080

Last change on this file since 5080 was 5075, checked in by abarral, 2 months ago

[continued & end] replace netcdf by lmdz_netcdf.F90 wrapper
"use netcdf" is now only used in lmdz_netcdf.F90 (except ecrad and obsolete/)
<include "netcdf.inc"> is now likewise only used in lmdz_netcdf.F90.

systematically specify explicitely <USE lmdz_netcdf, ONLY:> (probably left some missing, to correct later on)

Further replacement of nf_put_* by nf90_put_* (same for _get_)

[minor] replace deprecated boolean operators along the way

File size: 1.8 KB
Line 
1module nf95_inquire_variable_m
2
3  implicit none
4
5contains
6
7  subroutine nf95_inquire_variable(ncid, varid, name, xtype, ndims, dimids, &
8       nAtts, ncerr)
9
10    ! In "nf90_inquire_variable", "dimids" is an assumed-size array.
11    ! This is not optimal.
12    ! We are in the classical case of an array the size of which is
13    ! unknown in the calling procedure, before the call.
14    ! Here we use a better solution: an allocatable argument array.
15    ! This procedure allocates and defines "dimids" if it is present.
16
17    use nf95_abort_m, only: nf95_abort
18    use lmdz_netcdf, only: nf90_inquire_variable, nf90_max_var_dims
19    use nf95_constants, only: nf95_noerr
20
21    integer, intent(in):: ncid, varid
22    character(len = *), optional, intent(out):: name
23    integer, optional, intent(out) :: xtype, ndims
24    integer, optional, allocatable, intent(out) :: dimids(:)
25    integer, optional, intent(out) :: nAtts
26    integer, intent(out), optional :: ncerr
27
28    ! Variable local to the procedure:
29    integer ncerr_not_opt
30    integer dimids_local(nf90_max_var_dims)
31    integer ndims_not_opt
32
33    !-------------------
34
35    if (present(dimids)) then
36       ncerr_not_opt = nf90_inquire_variable(ncid, varid, name, xtype, &
37            ndims_not_opt, dimids_local, nAtts)
38       dimids = dimids_local(:ndims_not_opt) ! also works if ndims_not_opt == 0
39       if (present(ndims)) ndims = ndims_not_opt
40    else
41       ncerr_not_opt = nf90_inquire_variable(ncid, varid, name, xtype, ndims, &
42            nAtts=nAtts)
43    end if
44
45    if (present(ncerr)) then
46       ncerr = ncerr_not_opt
47    else
48       if (ncerr_not_opt /= nf95_noerr) call &
49            nf95_abort("nf95_inquire_variable", ncerr_not_opt, ncid, varid)
50    end if
51
52  end subroutine nf95_inquire_variable
53
54end module nf95_inquire_variable_m
Note: See TracBrowser for help on using the repository browser.