PRO lint03,a,n,m if m le n+1 THEN print,$ '****** parameter error in linear interpolation ******' k = m-n FOR i = n+1,m-1 DO a(i) = (a(n)*(m-i) + a(m)*(i-n))/k END PRO data03ca COMMON calcdata,tns,tsn,tenvns,tenvsn,vc,ttmp,ctmp,amplns,$ amplsn,sal,julday COMMON lastcalc,ltns,ltsn,ltenvns,ltenvsn,lvc,lttmp,lctmp,lamplns,$ lamplsn,lsal,ljulday COMMON data01,isamp01,tsamp01,tpeak1,tenv1,aenv1,iter1,$ tpeak2,tenv2,aenv2,iter2,rveco,tveco COMMON data03,iready,psamp03,isamp03,tsamp03,jdir,nback,$ ichange,xenvoff,sigerr0,xerrav,sigerrn,xjump COMMON controla,tagstring,nbyte,iprint,ijump COMMON controlb,nfile0,nfile string1 = '' IF iprint ge 3 THEN print,$ 'In data03, ijump, iready(0),jdir(0),iready(1),jdir(1) = ',$ ijump,iready(0),jdir(0),iready(1),jdir(1) IF iready(0) eq 0 and iready(1) eq 0 THEN print,$ '****** Inconsistent Jump Flags ******' FOR idir = 0,1 DO BEGIN IF iready(idir) eq 1 THEN BEGIN IF isamp03(idir) ne isamp01 THEN print,$ '****** Inconsistent Sample Numbers ******' i1 = isamp03(idir)-nback(idir) i2 = isamp03(idir) ; **** NOTE **** We assume that the current is determined from tsn alone, ; and so do not change tsn or vc if jdir = 0. We never ; change ttemp, the envelope times or the envelope amplitudes. RWB, 6-2-95 IF isamp03(idir) gt 2*nback(idir)+2$ and isamp03(idir)-psamp03(idir) eq nback(idir) THEN BEGIN ; This is the frequent case where a bad envelope ; reading causes a change, but there is an immediate change back. i1 = isamp03(idir)-2*nback(idir) ENDIF IF nfile eq nfile0 and isamp01 eq nback(idir) THEN BEGIN ; This is the special case of a change immediately upon starting a series ; of runs. This often happens, unless the replica is new. tns(i1) = tns(i2) if idir eq 1 THEN tsn(i1) = tsn(i2) if idir eq 1 THEN vc(i1) = vc(i2) ctmp(i1) = ctmp(i2) sal(i1) = sal(i2) ENDIF IF nfile gt nfile0 and isamp01 eq nback(idir) THEN BEGIN ; This is the knotty case where a jump detected near the beginning ; of a file may have occurred in the last file. We interpolate ; linearly over the last nback points of the old file and the ; first nback points of the new file. readlast tns(0) = (ltns(10000-1-nback(idir))+tns(nback(idir)))/2. ltns(10000-1) = tns(0) ctmp(0) = (lctmp(10000-1-nback(idir))+ctmp(nback(idir)))/2. lctmp(10000-1) = ctmp(0) sal(0) = (lsal(10000-1-nback(idir))+sal(nback(idir)))/2. lsal(10000-1) = sal(0) IF idir eq 1 THEN tsn(0) =$ (ltsn(10000-1-nback(idir))+tsn(nback(idir)))/2. ltsn(10000-1) = tsn(0) IF idir eq 1 THEN vc(0) =$ (lvc(10000-1-nback(idir))+vc(nback(idir)))/2. lvc(10000-1) = vc(0) ENDIF lint03,tns,i1,i2 IF idir eq 1 THEN lint03,tsn,i1,i2 IF idir eq 1 THEN lint03,vc,i1,i2 lint03,ctmp,i1,i2 lint03,sal,i1,i2 IF nfile gt nfile0 and isamp01 eq nback(idir) THEN BEGIN i1 = 10000-1-nback(idir) i2 = 10000-1 lint03,ltns,i1,i2 IF idir eq 1 THEN lint03,ltsn,i1,i2 IF idir eq 1 THEN lint03,lvc,i1,i2 lint03,lctmp,i1,i2 lint03,lsal,i1,i2 writelast ENDIF IF isamp03(idir) gt 2*nback(idir)+2$ and isamp03(idir)-psamp03(idir) eq nback(idir) and iprint ge 3 THEN BEGIN FOR i = i1,i2 DO BEGIN print,tns(i),tsn(i),tenvns(i),tenvsn(i),vc(i),ctmp(i),$ amplns(i),amplsn(i),sal(i) if i mod 10 eq 0 THEN read,string1 ENDFOR ENDIF IF iprint ge 3 and isamp01 eq nback(idir) and nfile ne nfile0 THEN BEGIN FOR i = i1,i2 DO BEGIN print,ltns(i),ltsn(i),ltenvns(i),ltenvsn(i),lvc(i),lctmp(i),$ lamplns(i),lamplsn(i),lsal(i) if i mod 10 eq 0 THEN read,string1 ENDFOR FOR i = 0,nback(idir) DO BEGIN print,tns(i),tsn(i),tenvns(i),tenvsn(i),vc(i),ctmp(i),$ amplns(i),amplsn(i),sal(i) if i mod 10 eq 0 THEN read,string1 ENDFOR ENDIF iready(idir) = 0 psamp03(idir) = isamp03(idir); save sample number ENDIF ENDFOR ijump = 0 END PRO readlast COMMON lastcalc,ltns,ltsn,ltenvns,ltenvsn,lvc,lttmp,lctmp,lamplns,$ lamplsn,lsal,ljulday COMMON inout,infile,lun1,outfile,loutfile,itag COMMON controlb,nfile0,nfile string1 = '' nstr = strtrim(string(nfile-1),2) if strlen(nstr) eq 1 then nstr = '00'+nstr if strlen(nstr) eq 2 then nstr = '0'+nstr loutfile = outfile strput,loutfile,nstr,strlen(outfile)-3 print,'outfile, loutfile = ',outfile,loutfile rdsk,ltns,loutfile,1 print,'ltns:', ltns(9995:9999) rdsk,ltsn,loutfile,2 rdsk,ltenvns,loutfile,3 rdsk,ltenvsn,loutfile,4 rdsk,lctmp,loutfile,5 rdsk,lttmp,loutfile,6 rdsk,lvc,loutfile,7 rdsk,lamplns,loutfile,8 rdsk,lamplsn,loutfile,9 rdsk,lsal,loutfile,10 rdsk,ljulday,loutfile,11 END PRO writelast COMMON lastcalc,ltns,ltsn,ltenvns,ltenvsn,lvc,lttmp,lctmp,lamplns,$ lamplsn,lsal,ljulday COMMON inout,infile,lun1,outfile,loutfile,itag wdsk,ltns,loutfile,1,/new wdsk,ltsn,loutfile,2 wdsk,ltenvns,loutfile,3 wdsk,ltenvsn,loutfile,4 wdsk,lctmp,loutfile,5 wdsk,lttmp,loutfile,6 wdsk,lvc,loutfile,7 wdsk,lamplns,loutfile,8 wdsk,lamplsn,loutfile,9 wdsk,lsal,loutfile,10 wdsk,ljulday,loutfile,11 END