C FORTRAN TEMPLATE FOR FILE= ndn6089m.nc PARAMETER (NVARS=11) !NUMBER OF VARIABLES PARAMETER (NREC= 408) !CHANGE THIS TO GENERALIZE C VARIABLE IDS RUN SEQUENTIALLY FROM 1 TO NVARS= 11 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 UW ( 45, 27,NREC) REAL*4 VW ( 45, 27,NREC) REAL*4 Spd ( 45, 27,NREC) REAL*4 SST ( 45, 27,NREC) REAL*4 AT ( 45, 27,NREC) REAL*4 Q ( 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 ', *'East-West Pseudo-Stress ', *'North-South Pseudo-Stress ', *'Scalar wind speed ', *'Sea Surface Temperature ', *'Air Temperature at 10m ', *'Specific Humidity '/ 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 UW C ivarid = ncvid(ncid,'UW ',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, +UW ,RCODE) C C statements to fill VW C ivarid = ncvid(ncid,'VW ',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, +VW ,RCODE) C C statements to fill Spd C ivarid = ncvid(ncid,'Spd ',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, +Spd ,RCODE) C C statements to fill SST C ivarid = ncvid(ncid,'SST ',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, +SST ,RCODE) C C statements to fill AT C ivarid = ncvid(ncid,'AT ',rcode) CALL NCVINQ(NCID,ivarid,DUMMY,NTP,NVDIM,VDIMS,NVS,RCODE) LENSTR=1 DO 100 J=1,NVDIM CALL NCDINQ(NCID,VDIMS(J),DUMMY,NDSIZE,RCODE) LENSTR=LENSTR*NDSIZE START(J)=1 COUNT(J)=NDSIZE 100 CONTINUE CALL NCVGT(NCID,ivarid,START,COUNT, +AT ,RCODE) C C statements to fill Q C ivarid = ncvid(ncid,'Q ',rcode) CALL NCVINQ(NCID,ivarid,DUMMY,NTP,NVDIM,VDIMS,NVS,RCODE) LENSTR=1 DO 110 J=1,NVDIM CALL NCDINQ(NCID,VDIMS(J),DUMMY,NDSIZE,RCODE) LENSTR=LENSTR*NDSIZE START(J)=1 COUNT(J)=NDSIZE 110 CONTINUE CALL NCVGT(NCID,ivarid,START,COUNT, +Q ,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,130) 130 format('number of variables has changed') C do 200 i=1,nvars do 160 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 200 160 continue write(6,170) name(j) 170 format('unknown variable ',a50) write(6,180) 180 format('rerun gennet') stop 200 continue C CALL NCCLOS(NCID,RCODE) C C C HERE IS WHERE YOU WRITE STATEMENTS TO USE THE DATA C C C STOP END