TurboIMAGE/XL Database Management System Reference Manual (30391-90012)
Table Of Contents
- 1 Introduction
- 2 Database Structure and Protection
- 3 Defining a Database
- 4 Using the Database
- 5 TurboIMAGE/XL Library Procedures
- Using TurboIMAGE/XL Intrinsics
- DBBEGIN
- DBCLOSE
- DBCONTROL
- DBDELETE
- DBEND
- DBERROR
- DBEXPLAIN
- DBFIND
- DBGET
- DBINFO
- INTRINSIC NUMBER 402
- Syntax
- Parameters
- Discussion
- Mode 101: Item Number
- Mode 102: Item Name
- Mode 103: Items in Database
- Mode 104: Items in Data Set
- Mode 113: BTREEMODE1 and Wildcard Character
- Mode 201: Set Number
- Mode 202: Set Name
- Mode 203: Sets in Database
- Mode 204: Sets with Item
- Mode 205: Set Capacity
- Mode 206: Number of Data Set Chunks
- Mode 207: Size of Data Set Chunks
- Mode 208: Primary and Actual Capacity
- Mode 209: B-Tree Attachment
- Mode 301: Paths
- Mode 302: Key or Search Item
- Mode 401: Logging
- Mode 402: ILR
- Mode 403: Dynamic Roll-Back
- Mode 404: Logging Subsystem Information
- Mode 406: Database Information
- Mode 501: Subsystem Access
- Mode 502: Critical Item Update
- Modes 8nn: Third-Party Indexing
- Mode 901: Language
- DBLOCK
- DBMEMO
- DBOPEN
- DBPUT
- DBUNLOCK
- DBUPDATE
- DBXBEGIN
- DBXEND
- DBXUNDO
- 6 Host Language Access
- Model Program
- ORDERS Database Model Program
- Main Body of Program
- Opening the Database
- Retrieving All the Records on a Chain (with Item Level Locking)
- Retrieving a Data Entry Using a Record Number
- Retrieving Master Data Using a Key Value
- Retrieving Data Serially (with Set Level Locking)
- Adding an Entry
- Updating an Entry
- Deleting an Entry
- Rewinding a Data Set
- Obtaining Database Information
- Obtaining Error Messages and Explanations
- Closing the Database
- C
- COBOL II
- Defining Data Types, Variables, and Intrinsics
- Main Body of Program
- Opening the Database
- Retrieving All the Records on a Chain (with Item Level Locking)
- Retrieving a Data Entry Using a Record Number
- Retrieving Master Data Using a Key Value
- Retrieving Data Serially (with Set Level Locking)
- Adding an Entry
- Updating an Entry
- Deleting an Entry
- Rewinding a Data Set
- Obtaining Database Information
- Obtaining Error Messages and Explanations
- Closing the Database
- FORTRAN 77
- Pascal
- RPG
- 7 Logging and Recovery
- Database Utilities Used in Logging and Recovery
- Recovery Options
- Logical Transactions
- Dynamic Roll-Back Recovery
- Intrinsic Level Recovery
- Logging Preparation
- Step 1--Checking MPE/iX Logging Configuration
- Step 2--Acquiring Logging Capability
- Step 3--Logging to Tape or Disk
- Step 4--Building a Log File for Logging to Disk
- Step 5--Creating the Log Identifier
- Step 6--Setting the Log Identifier
- Step 7--Setting Flags for the Database Backup Copy
- Step 8--Making a Database Backup Copy
- TurboSTORE/iX 7x24 True-Online Backup
- Logging Status
- Logging Maintenance
- Roll-Forward Recovery
- Roll-Back Recovery
- DBRECOV Commands Used with Roll-Forward and Roll-Back Recovery
- Recovery Tables
- Post-Recovery Options
- The Mirror Database
- 8 Using the Database Utilities
- Restructuring the Database with TurboIMAGE/XL Utilities
- Summary of Utility Routines
- Utility Program Operation
- DBLOAD
- DBRECOV
- >CONTROL
- >EXIT
- >FILE
- >RECOVER
- >ROLLBACK
- >RUN
- DBRESTOR
- DBSTORE
- DBUNLOAD
- DBUTIL
- >>ACTIVATE
- >>ADDINDEX
- >>CREATE
- >>DEACTIVATE
- >>DETACH
- >>DISABLE
- >>DROPINDEX
- >>ENABLE
- >>ERASE
- >>EXIT
- >>HELP
- >>MOVE
- >>PURGE
- >>REBUILDINDEX
- >>REDO
- >>RELEASE
- >>SECURE
- >>SET
- >>SHOW
- Syntax
- Parameters
- Example (Show Users)
- Example Discussion
- Example (Show All)
- Example Discussion
- Example (Show Capacity)
- Format of Show Device List
- Example (Show Device)
- Format of Show Indices
- Example (Show Indices)
- Format of Show Locks List
- Example 1 (Show Locks)
- Example 1 Discussion
- Example 2 (Show Locks)
- Example 2 Discussion
- >>VERIFY
- 9 Using a Remote Database
- 10 Internal Structures and Techniques
- 11 B-Tree Indices
- A Error Messages
- B Results of Multiple Access
- C Database Design Considerations
- D Multiple Calls to DBLOCK
- E TurboIMAGE/XL Log Record Formats
- F MPE/iX Log Record Formats
- G Recovery and Logging Quick Reference
- H TurboIMAGE/XL versus TurboIMAGE/V

