Bufferpool Management

Several messages contain a status code. This code consists of a four-hex-digits return and a four-hex-digits feedback code.

Return Codes

00 - Request processed successfully

The request has been processed without problems. When this is returned, any data expected to be returned by the request should be in its appropriate field in the parameter list.

04 - Request processed, additional data in feedback code

The request was processed successfully, however, an abnormal event occurred during the request, which is therefore communicated back to the requester via a feedback code. Nevertheless, any data expected to be returned by the request should be in its appropriate field in the parameter list.

08 - Request not processed, additional data in feedback code

The request could not be processed due to a problem with the given buffer pool. Additional information is provided in the feedback code.

0C - Invalid request, additional data in feedback code

The request was not processed due to an error in the request itself, or an error in the data given for the request. Additional information is provided in the feedback code.

10 - Logic error, additional data in feedback code

Due to a logic error in the fixed buffer pool manager logic, the request may or may not have been processed. Details on the error are provides in the feedback code.

Feedback Codes

04 - Invalid function requested

The request field of the parameter list contains an invalid or unknown request identifier.

08 - No buffer pool token parameter provided

The requester did not provide the address of a buffer pool token area for the request. This parameter is required for all requests.

0C - No buffer pool token parameter provided

The user provided a pointer to a buffer pool token area; however, this area is either non-zero for a CREATE request or zero for any other request. When the area is non-zero for any request other than a CREATE request and this is returned, it indicates that the buffer pool token does not reflect the status at the time of the buffer pool create when the token was given. After the creation of a buffer pool, a pointer from the created header to the token provided on the create remains to ensure that the same token area is provided for a specific buffer pool for each request, otherwise this feedback code will be returned.

10 - No parameters provided

The requester issued a request which requires parameters, however, no parameters were provided in the request parameter list.

14 - Operating system compatability error

One or more subpool parameter areas have been provided to a CREATE request indicating that the subpool should be in an area that is not available on the machine. For example, LOC=DS is specified while the operating system is not capable of supporting data spaces. The closest possible match will always be used instead, however, this may lead to duplicate buffer subpool specifications.

18 - Equal subpools specified

The user has requested that a buffer pool be created and provided two or more subpool parameter areas, however, in at least one case the same type of subpool was specified twice, ie., a subpool with the same element size and in the same area of storage has been allocated. In this case, the first specification is taken and the base number of elements from the duplicate is added to the base allocation for the first specification. If more than one duplicate is specified, duplicates subsequent to the first one found are ignored.

1C - No storage for subpool control blocks

The attempt to get storage from the operating system for the SubPool Control Block (SPCB) or the SubPool DeScriptors (SPDSs) for a subpool failed.

20 - No storage for Fixed Buffer SubPool control block

An attempt to get storage for the Fixed Buffer SubPool (FBSP) control block failed.

24 - No storage for subpool

The attempt to get storage for the actual subpool element storage failed.

28 - Request rejected, buffer pool quiescing

While a buffer pool is being initialised or deleted, an indication is set in the buffer pool token. This condition means that the buffer pool is quiescing and therefore no new requests for the buffer pool can be accepted.

2C - Logic error in request processing

During the initial processing of a request an unexpected specific type of request was detected.

30 - Supplied parameters not required

The buffer pool manager has detected parameters that have been supplied where none are required. These parameters are ignored.

34 - No subpool available to satisfy a request

A request was issued to get a buffer from a buffer pool, however, no subpool could be found to satisfy the request and implicit subpool creation is not allowed for the buffer pool. This indicates that either the size of buffer requested is not available or the conditions imposed by the 'LOC' specified on the get could not be satisfied.

38 - Subpool creation error

A GET request was issued against a buffer pool, however, no subpool was found which could satisfy the request. The buffer pool manager tried to implicitely create a subpool to satisfy the request, however, the creation of the new subpool failed. Messages to the console show why the creation of the buffer subpool failed.

3C - Subpool exhausted, expansion not permitted

An attempt to get a buffer subpool element has failed because there are no free buffers left in the subpool. The subpool definition does not provide for expansions (expand-by number not specified or 0).

40 - One or more subpool contractions occurred during request

During a FREE request it was discovered that a buffer subpool could be contracted again. The contraction will be performed by the first FREE request which discovers the condition and can handle contraction. This simply indicates that this is the request that caused the contraction to occur.

44 - No buffer available

An attempt to get a buffer subpool element has failed because the buffer subpool is empty. There are several possible reasons for this:

  1. The subpool cannot expand and the base allocation is full.

  2. The subpool has been expanded to the maximum number of expansions allowed.

  3. The fixed buffer pool manager attempted to expand the buffer pool but the expansion failed. Messages written to the console will give the reason for the failure.

  4. The request itself could not handle expansion (EXPAND=NO specified on request) and no other subpool could be used to satisfy the request.

