subroutine packtext(msg,nc1,nc2,nc3)

  parameter (MASK28=2**28 - 1)
  character*13 msg
  character*42 c
  data c/'0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ +-./?'/

  nc1=0
  nc2=0
  nc3=0

  do i=1,5                                !First 5 characters in nc1
     do j=1,42                            !Get character code
        if(msg(i:i).eq.c(j:j)) go to 10
     enddo
     j=37
10   j=j-1                                !Codes should start at zero
     nc1=42*nc1 + j
  enddo

  do i=6,10                               !Characters 6-10 in nc2
     do j=1,42                            !Get character code
        if(msg(i:i).eq.c(j:j)) go to 20
     enddo
     j=37
20   j=j-1                                !Codes should start at zero
     nc2=42*nc2 + j
  enddo

  do i=11,13                              !Characters 11-13 in nc3
     do j=1,42                            !Get character code
        if(msg(i:i).eq.c(j:j)) go to 30
     enddo
     j=37
30   j=j-1                                !Codes should start at zero
     nc3=42*nc3 + j
  enddo

! We now have used 17 bits in nc3.  Must move one each to nc1 and nc2.
  nc1=nc1+nc1
  if(iand(nc3,32768).ne.0) nc1=nc1+1
  nc2=nc2+nc2
  if(iand(nc3,65536).ne.0) nc2=nc2+1
  nc3=iand(nc3,32767)

  return
end subroutine packtext