If the z/OS XML parser determines that an output buffer is spanned, and requests another buffer to continue processing, the caller needs to return a new buffer large enough to contain a minimum set of complete data. If the item that needs to be placed at the beginning of this new buffer is a non-splittable record that doesn't fit, the z/OS XML parser will return with a return code of XRC_FAILURE, and a reason code of XRSN_BUFFER_OUTBUF_SMALL.
The z/OS XML parser generally does not split records unless there is a need to - for example, to fit into a given output buffer. However, the decision to split a record depends on many factors. There are instances where the z/OS XML parser will split records of the same type within the same buffer, and this is normal. This is particularly true for XDBX streams, where the z/OS XML parser generates records based on the stream of XDBX tags presented by the builder of the stream. One should not expect, for instance, that the stream of z/OS XML records generated for a given text document will have records split in the same way as for an XDBX stream representing the same document.
Record type | Splittable? |
---|---|
GXLHXEC_TOK_ATTR_NAME | No |
GXLHXEC_TOK_ATTR_VALUE | Yes |
GXLHXEC_TOK_AUX_INFO | No |
GXLHXEC_TOK_BUFFER_INFO | No |
GXLHXEC_TOK_COMMENT | Yes |
GXLHXEC_TOK_CHAR_DATA | Yes |
GXLHXEC_TOK_END_CDATA | No |
GXLHXEC_TOK_END_ELEM | No |
GXLHXEC_TOK_ERROR | No |
GXLHXEC_TOK_DTD_DATA | No |
GXLHXEC_TOK_NS_DECL | No |
GXLHXEC_TOK_PI | Yes |
GXLHXEC_TOK_ROOT_ELEMENT | No |
GXLHXEC_TOK_SCHEMA_LOCATION | No |
GXLHXEC_TOK_START_CDATA | No |
GXLHXEC_TOK_START_ELEM | No |
GXLHXEC_TOK_UNRESOLVED_REF | No |
GXLHXEC_TOK_WHITESPACE | Yes |
GXLHXEC_TOK_XML_DECL | No |