fdds_writem - map buffer and write binary stream


SYNOPSIS

#include <fdds.h> (fixed-format sources)
#include <f90dds.h> (free-format sources)

integer function fdds_writem(out_bin, out_tag, in_bin, in_tag, in_buf, count)

integer out_bin
integer out_tag
integer in_bin
integer in_tag
integer in_buf(*)
integer count

DESCRIPTION

This functions maps data from a type buffer and write it into a binary stream.

INPUT

Out_bin is a binary tag, previously obtained from fdds_open. It specifies an output binary stream.

out_tag is a field tag, previously obtained eg. from fdds_member. It specifies a tag associated with out_bin. This provides a scale factor for count. If out_tag is zero (nominal), it defaults to the SEQUENCE (trace type) associated with out_bin.

In_bin is a binary tag, previously obtained from fdds_open. It specifies an input binary stream.

in_tag is a field tag, previously obtained eg. rom fdds_member. It specifies a type associated with in_bin. This provides a scale factor for count. If in_tag is zero (nominal), it defaults to the SEQUENCE (trace type) associated with in_bin.

Data is written from in_buf. The minimum size is count times the size of in_tag.

OUTPUT

Data is moved from out_buf to a temporary buffer, while converting from in_tag to out_tag. A byte sequence is copied from the buffer into out_bin. fdds_writem is preferable to executing fdds_writeand fdds_mapdirectly.

The return value is the number of types actually mapped and written. EOF is returned, if an error occurred before any transfer.

EXAMPLES

In fixed-format Fortran:
      #include <fdds.h>
      integer in_bin, out_bin
      integer out_buf(*)
      ...
!     write 10 traces from type buffer
      j = fdds_writem(out_bin, 0, in_bin, 0, out_buf, 10)
    

In free-format F90:

      #include <f90dds.h>
      integer in_bin, out_bin
      integer out_buf(*)
      ...
!     write 10 traces from type buffer
      j = fdds_writem(out_bin, 0, in_bin, 0, out_buf, 10)
    

Using the DDS module:
(Note that the DDS module requires that data arrays passed to I/O functions be 1 dimensional.)

      use dds
      
      integer :: in_bin, out_bin, nsmp, ntrc, itrc
      real, allocatable :: buffer(:,:)
      
      allocate(buffer(nsmp, ntrc))
      ! write 10 traces from type buffer
      do itrc=1,10
        ier = fdds_writem(out_bin, 0, in_bin, 0, buffer(:,itrc), 1)
      enddo
    

SEE ALSO

      fdds_readm
      fdds_write
      fdds_map
    

AUTHOR

R. L. Selzler, EPTG (May, 1994)