subroutine extract4(sym,nadd,ncount,decoded) real sym(207) character decoded*22, submode*1 character*72 c72 integer*1 symbol(207) integer*1 data1(13) !Decoded data (8-bit bytes) integer data4a(9) !Decoded data (8-bit bytes) integer data4(12) !Decoded data (6-bit bytes) integer mettab(0:255,0:1) !Metric table logical first data first/.true./ save first,mettab if(first) then call getmet24(mode,mettab) first=.false. endif do j=1,207 r=sym(j) + 128. if(r.gt.255.0) r=255.0 if(r.lt.0.0) r=0.0 i4=nint(r) if(i4.gt.127) i4=i4-256 symbol(j)=i4 enddo nbits=72+31 ndelta=50 limit=100000 ncycles=0 ncount=-1 decoded=' ' submode=' ' call interleave24(symbol(2),-1) !Remove the interleaving call fano232(symbol(2),nbits,mettab,ndelta,limit,data1,ncycles,metric,ncount) nlim=ncycles/nbits if(ncount.ge.0) then do i=1,9 i4=data1(i) if(i4.lt.0) i4=i4+256 data4a(i)=i4 enddo write(c72,1100) (data4a(i),i=1,9) 1100 format(9b8.8) read(c72,1102) data4 1102 format(12b6) call unpackmsg(data4,decoded) submode=char(ichar('A')+ich-1) if(decoded(1:6).eq.'000AAA') then decoded='***WRONG MODE?***' ncount=-1 endif endif return end subroutine extract4