C Program converts RSC-11-6 data records; header info goes to unpack.hdr and
C  data samples go to unpack.dat

C Usage
C           unpack pathname
C where
C                           pathname      is path to RSC-11-6 file

C Exits
C           0   normal
C           1   wrong number of arguments



      integer*4       dunit /17/      ! logical unit for output samples
      character*128   filename        ! path to input file
      integer*4       hunit /16/      ! logical unit for output headers
      integer*4       iarray(1264)    ! input data record
      integer*4       irec /0/        ! record number
      integer*4       iunit /31/      ! logical unit for input data
      integer*4       narg            ! number of arguments
      integer*4       oarray(42)      ! output record of header data
      integer*4       odata(1250)     ! output record of 16-bit sample data

      integer*4       iargc           ! function

      equivalence   ( iarray(15), odata(1) )


C Get and process argument

      narg = iargc()
      if (narg .ne. 1) then
        write(*,'("USAGE:  unpk  pathname")')
        call exit (1)
      end if

      call getarg(1,filename)

      open ( unit = iunit,
     *       file = filename,
     *       access = 'direct',
     *       recl = 5056,
     *       form = 'unformatted',
     *       status = 'old')

      open ( unit = hunit,
     *       file = 'unpk.hdr',
     *       status = 'unknown')

      open ( unit = dunit,
     *       file = 'unpk.dat',
     *       access = 'direct',
     *       recl = 5000,
     *       form = 'unformatted',
     *       status = 'unknown')

 10   continue

      irec = irec + 1
      read(iunit,rec=irec,end=90) iarray


C Unpack header, send it to hunit; send 8-bit data samples to dunit

      call get_hdr(iarray,oarray)
      call prt_hdr1(hunit,oarray)

      write(dunit,rec=irec) odata

      go to 10


C Exits

 90   continue
      irec = irec - 1
      write(*,'("EOF after record ",i10)') irec

 99   continue
      stop
      end
