Modernization Hub

Call Level Interface (CLI) Programming Method

Enhanced Definition

The Call Level Interface (CLI) is a standard programming interface that allows applications to access and manipulate data in a relational database (such as DB2 for z/OS) using a set of function calls, rather than embedding SQL statements directly into the application's source code. It provides a standardized, vendor-neutral API for database interaction, primarily facilitating dynamic SQL execution.

Key Characteristics

    • Standardized API: Adheres to industry standards (e.g., X/Open SQL CAE, ODBC), providing a consistent interface across different database systems, though implementations can vary.
    • Function-Based: Database operations are performed by calling specific functions (e.g., SQLAllocHandle, SQLExecDirect, SQLFetch) from a CLI library.
    • Dynamic SQL: Primarily designed for executing SQL statements constructed at runtime, offering flexibility for ad-hoc queries and dynamic data access.
    • Runtime Binding: SQL statements are prepared and executed at runtime, contrasting with embedded SQL which typically requires a precompilation step.
    • Language Independence: While often associated with C/C++ applications, CLI can be used by various programming languages that can call external functions.
    • Driver-Dependent: Relies on a specific database driver (e.g., the DB2 CLI driver for z/OS) to translate generic CLI calls into database-specific operations.

Use Cases

    • Dynamic Query Tools: Developing applications that allow users to construct and execute arbitrary SQL queries against DB2 for z/OS without recompilation.
    • Middleware and Gateways: Building database middleware or gateways that provide a common access layer to DB2 for z/OS from distributed client applications.
    • C/C++ Applications on z/OS: Creating C or C++ programs that require flexible and dynamic interaction with DB2 databases on the mainframe.
    • ODBC/JDBC Driver Implementations: CLI serves as the underlying mechanism for how ODBC and JDBC drivers connect to and interact with DB2 for z/OS from client applications on other platforms.
    • Generic Database Utilities: Developing utilities that need to connect to and query various databases, including DB2 for z/OS, using a common programming model.

Related Concepts

CLI is a powerful alternative to Embedded SQL (e.g., EXEC SQL in COBOL or PL/I), which requires a precompiler to convert SQL statements into host language calls. While embedded SQL is often preferred for static, performance-critical transactions, CLI offers greater flexibility for dynamic SQL. It is fundamental to how DB2 for z/OS is accessed programmatically, especially for applications requiring runtime SQL construction. Furthermore, CLI forms the bedrock for higher-level database connectivity standards like ODBC (Open Database Connectivity) and JDBC (Java Database Connectivity), enabling distributed applications to connect to DB2 for z/OS.

Best Practices:
  • Robust Error Handling: Always check the return code of every CLI function call and use SQLGetDiagRec or SQLGetDiagField to retrieve detailed error and warning information for proper diagnostics.
  • Resource Management: Ensure that all allocated handles (environment SQLHENV, connection SQLHDBC, statement SQLHSTMT, descriptor SQLHDESC) are properly freed using SQLFreeHandle to prevent resource leaks.
  • Parameter Markers: Utilize parameter markers (?) in dynamic SQL statements to bind input values. This prevents SQL injection vulnerabilities and allows the database to reuse prepared statements, improving performance.
  • Transaction Control: Explicitly manage transactions using SQLSetConnectAttr to control auto-commit behavior and SQLCommit or SQLRollback to ensure data integrity.
  • Statement Caching: For frequently executed dynamic SQL statements, consider using statement caching mechanisms provided by the CLI driver or implementing your own to reduce the overhead of preparing statements repeatedly.

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

Automation

222 products

Browse and Edit

64 products