The type of coupling facility structure that CICS® uses for its temporary storage data sharing pools, coupling facility data table pools and named counter pools is a keyed list structure. This contains an array of numbered lists, each of which is like a keyed file, containing entries with 16-byte keys. Each entry has a fixed prefix area containing its key and other control information that includes an "adjunct area" of 64 bytes for program use, followed by a chain of up to 128 256-byte data elements. This allows a maximum data size of 32K bytes. For named counters, only the prefix area is used, with no data elements, and there is only one list. Storage for entry prefixes, known as entry controls, and data elements is allocated from two storage pools within the structure, which are shared between all lists in the structure.
The storage in a list structure can be divided into two basic types: fixed controls and variable controls. Storage for fixed controls is preallocated at a fixed size for the life of the structure. It contains structure control information, including data buffer space, as well as an array of list headers, up to the maximum number of lists defined when the structure was created. For CICS, it consists of a small number of lists used for CICS internal purposes, and the value specified for the parameters MAXQUEUES or MAXTABLES.
Variable controls are partitioned into storage areas for entry controls, one per entry, and for data elements. You can dynamically adjust this partitioning by altering the ratio of entries to elements, converting storage for one type to the other type. CICS automatically issues a request to alter the ratio when one type of variable storage is running out but there is enough storage of the other type. You can dynamically alter the total size of the storage for variable controls by changing the size of the structure. This must be within the range of sizes that are defined for the structure in the active CFRM policy, which are set at the time that the structure is created. You can change the structure size by using the system operator command SETXCF ALTER,SIZE. Alternatively the operating system can change the structure size, depending on the automatic alter options that are specified in the CFRM policy when the structure is allocated.
The fixed controls include enough internal control areas to manage the maximum number of elements and entries that can exist in the structure, given the maximum structure size and the range of possible ratios of entries to elements, and an array of list headers to handle the maximum number of lists that can exist in the structure. As neither the maximum size nor the maximum number of lists can be increased without reallocating the structure, this means that you must be careful to specify large enough values when the structure is first allocated. However, if you specify a relatively large maximum size or number of lists, a large amount of storage is preallocated for fixed controls; so the initial size of the structure needed to store a given amount of data will be significantly larger than it would be with less generous allowance for expansion.
Within the CICS pool structures, each queue item, data table record or named counter normally occupies one entry in the structure, together with the appropriate number of data elements. Additional entries are used by CICS for internal control purposes to maintain the index of currently defined queues or data tables, as well as tracking which lists are currently in use and which previously used lists are now free and available for reuse. Note that even after all queues or data tables in a pool have been deleted, some entries in the control lists might remain in use.
The amount of storage required for internal control information depends on the level of functionality and performance of the coupling facility control code for the current CFLEVEL, and may increase for a higher CFLEVEL. The easiest way to calculate storage requirements for the CICS pool structures is to use the web-based IBM® CFSizer tool at http://www-1.ibm.com/servers/eserver/zseries/cfsizer/. This tool prompts for parameters that describe the amount of information to be stored in the structure in terms of the corresponding CICS resources, converts this information to numbers of lists, entries and elements and then communicates with a coupling facility at a current CFLEVEL to determine the amount of storage required to store the information with the specified amount of free space and room for expansion. For more information about calculating storage requirements, see Approximate storage calculations.