mirror of
				https://github.com/saitohirga/WSJT-X.git
				synced 2025-10-30 20:40:28 -04:00 
			
		
		
		
	git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/map65@615 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
		
			
				
	
	
		
			172 lines
		
	
	
		
			3.9 KiB
		
	
	
	
		
			Fortran
		
	
	
	
	
	
			
		
		
	
	
			172 lines
		
	
	
		
			3.9 KiB
		
	
	
	
		
			Fortran
		
	
	
	
	
	
| subroutine display(nkeep,ncsmin)
 | |
| 
 | |
| #ifdef CVF
 | |
|   use dfport
 | |
| #endif
 | |
| 
 | |
|   parameter (MAXLINES=500,MX=500)
 | |
|   integer indx(MAXLINES),indx2(MX)
 | |
|   character*81 line(MAXLINES),line2(MX),line3(MAXLINES)
 | |
|   character out*50,cfreq0*3
 | |
|   character*6 callsign,callsign0
 | |
|   character*12 freqcall(100)
 | |
|   character*40 bm2
 | |
|   real freqkHz(MAXLINES)
 | |
|   integer utc(MAXLINES),utc2(MX),utcz
 | |
|   real*8 f0
 | |
| 
 | |
|   ftol=0.02
 | |
|   rewind 26
 | |
| 
 | |
|   do i=1,MAXLINES
 | |
|      read(26,1010,end=10) line(i)
 | |
| 1010 format(a80)
 | |
|      read(line(i),1020) f0,ndf,nh,nm
 | |
| 1020 format(f7.3,i5,26x,i3,i2)
 | |
|      utc(i)=60*nh + nm
 | |
|      freqkHz(i)=1000.d0*(f0-144.d0) + 0.001d0*ndf
 | |
|   enddo
 | |
| 
 | |
| 10 nz=i-1
 | |
|   utcz=utc(nz)
 | |
|   nz=nz-1
 | |
|   if(nz.lt.1) go to 999
 | |
|   nquad=max(nkeep/4,3)
 | |
|   do i=1,nz
 | |
|      nage=utcz-utc(i)
 | |
|      if(nage.lt.0) nage=nage+1440
 | |
|      iage=(nage/nquad) + 1
 | |
|      if(nage.le.1) iage=0
 | |
|      write(line(i)(78:81),1021) iage
 | |
| 1021 format(i4)
 | |
|   enddo
 | |
| 
 | |
|   nage=utcz-utc(1)
 | |
|   if(nage.lt.0) nage=nage+1440
 | |
|   if(nage.gt.nkeep) then
 | |
|      do i=1,nz
 | |
|         nage=utcz-utc(i)
 | |
|         if(nage.lt.0) nage=nage+1440
 | |
|         if(nage.le.nkeep) go to 20
 | |
|      enddo
 | |
| 20   i0=i
 | |
|      nz=nz-i0+1
 | |
|      rewind 26
 | |
|      if(nz.lt.1) go to 999
 | |
|      do i=1,nz
 | |
|         j=i+i0-1
 | |
|         line(i)=line(j)
 | |
|         utc(i)=utc(j)
 | |
|         freqkHz(i)=freqkHz(j)
 | |
|         write(26,1010) line(i)
 | |
|      enddo
 | |
|   endif
 | |
| 
 | |
|   call flushqqq(26)
 | |
|   call indexx(nz,freqkHz,indx)
 | |
| 
 | |
|   nstart=1
 | |
|   k3=0
 | |
|   k=1
 | |
|   m=indx(1)
 | |
|   if(m.lt.1 .or. m.gt.MAXLINES) then
 | |
|      print*,'Error in display.F90: ',nz,m
 | |
|      m=1
 | |
|   endif
 | |
|   line2(1)=line(m)
 | |
|   utc2(1)=utc(m)
 | |
|   do i=2,nz
 | |
|      j0=indx(i-1)
 | |
|      j=indx(i)
 | |
