mirror of
https://github.com/Unidata/netcdf-c.git
synced 2025-01-18 15:55:12 +08:00
95 lines
3.7 KiB
Fortran
95 lines
3.7 KiB
Fortran
C This is part of the netCDF package.
|
|
C Copyright 2009 University Corporation for Atmospheric Research/Unidata.
|
|
C See COPYRIGHT file for conditions of use.
|
|
|
|
C This program tests the fortran V2 API with netCDF-4.
|
|
|
|
C $Id: ftst_v2.F,v 1.1 2009/01/27 19:49:11 ed Exp $
|
|
|
|
program ftst_v2
|
|
implicit none
|
|
include 'netcdf.inc'
|
|
|
|
C This is the name of the data file we will create.
|
|
character*(*) FILE_NAME
|
|
parameter (FILE_NAME='ftst_v2.nc')
|
|
|
|
integer ncid, timedim, londim, latdim, lonid, latid
|
|
character*(3) lat_name
|
|
parameter (lat_name = 'lat')
|
|
character*(3) lon_name
|
|
parameter (lon_name = 'lon')
|
|
character*(4) time_name
|
|
parameter (time_name = 'time')
|
|
integer LON_LEN, LAT_LEN
|
|
parameter (LON_LEN = 3, LAT_LEN = 5)
|
|
integer NDIMS, NVARS
|
|
parameter (NDIMS = 3, NVARS = 2)
|
|
integer ndims_in, nvars_in, ngatts_in, recdim_in
|
|
integer dimsize_in, natts_in
|
|
integer xtype_in, dimids_in(NDIMS)
|
|
character*(128) name_in
|
|
integer rc
|
|
|
|
print *, ''
|
|
print *,'*** Testing v2 fortran API with netCDF-4.'
|
|
|
|
C Create the file.
|
|
ncid = nccre(FILE_NAME, NF_NETCDF4, rc)
|
|
timedim = ncddef(ncid, time_name, NCUNLIM, rc)
|
|
londim = ncddef(ncid, lon_name, LON_LEN, rc)
|
|
latdim = ncddef(ncid, lat_name, LAT_LEN, rc)
|
|
lonid = ncvdef(ncid, lon_name, NCFLOAT, 1, londim, rc)
|
|
latid = ncvdef(ncid, lat_name, NCFLOAT, 1, latdim, rc)
|
|
|
|
C Check the file.
|
|
call ncinq(ncid, ndims_in, nvars_in, ngatts_in, recdim_in, rc)
|
|
if (ndims_in .ne. NDIMS) stop 2
|
|
if (ndims_in .ne. NDIMS .or. nvars_in .ne. NVARS .or.
|
|
$ ngatts_in .ne. 0 .or. recdim_in .ne. timedim) stop 2
|
|
call ncdinq(ncid, timedim, name_in, dimsize_in, rc)
|
|
if (name_in .ne. time_name .or. dimsize_in .ne. 0) stop 2
|
|
call ncdinq(ncid, londim, name_in, dimsize_in, rc)
|
|
if (name_in .ne. lon_name .or. dimsize_in .ne. LON_LEN) stop 2
|
|
call ncdinq(ncid, latdim, name_in, dimsize_in, rc)
|
|
if (name_in .ne. lat_name .or. dimsize_in .ne. LAT_LEN) stop 2
|
|
call ncvinq(ncid, lonid, name_in, xtype_in, ndims_in, dimids_in,
|
|
$ natts_in, rc)
|
|
if (name_in .ne. lon_name .or. xtype_in .ne. NCFLOAT .or.
|
|
$ ndims_in .ne. 1 .or. dimids_in(1) .ne. londim) stop 2
|
|
call ncvinq(ncid, latid, name_in, xtype_in, ndims_in, dimids_in,
|
|
$ natts_in, rc)
|
|
if (name_in .ne. lat_name .or. xtype_in .ne. NCFLOAT .or.
|
|
$ ndims_in .ne. 1 .or. dimids_in(1) .ne. latdim) stop 2
|
|
|
|
C Close the file.
|
|
call ncclos(ncid, rc)
|
|
|
|
C Reopen, and check again.
|
|
ncid = ncopn(FILE_NAME, NCNOWRIT, rc)
|
|
C Check the file.
|
|
call ncinq(ncid, ndims_in, nvars_in, ngatts_in, recdim_in, rc)
|
|
if (ndims_in .ne. NDIMS) stop 2
|
|
if (ndims_in .ne. NDIMS .or. nvars_in .ne. NVARS .or.
|
|
$ ngatts_in .ne. 0 .or. recdim_in .ne. timedim) stop 2
|
|
call ncdinq(ncid, timedim, name_in, dimsize_in, rc)
|
|
if (name_in .ne. time_name .or. dimsize_in .ne. 0) stop 2
|
|
call ncdinq(ncid, londim, name_in, dimsize_in, rc)
|
|
if (name_in .ne. lon_name .or. dimsize_in .ne. LON_LEN) stop 2
|
|
call ncdinq(ncid, latdim, name_in, dimsize_in, rc)
|
|
if (name_in .ne. lat_name .or. dimsize_in .ne. LAT_LEN) stop 2
|
|
call ncvinq(ncid, lonid, name_in, xtype_in, ndims_in, dimids_in,
|
|
$ natts_in, rc)
|
|
if (name_in .ne. lon_name .or. xtype_in .ne. NCFLOAT .or.
|
|
$ ndims_in .ne. 1 .or. dimids_in(1) .ne. londim) stop 2
|
|
call ncvinq(ncid, latid, name_in, xtype_in, ndims_in, dimids_in,
|
|
$ natts_in, rc)
|
|
if (name_in .ne. lat_name .or. xtype_in .ne. NCFLOAT .or.
|
|
$ ndims_in .ne. 1 .or. dimids_in(1) .ne. latdim) stop 2
|
|
|
|
call ncclos(ncid, rc)
|
|
|
|
print *,'*** SUCCESS!'
|
|
end
|
|
|