48 - Buffer address not in buffer pool

A request was made to free a buffer, however, the address provided was not in the buffer pool indicated by the buffer pool token.

4C - Buffer already free

A request to free a buffer was received, however, the buffer was already free.

50 - Address not on buffer subpool boundary

A request to free a buffer from a buffer pool was received and the address provided was found in one of the buffer subpools, however, the address did not point to the start of a buffer element as the address would have been returned to the GET request.

54 - Buffer token error

A request to free a buffer was made however, this buffer was originally requested with a token specified on the get request and either no token was provided on the free request, or the token provided did not match the one provided on the GET request.

58 - Buffer chain error

A FREE request was issued for a buffer which is on a chain provided in the original GET request, however, either the FREE request did not provide a chain base, or the buffer does not exist in the provided chain.

5C - No storage for fixed buffer pool header control block

An attempt to get storage for the buffer pool header control block (FBPH) failed.

60 - Freeall request, buffer already free

A FREEALL request was issued to free one or more buffers with a specific token value and/or on a specific chain, however, at least one of the buffers has been found to be already free.

64 - Buffer pool token logic error

A logic error has occurred while the fixed buffer pool manager was manipulating the buffer pool token.

68 - PLIST level error

When a PLIST is built by a user program, the CMFBPM macro ensures that the level at which the plist was generated is included in the parameter list. This message indicates that the level is not supported by the fixed buffer pool manager module in use. It is also possible that the parameter list has been overwritten or that the manager module was not called using CMFBPM.

6C - Subpool Statistics Area ID error

On a STATS request to the buffer pool manager, a Subpool Statistics Area (SPSA) must be provided in order to return the statistics requested. This area must have the character string 'SPSA' in the 'ID' field as mapped by the CCSPSA generated DSECT. In this case, the string was not found.

70 - End of statistics data for a buffer Pool

The STATS request can be issued more than once to get information about the various subpools in a buffer pool. This return code indicates that the there is no more data to return for a buffer pool. It will be returned along with the data for the last subpool AND if any subsequent request is issued, after end of data is hit. In the latter case, the subpool statistics area provided will not have been updated.

74 - Logic error processing buffer pool parameters

While processing the parameters for a BPCREATE request, duplicate buffer pools are filtered out during processing. This feedback code is returned when a duplicate buffer pool is discovered at a time when no duplicates should occur.

78 - Buffer pool create parameter error

This indicates that parameters have been provided to the BPCREATE request, however, none were selected and thus there are no subpools for the buffer pool.

7C - Resource manager error

The buffer pool manager has received a non-zero return code from the resource manager. This should never happen and therefore indicates a logic error in the buffer pool manager.

80 - Subpool create in progress

The fixed buffer pool manager has detected a request for a buffer which cannot be satisfied from the currently allocated subpools. An attempt was made to create a subpool to satisfy this request, however, it was discovered that another user of the buffer pool was already in the process of creating a subpool. As no resource number or token was available for this buffer pool, the requests could not be serialised and this request was failed.

84 - Subpool expand in progress

The fixed buffer pool manager has attempted to expand a buffer subpool to satisfy this request, however, while attempting to do this, it was discovered that another user was already expanding the subpool. As no resource token or number was available for the buffer pool, no serialisation was possible, therefore, the request was failed. This is usually a short-term situation and the caller can wait awhile and then reissue the request.

88 - Subpool contract in progress

The fixed buffer pool manager has suspended access to a specific subpool due to the need to contract the subpool. As no resource token or number was available for the buffer pool, no serialisation was possible and the request failed. This is usually a short-term situation and the caller can wait awhile and then reissue the request.

8C - Operating system subpool error

An operating system subpool was provided in a request to build a buffer pool and discovered to be outside the range of available operating system subpool numbers. The request is processed but the provided number is ignored.

Overview of Messages

BPM0001 | BPM0002 | BPM0003 | BPM0004 | BPM0005 | BPM0006 | BPM0007 | BPM0008 | BPM0009 | BPM0010 | BPM0011 | BPM0012 | BPM0013 | BPM0014 | BPM0015 | BPM0016 | BPM0017 | BPM0018

BPM0001 BP $1, Addr=$2 not in buffer pool ret=$3
Explanation:

An attempt was made to free the fixed buffer pool element address $2, however, this address is not allocated in the $1 buffer pool. The request was issued from the location indicated by $3.

System programmer info:

This indicates that an invalid free request has been issued for the buffer pool as indicated by $1. Using the $3 address, the module and offset from which the request was issued can be determined. Generally speaking it indicates a problem with the usage of the $1 buffer pool. When $1 is a Software AG created buffer pool, this should be reported to your local support centre.


