integer function fdds_readm(in_bin, in_tag, out_bin, out_tag, out_buf, count)
in_tag is a field tag, previously obtained eg. from fdds_member. It specifies a tag 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.
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, for example, 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.
Data is read into out_buf. The minimum size is count times the size of out_tag.
The return value is the number of types actually read and mapped. EOF is returned if an error occurred before any transfer.
#include <fdds.h> integer in_bin, out_bin integer out_buf(*) ... ! read 10 traces into type buffer j = fdds_readm(in_bin, 0, out_bin, 0, out_buf, 10)
In free-format F90:
#include <f90dds.h> integer in_bin, out_bin integer out_buf(*) ... ! read 10 traces into type buffer j = fdds_readm(in_bin, 0, out_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)) ! read 10 traces into type buffer do itrc=1,10 ier = fdds_readm(in_bin, 0, out_bin, 0, buffer(:,itrc), 1) enddo
fdds_read fdds_map fdds_write