Modernization Hub

DL/I - Data Language Interface for IMS

Enhanced Definition

DL/I (Data Language Interface) is the programming interface used by application programs to access and manipulate data stored in IBM's IMS (Information Management System) hierarchical databases. It provides a set of call-level commands that allow programs written in languages like COBOL, PL/I, and Assembler to interact with IMS DB. DL/I acts as the bridge between the application logic and the underlying IMS database management system. DL/I (Data Language Interface) is the primary application programming interface (API) used by programs on IBM z/OS to interact with IMS (Information Management System) databases. It provides a set of procedural calls that allow applications to retrieve, insert, update, and delete data stored in IMS's hierarchical database structure. DL/I acts as the bridge between application logic and the underlying IMS database management system.

Key Characteristics

    • Call-Level Interface: DL/I operations are invoked through standard CALL statements in host programming languages, passing parameters that specify the desired database action.
    • Hierarchical Data Model: It is specifically designed to navigate and operate on data structured according to IMS's hierarchical model, which organizes data into segments with parent-child relationships.
    • Procedural Data Manipulation Language (DML): DL/I provides a set of procedural commands (e.g., GU for Get Unique, GN for Get Next, ISRT for Insert, DLET for Delete, REPL for Replace) that require explicit navigation through the database.
    • Program Specification Block (PSB): Every application program using DL/I must have an associated PSB, which defines the program's logical view of the database and the specific segments it is authorized to access.
    • Program Communication Block (PCB): Within the PSB, PCBs define the interface to specific databases or logical terminals, providing status codes and segment information after each DL/I call.
    • Segment Search Arguments (SSAs): DL/I calls use SSAs to specify criteria for selecting specific segments within the database hierarchy, allowing for qualified searches.

Use Cases

    • Batch Data Processing: COBOL batch programs frequently use DL/I to perform high-volume reads, updates, insertions, and deletions on IMS databases for tasks like payroll processing, billing, and report generation.
    • Online Transaction Processing (OLTP): CICS applications, often via DBCTL (Database Control), and IMS TM (Transaction Manager) applications utilize DL/I to access and update IMS databases in real-time for interactive transactions.
    • Data Extraction and Reporting: Programs are written using DL/I to extract specific subsets of data from IMS databases for analytical purposes, data warehousing, or generating custom reports.
    • Database Maintenance Utilities: Custom utilities are developed with DL/I to perform specialized database maintenance tasks, data integrity checks, or data migration between IMS systems.

Related Concepts

DL/I is inextricably linked to IMS DB, serving as the sole programmatic interface for applications to interact with IMS databases. It relies on the Database Description (DBD) to understand the physical structure of the database and the Program Specification Block (PSB) to define the application's logical view and access paths. When used in an online environment, DL/I calls are routed through IMS TM (Transaction Manager) or CICS DBCTL to access the IMS database, making it a fundamental component of the broader IMS ecosystem and enterprise OLTP systems.

Best Practices:
  • Optimize Navigation: Design DL/I calls to minimize database I/O by using qualified SSAs effectively and choosing the most efficient GET calls (GU, GN, GNP) for the required data access pattern.
  • Robust Error Handling: Always check the DL/I status code returned in the PCB after every call and implement comprehensive error handling routines to manage unexpected conditions or database unavailability.
  • Efficient PSB Design: Create PSBs that provide only the necessary database views and access paths for a given application, improving security, reducing overhead, and simplifying program logic.
  • Manage Commit Frequency: For batch update programs, issue SYNCPOINT (commit) calls at appropriate intervals to release database locks, manage logging, and ensure recoverability in case of program failure.
  • Understand Database Structure: A deep understanding of the IMS database's hierarchical structure (DBD) and the application's logical view (PSB) is crucial for writing efficient and correct DL/I code.

Related Vendors

ABA

3 products

ASE

3 products

IBM

646 products

Tone Software

14 products

Trax Softworks

3 products

Related Categories

Operating System

154 products

Databases

211 products

Transactions

29 products

Automation

222 products