z/OS MVS Program Management: Advanced Facilities
Previous topic | Next topic | Contents | Contact z/OS | Library | PDF


Buffer

z/OS MVS Program Management: Advanced Facilities
SA23-1392-00

This refers to a structured area within which data is returned by the fast data access service. The calling application must provide specific control information in the buffer before passing it to a service. IEWBUFF - Binder API buffers interface assembler macro for generating and mapping data areas defines an IEWBUFF assembler macro that can be used to allocate, map, and/or format the buffer correctly (see that topic for details). Binder API buffer formats contains details of all buffer type formats. Note that multiple buffer format versions exist. These should not be confused with program object versions. With a few exceptions, fast data is able to map data from any program object version into any buffer format version; however, earlier buffer format versions may be missing fields for features available in more recent program objects. In general, an application should use the most recent buffer version supported by the systems the application is designed to run on. Earlier PO formats can always be represented in more recent buffer formats.

There were major changes between PO1 and PO2 object formats, and corresponding major changes between version 1 and version 2 buffers. Because of this, version 1 ESD, RLD, and NAME buffers cannot be used to access more recent program object versions. If using IEWBUFF to generate buffers, please note that for compatibility the default remains VERSION=1. Applications should override that default in most cases.

Every buffer type has a header which identifies the type and version of the buffer. Three other fields within the buffer headers deserve special note:

BUFFER_LENG
The total length of the buffer in bytes, including the header. Data entries are built following the header, but the total buffer size must also include space, in many buffer types, for name strings. These are built in descending address order working back from the end of the buffer. It should be noted that the binder supports external symbol names up to 32,767 bytes long, and that some entry types have multiple names for a single entry. An application written to support arbitrary names needs to provide a buffer which is large enough to handle any combination of names associated with a single entry. An ESD entry, for example, can have up to four names associated with it, so in theory the buffer might have to be more than 128 KB long to retrieve a single entry.
ENTRY_LEN
Data will be returned as an array of entries. For example, External Symbol Dictionary entries are currently from 56 to 96 bytes long, depending on buffer version, but within a single buffer all ESD entries are of the same length. The length is an attribute of the buffer version, and must correspond with it. A few buffer types, including text buffers, effectively have unstructured or varying length blocks of data. These buffer types always use an entry length of 1, meaning that their content is counted in bytes.
ENTRY_COUNT
This is a nominal number of entries that can be expected to fit in the buffer. The product of the entry count and the entry length is the size anticipated to be used by returned data, excluding symbol names. The entry count is not updated on return from a service, so it does not indicate the number of entries that are actually in the buffer. See the Count parameter below for that. The count returned could be less than this entry count even when there are more entries that have not yet been returned. This would happen if the name strings for the entries returned require more space than was reserved at the end of the buffer for them. In some cases fast data may decide to go beyond the anticipated data area and return more entries than indicated by entry count, if additional space is available within the buffer.

Go to the previous page Go to the next page




Copyright IBM Corporation 1990, 2014