mirror of
https://github.com/Unidata/netcdf-c.git
synced 2024-12-03 08:01:25 +08:00
75 lines
1.9 KiB
Fortran
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
|