|      if(freqkHz(j)-freqkHz(j0).gt.ftol) then
 | |
|         if(nstart.eq.0) then
 | |
|            k=k+1
 | |
|            line2(k)=""
 | |
|            utc2(k)=-1
 | |
|         endif
 | |
|         kz=k
 | |
|         if(nstart.eq.1) then
 | |
|            call indexx(kz,utc2,indx2)
 | |
|            k3=0
 | |
|            do k=1,kz
 | |
|               k3=k3+1
 | |
|               line3(k3)=line2(indx2(k))
 | |
|            enddo
 | |
|            nstart=0
 | |
|         else
 | |
|            call indexx(kz,utc2,indx2)
 | |
|            do k=1,kz
 | |
|               k3=k3+1
 | |
|               line3(k3)=line2(indx2(k))
 | |
|            enddo
 | |
|         endif
 | |
|         k=0
 | |
|      endif
 | |
|      if(i.eq.nz) then
 | |
|         k=k+1
 | |
|         line2(k)=""
 | |
|         utc2(k)=-1
 | |
|      endif
 | |
|      k=k+1
 | |
|      line2(k)=line(j)
 | |
|      utc2(k)=utc(j)
 | |
|      j0=j
 | |
|   enddo
 | |
|   kz=k
 | |
|   call indexx(kz,utc2,indx2)
 | |
|   do k=1,kz
 | |
|      k3=k3+1
 | |
|      line3(k3)=line2(indx2(k))
 | |
|   enddo
 | |
| 
 | |
|   rewind 19
 | |
|   rewind 20
 | |
|   cfreq0='   '
 | |
|   nc=0
 | |
|   callsign0='          '
 | |
|   do k=1,k3
 | |
|      out=line3(k)(5:12)//line3(k)(28:31)//line3(k)(39:43)//       &
 | |
|           line3(k)(35:38)//line3(k)(44:67)//line3(k)(77:81)
 | |
|      if(out(1:3).ne.'   ') then
 | |
|         if(out(1:3).eq.cfreq0) then
 | |
|            out(1:3)='   '
 | |
|         else
 | |
|            cfreq0=out(1:3)
 | |
|         endif
 | |
|         write(19,1030) out
 | |
| 1030    format(a50)
 | |
|         i1=index(out(24:),' ')
 | |
|         callsign=out(i1+24:)
 | |
|         i2=index(callsign,' ')
 | |
|         if(i2.gt.1) callsign(i2:)='      '
 | |
|         if(callsign.ne.'      ' .and. callsign.ne.callsign0) then
 | |
|            len=i2-1
 | |
|            if(len.lt.0) len=6
 | |
|            if(len.ge.ncsmin) then                        !Omit short "callsigns"
 | |
|               nc=nc+1
 | |
|               freqcall(nc)=cfreq0//' '//callsign//line3(k)(80:81)
 | |
|               callsign0=callsign
 | |
|            endif
 | |
|         endif
 | |
|         if(callsign.ne.'      ' .and. callsign.eq.callsign0) then
 | |
|            freqcall(nc)=cfreq0//' '//callsign//line3(k)(80:81)
 | |
|         endif
 | |
|      endif
 | |
|   enddo
 | |
|   call flushqqq(19)
 | |
|   nc=nc+1
 | |
|   freqcall(nc)='            '
 | |
|   nc=nc+1
 | |
|   freqcall(nc)='            '
 | |
|   freqcall(nc+1)='            '
 | |
|   freqcall(nc+2)='            '
 | |
|   iz=(nc+2)/3
 | |
|   do i=1,iz
 | |
|      bm2=freqcall(i)//'  '//freqcall(i+iz)//'  '//freqcall(i+2*iz)
 | |
|      write(20,1040) bm2
 | |
| 1040 format(a40)
 | |
|   enddo
 | |
|   call flushqqq(20)
 | |
| 999  return
 | |
| end subroutine display
 |