mirror of
https://github.com/saitohirga/WSJT-X.git
synced 2024-11-18 10:01:57 -05:00
109 lines
3.1 KiB
Fortran
109 lines
3.1 KiB
Fortran
|
program psk_parse
|
||
|
|
||
|
character line*256,callsign*12,callsign0*12,progname*30
|
||
|
integer nc(6),ntot(6),nsingle(6)
|
||
|
logical zap
|
||
|
data callsign0/' '/
|
||
|
|
||
|
open(10,file='jt65-2',status='old')
|
||
|
nc=0
|
||
|
ntot=0
|
||
|
ncalls=0
|
||
|
nsingle=0
|
||
|
zap=.false.
|
||
|
|
||
|
do iline=1,9999999
|
||
|
read(10,'(a256)',end=900) line
|
||
|
n=len(trim(line))
|
||
|
i1=0
|
||
|
i2=0
|
||
|
i3=0
|
||
|
do i=1,n
|
||
|
if(ichar(line(i:i)).eq.9) then
|
||
|
if(i1.eq.0) then
|
||
|
i1=i
|
||
|
cycle
|
||
|
endif
|
||
|
if(i2.eq.0) then
|
||
|
i2=i
|
||
|
cycle
|
||
|
endif
|
||
|
if(i3.eq.0) then
|
||
|
i3=i
|
||
|
exit
|
||
|
endif
|
||
|
endif
|
||
|
enddo
|
||
|
callsign=line(1:i1-1)
|
||
|
|
||
|
if(zap) then
|
||
|
if(callsign(1:1).ge.'0' .and. callsign(1:1).le.'9' .and. &
|
||
|
callsign(2:2).ge.'0' .and. callsign(2:2).le.'9' .and. &
|
||
|
callsign(3:3).ge.'0' .and. callsign(3:3).le.'9') cycle
|
||
|
|
||
|
if(callsign(1:1).ge.'A' .and. callsign(1:1).le.'Z' .and. &
|
||
|
callsign(2:2).ge.'A' .and. callsign(2:2).le.'Z' .and. &
|
||
|
callsign(3:3).ge.'A' .and. callsign(3:3).le.'Z' .and. &
|
||
|
callsign(4:4).ge.'A' .and. callsign(4:4).le.'Z') cycle
|
||
|
|
||
|
if(callsign(1:1).eq.'N' .and. &
|
||
|
callsign(2:2).ge.'0' .and. callsign(2:2).le.'9' .and. &
|
||
|
callsign(3:3).ge.'0' .and. callsign(3:3).le.'9') cycle
|
||
|
|
||
|
endif
|
||
|
|
||
|
progname=line(i1+1:i2-1)
|
||
|
do i=1,len(trim(progname))
|
||
|
if(progname(i:i).eq.' ') progname(i:i)='_'
|
||
|
enddo
|
||
|
read(line(i2+1:i3-1),*) ndecodes
|
||
|
read(line(i3+1:),*) nreporters
|
||
|
|
||
|
j=6
|
||
|
if(index(progname,'WSJT-X').gt.0) j=1
|
||
|
if(index(progname,'HB9HQX').gt.0) j=2
|
||
|
if(index(progname,'JTDX').gt.0) j=3
|
||
|
if(index(progname,'Comfort').gt.0) j=4
|
||
|
if(index(progname,'COMFORT').gt.0) j=4
|
||
|
if(index(progname,'JT65-HF').gt.0 .and. j.eq.6) j=5
|
||
|
|
||
|
nctot=sum(nc)
|
||
|
if(callsign.ne.callsign0 .and. nctot.gt.0) then
|
||
|
write(13,1000) callsign0,nc,nctot
|
||
|
1000 format(a12,6i8,i10)
|
||
|
if(nctot.eq.1) nsingle(j)=nsingle(j)+1
|
||
|
nc=0
|
||
|
callsign0=callsign
|
||
|
ncalls=ncalls+1
|
||
|
endif
|
||
|
nc(j)=nc(j) + ndecodes
|
||
|
ntot(j)=ntot(j) + ndecodes
|
||
|
write(12,1010) iline,callsign,ndecodes,nreporters,progname
|
||
|
1010 format(i8,2x,a12,2x,2i8,2x,a30)
|
||
|
enddo
|
||
|
|
||
|
900 nctot=sum(nc)
|
||
|
if(nctot.gt.0) write(13,1000) callsign0,nc,nctot
|
||
|
|
||
|
write(*,1018)
|
||
|
1018 format(' Total WSJT-X HB9HQX JTDX Comfort JT65-HF Other'/ &
|
||
|
'----------------------------------------------------------')
|
||
|
write(*,1019)
|
||
|
1019 format('Spots reported; fraction of total:')
|
||
|
write(*,1020) sum(ntot),ntot
|
||
|
1020 format(i8,2x,6i8)
|
||
|
fac=1.0/sum(ntot)
|
||
|
write(*,1030) 1.0000,fac*ntot
|
||
|
1030 format(f8.4,2x,6f8.4,f10.4)
|
||
|
|
||
|
write(*,1038)
|
||
|
1038 format(/'Singletons; as fraction of spots by same program')
|
||
|
write(*,1040) sum(nsingle),nsingle
|
||
|
1040 format(i8,2x,6i8)
|
||
|
write(*,1030) float(sum(nsingle))/sum(ntot),float(nsingle)/ntot
|
||
|
|
||
|
write(*,1050) ncalls
|
||
|
1050 format(/'Distinct calls spotted:',i6)
|
||
|
|
||
|
end program psk_parse
|