mirror of
https://github.com/saitohirga/WSJT-X.git
synced 2024-11-22 20:28:42 -05:00
Fix a flw in handling i3=4 messages; export n28a_77 and n28b_77.
This commit is contained in:
parent
5a68660b9a
commit
796f5e865f
@ -5,20 +5,26 @@ program encode77
|
|||||||
character*80 msg0
|
character*80 msg0
|
||||||
character msg*37,cerr*1
|
character msg*37,cerr*1
|
||||||
character*77 c77
|
character*77 c77
|
||||||
|
character*80 infile
|
||||||
|
|
||||||
nargs=iargc()
|
nargs=iargc()
|
||||||
open(10,file='messages.txt',status='old')
|
if(nargs.ne.1 .and.nargs.ne.2) then
|
||||||
|
print*,'Usage: encode77 "message"'
|
||||||
|
print*,' encode77 -f <infile>'
|
||||||
|
go to 999
|
||||||
|
endif
|
||||||
|
call getarg(1,msg0)
|
||||||
|
if(nargs.eq.2) then
|
||||||
|
call getarg(2,infile)
|
||||||
|
open(10,file=infile,status='old')
|
||||||
|
write(*,1000)
|
||||||
|
1000 format('i3.n3 Err Message to be encoded Decoded message' &
|
||||||
|
/80('-'))
|
||||||
|
endif
|
||||||
|
|
||||||
do iline=1,999
|
do iline=1,999
|
||||||
if(nargs.eq.1) then
|
if(nargs.eq.2) read(10,1002,end=999) msg0
|
||||||
call getarg(1,msg0)
|
1002 format(a80)
|
||||||
else
|
|
||||||
if(iline.eq.1) write(*,1000)
|
|
||||||
1000 format('i3.n3 Err Message to be encoded Decoded message'/ &
|
|
||||||
80('-'))
|
|
||||||
read(10,1002,end=999) msg0
|
|
||||||
1002 format(a80)
|
|
||||||
endif
|
|
||||||
if(msg0(1:1).eq.'$') exit
|
if(msg0(1:1).eq.'$') exit
|
||||||
if(msg0.eq.' ') cycle
|
if(msg0.eq.' ') cycle
|
||||||
if(msg0(2:2).eq.'.' .or. msg0(3:3).eq.'.') cycle
|
if(msg0(2:2).eq.'.' .or. msg0(3:3).eq.'.') cycle
|
||||||
|
@ -67,4 +67,10 @@ W9XYZ <PJ4/K1ABC> RRR
|
|||||||
-----------------------------------------------------------
|
-----------------------------------------------------------
|
||||||
TNX BOB 73 GL
|
TNX BOB 73 GL
|
||||||
free text msg
|
free text msg
|
||||||
|
CQ YW18FIFA
|
||||||
|
<YW18FIFA> KA1ABC
|
||||||
|
KA1ABC <YW1FIFA> -11
|
||||||
|
<YW1FIFA> KA1ABC R-17
|
||||||
|
<KA1ABC> YW1FIFA RR73
|
||||||
|
<YW1FIFA> KA1ABC 73
|
||||||
123456789ABCD
|
123456789ABCD
|
||||||
|
@ -1,5 +1,8 @@
|
|||||||
module packjt77
|
module packjt77
|
||||||
|
|
||||||
|
! These variables are accessible from outside via "use packjt":
|
||||||
|
integer n28a_77,n28b_77
|
||||||
|
|
||||||
contains
|
contains
|
||||||
|
|
||||||
subroutine hash10(n10,c13)
|
subroutine hash10(n10,c13)
|
||||||
@ -242,14 +245,14 @@ subroutine unpack77(c77,msg)
|
|||||||
|
|
||||||
else if(i3.eq.0 .and. n3.eq.1) then
|
else if(i3.eq.0 .and. n3.eq.1) then
|
||||||
! 0.1 K1ABC RR73; W9XYZ <KH1/KH7Z> -11 28 28 10 5 71 DXpedition Mode
|
! 0.1 K1ABC RR73; W9XYZ <KH1/KH7Z> -11 28 28 10 5 71 DXpedition Mode
|
||||||
read(c77,1010) n28a,n28b,n10,n5
|
read(c77,1010) n28a_77,n28b_77,n10,n5
|
||||||
1010 format(2b28,b10,b5)
|
1010 format(2b28,b10,b5)
|
||||||
irpt=2*n5 - 30
|
irpt=2*n5 - 30
|
||||||
write(crpt,1012) irpt
|
write(crpt,1012) irpt
|
||||||
1012 format(i3.2)
|
1012 format(i3.2)
|
||||||
if(irpt.ge.0) crpt(1:1)='+'
|
if(irpt.ge.0) crpt(1:1)='+'
|
||||||
call unpack28(n28a,call_1)
|
call unpack28(n28a_77,call_1)
|
||||||
call unpack28(n28b,call_2)
|
call unpack28(n28b_77,call_2)
|
||||||
call hash10(n10,call_3)
|
call hash10(n10,call_3)
|
||||||
if(call_3(1:1).eq.'<') then
|
if(call_3(1:1).eq.'<') then
|
||||||
msg=trim(call_1)//' RR73; '//trim(call_2)//' '//trim(call_3)// &
|
msg=trim(call_1)//' RR73; '//trim(call_2)//' '//trim(call_3)// &
|
||||||
@ -260,9 +263,9 @@ subroutine unpack77(c77,msg)
|
|||||||
endif
|
endif
|
||||||
else if(i3.eq.0 .and. n3.eq.2) then
|
else if(i3.eq.0 .and. n3.eq.2) then
|
||||||
! 0.2 PA3XYZ/P R 590003 IO91NP 28 1 1 3 12 25 70 EU VHF contest
|
! 0.2 PA3XYZ/P R 590003 IO91NP 28 1 1 3 12 25 70 EU VHF contest
|
||||||
read(c77,1020) n28a,ip,ir,irpt,iserial,igrid6
|
read(c77,1020) n28a_77,ip,ir,irpt,iserial,igrid6
|
||||||
1020 format(b28,2b1,b3,b12,b25)
|
1020 format(b28,2b1,b3,b12,b25)
|
||||||
call unpack28(n28a,call_1)
|
call unpack28(n28a_77,call_1)
|
||||||
nrs=52+irpt
|
nrs=52+irpt
|
||||||
if(ip.eq.1) call_1=trim(call_1)//'/P'//' '
|
if(ip.eq.1) call_1=trim(call_1)//'/P'//' '
|
||||||
write(cexch,1022) nrs,iserial
|
write(cexch,1022) nrs,iserial
|
||||||
@ -290,11 +293,11 @@ subroutine unpack77(c77,msg)
|
|||||||
else if(i3.eq.0 .and. (n3.eq.3 .or. n3.eq.4)) then
|
else if(i3.eq.0 .and. (n3.eq.3 .or. n3.eq.4)) then
|
||||||
! 0.3 WA9XYZ KA1ABC R 16A EMA 28 28 1 4 3 7 71 ARRL Field Day
|
! 0.3 WA9XYZ KA1ABC R 16A EMA 28 28 1 4 3 7 71 ARRL Field Day
|
||||||
! 0.4 WA9XYZ KA1ABC R 32A EMA 28 28 1 4 3 7 71 ARRL Field Day
|
! 0.4 WA9XYZ KA1ABC R 32A EMA 28 28 1 4 3 7 71 ARRL Field Day
|
||||||
read(c77,1030) n28a,n28b,ir,intx,nclass,isec
|
read(c77,1030) n28a_77,n28b_77,ir,intx,nclass,isec
|
||||||
1030 format(2b28,b1,b4,b3,b7)
|
1030 format(2b28,b1,b4,b3,b7)
|
||||||
if(isec.gt.NSEC) isec=NSEC !### Check range for other params? ###
|
if(isec.gt.NSEC) isec=NSEC !### Check range for other params? ###
|
||||||
call unpack28(n28a,call_1)
|
call unpack28(n28a_77,call_1)
|
||||||
call unpack28(n28b,call_2)
|
call unpack28(n28b_77,call_2)
|
||||||
ntx=intx+1
|
ntx=intx+1
|
||||||
if(n3.eq.4) ntx=ntx+16
|
if(n3.eq.4) ntx=ntx+16
|
||||||
write(cntx(1:2),1032) ntx
|
write(cntx(1:2),1032) ntx
|
||||||
@ -323,10 +326,10 @@ subroutine unpack77(c77,msg)
|
|||||||
|
|
||||||
else if(i3.eq.1 .or. i3.eq.2) then
|
else if(i3.eq.1 .or. i3.eq.2) then
|
||||||
! Type 1 (standard message) or Type 2 ("/P" form for EU VHF contest)
|
! Type 1 (standard message) or Type 2 ("/P" form for EU VHF contest)
|
||||||
read(c77,1000) n28a,ipa,n28b,ipb,ir,igrid4,i3
|
read(c77,1000) n28a_77,ipa,n28b_77,ipb,ir,igrid4,i3
|
||||||
1000 format(2(b28,b1),b1,b15,b3)
|
1000 format(2(b28,b1),b1,b15,b3)
|
||||||
call unpack28(n28a,call_1)
|
call unpack28(n28a_77,call_1)
|
||||||
call unpack28(n28b,call_2)
|
call unpack28(n28b_77,call_2)
|
||||||
if(call_1(1:3).eq.'CQ_') call_1(3:3)=' '
|
if(call_1(1:3).eq.'CQ_') call_1(3:3)=' '
|
||||||
i=index(call_1,' ')
|
i=index(call_1,' ')
|
||||||
if(i.ge.4 .and. ipa.eq.1 .and. i3.eq.1) call_1(i:i+1)='/R'
|
if(i.ge.4 .and. ipa.eq.1 .and. i3.eq.1) call_1(i:i+1)='/R'
|
||||||
@ -365,7 +368,7 @@ subroutine unpack77(c77,msg)
|
|||||||
|
|
||||||
else if(i3.eq.3) then
|
else if(i3.eq.3) then
|
||||||
! Type 3: ARRL RTTY Contest
|
! Type 3: ARRL RTTY Contest
|
||||||
read(c77,1040) itu,n28a,n28b,ir,irpt,nexch,i3
|
read(c77,1040) itu,n28a_77,n28b_77,ir,irpt,nexch,i3
|
||||||
1040 format(b1,2b28.28,b1,b3.3,b13.13,b3.3)
|
1040 format(b1,2b28.28,b1,b3.3,b13.13,b3.3)
|
||||||
write(crpt,1042) irpt+2
|
write(crpt,1042) irpt+2
|
||||||
1042 format('5',i1,'9')
|
1042 format('5',i1,'9')
|
||||||
@ -375,8 +378,8 @@ subroutine unpack77(c77,msg)
|
|||||||
imult=nexch-8000
|
imult=nexch-8000
|
||||||
nserial=-1
|
nserial=-1
|
||||||
endif
|
endif
|
||||||
call unpack28(n28a,call_1)
|
call unpack28(n28a_77,call_1)
|
||||||
call unpack28(n28b,call_2)
|
call unpack28(n28b_77,call_2)
|
||||||
imult=0
|
imult=0
|
||||||
nserial=0
|
nserial=0
|
||||||
if(nexch.gt.8000) imult=nexch-8000
|
if(nexch.gt.8000) imult=nexch-8000
|
||||||
@ -713,10 +716,10 @@ subroutine pack77_01(nwords,w,i3,n3,c77)
|
|||||||
! Type 0.1: K1ABC RR73; W9XYZ <KH1/KH7Z> -11 28 28 10 5 71 DXpedition Mode
|
! Type 0.1: K1ABC RR73; W9XYZ <KH1/KH7Z> -11 28 28 10 5 71 DXpedition Mode
|
||||||
i3=0
|
i3=0
|
||||||
n3=1
|
n3=1
|
||||||
call pack28(w(1),n28a)
|
call pack28(w(1),n28a_77)
|
||||||
call pack28(w(3),n28b)
|
call pack28(w(3),n28b_77)
|
||||||
call save_hash_call(w(4),n10,n12,n22)
|
call save_hash_call(w(4),n10,n12,n22)
|
||||||
write(c77,1010) n28a,n28b,n10,n5,n3,i3
|
write(c77,1010) n28a_77,n28b_77,n10,n5,n3,i3
|
||||||
1010 format(2b28.28,b10.10,b5.5,2b3.3)
|
1010 format(2b28.28,b10.10,b5.5,2b3.3)
|
||||||
|
|
||||||
900 return
|
900 return
|
||||||
@ -756,7 +759,7 @@ subroutine pack77_02(nwords,w,i3,n3,c77)
|
|||||||
ip=1
|
ip=1
|
||||||
c13=w(1)(1:i-1)//' '
|
c13=w(1)(1:i-1)//' '
|
||||||
endif
|
endif
|
||||||
call pack28(c13,n28a)
|
call pack28(c13,n28a_77)
|
||||||
ir=0
|
ir=0
|
||||||
if(w(2)(1:2).eq.'R ') ir=1
|
if(w(2)(1:2).eq.'R ') ir=1
|
||||||
irpt=nx/10000 - 52
|
irpt=nx/10000 - 52
|
||||||
@ -769,7 +772,7 @@ subroutine pack77_02(nwords,w,i3,n3,c77)
|
|||||||
j5=(ichar(grid6(5:5))-ichar('A'))*24
|
j5=(ichar(grid6(5:5))-ichar('A'))*24
|
||||||
j6=(ichar(grid6(6:6))-ichar('A'))
|
j6=(ichar(grid6(6:6))-ichar('A'))
|
||||||
igrid6=j1+j2+j3+j4+j5+j6
|
igrid6=j1+j2+j3+j4+j5+j6
|
||||||
write(c77,1010) n28a,ip,ir,irpt,iserial,igrid6,n3,i3
|
write(c77,1010) n28a_77,ip,ir,irpt,iserial,igrid6,n3,i3
|
||||||
1010 format(b28.28,2b1,b3.3,b12.12,b25.25,b4.4,b3.3)
|
1010 format(b28.28,2b1,b3.3,b12.12,b25.25,b4.4,b3.3)
|
||||||
|
|
||||||
return
|
return
|
||||||
@ -829,11 +832,11 @@ subroutine pack77_03(nwords,w,i3,n3,c77)
|
|||||||
n3=4 !Type 0.4 ARRL Field Day
|
n3=4 !Type 0.4 ARRL Field Day
|
||||||
intx=ntx-17
|
intx=ntx-17
|
||||||
endif
|
endif
|
||||||
call pack28(w(1),n28a)
|
call pack28(w(1),n28a_77)
|
||||||
call pack28(w(2),n28b)
|
call pack28(w(2),n28b_77)
|
||||||
ir=0
|
ir=0
|
||||||
if(w(3)(1:2).eq.'R ') ir=1
|
if(w(3)(1:2).eq.'R ') ir=1
|
||||||
write(c77,1010) n28a,n28b,ir,intx,nclass,isec,n3,i3
|
write(c77,1010) n28a_77,n28b_77,ir,intx,nclass,isec,n3,i3
|
||||||
1010 format(2b28.28,b1,b4.4,b3.3,b7.7,2b3.3)
|
1010 format(2b28.28,b1,b4.4,b3.3,b7.7,2b3.3)
|
||||||
|
|
||||||
return
|
return
|
||||||
@ -903,10 +906,10 @@ subroutine pack77_1(nwords,w,i3,n3,c77)
|
|||||||
endif
|
endif
|
||||||
c13=bcall_1//' '
|
c13=bcall_1//' '
|
||||||
if(c13(1:3).eq.'CQ_' .or. w(1)(1:1).eq.'<') c13=w(1)
|
if(c13(1:3).eq.'CQ_' .or. w(1)(1:1).eq.'<') c13=w(1)
|
||||||
call pack28(c13,n28a)
|
call pack28(c13,n28a_77)
|
||||||
c13=bcall_2//' '
|
c13=bcall_2//' '
|
||||||
if(w(2)(1:1).eq.'<') c13=w(2)
|
if(w(2)(1:1).eq.'<') c13=w(2)
|
||||||
call pack28(c13,n28b)
|
call pack28(c13,n28b_77)
|
||||||
ipa=0
|
ipa=0
|
||||||
ipb=0
|
ipb=0
|
||||||
if(index(w(1),'/P').ge.4 .or. index(w(1),'/R').ge.4) ipa=1
|
if(index(w(1),'/P').ge.4 .or. index(w(1),'/R').ge.4) ipa=1
|
||||||
@ -929,7 +932,7 @@ subroutine pack77_1(nwords,w,i3,n3,c77)
|
|||||||
irpt=1
|
irpt=1
|
||||||
igrid4=MAXGRID4+irpt
|
igrid4=MAXGRID4+irpt
|
||||||
endif
|
endif
|
||||||
write(c77,1000) n28a,ipa,n28b,ipb,ir,igrid4,i3
|
write(c77,1000) n28a_77,ipa,n28b_77,ipb,ir,igrid4,i3
|
||||||
1000 format(2(b28.28,b1),b1,b15.15,b3.3)
|
1000 format(2(b28.28,b1),b1,b15.15,b3.3)
|
||||||
|
|
||||||
return
|
return
|
||||||
@ -988,8 +991,8 @@ subroutine pack77_3(nwords,w,i3,n3,c77)
|
|||||||
n3=0
|
n3=0
|
||||||
itu=0
|
itu=0
|
||||||
if(trim(w(1)).eq.'TU;') itu=1
|
if(trim(w(1)).eq.'TU;') itu=1
|
||||||
call pack28(w(1+itu),n28a)
|
call pack28(w(1+itu),n28a_77)
|
||||||
call pack28(w(2+itu),n28b)
|
call pack28(w(2+itu),n28b_77)
|
||||||
ir=0
|
ir=0
|
||||||
if(w(3+itu)(1:2).eq.'R ') ir=1
|
if(w(3+itu)(1:2).eq.'R ') ir=1
|
||||||
read(w(3+itu+ir),*) irpt
|
read(w(3+itu+ir),*) irpt
|
||||||
@ -998,7 +1001,7 @@ subroutine pack77_3(nwords,w,i3,n3,c77)
|
|||||||
if(irpt.gt.7) irpt=7
|
if(irpt.gt.7) irpt=7
|
||||||
! 3 TU; W9XYZ K1ABC R 579 MA 1 28 28 1 3 13 74 ARRL RTTY contest
|
! 3 TU; W9XYZ K1ABC R 579 MA 1 28 28 1 3 13 74 ARRL RTTY contest
|
||||||
! 3 TU; W9XYZ G8ABC R 559 0013 1 28 28 1 3 13 74 ARRL RTTY (DX)
|
! 3 TU; W9XYZ G8ABC R 559 0013 1 28 28 1 3 13 74 ARRL RTTY (DX)
|
||||||
write(c77,1010) itu,n28a,n28b,ir,irpt,nexch,i3
|
write(c77,1010) itu,n28a_77,n28b_77,ir,irpt,nexch,i3
|
||||||
1010 format(b1,2b28.28,b1,b3.3,b13.13,b3.3)
|
1010 format(b1,2b28.28,b1,b3.3,b13.13,b3.3)
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
@ -1027,11 +1030,11 @@ subroutine pack77_4(nwords,w,i3,n3,c77)
|
|||||||
if(call_2(1:1).eq.'<') call_2=w(2)(2:len(trim(w(2)))-1)
|
if(call_2(1:1).eq.'<') call_2=w(2)(2:len(trim(w(2)))-1)
|
||||||
call chkcall(call_1,bcall_1,ok1)
|
call chkcall(call_1,bcall_1,ok1)
|
||||||
call chkcall(call_2,bcall_2,ok2)
|
call chkcall(call_2,bcall_2,ok2)
|
||||||
|
icq=0
|
||||||
if(trim(w(1)).eq.'CQ' .or. (ok1.and.ok2)) then
|
if(trim(w(1)).eq.'CQ' .or. (ok1.and.ok2)) then
|
||||||
if(trim(w(1)).eq.'CQ' .and. len(trim(w(2))).le.4) go to 900
|
if(trim(w(1)).eq.'CQ' .and. len(trim(w(2))).le.4) go to 900
|
||||||
i3=4
|
i3=4
|
||||||
n3=0
|
n3=0
|
||||||
icq=0
|
|
||||||
if(trim(w(1)).eq.'CQ') icq=1
|
if(trim(w(1)).eq.'CQ') icq=1
|
||||||
endif
|
endif
|
||||||
|
|
||||||
@ -1042,10 +1045,12 @@ subroutine pack77_4(nwords,w,i3,n3,c77)
|
|||||||
call save_hash_call(w(2),n10,n12,n22)
|
call save_hash_call(w(2),n10,n12,n22)
|
||||||
else if(w(1)(1:1).eq.'<') then
|
else if(w(1)(1:1).eq.'<') then
|
||||||
iflip=0
|
iflip=0
|
||||||
|
i3=4
|
||||||
call save_hash_call(w(1),n10,n12,n22)
|
call save_hash_call(w(1),n10,n12,n22)
|
||||||
c11=adjustr(call_2(1:11))
|
c11=adjustr(call_2(1:11))
|
||||||
else if(w(2)(1:1).eq.'<') then
|
else if(w(2)(1:1).eq.'<') then
|
||||||
iflip=1
|
iflip=1
|
||||||
|
i3=4
|
||||||
call save_hash_call(w(2),n10,n12,n22)
|
call save_hash_call(w(2),n10,n12,n22)
|
||||||
c11=adjustr(call_1(1:11))
|
c11=adjustr(call_1(1:11))
|
||||||
endif
|
endif
|
||||||
|
Loading…
Reference in New Issue
Block a user