BPM0002 BP $1 SP $2($3), Addr=$4 bndry error ret=$5
Explanation:

An attempt was made to free the fixed buffer element address $4. This buffer was found to be within the buffer pool $1 and the subpool as identified by $2 and $3, however, the address provided did not point to the start of a buffer in this subpool. The request was issued from the location indicated by $5.

System programmer info:

This indicates that an invalid free request has been issued for the buffer pool as indicated by $1. Using the $5 address, the module and offset from which the request was issued can be determined. This indicates a problem with the usage of the $1 buffer pool. When $1 is a Software AG created buffer pool, this should be reported to your local support centre.


BPM0003 BP $1 SP $2($3), Addr=$4 already free ret=$5
Explanation:

An attempt was made to free the fixed buffer address $4 in the $1 fixed buffer pool. The address was found to be in subpool name $2 id $3, however, it was already free. The request was issued from the location indicated by $5.

System programmer info:

This indicates that a module attempted to free the buffer identified by $4 twice. Using the $3 address, the module and offset from which the request was issued can be determined. This highlights a logic error with the usage of the $1 buffer pool. When $1 is a Software AG created buffer pool, this should be reported to your local support centre.


BPM0004 BP $1 SP $2($3), Expansion about to occur
Explanation:

A 'get' request has been issued for the $1 buffer pool and can be resolved by the subpool $2 id $3. This subpool, and any extensions that may have previously been allocated, is full and therefore another extension has to be built.

System action:

An attempt will be made to create the extensions. A subsequent message will inidcate the sucess or otherwise of the attempt to expand.

System programmer info:

When this occurs frequently for the same subpool, it might be worth considering increasing the base allocation for the subpool to avoid the overhead of expansion.


BPM0005 BP $1 SP $2($3), Expansion failed, status=$4
Explanation:

At attempt to expand subpool $2 id $3 in the $1 buffer pool failed due. $4 contains the status of the request in hexadecimal format. This represents a two byte return code followed by a two byte feedback code indicating why the expansion request failed. Feedback Explanation 18 Equal subpools specified 1C, 20, 24 Not enough storage in the region/partition for controlblocks 3C Bufferpool not allowed to expand 44 Not enough storage in the region/partition/DS for expansion

System programmer info:

Determine why the expansion failed based on the status as indicated by $4. Gerneally speaking, this will only occur due to a shortage of storage in the region. In this case, review the size of the region in which Com-plete is running or reduce the usage of the storage which is in short supply.


BPM0006 SP $1($2) Esize=$3 Eno=$4 Size=$5 Loc=$6 Key=$7
Explanation:

This message is issued when a new subpool or subpool extenstion is allocated by the fixed buffer pool manager. A preceeding or subsequent message will indicate why it has been allocated. The values are as follows...

$1 - Subpool name

$2 - Numeric Subpool ID

$3 - The Element size contained in this subpool in bytes

$4 - The number of elements allocated in this subpool

$5 - The total size of storage allocated for this subpool

$6 - Where the subpool storage resides. This can be ANY, BELOW, DS, ECSA or CSA.

$7 - The storage protect key which the subpool storage has assigned. This will normally be Com-plete's key.


BPM0007 BP $1, Creating SP Esize=$2 Opt=$3 Ret=$4
Explanation:

A 'get' request has been issued for the $1 buffer pool, however, no subpool exists to satisfy the request. As the buffer pool was created with an option indicating that the subpools should automatically be created if no match is found, the fixed buffer pool manager is about to attempt to create a subpool to match the request. The buffer subpool will be built with an element size of $2 and with options $3. These options are the hexadecimal option bytes as passed to the 'get' request. $4 is the address from where the 'get request was issued.

System action:

Further messages will be issued indicating the success or otherwise of the attempt to create the new subpool.


BPM0008 BP $1, Create failed status=$2
Explanation:

An attempt to create a new buffer subpool for the $1 buffer pool failed. $2 is the status indicating the reason for the failure. This status is a hexadecimal representation of a return and feedback code with the first two bytes representing the return code and the second two bytes the feedback code. The possible values and their meanings are described in the explanation of message BPM0005.

System action:

The program which issued the 'get' request which resulted in an attempt to create a subpool to satisfy the request will be notified that the 'get' failed.


BPM0009 BP $1 SP $2($3), $4 expansion(s) contracted
Explanation:

The subpool $2 id $3 in the buffer pool $1 was previously expanded due to excessive demands on the space allocated in the base area. The fixed buffer pool mananger has determined that enough space now exists to delete some of the expansions. In this case, $4 indicates the number of expansions which have been deleted and are no longer available to the subpool. They can of course be allocated again in the future should they be required.


BPM0010 BP $1 SP $2($3), A=$4 token error '$5'/'$6' ret=$7
Explanation:

