Instead of one large contiguous data area, the receiver can provide
a separate data area for each response. The IXCRECV DATADESC keyword
indicates the location of a data descriptor table. A data descriptor
table is an array with an entry for each requested response. Consider
the following:
- Each entry of the array contains a "data descriptor" that identifies
where the response data for the corresponding response is to be stored.
- There must be an entry in the table for each requested response.
Furthermore, the storage area identified by any one data descriptor
must be large enough to contain the response data for the corresponding
response. If not, no response data is stored and the IXCRECV service
routine returns with a warning return code.
- The answer area header indicates the number of response descriptors.
- The response descriptor for each response indicates the size of
its response data.
- The caller needs to set up the necessary storage areas and data
descriptors and reissue the IXCRECV macro to receive the responses.
- The response data for a response is to be stored at offset 0 in
the storage area that is identified by the corresponding data descriptor
in the data area. Thus, if the receiver requires that the response
data be on a certain storage boundary (for example, a doubleword boundary),
the receiver must ensure that the data area resides on that boundary.
When a message has more than one response, the entries in the data
descriptor table can be associated with the responses in one of two
ways:
- BIND=TARGET indicates that the data descriptor "i" is to be used
when storing the response data from target "i" .
- BIND=NEXT indicates that each successive data descriptor is to
be used for whatever response XCF happens to process next.
A client might choose to use BIND=NEXT, for example, if it learns
from the response descriptors that some targets did not provide response
data. This way the client only needs to provide a data descriptor
table with enough entries for all available responses rather than
for all targets.