API—Unload function


The Unload function API lets a DL/I application program use the product’s fast database retrieval facilities.

For batch DL/I programs that primarily read large portions of a database sequentially, using the API can significantly reduce elapsed time and CPU usage.

The API is not a replacement for full-function DL/I; it is an extension of the unload process. The API rapidly retrieves segments that are in relatively sequential order.

Using the API speeds the sequential retrieval of large numbers of segments, but you should not use it to retrieve only a few thousand segments. It optimizes processing for GN calls with unqualified segment search arguments (SSAs) and for GNP calls.

Unless you have several thousand GN calls for every GU call, do not invoke the API. If your application program requires full-function DL/I-type processing, use DL/I.

The API assumes that it has read exclusive control of the database (as any unload utility does during reorganization). You can run an API job while other jobs are updating the database; however, a BMC90212 message or U4094 abend might be issued, indicating that the database contains pointer errors when none actually exist. (In a similar situation, IMS issues an 85x abend or a GG status code.) The abend occurs when IMS writes an updated block to DASD while a related updated block is still in the IMS buffer pool and the API reads the updated block from DASD. This can be called a temporary pointer error.

The API supports GOx PROCOPTs and might return a GG status code. PROCOPT=GOx allows you to access segments even if they are locked. This access to a locked segment might result in a temporary pointer error. If you specify PROCOPT=GOx, the API returns a GG status code rather than causing the job to abend. Any application program that is using PROCOPT=GOx should contain logic to deal with this situation.

Be aware of potential data integrity exposures that can occur when you use PROCOPT=GOx. If data integrity is required, do not use PROCOPT=GOx.

The API is transparent to the application program. Standard DL/I call facilities are used. You do not need to recompile or relink-edit the application program. Implement the API with execution-time JCL. DL/I calls using the Application Interface Block (AIB) interface are supported.

This section contains the following topics:



 

Tip: For faster searching, add an asterisk to the end of your partial query. Example: cert*