z/OS MVS Programming: Sysplex Services Guide
Previous topic | Next topic | Contents | Contact z/OS | Library | PDF


Sending Message Data Using Multiple Buffers

z/OS MVS Programming: Sysplex Services Guide
SA23-1400-00

This topic describes the formats you can use to pass message data to IXCMSGOX in multiple buffers. Illustrations of the formats are shown in the figures at topics Figure 1 through Figure 4.

Use the ELEMFORM parameter to indicate how the message is maintained in multiple data buffers. Create either a queue (ELEMFORM=QUEUE) or a table (ELEMFORM=TABLE) of message data elements, each representing a buffer containing message data.
  • Specifying the Message Data Elements
    Message data elements contain:
    • Either:
      • A buffer containing message data
      • A pointer to a buffer containing message data.
    • The length of the buffer (optional)
    • The ALET to qualify the address of the buffer if message data elements contain pointers to the buffers (optional).

    Buffer lengths and ALETs can be passed separately as described below instead of including them in each message data element.

  • Specifying the Location of Each Buffer
    Specify the location of the buffer or buffer pointer within each message data element using one of the following parameters:
    • If the message data elements contain the buffers, use the PARTOFF parameter to specify the offset of the buffer area from the start of each message data element.
    • If the message data elements contain pointers to the buffers, use the PARTPTROFF parameter to specify the offset of the buffer address from the start of each message data element.
  • Specifying the Location of Each ALET
    Specify the ALETs to qualify the buffer addresses using one of the following parameters:
    • The PARTALET parameter to specify a single ALET to qualify each buffer address.
    • The PARTALETOFF parameter to identify a location in each message data element that contains the ALET to qualify the associated buffer address.
    • The PARTALETTBL parameter to specify a separate table of ALETs.
  • Specifying the Size of Each Buffer
    Specify the lengths of the buffers using one of the following parameters:
    • The PARTLEN parameter to specify a single length for all buffers.
    • The PARTLENOFF parameter to identify a location in each message data element that contains the length of the associated buffer.
    • The PARTLENTBL parameter to specify a separate table of buffer lengths.
  • Specifying the Location of the Next Message Data Element

    If you have a table of message data elements, use the NEXTOFF parameter to specify, in each element, the location of the next element. NEXTOFF contains the length in bytes of each entry in the table.

    If you have a queue of message data elements, use the NEXTPTROFF parameter to specify, in each element, the pointer to the next element.

    IXCMSGOX processes message data elements in consecutive order, copying message data from each buffer until either the number of bytes copied matches the specified buffer length or the entire message has been copied.

    Processing of message data continues until one of the following occurs:
    • All message data has been copied, as determined by the value specified by the MSGLEN parameter.
    • IXCMSGOX has processed the number of buffers specified by the #MSGPARTS parameter.
    • IXCMSGOX has reached the end of the queue of message data elements as specified by the ENDOFQUEUE parameter or its default.
    • IXCMSGOX finds more than 65536 consecutive buffers of length 0 and does not know how many message parts to search because you did not specify the #MSGPARTS parameter. IXCMSGOX assumes an error has occurred. The message is not sent and you receive a return code and reason code indicating the error.

Note that if the receiver is going to receive the message into multiple buffers and requires that the sender provide the length of each message part, the sending and receiving member must devise a protocol for transmitting this information. For instance, the length of each message part could be sent in the message data itself or as part of the message control data.

Go to the previous page Go to the next page




Copyright IBM Corporation 1990, 2014