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


Handling an Incompletely Processed READ_MULT Request

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

A READ_MULT request can end prematurely for either of the following reasons:
  • A request could time out before completion
  • A request could require more buffer space than you provided.
When a READ_MULT request ends before returning all the information, IXLLIST:
  • Sets the IXLLIST return code to IXLRETCODEWARNING and the reason code to:
    • IXLRSNCODETIMEOUT if the processing timed out
    • IXLRSNCODEBUFFERFULL if the buffer was too small to hold all the output
    • IXLRSNCODEBADBUFSIZE if the buffer was empty but still too small to hold the first list entry being read.
  • Returns in the LAARESTOKEN or LAAEXTRESTOKEN field of the answer area, a restart token to be provided when you reissue the request to continue the scan.

To reissue the READ_MULT request, access the restart token returned in the LAARESTOKEN or LAAEXTRESTOKEN field of the answer area and specify the token with the RESTOKEN or EXTRESTOKEN parameter on the next READ_MULT invocation. Be sure to process the information returned from the last request before reissuing the request. Continue to reissue the request until the return code indicates that all processing has completed.

If you do not have exclusive access to the list structure, it could be modified by other users between the time you issue the READ_MULT request and the time you reissue it. Since the READ_MULT request uses a restart token instead of the next entry's list controls to indicate where scanning should resume, scanning can resume successfully even if a particular list entry is moved or deleted.

You can avoid coding a separate IXLLIST invocation with the RESTOKEN or EXTRESTOKEN parameter to handle incomplete processing, by coding a single IXLLIST invocation with the restart token initialized to zero for the first time through. A restart token of zero causes IXLLIST to treat the invocation as a new request. When reissuing the request due to premature completion, be sure to first set the restart token to the value from the LAARESTOKEN or LAAEXTRESTOKEN field.

If the request ended prematurely because the buffer was too small to hold the first entry to be read (for instance, your buffer is 4096 bytes but the data entry information is 65536 bytes), determine the size of the data entry for the list entry that caused the failure by checking the list entry control information returned in LAALCTL. You must know the data element size to make this calculation because the list entry controls only indicate the number of data elements, not their size. Reissue the READ_MULT request with a buffer at least the size of the failing list entry's data entry.

Go to the previous page Go to the next page




Copyright IBM Corporation 1990, 2014