Merge branch 'hotfix-wsjtx-2.0.0-rc2' of bitbucket.org:k1jt/wsjtx into hotfix-wsjtx-2.0.0-rc2

This commit is contained in:
Steve Franke 2018-09-20 18:34:13 -05:00
commit bcea5df35d
2 changed files with 23 additions and 31 deletions

View File

@ -1,7 +1,7 @@
module packjt77 module packjt77
! These variables are accessible from outside via "use packjt": ! These variables are accessible from outside via "use packjt":
parameter (MAXHASH=100) parameter (MAXHASH=1000)
character*13 callsign(MAXHASH) character*13 callsign(MAXHASH)
integer ihash10(MAXHASH),ihash12(MAXHASH),ihash22(MAXHASH) integer ihash10(MAXHASH),ihash12(MAXHASH),ihash22(MAXHASH)
integer n28a,n28b,nzhash integer n28a,n28b,nzhash
@ -92,6 +92,7 @@ subroutine save_hash_call(c13,n10,n12,n22)
character*13 c13 character*13 c13
logical first logical first
data first/.true./
save first save first
if(first) then if(first) then
@ -102,6 +103,7 @@ subroutine save_hash_call(c13,n10,n12,n22)
nzhash=0 nzhash=0
first=.false. first=.false.
endif endif
if(c13(1:1).eq.' ' .or. c13(1:5).eq.'<...>') return if(c13(1:1).eq.' ' .or. c13(1:5).eq.'<...>') return
n10=ihashcall(c13,10) n10=ihashcall(c13,10)
@ -467,7 +469,6 @@ subroutine pack28(c13,n28)
! integer. ! integer.
parameter (NTOKENS=2063592,MAX22=4194304) parameter (NTOKENS=2063592,MAX22=4194304)
integer nc(6)
logical is_digit,is_letter logical is_digit,is_letter
character*13 c13 character*13 c13
character*6 callsign character*6 callsign
@ -481,7 +482,6 @@ subroutine pack28(c13,n28)
data a2/'0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'/ data a2/'0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'/
data a3/'0123456789'/ data a3/'0123456789'/
data a4/' ABCDEFGHIJKLMNOPQRSTUVWXYZ'/ data a4/' ABCDEFGHIJKLMNOPQRSTUVWXYZ'/
data nc/37,36,19,27,27,27/
is_digit(c)=c.ge.'0' .and. c.le.'9' is_digit(c)=c.ge.'0' .and. c.le.'9'
is_letter(c)=c.ge.'A' .and. c.le.'Z' is_letter(c)=c.ge.'A' .and. c.le.'Z'
@ -587,7 +587,7 @@ subroutine pack28(c13,n28)
27*i5 + i6 27*i5 + i6
n28=n28 + NTOKENS + MAX22 n28=n28 + NTOKENS + MAX22
900 n28=iand(n28,2**28-1) 900 n28=iand(n28,ishft(1,28)-1)
return return
end subroutine pack28 end subroutine pack28
@ -595,7 +595,6 @@ end subroutine pack28
subroutine unpack28(n28_0,c13,success) subroutine unpack28(n28_0,c13,success)
parameter (NTOKENS=2063592,MAX22=4194304) parameter (NTOKENS=2063592,MAX22=4194304)
integer nc(6)
logical success logical success
character*13 c13 character*13 c13
character*37 c1 character*37 c1
@ -606,7 +605,6 @@ subroutine unpack28(n28_0,c13,success)
data c2/'0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'/ data c2/'0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'/
data c3/'0123456789'/ data c3/'0123456789'/
data c4/' ABCDEFGHIJKLMNOPQRSTUVWXYZ'/ data c4/' ABCDEFGHIJKLMNOPQRSTUVWXYZ'/
data nc/37,36,19,27,27,27/
success=.true. success=.true.
n28=n28_0 n28=n28_0
@ -834,7 +832,7 @@ subroutine pack77_03(nwords,w,i3,n3,c77)
if(.not.ok1 .or. .not.ok2) return if(.not.ok1 .or. .not.ok2) return
isec=-1 isec=-1
do i=1,NSEC do i=1,NSEC
if(csec(i).eq.w(nwords)) then if(csec(i).eq.w(nwords)(1:3)) then
isec=i isec=i
exit exit
endif endif

View File

@ -2,15 +2,6 @@ function stdmsg(msg0)
! Returns .true. if msg0 a standard "JT-style" message ! Returns .true. if msg0 a standard "JT-style" message
! itype
! 1 Standard 72-bit structured message
! 2 Type 1 prefix
! 3 Type 1 suffix
! 4 Type 2 prefix
! 5 Type 2 suffix
! 6 Free text
! 7 Hashed calls (MSK144 short format)
! i3.n3 ! i3.n3
! 0.0 Free text ! 0.0 Free text
! 0.1 DXpeditiion mode ! 0.1 DXpeditiion mode
@ -27,23 +18,26 @@ function stdmsg(msg0)
use iso_c_binding, only: c_bool use iso_c_binding, only: c_bool
use packjt use packjt
character*37 msg0,msg1,msg use packjt77
integer dat(12)
character*37 msg0,msg1
character*77 c77
logical(c_bool) :: stdmsg logical(c_bool) :: stdmsg
msg1=msg0 msg1=msg0
i0=index(msg1,' OOO ') i3=-1
if(i0.gt.10) msg1=msg0(1:i0) n3=-1
call packmsg(msg0,dat,itype) call pack77(msg1,i3,n3,c77)
call unpackmsg(dat,msg) stdmsg=(i3.gt.0 .or. n3.gt.0)
msg(23:37)=' '
stdmsg=(msg(1:22).eq.msg1(1:22)) .and. (itype.ge.0) .and. (itype.ne.6) !###
if(.not.stdmsg) then ! rewind 82
i0=index(msg1,' ') ! do i=1,nzhash
msg1(i0:)=' ' ! write(82,3082) i,nzhash,callsign(i)
call parse77(msg1,i3,n3) !3082 format(2i5,2x,a13)
if(i3.gt.0 .or. n3.gt.0) stdmsg=.true. ! enddo
endif ! flush(82)
!###
return return
end function stdmsg end function stdmsg