C FORTRAN TEMPLATE FOR FILE= ndn6089_flux.nc PARAMETER (NVARS= 9) !NUMBER OF VARIABLES PARAMETER (NREC= 408) !CHANGE THIS TO GENERALIZE C VARIABLE IDS RUN SEQUENTIALLY FROM 1 TO NVARS= 9 INTEGER*4 RCODE INTEGER*4 RECDIM CHARACTER*50 long_name(nvars) CHARACTER*50 name(100) C ****VARIABLES FOR THIS NETCDF FILE**** C REAL*4 lon ( 45) REAL*4 lat ( 27) INTEGER*4 time (NREC) INTEGER*4 month (NREC) INTEGER*4 year (NREC) REAL*4 Taux ( 45, 27,NREC) REAL*4 Tauy ( 45, 27,NREC) REAL*4 H ( 45, 27,NREC) REAL*4 E ( 45, 27,NREC) C************************************* character*80 input_file INTEGER*4 START(10) INTEGER*4 COUNT(10) INTEGER VDIMS(10) !ALLOW UP TO 10 DIMENSIONS CHARACTER*31 DUMMY C C LONG NAMES FOR EACH VARIABLE C data long_name/ *'longitude ', *'latitude ', *'Time ', *'Month ', *'Year ', *'Wind stress, E-W Component ', *'Wind stress, N-S Component ', *'Sensible Heat Flux ', *'Latent Heat Flux '/ C write(6,1) 1 format(' enter your input file') read(5,2) input_file 2 format(a80) ilen=index(input_file,' ') ncid=ncopn(input_file(1:ilen-1),0,rcode) CALL NCINQ(NCID,NDIMS,NVARS,NGATTS,RECDIM,RCODE) CALL NCDINQ(NCID,RECDIM,DUMMY,NRECS,RCODE) C !NRECS! NOW CONTAINS NUM RECORDS FOR THIS FILE C C statements to fill lon C ivarid = ncvid(ncid,'lon ',rcode) CALL NCVINQ(NCID,ivarid,DUMMY,NTP,NVDIM,VDIMS,NVS,RCODE) LENSTR=1 DO 10 J=1,NVDIM CALL NCDINQ(NCID,VDIMS(J),DUMMY,NDSIZE,RCODE) LENSTR=LENSTR*NDSIZE START(J)=1 COUNT(J)=NDSIZE 10 CONTINUE CALL NCVGT(NCID,ivarid,START,COUNT, +lon ,RCODE) C C statements to fill lat C ivarid = ncvid(ncid,'lat ',rcode) CALL NCVINQ(NCID,ivarid,DUMMY,NTP,NVDIM,VDIMS,NVS,RCODE) LENSTR=1 DO 20 J=1,NVDIM CALL NCDINQ(NCID,VDIMS(J),DUMMY,NDSIZE,RCODE) LENSTR=LENSTR*NDSIZE START(J)=1 COUNT(J)=NDSIZE 20 CONTINUE CALL NCVGT(NCID,ivarid,START,COUNT, +lat ,RCODE) C C statements to fill time C ivarid = ncvid(ncid,'time ',rcode) CALL NCVINQ(NCID,ivarid,DUMMY,NTP,NVDIM,VDIMS,NVS,RCODE) LENSTR=1 DO 30 J=1,NVDIM CALL NCDINQ(NCID,VDIMS(J),DUMMY,NDSIZE,RCODE) LENSTR=LENSTR*NDSIZE START(J)=1 COUNT(J)=NDSIZE 30 CONTINUE CALL NCVGT(NCID,ivarid,START,COUNT, +time ,RCODE) C C statements to fill month C ivarid = ncvid(ncid,'month ',rcode) CALL NCVINQ(NCID,ivarid,DUMMY,NTP,NVDIM,VDIMS,NVS,RCODE) LENSTR=1 DO 40 J=1,NVDIM CALL NCDINQ(NCID,VDIMS(J),DUMMY,NDSIZE,RCODE) LENSTR=LENSTR*NDSIZE START(J)=1 COUNT(J)=NDSIZE 40 CONTINUE CALL NCVGT(NCID,ivarid,START,COUNT, +month ,RCODE) C C statements to fill year C ivarid = ncvid(ncid,'year ',rcode) CALL NCVINQ(NCID,ivarid,DUMMY,NTP,NVDIM,VDIMS,NVS,RCODE) LENSTR=1 DO 50 J=1,NVDIM CALL NCDINQ(NCID,VDIMS(J),DUMMY,NDSIZE,RCODE) LENSTR=LENSTR*NDSIZE START(J)=1 COUNT(J)=NDSIZE 50 CONTINUE CALL NCVGT(NCID,ivarid,START,COUNT, +year ,RCODE) C C statements to fill Taux C ivarid = ncvid(ncid,'Taux ',rcode) CALL NCVINQ(NCID,ivarid,DUMMY,NTP,NVDIM,VDIMS,NVS,RCODE) LENSTR=1 DO 60 J=1,NVDIM CALL NCDINQ(NCID,VDIMS(J),DUMMY,NDSIZE,RCODE) LENSTR=LENSTR*NDSIZE START(J)=1 COUNT(J)=NDSIZE 60 CONTINUE CALL NCVGT(NCID,ivarid,START,COUNT, +Taux ,RCODE) C C statements to fill Tauy C ivarid = ncvid(ncid,'Tauy ',rcode) CALL NCVINQ(NCID,ivarid,DUMMY,NTP,NVDIM,VDIMS,NVS,RCODE) LENSTR=1 DO 70 J=1,NVDIM CALL NCDINQ(NCID,VDIMS(J),DUMMY,NDSIZE,RCODE) LENSTR=LENSTR*NDSIZE START(J)=1 COUNT(J)=NDSIZE 70 CONTINUE CALL NCVGT(NCID,ivarid,START,COUNT, +Tauy ,RCODE) C C statements to fill H C ivarid = ncvid(ncid,'H ',rcode) CALL NCVINQ(NCID,ivarid,DUMMY,NTP,NVDIM,VDIMS,NVS,RCODE) LENSTR=1 DO 80 J=1,NVDIM CALL NCDINQ(NCID,VDIMS(J),DUMMY,NDSIZE,RCODE) LENSTR=LENSTR*NDSIZE START(J)=1 COUNT(J)=NDSIZE 80 CONTINUE CALL NCVGT(NCID,ivarid,START,COUNT, +H ,RCODE) C C statements to fill E C ivarid = ncvid(ncid,'E ',rcode) CALL NCVINQ(NCID,ivarid,DUMMY,NTP,NVDIM,VDIMS,NVS,RCODE) LENSTR=1 DO 90 J=1,NVDIM CALL NCDINQ(NCID,VDIMS(J),DUMMY,NDSIZE,RCODE) LENSTR=LENSTR*NDSIZE START(J)=1 COUNT(J)=NDSIZE 90 CONTINUE CALL NCVGT(NCID,ivarid,START,COUNT, +E ,RCODE) C C following code: checks output code code against current input file C C call ncinq(ncid,ndims,nvarsc,ngatts,nrecdim,rcode) if(nvarsc.ne.nvars) write(6,110) 110 format('number of variables has changed') C do 180 i=1,nvars do 140 j=1,nvarsc call ncagt(ncid,j,'long_name',name(j),mtlen,rcode) ilen=index(long_name(i),' ') if(long_name(i)(1:ilen-1).eq.name(j)(1:ilen-1)) go to 180 140 continue write(6,150) name(j) 150 format('unknown variable ',a50) write(6,160) 160 format('rerun gennet') stop 180 continue C CALL NCCLOS(NCID,RCODE) C C C HERE IS WHERE YOU WRITE STATEMENTS TO USE THE DATA C C C STOP END