1program fersum 2 3 character mode*5 4 character infile*40 5 real dop(0:9) 6 real thresh(0:9,12),threshsync(0:9,12) 7 data dop/0.25,0.5,1.0,2.0,4.0,8.0,16.0,32.0,64.0,128.0/ 8 9 nargs=iargc() 10 if(nargs.ne.1) then 11 print*,'Usage: fersum <infile>' 12 go to 999 13 endif 14 call getarg(1,infile) 15 open(10,file=infile,status='old') 16 thresh=0. 17 threshsync=0. 18 19 do iblk=1,999 201 read(10,1002,end=100) mode,iters,ntot,naggr,d,navg,nds 211002 format(a5,8x,i5,4x,i6,7x,i3,6x,f6.2,17x,i3,5x,i2) 22 write(33,*) iblk,mode 23 if(mode.eq.' ') go to 1 24 read(10,1002) 25 read(10,1002) 26 read(10,1002) 27 28 nsync0=0 29 ngood0=0 30 xsum0=0. 31 do n=1,99 32 read(10,1010,end=100) snr,nsync,ngood,nbad,xsync,esync,dsnr,esnr, & 33 xdt,edt,dfreq,efreq,xsum,esum,xwidth,ewidth 341010 format(f5.1,2i6i4,2f6.1,f6.1,f5.1,f6.2,f5.2,6f5.1) 35 if(snr.eq.0.0) exit 36 if(mode(5:5).eq.'A') nmode=1 37 if(mode(5:5).eq.'B') nmode=2 38 if(mode(5:5).eq.'C') nmode=3 39 j=nint(log(d)/log(2.0) + 2.0) 40 if(navg.eq.1 .and. nds.eq.0) k=nmode 41 if(navg.eq.1 .and. nds.eq.1) k=nmode+3 42 if(navg.gt.1 .and. nds.eq.0) k=nmode+6 43 if(navg.gt.1 .and. nds.eq.1) k=nmode+9 44 if(nsync0.le.iters/2 .and. nsync.ge.iters/2) then 45 threshsync(j,k)=snr-float(nsync-iters/2)/(nsync-nsync0) 46 endif 47 if(ngood0.le.iters/2 .and. ngood.ge.iters/2) then 48 threshold=snr-float(ngood-iters/2)/(ngood-ngood0) 49 xsumavg=max(1.0,0.5*(xsum0+xsum)) 50! write(*,1020) mode,iters,ntot,naggr,d,navg,nds,threshold,xsumavg 51!1020 format(a5,i7,i7,i3,f7.2,i3,i3,f7.1,f6.1) 52 thresh(j,k)=threshold 53 endif 54 nsync0=nsync 55 ngood0=ngood 56 xsum0=xsum 57 enddo 58 enddo 59 60100 write(12,1100) 611100 format(' ') 62 do i=0,9 63 write(12,1110) dop(i),thresh(i,1:12) 641110 format(f6.2,13f6.1) 65 enddo 66 67 write(12,1110) 68 do i=0,9 69 write(12,1110) dop(i),threshsync(i,1:12) 70 enddo 71 72999 end program fersum 73