##STEP 2 #!/bin/ksh if [[ $# -ne 2 ]] then echo "Usage: $0 last_year(2007) GHCN.CL" exit ; fi fortran_compile=$FC if [[ $FC = '' ]] then echo "set an environment variable FC to the fortran_compile_command like f90" echo "or do all compilation first and comment the compilation lines" exit fi infile=to_next_step/Ts.txt ; label=$2 ; last_year=$1 echo "converting text to binary file" rm -f Ts.txt ; ln -s $infile Ts.txt ${fortran_compile} text_to_binary.f -o text_to_binary.exe ; text_to_binary.exe $last_year echo "breaking up Ts.bin into 6 zonal files" ${fortran_compile} split_binary.f -o split_binary.exe ; split_binary.exe echo "trimming Ts.bin1-6" ${fortran_compile} trim_binary.f -o trim_binary.exe ; trim_binary.exe for i in 1 2 3 4 5 6 do mv Ts.bin${i}.trim Ts.${label}.$i done rm -f Ts.bin Ts.txt echo "preparations for urban adjustment" ln -s input_files/v2.inv . ${fortran_compile} invnt.f -o invnt.exe ; ./invnt.exe Ts.${label} > Ts.${label}.station.list echo 'adding population-flag and country code to station list' ${fortran_compile} reformat_inv.f -o reformat_inv.exe ; reformat_inv.exe ./addpopcc Ts.${label}.station.list cp -p Ts.${label}.station.list.x Ts.${label}.station.list_ext mv Ts.${label}.station.list Ts.${label}.station.list_orig mv Ts.${label}.station.list.x Ts.${label}.station.list echo 'adding population-flag and country code to data files' ${fortran_compile} addRSUcc.f -o addRSUcc.exe ./addRSUcc Ts.${label} echo "Creating annual anomalies ANN.d$1.[1-6]" ./toANNanom Ts.${label} ${fortran_compile} PApars.f tr2.f t2fit.f -o PApars.exe ${fortran_compile} flags.f -o flags.exe ${fortran_compile} padjust.f -o padjust.exe ./PApars ${label} ./padjust Ts.${label} ./invnt.exe Ts.${label}.PA > Ts.${label}.PA.station.list mv ANN* *x *ext Ts*bin* *exe *log* *use* work_files/. mv Ts* to_next_step/. ; mv *list work_files/. rm -f v2.inv ### text_to_binary.exe parameter (iyear1=1880, lim=20, multm=2, ibad=9999) integer info(9), monthly(12), iok(12) integer lat, lon, id(0:multm), ht,hto, mmax(0:multm) character title*80, name*36,nameo*36, line*64, sid*12 integer,allocatable,dimension(:,:) :: idata call getarg(1,name) read(name,*) lastyr MTOT=12*(lastyr-iyear1+1) write(*,*) 'last year with data:',lastyr allocate( idata(mtot,0:multm) ) title='GHCN V2 Temperatures (.1 C)' info(1) = 1 info(2) = 1 info(3) = 6 info(4) = MTOT info(5) = MTOT+15 info(6) = iyear1 info(7) = 9999 info(8) = -9999 info(9) = MTOT open(1,file='Ts.txt',form = 'formatted') open(2,file='Ts.bin',form='unformatted') open(88,file='short.station.list',form='formatted') open(99,file='station.log',form='formatted') write(2) info, title ict = 0 mult=0 id1o=-99 read(1, '(a64)') line 10 continue ict = ict + 1 if (1000*(ict/1000).eq.ict) print*,ict,'processed so far' read(line(2:64), '(i4,i5,a12,i4,a36)') lat, lon, sid, ht, name C print*, line(1:64) read(sid(4:12), '(i9)') idfull read(sid(4:11), '(i8)') id1 if(id1.eq.id1o) then mult=mult+1 if(mult.gt.multm) then write(*,*) 'increase multm from',multm stop 13 end if else if(id1o.lt.0) go to 15 do m=0,mult if(mmax(m).ge.lim) write(2) (idata(i,m),i=1,MTOT),lato,lono, * id(m),hto,nameo,1,MTOT if(mmax(m).lt.lim) write(88,*) id(m),' ',nameo,' dropped' end do 15 mult=0 id1o=id1 end if id(mult)=idfull do i = 1, MTOT idata(i,mult) = ibad end do do m = 1,12 iok(m) = 0 end do mmax(mult)=0 monmin=MTOT+1 monmax=0 20 continue ieof = 1 read(1, '(a64)', end=30) line if (line(1:1).eq.' ') then ieof = 0 goto 30 end if read(line, '(i4, 12i5)') iyr, (monthly(m), m = 1, 12) C print*, line ix = (iyr - iyear1)*12 do m = 1, 12 idatum = monthly(m) if (idatum.ne.9999) then idata(ix + m,mult) = idatum iok(m)=iok(m)+1 if(mmax(mult).lt.iok(m)) mmax(mult)=iok(m) if(monmin.gt.ix+m) monmin=ix+m monmax=ix+m end if end do goto 20 30 continue write(99,*) mult, id(mult), mmax(mult),lim, monmin,monmax lato=lat lono=lon hto=ht nameo=name if (ieof.eq.0) goto 10 do m=0,mult if(mmax(m).ge.lim) write(2) (idata(i,m),i=1,MTOT),lato,lono, * id(m),hto,nameo,1,MTOT if(mmax(m).lt.lim) write(88,*) id(m),' ',nameo,' dropped' end do close(1) close(2) write(*,*) 'number of station ids:',ict stop 0 end ####### split_binary.exe integer,allocatable,dimension(:) :: idata integer info(9) character title*80,name*36,fileo*7 open(1,file='Ts.bin',form='unformatted') read(1,end=100) info,title do n=51,56 write(fileo,'(a6,i1)') 'Ts.bin',n-50 open(n,file=fileo,form='unformatted') write(n) info,title end do allocate (idata(info(4))) 10 read(1,end=100) idata,Lat,Lon,ID,iht,name,m1,m2 !! write(99,*) Lat,Lon,ID !! if(ID.eq.603550002) write(98,'(12I6)') idata mu=lat+899 if(mu.lt.0) mu=0 mu=56-mu/300 write(mu) idata,Lat,Lon,ID,iht,name,m1,m2 go to 10 100 stop 0 end #### trim_binary.exe integer,allocatable,dimension(:) :: idata,idato integer info(9) character title*80,name*36,nameo*36,filei*7,fileo*12 do n=1,6 write(filei,'(a6,i1)') 'Ts.bin',n open(2,file=filei,form='unformatted') write(fileo,'(a7,a5)') filei,'.trim' open(3,file=fileo,form='unformatted') read(2,end=300) info,title i4=info(4) allocate (idata(i4),idato(i4)) read(2,end=200) idato,Lato,Lono,IDo,ihto,nameo,mx,my m1o=info(7) m2o=info(7) do m=1,i4 if(abs(idato(m)).gt.8000) then idato(m)=info(7) else m2o=m if(m1o.eq.info(7)) m1o=m end if end do info(1)=m1o info(9)=m2o write(3)info,title 10 m1=info(7) m2=info(7) read(2,end=100) idata,Lat,Lon,ID,iht,name,mx,my do m=1,i4 if(abs(idata(m)).gt.8000) then idata(m)=info(7) else m2=m if(m1.eq.info(7)) m1=m end if end do write(3) (idato(m),m=m1o,m2o),Lato,Lono,IDo,ihto,nameo,m1,m2 if(m2o.ge.i4-4) write(*,*) IDo,nameo,(idato(i),i=i4-4,i4) do 20 m=1,i4 20 idato(m)=idata(m) Lato=Lat Lono=Lon IDo=ID ihto=iht nameo=name m1o=m1 m2o=m2 go to 10 100 write(3) (idato(m),m=m1o,m2o),Lato,Lono,IDo,ihto,nameo,m1,m2 if(m2o.ge.i4-4) write(*,*) IDo,nameo,(idato(i),i=i4-4,i4) go to 250 200 info(1)=info(7) info(9)=info(7) write(3)info,title 250 deallocate(idata,idato) close (2) close (3) end do stop 0 300 stop 1 end ####echo "preparations for urban adjustment" ln -s input_files/v2.inv . ##v2,inv ###invnt.exe ${fortran_compile} invnt.f -o invnt.exe ; ./invnt.exe Ts.${label} > Ts.${label}.station.list C**** C**** Input: 15 binary station data C**** C**** extracts station information PARAMETER(ITRIM=1,IYRBEG=1880,IYREND=3001) PARAMETER(NRECPY=12, SCL=10., NDPRYR=NRECPY) PARAMETER(MONM=NDPRYR*(IYREND-IYRBEG+1),NTRL=14+ITRIM) CHARACTER*6 IDNOAA,IDNOW CHARACTER*10 PLTYPE(14)/' January',' February',' March', * ' April',' May',' June',' July', * ' August',' September',' October',' November', * ' December',' Monthly',' Normed'/ CHARACTER*25 QUAN(2)/'Surf.Air Temperature (C)', * 'Precipitation (mm)'/ CHARACTER*80 TITLE,NAME*36,fname/' '/ INTEGER INFO(8+ITRIM),ITRL(NTRL),ITR1(4),ID/0/ DIMENSION PE(MONM),IDATA(MONM),ID1(MONM),PL(2,MONM) COMMON/DIFF/AVG(14),SD(0:12) EQUIVALENCE (ITRL(5),NAME),(ITRL(1),ITR1(1)), * (ITRL(3),IDNOW) C**** INITIALIZE CALL GETARG(1,fname) NDOT=INDEX(fname,' ') do 900 nfl=1,6 write(fname(NDOT:NDOT+1),'(A1,I1)') '.',nfl NPRINT=0 NCUR=1 OPEN(15,STATUS='OLD',FILE=fname,FORM='UNFORMATTED') READ(15) INFO,TITLE N1=INFO(1) N2=INFO(4) IF(ITRIM.GT.0) N2=INFO(8+ITRIM) IF(INFO(6).LT.IYRBEG) STOP 'IYRBEG TOO HIGH' LENGTH=N2-N1+1 IF(INFO(4).GT.MONM) STOP 'IYREND TOO LOW' MBAD=INFO(7) XBAD=MBAD IF(INFO(1).EQ.MBAD) go to 899 ! no data 100 CALL INTT(IDATA,MONM,MBAD,PE,XBAD) CALL SPREAD(IDATA,ITRL,LENGTH,NTRL) IF(ID.GT.ITRL(3)) GO TO 800 IYR0=(N1-1)/NDPRYR IYRL=(N2+NRECPY-1)/NDPRYR N1JAN=IYR0*NRECPY+1 C WRITE(6,*) ITRL(3),INFO(6)+IYR0,INFO(6)+IYRL-1 DO 210 N=N1JAN,MONM PE(N)=IDATA(N) 210 ID1(N)=NINT(SCL*IDATA(N)) MISS=NINT(SCL*XBAD) M=0 WRITE(6,'(A,I9,1X,A36,1x,a,I5,I6)') fname(1:NDOT+2),ITR1(3),NAME, * 'lat,lon (.1deg)',(ITR1(i),i=1,2) NPRINT=NPRINT+1 800 N1=ITRL(14) IF(ITRIM.GT.0) N2=ITRL(14+ITRIM) LENGTH=N2-N1+1 NCUR=NCUR+1 IF (N1.NE.INFO(7)) GOTO 100 899 CLOSE (15) 900 continue STOP END SUBROUTINE SPREAD(IDATA,ITRL,LENGTH,NTRL) DIMENSION IDATA(LENGTH),ITRL(NTRL) READ(15) IDATA,ITRL RETURN END SUBROUTINE INTT(IDATA,MONM,MBAD,PE,XBAD) DIMENSION IDATA(MONM),PE(MONM) DO 333 I=1,MONM IDATA(I)=MBAD PE(I)=XBAD 333 CONTINUE RETURN END ####echo 'adding population-flag and country code to station list' ${fortran_compile} reformat_inv.f -o reformat_inv.exe ; reformat_inv.exe ./addpopcc Ts.${label}.station.list cp -p Ts.${label}.station.list.x Ts.${label}.station.list_ext mv Ts.${label}.station.list Ts.${label}.station.list_orig mv Ts.${label}.station.list.x Ts.${label}.station.list character*106 line character*74 linex open(1,file='v2.inv',form='formatted') open(2,file='v2.invx',form='formatted') 10 read(1,'(a)',end=100) line linex=line(1:68)//line(102:102)//line(101:101)//line(103:106) write(2,'(a)') linex go to 10 100 stop end #####echo 'adding population-flag and country code to data files' ${fortran_compile} addRSUcc.f -o addRSUcc.exe ./addRSUcc Ts.${label} parameter (iylast=3000,i4=(iylast-1701+1)*12) integer info(9),idata(i4) character title*80,name*36,line*200 open(1,file='fort.1',form='formatted') open(2,file='fort.2',form='unformatted') open(3,file='fort.3',form='unformatted') read(2) info,title write(3) info,title ibad=info(7) if(info(1).eq.ibad) stop 'no stations' m1o=info(1) m2o=info(9) 10 read(2,end=300) (idata(i),i=m1o,m2o),Lat,Lon,ID,iht,name,m1,m2 20 read(1,'(a)',end=400) line indcc=index(line,'cc') if(indcc.lt.80) stop 'cc missing' read(line(indcc-78:indcc-70),'(i9)') IDo if(ID.ne.IDo) go to 20 name(28:30)=line(indcc+8:indcc+10) ! add brightness index 0-254 name(31:31)=line(indcc-3:indcc-3) ! add US-brightness index 123 name(32:32)=line(indcc-4:indcc-4) ! add population flag RSU name(33:33)=line(indcc-2:indcc-2) ! add brightness index ABC name(34:36)=line(indcc+3:indcc+5) ! add country code write(3) (idata(i),i=m1o,m2o),Lat,Lon,ID,iht,name,m1,m2 m1o=m1 m2o=m2 go to 10 300 stop 0 400 stop 'station-list too short' end ####echo "Creating annual anomalies ANN.d$1.[1-6]" ./toANNanom Ts.${label} parameter (iylast=3000,i4o=(iylast-1701+1),i4=i4o*12) integer info(9),idata(0:i4),iann(i4o),llih(4) integer infoo(9),ianno(i4o),lliho(4) character title*80,name*36,nameo*36,titleo*80/ * 'ANNUAL MEAN TEMPERATURE ANOMALIES (.01 C)'/ open(2,file='fort.2',form='unformatted') open(3,file='fort.3',form='unformatted') read(2,end=300) info,title write(*,*) title,info ibad=info(7) if(info(1).eq.ibad) stop 'no stations' do i=2,8 infoo(i)=info(i) end do infoo(3)=5 ! ann.means (6=mon.means) infoo(4)=info(4)/12 ! length of time series infoo(5)=infoo(4)+info(5)-info(4) ! length of records m1=info(1) m2=info(9) 10 do i=0,i4 idata(i)=ibad end do Cw write(*,*) 'reading 2',1+m2-m1 call sread(idata(m1),1+m2-m1,lliho,nameo,m1n,m2n) iy1=1+(m1-1)/12 mon1=12*(iy1-1) ! = december of year iy1-1 nyrs=(m2+11-mon1)/12 if(nyrs-1+iy1.gt.i4o) nyrs=i4o+1-iy1 if(nyrs.le.0) stop 'no station records - impossible' Cw write(*,*) 'm1,m2,mon1,nyrs,iy1',m1,m2,mon1,nyrs,iy1 call annav(idata(mon1),nyrs, ianno, iy1, i1,i2, ibad) Cw write(*,*) 'after annav',i1,i2 m1=m1n m2=m2n if(i1.eq.ibad) go to 10 ! stop 11 ! go to 10 infoo(1)=i1 infoo(9)=i2 write(3) infoo,titleo 20 do i=0,i4 idata(i)=ibad end do call sread(idata(m1),1+m2-m1,llih,name,m1n,m2n) iy1=1+(m1-1)/12 mon1=12*(iy1-1) ! = december of year iy1-1 nyrs=(m2+11-mon1)/12 if(nyrs-1+iy1.gt.i4o) nyrs=i4o+1-iy1 if(nyrs.le.0) stop 'no station records - impossible' call annav(idata(mon1),nyrs, iann, iy1, i1n,i2n, ibad) if(i1n.ne.ibad) then call swrite (ianno(i1),1-i1+i2,lliho,nameo,i1n,i2n) else m1=m1n m2=m2n go to 20 end if do 40 m=i1n,i2n 40 ianno(m)=iann(m) do n=1,4 lliho(n)=llih(n) end do nameo=name i1=i1n i2=i2n m1=m1n m2=m2n if(m1.ne.ibad) go to 20 100 call swrite (ianno(i1),1-i1+i2,lliho,nameo,ibad,ibad) stop 0 300 stop 1 end subroutine sread (idata,ndim,llih,name,m1,m2) character*36 name dimension idata(ndim),llih(4) read(2) idata,llih,name,m1,m2 return end subroutine swrite (idata,ndim,llih,name,m1,m2) character*36 name dimension idata(ndim),llih(4) write(3) idata,llih,name,m1,m2 C do i=1,ndim C write(*,*) i,idata(i) C end do C if(ndim.gt.0) stop 11 return end subroutine annav (mon,nyrs, iann, iy1, iy1n,iy2n, ibad) dimension mon(12,nyrs),iann(nyrs),seas(4),av(12) do m=1,12 ny=0 av(m)=0. do n=1,nyrs if(mon(m,n).ne.ibad) then ny=ny+1 av(m)=av(m)+mon(m,n) end if end do if(ny.eq.0) stop 'station too short - impossible' av(m)=av(m)/ny end do Cw write(*,*) av iy1n=ibad iy2n=ibad nok=0 do n=1,nyrs C**** find 4 seasonal means ; mon(1,.)=dec ... mon(12,.)=nov-data do is=1,4 seasis=0. nms=0 do m=1+(is-1)*3,3+(is-1)*3 if(mon(m,n).ne.ibad) then nms=nms+1 seasis=seasis+(mon(m,n)-av(m)) end if end do seas(is)=ibad if(nms.gt.1) seas(is)=seasis/nms end do C**** find annual mean anomalies from seasonal means sann=0. nss=0 do is=1,4 if(seas(is).ne.ibad) then sann=sann+seas(is) nss=nss+1 end if end do iann(iy1+n-1)=ibad if(nss.gt.2) then iy2n=iy1+n-1 iann(iy2n)=nint(10.*sann/nss) if(nok.eq.0) iy1n=iy2n nok=nok+1 end if Cw write(*,*) iy1+n-1, iann(iy1+n-1) end do ! iy1n=ibad ! to stop run return end ###${fortran_compile} PApars.f tr2.f t2fit.f -o PApars.exe ###${fortran_compile} flags.f -o flags.exe parameter (lshort=7,slplim=1.,slpx=.5) character*105 title,cc*3 sumch=0. sumchp=0. nsta=0 nstap=0 nyrs=0 nyrsp=0 nshort=0 nsl1=0 nsl2=0 ndsl=0 nok=0 nokx=0 nswitch=0 nsw0=0 open(78,file='fort.78',form='formatted') open( 2,file='fort.2',form='formatted') 10 read(78,'(a)',end=100) title read(title,'(a3,i9,2f9.3,i5,5f9.3,i5,1x,i4,i5,1x,i4)',end=100) * cc,id,sl1,sl2,knee,yk,sl,ylin,rms,rms0,iy1,iy2,iy1e,iy2e nsta=nsta+1 sumch=sumch+sl*(iy2-iy1+1) nyrs=nyrs+(iy2-iy1+1) if(sl.lt.0.) then nstap=nstap+1 nyrsp=nyrsp+(iy2-iy1+1) sumchp=sumchp+sl*(iy2-iy1+1) end if C*** classify : iflag: +1 for short legs etc iflag=0 if(knee.lt.iy1+lshort.or.knee.gt.iy2-lshort) iflag=iflag+1 if(knee.lt.iy1+lshort.or.knee.gt.iy2-lshort) nshort=nshort+1 if(abs(sl1).gt.slplim) iflag=iflag+20 if(abs(sl1).gt.slplim) nsl1=nsl1+1 if(abs(sl2).gt.slplim) iflag=iflag+10 if(abs(sl2).gt.slplim) nsl2=nsl2+1 if(abs(sl2-sl1).gt.slplim) iflag=iflag+100 if(abs(sl2-sl1).gt.slplim) ndsl=ndsl+1 if(abs(sl2-sl1).gt.slpx) iflag=iflag+100 if(iflag.eq.0) nok=nok+1 if(iflag.eq.100) nokx=nokx+1 if(sl1*sl2.lt.0..and.abs(sl1).gt..2.and. * abs(sl2).gt..2) iflag=iflag+1000 if(iflag.ge.1000) nswitch=nswitch+1 if(iflag.eq.1000) nsw0=nsw0+1 write(title(101:105),'(i5)') iflag write(2,'(a)') title go to 10 100 write (*,*) 'all',nsta,-sumch/nsta,-10.*sumch/nyrs write (*,*) 'urb warm',nstap,-sumchp/nstap,-10.*sumchp/nyrsp write(*,*) '# short,sl1,sl2,dsl,ok',nshort,nsl1,nsl2,ndsl,nok,nokx write (*,*) 'switches: all , else ok ',nswitch,nsw0 stop end ####${fortran_compile} padjust.f -o padjust.exe parameter (iylast=3000,i4=(iylast-1701+1)*12) integer info(9),idata(i4),idato(i4) character header*105,title*80,name*36,nameo*36,cc*3,fn*7 open(1,file='fort.1',form='formatted') read(1,'(a80)') header read(1,'(a3,i9,2f9.3,i5,9x,f9.3,27x,i5,1x,i4,i5,1x,i4,i5)') * cc,IDc,sl1,sl2,knee,sl0,iy1,iy2,iy1e,iy2e,iflag do 200 iin=12,17 io=iin+10 fn='fort.xx' write(fn(6:7),'(i2)') iin open(iin,file=fn,form='unformatted') write(fn(6:7),'(i2)') io open(io,file=fn,form='unformatted') read(iin,end=300) info,title ibad=info(7) if(info(1).eq.ibad) go to 200 m1o=info(1) m2o=info(9) 10 read(iin,end=300) (idato(i),i=m1o,m2o), * Lato,Lono,IDo,ihto,nameo,m1,m2 if(IDo.ne.IDc) then if(nameo(31:32).eq.' R'.or.nameo(31:31).eq.'1') then Calt if(nameo(33:33).eq.'A') then write(io) info,title else ! skip the station info(1)=m1 info(9)=m2 m1o=m1 m2o=m2 write(*,*) 'station',IDo,' ',nameo,' skipped' go to 10 end if else call adj(info,idato,sl1,sl2,knee,sl0,iy1e,iy2e,iy1,iy2,iflag, * m1o,m2o) write(*,*) 'station',IDo,' ',nameo,' adjusted' info(1)=m1o info(9)=m2o write(io) info,title read(1,'(a3,i9,2f9.3,i5,9x,f9.3,27x,i5,1x,i4,i5,1x,i4,2i5)', * end=100) cc,IDc,sl1,sl2,knee,sl0,iy1,iy2,iy1e,iy2e,iflag end if 30 read(iin,end=100) (idata(i),i=m1,m2),Lat,Lon,ID,iht,name,m1n,m2n if(ID.ne.IDc) then if(name(31:32).eq.' R'.or.name(31:31).eq.'1') then Calt if(name(33:33).eq.'A') then write(io)(idato(i),i=m1o,m2o),Lato,Lono,IDo,ihto,nameo,m1,m2 write(*,*) 'station',IDo,' ',nameo,' saved',io-21 else ! skip the station m1=m1n m2=m2n write(*,*) 'station',ID,' ',name,' skipped' go to 30 end if else call adj(info,idata,sl1,sl2,knee,sl0,iy1e,iy2e,iy1,iy2,iflag, * m1,m2) write(*,*) 'station',ID,' ',name,' adjusted' write(io)(idato(i),i=m1o,m2o),Lato,Lono,IDo,ihto,nameo,m1,m2 write(*,*) 'station',IDo,' ',nameo,' saved',io-21 IDc=-9999 read(1,'(a3,i9,2f9.3,i5,9x,f9.3,27x,i5,1x,i4,i5,1x,i4,2i5)', * end=35) cc,IDc,sl1,sl2,knee,sl0,iy1,iy2,iy1e,iy2e,iflag end if 35 do 40 m=m1,m2 40 idato(m)=idata(m) Lato=Lat Lono=Lon IDo=ID ihto=iht nameo=name m1o=m1 m2o=m2 m1=m1n m2=m2n go to 30 100 write(io) (idato(m),m=m1o,m2o),Lato,Lono,IDo,ihto,nameo,ibad,ibad write(*,*) 'station',IDo,' ',nameo,' saved',io-21 200 continue stop 0 300 stop 1 end subroutine adj(info,idata,sl1,sl2,knee,sl0,iy1,iy2,iy1a,iy2a, * iflag,m1,m2) dimension info(*),idata(*) if(iflag.ne.0.and.iflag.ne.100) then C**** Use linear approximation sl1=sl0 sl2=sl0 end if miss=info(7) m1o=m1 m2o=m2 m1=-100 m0=12*(iy1-info(6)) ! Dec of year iy1 do iy=iy1,iy2 sl=sl1 if(iy.gt.knee) sl=sl2 iya=iy if(iy.lt.iy1a) iya=iy1a if(iy.gt.iy2a) iya=iy2a iadj=nint( (iya-knee)*sl-(iy2a-knee)*sl2 ) do m=m0,m0+11 if(m.ge.m1o.and.m.le.m2o.and.idata(m).ne.miss) then if(m1.lt.0) m1=m idata(m)=idata(m)+iadj m2=m end if end do m0=m0+12 end do return end ./PApars ${label} ./padjust Ts.${label} ./invnt.exe Ts.${label}.PA > Ts.${label}.PA.station.list mv ANN* *x *ext Ts*bin* *exe *log* *use* work_files/. mv Ts* to_next_step/. ; mv *list work_files/. rm -f v2.inv