Chapter 4 127
Using the Database
TurboIMAGE/XL Logging Services
DBXBEGIN, DBXEND, and DBXUNDO. In addition, DBQUIESCE procedures called by True-
Online Backup to quiesce and unquiesce the database are also logged to the logging file.
TurboIMAGE/XL calls the MPE/iX logging intrinsics OPENLOG, WRITELOG, and CLOSELOG
in order to log information to the log file. When a database is opened, DBOPEN calls the
OPENLOG intrinsic using the log identifier and password stored in the database root file. If
this call succeeds, DBOPEN calls WRITELOG to log a DBOPEN log record containing information
about the database and the new user. The WRITELOG intrinsic is also used to log
information when the TurboIMAGE/XL intrinsics DBPUT, DBDELETE, and DBUPDATE are
called. WRITELOG is called after all error checks are made, but before actually modifying
the working database. Consequently, a log record is not written until the TurboIMAGE/XL
procedure has committed itself to succeed. WRITELOG is also used by the TurboIMAGE/XL
intrinsics DBBEGIN, DBEND, DBMEMO, DBXBEGIN, DBXEND, DBXUNDO, and DBQUIESCE
procedures.
DBCLOSE (mode 1) calls WRITELOG to log a DBCLOSE log record, and then calls CLOSELOG to
terminate access to the log file. If a transaction initiated with DBBEGIN fails to call DBEND,
or a DBXBEGIN does not have a matching DBXEND, DBCLOSE causes an abnormal DBEND or
DBXEND log record to terminate access to the log file. DBCLOSE also causes an abnormal
DBEND or DBXEND log record to be written if the program aborts with an unfinished
transaction.
User Logging and Logical Transactions
TurboIMAGE/XL transactions are of two basic types--single and logical. A single
transaction is a single call to an intrinsic. It is not delimited by begin and end intrinsics.
A logical transaction can be considered as the basic work unit performed against a
database. A logical transaction could consist of a single modification, but more typically
consists of several calls to TurboIMAGE/XL intrinsics which lock, read, modify, and unlock
information. Logical transactions transfer the database from one consistent state to
another, but in the midst of a multiple-step transaction, the database could be temporarily
inconsistent with itself. (For an example, see "Logical Transactions" in chapter 7.)
TurboIMAGE/XL logical transactions are defined in Table 4-5.
Table 4-5. Types of Logical Transactions
Transaction Definition
Static A logical transaction that begins with a DBBEGIN call and ends with a DBEND
call. A static transaction spans only one database. This type of transaction can
be recovered with DBRECOV.
Multiple
database
A logical transaction that spans more than one database. A multiple database
transaction begins with a DBBEGIN call and ends with a DBEND call. This type
of transaction is recovered with DBRECOV.
Dynamic A logical transaction that begins with a DBXBEGIN call and ends with a
DBXEND call. Unlike non-dynamic transactions (that is, static and multiple
database transactions), dynamic transactions can be rolled back with a call to
the DBXUNDO procedure and are automatically rolled back in the event of a
system failure or program abort.