program convert_flux

! Converts CSIRO coupled GCM restart surface fluxes from CRAY native format
! to Alpha native format.
!
! Usage:   convert_flux <cray_file> <alpha_file>
!
! Steve Phipps   15 November 2001

  implicit none

  ! Define constants
  integer, parameter :: inunit=10, outunit=11, lon=64, lat=28

  ! Declare variables
  character(len=80) :: infile, outfile
  integer :: itt, i
  real, dimension(lon*lat*2) :: data
  character(len=14) :: message1
  character(len=18) :: message2

  ! Get names of input and output files
  call getarg(1, infile)
  call getarg(2, outfile)

  ! Open input and output files
  open(unit=inunit, file=infile, status='old', form='unformatted', &
       action='read', convert='cray')
  open(unit=outunit, file=outfile, status='new', form='unformatted', &
       action='write')

  ! Read data from input file and write immediately to output file
  read (inunit) message1
  write (outunit) message1

  read (inunit) itt
  write (outunit) itt

  do i = 1, 4

     read (inunit) data
     write (outunit) data

  end do

  read (inunit) message2
  if (message2 /= "end surface fluxes") stop "Error in convert_flux."
  write (outunit) message2

  ! Close input and output files
  close (unit=inunit)
  close (unit=outunit)

end program convert_flux