mirror of
https://github.com/saitohirga/WSJT-X.git
synced 2024-11-26 14:18:38 -05:00
68 lines
1.6 KiB
Fortran
68 lines
1.6 KiB
Fortran
subroutine pack77(msg0,i3,n3,c77)
|
|
|
|
use packjt
|
|
character*37 msg,msg0
|
|
character*18 c18
|
|
character*13 w(19)
|
|
character*77 c77
|
|
integer nw(19)
|
|
integer ntel(3)
|
|
|
|
msg=msg0
|
|
if(i3.eq.0 .and. n3.eq.5) go to 5
|
|
|
|
! Convert msg to upper case; collapse multiple blanks; parse into words.
|
|
call split77(msg,nwords,nw,w)
|
|
i3=-1
|
|
n3=-1
|
|
if(msg(1:3).eq.'CQ ' .or. msg(1:3).eq.'DE ' .or. msg(1:4).eq.'QRZ ') go to 100
|
|
|
|
! Check 0.1 (DXpedition mode)
|
|
call pack77_01(nwords,w,i3,n3,c77)
|
|
if(i3.ge.0) go to 900
|
|
! Check 0.2 (EU VHF contest exchange)
|
|
call pack77_02(nwords,w,i3,n3,c77)
|
|
if(i3.ge.0) go to 900
|
|
|
|
! Check 0.3 and 0.4 (ARRL Field Day exchange)
|
|
call pack77_03(nwords,w,i3,n3,c77)
|
|
if(i3.ge.0) go to 900
|
|
|
|
! Check 0.5 (telemetry)
|
|
5 i0=index(msg,' ')
|
|
c18=msg(1:i0-1)//' '
|
|
c18=adjustr(c18)
|
|
ntel=-99
|
|
read(c18,1005,err=6) ntel
|
|
1005 format(3z6)
|
|
if(ntel(1).ge.2**23) go to 800
|
|
6 if(ntel(1).ge.0 .and. ntel(2).ge.0 .and. ntel(3).ge.0) then
|
|
i3=0
|
|
n3=5
|
|
write(c77,1006) ntel,n3
|
|
1006 format(b23.23,2b24.24,b3.3)
|
|
go to 900
|
|
endif
|
|
|
|
! Check Type 1 (Standard 77-bit message) or Type 2, with optional "/P"
|
|
100 call pack77_1(nwords,w,i3,n3,c77)
|
|
if(i3.ge.0) go to 900
|
|
|
|
! Check Type 3 (ARRL RTTY contest exchange)
|
|
call pack77_3(nwords,w,i3,n3,c77)
|
|
if(i3.ge.0) go to 900
|
|
|
|
! Check Type 4 (One nonstandard call and one hashed call)
|
|
call pack77_4(nwords,w,i3,n3,c77)
|
|
if(i3.ge.0) go to 900
|
|
|
|
! It defaults to free text
|
|
800 i3=0
|
|
n3=0
|
|
msg(14:)=' '
|
|
call packtext77(msg(1:13),c77(1:71))
|
|
write(c77(72:77),'(2b3.3)') n3,i3
|
|
|
|
900 return
|
|
end subroutine pack77
|