Modernization Hub

DCI - Database Call Interface

Enhanced Definition

The Database Call Interface (DCI) refers to the programmatic method used by application programs, primarily in IBM's Information Management System (IMS) environment, to interact with IMS databases. It is the underlying mechanism for executing Data Language One (DL/I) calls, allowing applications to retrieve, insert, update, and delete data within IMS's hierarchical database structure. DCI provides a low-level, procedural interface for database manipulation. DCI (Database Call Interface) refers to a low-level programming interface primarily used in the IBM IMS (Information Management System) environment. It allows application programs to directly interact with IMS databases by passing control blocks and parameters, offering fine-grained control over database operations. It serves as an alternative to the higher-level DL/I (Data Language One) calls for specific, often performance-critical, scenarios.

Key Characteristics

    • DL/I Implementation: DCI is the concrete implementation of DL/I commands, which are the language used to access IMS databases.
    • Procedural API: Applications make explicit CALL statements (e.g., in COBOL, PL/I, Assembler) to the IMS database services, passing parameters like the Program Communication Block (PCB) address, DL/I function code, I/O Area, and Segment Search Arguments (SSAs).
    • Segment-Oriented: IMS databases are organized hierarchically into segments, and DCI operations directly manipulate these segments rather than tables or rows.
    • Program Specification Block (PSB) Dependency: Every application using DCI must have an associated PSB that defines its view of the database, the segments it can access, and the types of operations it can perform.
    • Status Codes: After each DL/I call, IMS returns a status code (e.g., in the PCB or AIB) indicating the success or failure of the operation, which applications must check for proper error handling.
    • Language-Agnostic Core: While implemented differently across languages, the core DL/I function codes and parameters remain consistent, reflecting the underlying IMS database operations.

Use Cases

    • Batch Data Processing: COBOL batch programs frequently use DCI to process large volumes of data stored in IMS databases, performing tasks like reporting, data aggregation, or bulk updates.
    • Online Transaction Processing (IMS DC): IMS Message Processing Programs (MPPs) or Batch Message Processing (BMPs) running under IMS DC utilize DCI to handle real-time transactions, such as customer inquiries or order processing, by accessing and updating IMS databases.
    • Data Migration and Conversion: Custom utility programs written in COBOL or Assembler employ DCI to extract data from legacy IMS databases for migration to other systems or to load data into IMS.
    • Application Integration: Older mainframe applications needing to interface with IMS databases for specific data elements will use DCI within their program logic.

Related Concepts

DCI is inextricably linked to IMS DB, serving as the primary programmatic interface for applications to interact with it. It works in conjunction with DL/I, which is the data manipulation language, and relies on PSBs to define the application's database view and PCBs for runtime communication and status feedback. While DB2 uses SQL for relational database access, DCI is the equivalent low-level interface for IMS's hierarchical databases. Applications using DCI often run within the IMS DC environment for online processing or as batch jobs managed by JCL.

Best Practices:
  • Robust Error Handling: Always check the DL/I status code after every call and implement appropriate error recovery or logging mechanisms to ensure data integrity and application stability.
  • Optimize SSAs: Design Segment Search Arguments (SSAs) efficiently to minimize database I/O, using qualified SSAs where possible to directly locate desired segments.
  • Efficient PSB Design: Structure PSBs to provide applications with precisely the database views and access types they need, avoiding unnecessary segment sensitivity or processing options.
  • Concurrency Management: Understand IMS locking mechanisms and design applications to minimize lock contention, especially in high-volume online environments, to prevent deadlocks and improve throughput.
  • Thorough Testing: Rigorously test DL/I calls with various data scenarios, including boundary conditions, empty sets, and error conditions, to validate program logic and database interactions.

Related Products

Related Vendors

ABA

3 products

ASE

3 products

IBM

646 products

Related Categories

Performance

171 products

Databases

211 products

Transactions

29 products