Non-REXX user exit buffered data format
The information that is provided in this section is only applicable to user exits that are not written in REXX.
If the data length for certain character fields exceed the maximum field size, then Fault Analyzer instead allocates a buffer large enough for all of the field data, and provide information about the buffer in three fullwords starting at relative offset zero of the field as follows:
- The first byte of the first fullword is set to X'FF' to indicate that this field contains buffer information. The remaining 3 bytes are not used, but are set to X'00' by Fault Analyzer.
- The second fullword is the address of a buffer containing the data in the same format as when the data is provided in the field itself.
- The third fullword is the allocated length of the buffer.
The data fields that this buffered format is applicable to are identified separately in the data area descriptions.
The Analysis Control user exit cannot free any buffer that is allocated by Fault Analyzer for the field. Instead, if the field or buffer size is inadequate, the exit can allocate its own buffer and place the address and length information in the three fullwords at relative offset zero of this field. Fault Analyzer is not dependent on any original buffer address to be retained for later release of allocated storage.
Freeing of buffers that were allocated by user exits is the responsibility of the user. This freeing can be achieved be utilizing the ENV.USER_1 or ENV.USER_2 fields to point to an area of storage containing information about any buffer allocations made. A later exit, such as the End Processing user exit, can then be used to perform the release of allocated storage.
For REXX user exits, Fault Analyzer automatically handles the allocation and freeing of any necessary buffers to accommodate data lengths in excess of the field size.