- Data
- Hosted data systems
- Sea level
- International
- Fortran routine
Fortran routine for use with sea level data
This is a Fortran template file designed to read the given netCDF file into memory.
c----------------------------------------------------------------------- c c readnet.f c This file is a fortran template file designed to read the given c netCDF file into memory. c c History: c Date Name Action c --------- ------------ -------------------------------------------- c ?? ??? ?? cids Created. c c----------------------------------------------------------------------- c Do not forget to include the -I path_to_netcdf_includes in your c compile statement c Required includes. include 'netcdf.inc' c Define Variables. c Variable ids run sequentially from 1 to nvars = 07 parameter (nvars = 7) ! number of variables parameter (nrec= 8760) ! change this 'to generalize parameter (ndims = 2) ! number of dimensions parameter (primary_dimension = 8760) parameter (position_dimension = 1) integer*4 rcode ! error code integer*4 recdim ! record dimension real*4 sea_level(nrec) character*1 sea_level_quality_flag(nrec) real*4 woce_time_of_day(nrec) character*1 woce_time_of_day_quality_flag(nrec) real*8 woce_date(nrec) real*4 latitude(position_dimension + + ) real*4 longitude(position_dimension + + ) integer*4 start(ndims) ! hyperslab starting index integer*4 count(ndims) ! hyperslab count from start integer vdims(ndims) ! max # of var dims character*1024 strbuf ! string buffer for var ! and attr names c Open netCDF file. ncid=ncopn('b0033379.cdf',ncnowrit,rcode) c Get info on the record dimension for this file. call ncinq(ncid,ndims,nvars,ngatts,recdim,rcode) call ncdinq(ncid,recdim,strbuf,nrecs,rcode) c nrecs now contains the # of records for this file c Retrieve data for sea_level variable. call ncvinq(ncid, 1,strbuf,nctype,nvdim,vdims,nvatts,rcode) lenstr=1 do j=1,nvdim call ncdinq(ncid,vdims(j),strbuf,ndsize,rcode) lenstr=lenstr*ndsize start(j)=1 count(j)=ndsize end do call ncvgt(ncid, 1,start,count,sea_level,rcode) c Retrieve data for sea_level_quality_flag variable. call ncvinq(ncid, 2,strbuf,nctype,nvdim,vdims,nvatts,rcode) lenstr=1 do j=1,nvdim call ncdinq(ncid,vdims(j),strbuf,ndsize,rcode) lenstr=lenstr*ndsize start(j)=1 count(j)=ndsize end do call ncvgtc(ncid, 2,start,count,sea_level_quality_flag,lenstr,rc +ode) c Retrieve data for woce_time_of_day variable. call ncvinq(ncid, 3,strbuf,nctype,nvdim,vdims,nvatts,rcode) lenstr=1 do j=1,nvdim call ncdinq(ncid,vdims(j),strbuf,ndsize,rcode) lenstr=lenstr*ndsize start(j)=1 count(j)=ndsize end do call ncvgt(ncid, 3,start,count,woce_time_of_day,rcode) c Retrieve data for woce_time_of_day_quality_flag variable. call ncvinq(ncid, 4,strbuf,nctype,nvdim,vdims,nvatts,rcode) lenstr=1 do j=1,nvdim call ncdinq(ncid,vdims(j),strbuf,ndsize,rcode) lenstr=lenstr*ndsize start(j)=1 count(j)=ndsize end do call ncvgtc(ncid, 4,start,count,woce_time_of_day_quality_flag,le +nstr,rcode) c Retrieve data for woce_date variable. call ncvinq(ncid, 5,strbuf,nctype,nvdim,vdims,nvatts,rcode) lenstr=1 do j=1,nvdim call ncdinq(ncid,vdims(j),strbuf,ndsize,rcode) lenstr=lenstr*ndsize start(j)=1 count(j)=ndsize end do call ncvgt(ncid, 5,start,count,woce_date,rcode) c Retrieve data for latitude variable. call ncvinq(ncid, 6,strbuf,nctype,nvdim,vdims,nvatts,rcode) lenstr=1 do j=1,nvdim call ncdinq(ncid,vdims(j),strbuf,ndsize,rcode) lenstr=lenstr*ndsize start(j)=1 count(j)=ndsize end do call ncvgt(ncid, 6,start,count,latitude,rcode) c Retrieve data for longitude variable. call ncvinq(ncid, 7,strbuf,nctype,nvdim,vdims,nvatts,rcode) lenstr=1 do j=1,nvdim call ncdinq(ncid,vdims(j),strbuf,ndsize,rcode) lenstr=lenstr*ndsize start(j)=1 count(j)=ndsize end do call ncvgt(ncid, 7,start,count,longitude,rcode) c ****************************************** c Begin writing statements to use the data. c ****************************************** c End Program. stop end