IMS DB Compatible Production DBMS

In Enterprise Server, we provide a production DBMS to deploy your IMS DB applications to the Linux, UNIX, or Windows platforms. It provides:
  • Support for the IMS data access elements of the application
  • Support for the IMS hierarchical data model
  • The actual database to hold the migrated IMS data
Together, these three key elements combine to offer a complete, low risk solution for re-hosting mainframe IMS applications, reducing operational costs and increasing agility. This production DBMS supports a variety of IMS applications, including:
  • Applications that use IMS TM and/or IMS DB
  • Applications that use CICS and IMS DB or JCL and IMS DB
  • Applications that run under VSE, OS390 or z/OS
  • Batch applications
  • Online applications

Supported IMS Features

DLI Functions
  • Fast Path: FLD, POS
  • CICS DL/I calls: PCB, SCHD, TERM
Database Access Types
IMS DB provides several database access types, typically chosen for best performance as determined by the application.
  • DEDB
  • GSAM
  • HALDB*
  • MSDB
* HALDB is supported as a standard full-function database; however, extended features of HALDB are not supported. You can specify a HALDB database in the ACCESS parameter, but no special processing is performed for its extended features.
Database Segment Types
  • Uniquely keyed segments
  • Non-uniquely keyed segments - first, here and last rules
  • Non-keyed segments - first, here and last rules
  • Fixed and variable length segments
  • Segments containing source data for secondary index segments
  • Logical children and logical parents
  • DEDB sequential dependents (SDEP) segments
Database Recovery
DLI Program Batch Backout
Segment Search Argument (SSA)
Programs retrieve data by qualifying the retrieval with a Segment Search Argument (SSA). Enterprise Server provides compatible SSA support including:
  • Up to 15 SSAs per call, each SSA limited to 4,000 bytes
  • SSA relational operators supporting up to 125 boolean operations on each SSA
  • SSA command codes
User Exits
The IMS user exits within Enterprise Server provide a mechanism to implement custom extensions to maximize compatibility with the original mainframe implementation. However, within Enterprise Server, exit routines must be written in COBOL rather than in Assembler as mainframe Assembler is not supported in production on open systems. This means that during any migration, existing mainframe exit routines written in Assembler must be converted to or re-written in COBOL as part of the migration.
The following IMS-specific user exits are supported:
  • MFS field and segment edit routines.
  • Sparse index exits.
  • GSAM databases.
  • Data capture exits - The EXIT operand is supported for both the DBD and SEGM statements along with all of the EXIT options (DATA, PATH and CASCADE options) except the LOG option. The sub options for CASCADE (KEY, DATA and PATH) are also supported. A maximum of nine different exit routines can be specified for any one segment.
  • All fields in the XPCB and XSDB parameter blocks.

Maximum Database Size

IMS production databases are implemented as IDX-8 files, so the theoretical maximum size for an IMS database is tied to the maximum size for an IDX-8 file. Micro Focus has not performed tests or performance benchmarks on IMS databases larger than 300GB. Very large databases could prove to be impractical in terms of performance and maintenance (time to rebuild, etc.). We recommend that you allocate time to test for accounts that are migrating large databases as part of the prototype or proof of concept process.

The internal database structure within Enterprise Server uses symbolic keys, rather than pointers, and maintains some redundant key information, increasing the amount of actual storage required for the IMS database on Windows, UNIX or Linux. However, the key and data compression performed within the Enterprise Server file system typically compensates for this overhead.

Two Phase Commit Architecture

The IMS DB Compatible Production DBMS uses a two-step commit protocol. All registered resources are sent commit requests. The sequence for commit depends on whether the resource supports a two-step sequence or not. For two-step resources, a "Prepare" is issued to each resource before sending the "Commit" step. If all Prepares succeed, commit processing begins. If any prepare fails, backout starts. When a resource responds negatively to the prepare, it means that it cannot complete a commit but it can complete backout or has already backed out.

Our two-phase commit architecture is similar to the two-phase commit support in mainframe IMS, and shares some of the same benefits; however, it does not provide recovery from failures that might occur during backout processing or during the second step of commit processing.

The main benefit of this two-phase process over a "single-phase" commit protocol is that it eliminates the integrity window between the time the application last accessed a resource to when commit processing begins. The Prepare step catches any failures that occur during this interval and begins backout processing. Contrast this with two separate resources using a single-phase protocol. In single-phase there is no Prepare phase, only a commit or backout. If the first commit succeeded but the commit to the second resource failed, you could have a mixed outcome.