netcdf-c/nf_test/tst_f77_v2.F
2010-06-03 13:24:43 +00:00

75 lines
1.9 KiB
Fortran

C This is part of netCDF, Copyright 2006, UCAR
C This test program uses the fortran 77 v2 API to create a simple
C data file with some phoney data in it. This program is heavily
C based on one contributed by Jeremy Kepner,
C jvkepner@astro.Princeton.EDU.
C This program will bail out in the event of a netcdf error.
C $Id: tst_f77_v2.F,v 1.2 2009/01/25 14:33:44 ed Exp $
PROGRAM tst_f77_v2
IMPLICIT NONE
#include "tests.inc"
INTEGER n_dim,x_dim,y_dim,z_dim
PARAMETER(n_dim = 3, x_dim = 20, y_dim = 10, z_dim = 5)
INTEGER dim_array(n_dim)
INTEGER start(n_dim),count(n_dim)
INTEGER ncid, errcode
INTEGER x_id,y_id,z_id,arr_id
REAL array(x_dim,y_dim,z_dim)
INTEGER i,j,k
C Put something into the array.
DO i=1,x_dim
DO j=1,y_dim
DO k=1,z_dim
array(i,j,k) = (i-1) + x_dim*(j-1) + x_dim*y_dim*(k-1)
ENDDO
ENDDO
ENDDO
print *, ''
print *, ' *** Testing netCDF v2 api for F77.'
C Create file.
ncid = NCCRE('tst_f77_v2.nc', NCCLOB, errcode)
C Create Dimensions.
x_id = NCDDEF(ncid, 'X', x_dim, errcode)
y_id = NCDDEF(ncid, 'Y', y_dim, errcode)
z_id = NCDDEF(ncid, 'Z', z_dim, errcode)
C Create a variable.
C Assign dimensions to array.
dim_array(1) = z_id
dim_array(2) = y_id
dim_array(3) = x_id
arr_id = NCVDEF(ncid,'array',NCFLOAT,n_dim,dim_array,errcode)
C Skip attributes.
C Leave definitions.
CALL NCENDF(ncid, errcode)
C Write variable to file.
start(1) = 1
start(2) = 1
start(3) = 1
count(1) = z_dim
count(2) = y_dim
count(3) = x_dim
CALL NCVPT(ncid,arr_id,start,count,array,errcode)
C Close the file.
CALL NCCLOS(ncid, errcode)
print *, ' *** SUCCESS!'
END