program rdc2f CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC C Name - rdc2hdf.f Type - Program C Language - ftn C Version - 1.0 Date - 11/10/92 C Programmer-Madira Mukherjee(SAIC) C C Purpose - This program reads ISCCP_C2_monthly average data C from HDFformatted file. C C Input - Monthly HDF ISCCP_c2 files in the name c2_hdf_yymm00 C Output- Report file named ISCCP_C2_yymm.rpt C C key parameters C ddate-the data date (yymm)that you wish to C dump. C nbytes-6596 number of bytes C convdata- converted values for output C hdfname- name of hdf file C begin1- beginning of cell number C end1 - ending of requested cell number C areatyp-indicating character for subsetting C based on region. C gmtsel-selected gmt C parnum- selected parameter number C refsel-refrence number for selected parameter C dataselect-data count 0 through 255 C C C Subroutines called - C get input: gets input data date C C getfile:reads HDF file name C C iddescp-year and month of the file as id C and description of the file. C C getarea:requests for region type on the basis C of indicated cell number begin and end. C C convdat:gets physical units and their attributes C for conversion tables. C C getdtyp-requests for the line number to indicate C the parameter required for conversion. C C condata-receives the parameter indicated through C the line number and applies the conversion table. C CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC integer maxrank,listsiz parameter(maxrank=2,listsiz=648) parameter(maxcnt=255) real TMPTAB(0:maxcnt),TMPVAR(0:maxcnt) real PRETAB(0:maxcnt),PRWTAB(0:maxcnt) real RFLTAB(0:maxcnt),TAUTAB(0:maxcnt) real OZNTAB(maxcnt) character ddate*4,hdfname*36,areatyp*1 character outfile*36 integer begin1,end1,nbytes,gmtsel,parnum,refsel parameter (nbytes=6596) real convdata(nbytes) integer dataselect(nbytes) character contkey c******************get input*************************************** write(6,*) 'This program reads the ISCCP_C2_DATA from HDF' write(6,*) 'formatted files. The input filename is built ' write(6,*) 'according to naming conventions formed by the' write(6,*) 'Langley DAAC. If you have changed the name of' write(6,*) 'the file or need to specify a path , you will ' write(6,*) ' need to modify this program. Enter (Q) to quit ' write(6,*) 'or return to continue. ' write(6,*) read(5,'(a)') contkey if (contkey.eq.'Q' .or.contkey.eq.'q') then print *, 'EXITING PROGRAM.........' stop else call getinput (ddate) call getfile(ddate,hdfname,outfile) print *,' ' print *,'INPUT FILE NAME IS ',hdfname print *, ' ' print *,'OUTPUT FILE NAME IS ',outfile call iddescp(hdfname) c call getarea(areatyp,begin1,end1) call convdat(hdfname,TMPTAB,TMPVAR,PRETAB,PRWTAB, & RFLTAB,TAUTAB,OZNTAB) call getdtyp(hdfname,refsel,gmtsel,convdata,dataselect, & parnum,TMPTAB,TMPVAR,PRETAB,PRWTAB,RFLTAB,TAUTAB,OZNTAB, & areatyp,begin1,end1) endif end subroutine getinput(ddate) C CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC C C Name - getinput Type - subroutine C Version - 1.0 Date- 11/10/92 Programmer-Madira Mukherjee(SAIC) C C Purpose - This subroutine asks for the data date (yymm) of C the HDF to read. C C Input parameter -ddate -the data date(yymm) C CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC character ddate*4 write(6,10) 10 format ('ENTER DATA DATE OF HDF FILE TO READ(yymm) :',$) read(5,20)ddate 20 format(a4) print *, ' ' print *,'READING FILE DESCRIPTION............PLEASE WAIT..' return end subroutine getfile(ddate,hdfname,outfile) C CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC C C Name- getfile Type - Subroutine C C Version - 1.0 Date - 11/10/92 Programmer- Madira Mukherjee(SAIC) C C Purpose- Read information from HDF files C C Input parameter - ddate- the data date of the month of data to C be read. C C Output parameter- C outfile-ouputfile ISCCP_C2_yymm.rpt C C Subroutines called : HDF routines C CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC character ddate*4,hdfname*36,outfile*50 hdfname = 'c2_3hrlymon_' // ddate outfile ='c2_3hrlymon_' // ddate // '.rpt' open(20,file=outfile,form='formatted') return end subroutine iddescp(hdfname) C CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC C Name - iddescp Type - subroutine C C Version - 1.0 date - 11/12/92 Programmer- Madira Mukherjee(SAIC) C C Purpose - This subroutine reads the file id and description C C Input parameter C hdfname-the name of the HDF input file C maxlen-maximum length for file id and file description C first - set to 1 C C Output parameter- C hdfname- name of hdf file C C Key Local Parameters - C iret - return code from HDF routines C dfile-pointer to HDF file C id - file id C desc-file description C C Subroutines Called- C HDF functions to get file id,file description C CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC C integer maxrank,DFACC_read,first,maxlen parameter (maxrank=2,DFACC_read = 1, first = 1,maxlen =20000) integer Hopen,dagfid,dagfds,dfile,Hclose character hdfname*36, id*255,desc*20000 dfile= Hopen(hdfname,DFACC_read,0) if (dfile.eq.0)then print *,'ERROR OPENING HDF FILE ' stop endif iret = dagfid(dfile,id,maxlen,first) if (iret.eq.-1)then write(20,*) 'ERROR IN GETTING FILE ID' write(20,*) stop else write(20,*)'FILE ID : ',id write(20,*) endif iret = dagfds(dfile,desc,maxlen,first) if (iret.eq.-1) then write(20,*) 'ERROR ON GETTING FILE DESCRIPTION' stop else write(20,*) write(20,*),'FILE DESCRIPTION IS AS FOLLOWS: ' write(20,*)desc endif iret = Hclose(dfile) return end subroutine getarea(areatyp,begin1,end1) C CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC C Name-getarea Type - subroutine C C Version - 1.0 date-11/12/92 Programmer-Madira Mukherjee(SAIC) C C Purpose- This program asks the user to enter the cell numbers C to subset.If no subsetting required enter N or n. C C Input parameter- C begin1-starting cell number C end1 -last cell number C areatyp-type of subsetting required C c C Subroutine called- C NONE C CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC character areatyp*1 integer begin1,end1 print *,' ' print *,'ENTER IF YOU WOULD LIKE TO FURTHER SUBSET BASED' write (*,55) 'CELL NUMBER(C) OR NO SUBSETTING(N)' 55 format(A,$) read (*,'(a1)') areatyp print *,' ' if (areatyp.ne.'N'.and.areatyp.ne.'n')then if(areatyp.eq.'C'.or.areatyp.eq.'c')then write(*,57) 57 format('ENTER BEGINNING ENDING CELL BETWEEN 1 AND 6596: ',$) read(*,*)begin1,end1 endif else begin1 =1 end1 =6596 endif return end subroutine convdat(hdfname,TMPTAB,TMPVAR,PRETAB,PRWTAB, & RFLTAB,TAUTAB,OZNTAB) C CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC C Name- convdat Type- subroutine C C version-1.0 date-11/16/92 Programmer-Madira Mukherjee(SAIC) C C Purpose- This subroutine retrieves the data of the conversion C table from the HDF file where each of these tables C are stored as scientific dataset. C C Input parameter- C hdfname-name of the hdf file C Output parameter- CTMPTAB-conversion counts(1-253)to temperature(165k-345k) CTMPVAR-conversion counts(1-253)to temp. variance(.075k-85k) CPRETAB-conversion counts(1-241)to pressure(1mb-1200mb) CRFLTAB-conversion counts(1-253)to reflectance(.0-1.108) CTAUTAB-conversion counts(1-231)to TAU (.02-119.59) CPRWTAB-conversion counts(1-253)to precipitable water(humidity) C (.0-8.0)in centimeters. COZNTAB-conversion counts(1-253)to ozone abundance (0-515)in C dobson units. C C C key local parameters- C iret - return code from HDF routines C maxcnt-count maximum 255 C Dimsizc-dimension size for conversion table C 1 by 256 C maxconl-maximum number of converting labels 7 C label - an array of seven labels for 7 tables C unit - an array of 7 units for 7 tables C fmt - an array of 7 formats for 7 tables C C Subroutine called- C HDF routines C CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC parameter(maxrank=2) integer maxcnt,maxrank,Dimsizc(maxrank) integer dsgdims,dsgdast,dsgdata integer numdims integer iret character hdfname*36,cood*2 parameter (maxconl=7) character*150 label(maxconl) character*20 unit(maxconl) character*10 fmt parameter (maxcnt=255) real TMPTAB(0:maxcnt),TMPVAR(0:maxcnt) real PRETAB(0:maxcnt),PRWTAB(0:maxcnt) real RFLTAB(0:maxcnt),TAUTAB(0:maxcnt) real OZNTAB(0:maxcnt) iret = dsgdims(hdfname,numdims,Dimsizc,maxrank) if (iret.ne.0) then print *,'ERROR IN GETTING DIMENSIONS FOR CONVERSION' stop else write(20,*) c write(20,*)'DIMENSIONS ARE',Dimsizc(1),Dimsizc(2) c write(6,'(2I5)') 'DIMENSIONS ARE',Dimsizc(1),Dimsizc(2) endif C******************************************************* iret = dsgdast(label(1),unit(1),fmt,cood) if (iret.ne.0) then print *,'ERROR IN TMPTAB ATTRIBUTES' stop endif iret = dsgdata(hdfname,2,Dimsizc,TMPTAB) if (iret.ne.0) then print *,'ERROR IN GETTING TMPTAB DATA' stop c else c do 30 i = 1,256 c 30 write(*,40) i,TMPTAB(i) c 40 format(' i=',I6,F10.3) endif C******************************************************* iret = dsgdast(label(2),unit(2),fmt,cood) if (iret.ne.0)then print *,'ERROR TMPVAR ATTRIBUTES' stop endif iret = dsgdata(hdfname,2,Dimsizc,TMPVAR) if (iret.ne.0)then print *,'ERROR IN GETTING TMPVAR DATA' stop c else c do 30 i = 1,256 c 30 write(*,40) i,TMPVAR(i) c 40 format(' i=',I6,F10.3) endif C************************************************************ iret = dsgdast(label(3),unit(3),fmt,cood) if (iret.ne.0) then print *,'ERROR PRETAB ATTRIBUTES' stop endif iret = dsgdata(hdfname,2,Dimsizc,PRETAB) if (iret.ne.0) then print *,'ERROR IN GETTING PRETAB DATA' stop c else c do 30 i = 1,256 c 30 write(*,40) i,PRETAB(i) c 40 format(' i=',I6,F10.3) endif C************************************************************ iret = dsgdast(label(4),unit(4),fmt,cood) if(iret.ne.0)then print *,'ERROR RFLTAB ATTRIBUTES' stop endif iret = dsgdata(hdfname,2,Dimsizc,RFLTAB) if(iret.ne.0)then print *,'ERROR IN GETTING RFLTAB DATA' stop c else c do 30 i = 1,256 c 30 write(*,40) i,RFLTAB(i) c 40 format(' i=',I6,F10.3) endif C************************************************************* iret = dsgdast(label(5),unit(5),fmt,cood) if(iret.ne.0)then print *,'ERROR TAUTAB ATTRIBUTES' stop endif iret = dsgdata(hdfname,2,Dimsizc,TAUTAB) if(iret.ne.0)then print *,'ERROR IN GETTING TAUTAB DATA' stop c else c do 30 i = 1,256 c 30 write(*,40) i,TAUTAB(i) c 40 format(' i=',I6,F10.3) endif C*************************************************************** iret = dsgdast(label(6),unit(6),fmt,cood) if (iret.ne.0) then print *,'ERROR PRWTAB ATTRIBUTES' stop endif iret = dsgdata(hdfname,2,Dimsizc,PRWTAB) if (iret.ne.0) then print *,'ERROR IN GETTING PRWTAB DATA' stop c else c do 30 i = 1,256 c 30 write(*,40) i,PRWTAB(i) c 40 format(' i=',I6,F10.3) endif C**************************************************************** iret = dsgdast(label(7),unit(7),fmt,cood) if(iret.ne.0)then print *,'ERROR OZNTAB ATTRIBUTES' stop endif iret = dsgdata(hdfname,2,Dimsizc,OZNTAB) if (iret.ne.0)then print *,'ERROR GETTING OZNTAB DATA' stop c else c do 30 i = 1,256 c 30 write(*,40) i,OZNTAB(i) c 40 format(' i=',I6,F10.3) endif return end CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC C C Name-getdtyp Type- subroutine C C Version- 1.0 Date-12-1-92 Programmer-Madira Mukherjee (SAIC) C C Purpose-This subroutine allows the user to choose from the C annotation labels,which data parameters to dump. This C subroutine prints 18 labels at a time and through the C line number requested it retrieves the indicated parameter. C It reads the line number selects the parameter and C applies the convert table. C C Input parameter- C hdfname- name of the hdf file C reflist-refference list C labelist-list of labels C listsiz -size of list (648) C maxlng - maximum length of each label C startpos-starting position for retreving first dataset. C C Output parameter- C dataselect-stores integer data with count from 0 through 255 C parnum-selected parameter number C gmtsel- gmt for the selected parameter C convdata-converted value for the selected parameter C C Key local parameters- C refsel-reference selected C lnsel-line selected C C Subroutines called- C getarea-subsets based on cell number C condata-applies conversion table to selected parameter C HDF routines c C CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC subroutine getdtyp(hdfname,refsel,gmtsel,convdata,dataselect, & parnum,TMPTAB,TMPVAR,PRETAB,PRWTAB,RFLTAB,TAUTAB,OZNTAB, & areatyp,begin1,end1) integer i,k,nlabels,iret,ib,iend,j,n,begin1,end1 integer refsel,lnsel,lninp,parnum,gmtsel integer dsrref,dallist,dsgdast,dsgdims integer dsgdata,startpos,DFTAG_NDG,listsiz integer parnum,maxrank,maxcnt parameter (maxrank = 2) integer numdims,maxdata,dimsize(maxrank) parameter (startpos=8,DFTAG_NDG=720,listsiz=648) parameter (maxlng=150) parameter (maxdata=6596) byte dselect(maxdata) integer dataselect(maxdata) integer reflist(listsiz) parameter (maxcnt=255) real convdata(maxdata) real TMPTAB(0:maxcnt),TMPVAR(0:maxcnt),PRETAB(0:maxcnt) real PRWTAB(0:maxcnt),RFLTAB(0:maxcnt),TAUTAB(0:maxcnt) real OZNTAB(0:maxcnt) character*150 labelist(listsiz) character datalab*100,datunt*30,datfmt*10,cood*5 character par*5,gmt*4 character hdfname*36 character areatyp*1 nlabels= dallist (hdfname,DFTAG_NDG,reflist,labelist, & listsiz,maxlng,startpos) if(nlabels.eq.-1) then print *,'ERROR IN GETTING ANNOTATION LABELS' write(20,*),'ERROR IN GETTING ANNOTATION LABELS' write(20,*) stop endif begin1=1 end1 = 6596 call getarea(areatyp,begin1,end1) lninp=1 do 90 k=1,36 print *,' ' print *,'LABELS OF SCIENTIFIC DATASET IN FILE' print *, ' ' print *,'ITEMNUMBER LABEL ' print *, ' ' ib = (k * 18)-17 iend = ib+17 do 10 i = ib,iend if (i.gt.nlabels) go to 12 10 write(*,14)i,labelist(i) 14 format(I4,5x,A80) 12 continue lninp = 1 do while (lninp.ge.1) print *,' ' print *,'ENTER ITEM NUMBER TO BE CONVERTED IN PHYSICAL UNITS' print *,'ITEM NUMBER MUST BE BETWEEN 1 THROUGH 648' print *,'PLEASE ENTER -1 TO CONTINUE AND 0 TO DISCONTINUE' read(*,*) lninp if(lninp.eq.-1) go to 90 if(lninp.eq.0) then print *, 'EXITING PROGRAM .....' stop endif if (lninp.ge.1.and.lninp.le.nlabels) then lnsel= lninp refsel= reflist(lnsel) print *,labelist(lnsel) print *,'CONVERTING DATA.........PLEASE WAIT.......' read(labelist(lnsel),*) par,parnum,gmt,gmtsel c print *,parnum,gmtsel end if c*************reading reference number************************* iret = dsrref(hdfname,refsel) if (iret.eq.-1) then print *,'ERROR ON GOING TO SPECIFIED REFFERENCE' stop endif c*************get dimension for 1 by 6596 data**************** iret = dsgdims(hdfname,numdims,dimsize,maxrank) if (iret.ne.0) then print *,'ERROR ON GETTING DATA DIMENSIONS' stop endif c************GET DATA ATTRIBUTES *************************** iret= dsgdast(datalab,datunt,datfmt,cood) if (iret.ne.0) then write(20,*),'ERROR ON GETTING DATA ATTRIBUTES' write(20,*) print *,'ERROR GETTING DATA ATTRIBUTES' stop else write(20,*)' ' write(20,*)' ' write(20,*),'DATA ATTRIBUTES ARE AS FOLLOWS: ' write(20,*)' ' write(20,*),'LABEL : ',datalab write(20,*),'UNIT : ',datunt write(20,*),'FORMAT: ',datfmt write(20,*),'GMT : ',gmtsel write(20,*),'VAR : ',parnum write(20,*),'DATA VALUES ' write(20,*) ' ' write(20,*) ' ' write(20,*),'CONVERTED DATA VALUES ARE: ' write(20,*)' ' write(20,*),' CELL DATA CELL DATA CELL DATA & CELL DATA' write(20,*)' ' endif c*************get data 1 by 6596 ****************************** iret = dsgdata (hdfname,2,dimsize,dselect) c write(*,*) dselect if (iret.ne.0) then print *,'ERROR in GETTING DATA VALUE' stop endif do 120 n=1,6596 if (dselect(n).lt.0) then dataselect(n)=dselect(n) dataselect(n)=dataselect(n)+256 else dataselect(n)= dselect(n) endif 120 continue c write(*,*) dataselect call condata (convdata,dataselect,parnum,gmtsel, & TMPTAB,TMPVAR,PRETAB,PRWTAB,RFLTAB,TAUTAB,OZNTAB) c do 200 j = begin1,end1 c 200 write(*,210) j,convdata(j) c 210 format(' j=',I6,F10.3) do 200 j = begin1,end1 write(20,210)j,convdata(j) if((mod(j,4)).eq.0) then write(20,*) endif 200 continue 210 format((I6,F10.3),$) 80 end do 90 continue return end CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC C c FUNCTION CONVERTDATA C Name-condata Type-subroutine C C Version-1.0 Date-11/10/92 C Programmer-Madira Mukherjee(SAIC) c c Purpose-Assigns value to output array (var). All decoded c values are representing physical units. The conversion c tables used are stored in hdf files. c c Input parameters- c parnum-parameter number C gmtsel-gmt for selected parameter C CTMPTAB-conversion counts(1-253)to temperature(165k-345k) CTMPVAR-conversion counts(1-253)to temp. variance(.075k-85k) CPRETAB-conversion counts(1-241)to pressure(1mb-1200mb) CRFLTAB-conversion counts(1-253)to reflectance(.0-1.108) CTAUTAB-conversion counts(1-231)to TAU (.02-119.59) CPRWTAB-conversion counts(1-253)to precipitable water(humidity) C (.0-8.0)in centimeters. COZNTAB-conversion counts(1-253)to ozone abundance (0-515)in C dobson units. C C Output parameter- c convdata-converted data stored C C Key local parameter- c dataselect-stores count 0 through 255 of the idicated C parameter number. C C Subroutines called- C NONE. C CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC subroutine condata(convdata,dataselect,parnum,gmtsel, & TMPTAB,TMPVAR,PRETAB,PRWTAB,RFLTAB,TAUTAB,OZNTAB) integer parnum,gmtsel,j,nbytes,maxcnt parameter (nbytes=6596) parameter (maxcnt=255) real TMPTAB(0:maxcnt),TMPVAR(0:maxcnt),PRETAB(0:maxcnt) real PRWTAB(0:maxcnt),RFLTAB(0:maxcnt),TAUTAB(0:maxcnt) real OZNTAB(0:maxcnt) real convdata(nbytes) integer dataselect(nbytes) if (parnum.eq.1.or.parnum.eq.2.or. & parnum.eq.3.or.parnum.eq.4) then do 10 j=1,6596 convdata(j)= real(dataselect(j)) 10 continue endif if (parnum.eq.14.or.parnum.eq.25.or.parnum.eq.28.or. & parnum.eq.34.or.parnum.eq.38.or.parnum.eq.42.or. & parnum.eq.50.or.parnum.eq.54.or.parnum.eq.58.or. & parnum.eq.65.or.parnum.eq.66.or.parnum.eq.68.or. & parnum.eq.31.or.parnum.eq.46.or.parnum.eq.60.or. & parnum.eq.69.or.parnum.eq.38) then do 20 j= 1,6596 convdata(j)= TMPTAB(dataselect(j)) 20 continue endif if (parnum.eq.15.or.parnum.eq.16.or & .parnum.eq.61) then do 25 j= 1,6596 convdata(j)= TMPVAR(dataselect(j)) 25 continue endif if (parnum.eq.11.or.parnum.eq.12.or.parnum.eq.13.or. & parnum.eq.27.or.parnum.eq.30.or.parnum.eq.33.or. & parnum.eq.37.or.parnum.eq.41.or.parnum.eq.45.or. & parnum.eq.24.or.parnum.eq.49.or.parnum.eq.53.or. & parnum.eq.57.or.parnum.eq.64.or.parnum.eq.67) then do 35 j = 1, 6596 convdata(j)= PRETAB(dataselect(j)) 35 continue endif if (parnum.eq.62) then do 40 j= 1,6596 convdata(j)= RFLTAB(dataselect(j)) 40 continue endif if (parnum.eq.17.or.parnum.eq.18.or.parnum.eq.19.or. & parnum.eq.20.or.parnum.eq.21.or.parnum.eq.22.or. & parnum.eq.35.or.parnum.eq.39.or.parnum.eq.43.or. & parnum.eq.59.or.parnum.eq.47.or.parnum.eq.51.or. & parnum.eq.55.or.parnum.eq.59) then do 45 j=1,6596 convdata(j)=TAUTAB(dataselect(j)) 45 continue endif if (parnum.eq.70) then do 50 j=1,6596 convdata(j)=PRWTAB(dataselect(j)) 50 continue endif if (parnum.eq.71) then do 55 j = 1,6596 convdata(j)= OZNTAB(dataselect(j)) 55 continue endif if (parnum.eq.5.or.parnum.eq.6.or.parnum.eq.7.or. & parnum.eq.63) then do 60 j= 1,6596 if (dataselect(j).ne.255) then convdata(j)=real(dataselect(j)) else convdata(j)= -1000. endif 60 continue endif if (parnum.eq.8.or.parnum.eq.10.or.parnum.eq.23.or. & parnum.eq.26.or.parnum.eq.29.or.parnum.eq.32.or. & parnum.eq.36.or.parnum.eq.40.or.parnum.eq.44.or. & parnum.eq.48.or.parnum.eq.52.or.parnum.eq.56.or. & parnum.eq.72) then do 70 j = 1, 6596 if (dataselect(j).ne.255) then convdata(j)= real(dataselect(j)) convdata(j)= convdata(j)/2. else convdata(j)= -1000. endif 70 continue endif if (parnum.eq.9) then do 110 j= 1,6596 if (dataselect(j).ne.255) then if (gmtsel.eq.255) then convdata(j)= real(dataselect(j)) convdata(j)= convdata(j)/2. else convdata(j)= real(dataselect(j)) endif else convdata(j)= -1000. endif 110 continue endif return end