An attempt was made to free a fixed buffer element from the buffer pool $1. This was found to be in subpool $2 id $3 and was found to have been gotten with a token provided on the 'get' request. On the free request either no token was provided, or a token was provided which didn't match the token provided on the 'get' request. The free request was issued from the location indicated by $7. $5 is the token which was provided on the 'get' request and $6 is the token which was provided on this request. If either are blank, it indicates that no token was provided for the appropriate request. $4 is the address of the token which was the target of the free request.

System action:

The buffer is not freed.

System programmer info:

This indicates that there is an error in the handling of the $1 buffer pool. When a buffer is gotten with a token specified, the free request must be issued with the same token name before the free request will be processed. Using the $6 address, the module and offset from which the request was issued can be determined. When $1 is a Software AG created buffer pool, this should be reported to your local support centre.


BPM0011 BP $1 SP $2($3), A=$4 chain error $5/$6 ret=$7
Explanation:

A request has been issued to free fixed buffer element from the $1 buffer pool. The buffer has been found in subpool $2 id $3 and was found to have been gotten with a chain specified. In this case, the free request has been issued without a chain base specified or the buffer element was not found on the chain provided. The request was issued from the location indicated by $7. $5 is the address of the SPDS for the buffer pool element and $6 is the address of the chain base provided on the free request. $4 is the address of the buffer which was the target of the free request.

System action:

The buffer is not freed.

System programmer info:

When a buffer is gotten with a chain request, the fixed buffer pool manager chains information for the gotten buffer into the provided chain. To ensure that the system intergrity is maintained, the buffer must be removed from this prior to it being freed. In this case either the free request did not provide a chain base or the buffer does not exist in the provided chain and therefore cannot be removed from the chain. This indicates that there is a logic error in the use of the $1 buffer pool. Using the $6 address, the module and offset from which the request was issued can be determined. When $1 is a Software AG created buffer pool, this should be reported to your local support centre.


BPM0012 BP $1, Subpool creation successful
Explanation:

This indicates that an attempt to create a new buffer subpool for buffer pool $1 was successful. This will be preceeded by message '6' which will indicate the size and attributes of the newly created subpool.


BPM0013 BP $1 SP $2($3), Expanded successfully
Explanation:

An attempt to expand subpool $2 id $3 in the $1 buffer pool was successful. A preceeding message will have indicated the attributes of the newly created subpool extension.


BPM0014 BP $1, Internal request returned status=$2
Explanation:

An internal request was issued to perform a fixed buffer pool management function for the $1 buffer pool. The request completed successfully, however, the status information as indicated by $2 was returned. $2 is the hex representation of a two byte return code and a two byte feedback code. The first two bytes are the return code and should always be x'0004', while the second two bytes are the feedback code. The request which was being issued will have been indicated by a preceeding message.

System action:

Processing continues. Normally a message will following indicating that the indicated processing completed sucessfully.

System programmer info:

This message should not normally be issued and indicates the possibility of a logic error in the fixed buffer pool manager. Although no direct problems are associated with this message, it should be reported to your local support centre.


BPM0015 BP $1, Freeall request; Buffers already free ret=$2
Explanation:

A FREEALL request has been issued for the $1 buffer pool to free a group of buffers with certain attributes, however, this has resulted in a free request for a buffer which has already been freed. The request was issued from the address indicated by $2.

System action:

The FREEALL request will be terminated, possibly resulting in buffers being left allocated when they are no longer in use.

System programmer info:

This indicates that a logic error exists in the handling of the $1 buffer pool. Using the $2 address, the module and offset from which the request was issued can be determined. When this is a Software AG controlled buffer pool, this should be reported to your local support centre.


BPM0016 BP $1 Allocated successfully
Explanation:

The buffer pool named $1 has been allocated successfully. One or more fixed buffer pool number '6' messages will be subsequently issued describing the various subpools created for this buffer pool.


BPM0017 BP $1 Deleted successfully
Explanation:

The buffer pool known as $1 has been successfully deleted.


BPM0018 BP $1 Request $2 Status=$3
Explanation:

A $2 request for buffer pool $1 returned a status $3 to the caller. The caller indicated that a message should be issued in the event of a status for the request and this message is the result. The $3 status consists of a halfword return code and halfword feedback code respectively. When the buffer pool no longer exists, $1 will contain the string '$UNAVAIL'.

System action:

The system will continue as normally as possible. This message will generally only be issued when a program is not in a position to handle a failure due to the nature of the module. For example, if the routine which builds output messages cannot get a buffer, then it is unlikely that it will be able to get a buffer to print a message about the fact that it cannot get a buffer.

System programmer info:

When this occurs for a Software AG created buffer pool, it should be reported to your local support centre.