Obtaining Database Structure Information [ TurboIMAGE/XL Database Management System Reference Manual ] MPE/iX 5.0 Documentation
TurboIMAGE/XL Database Management System Reference Manual
Obtaining Database Structure Information
The DBINFO library procedure allows you to acquire information
programmatically about the database. It provides information about data
items, data sets, or data paths. The information returned is restricted
by the user class number and access mode established when the database is
opened.
Any data items, data sets, or paths of the database inaccessible to that
user class or in that access mode are considered to be non-existent. For
example, if the access mode grants only read access, this procedure will
indicate that no data sets can have entries added. The information that
can be obtained through separate calls to DBINFO is summarized below.
In relation to data items, DBINFO can be used to:
* Determine whether the user class number established when the
database is opened allows a specified data item value to be
changed in at least one data set, or allows a data entry
containing the item to be added or deleted.
* Get a description of a data item including the data item name,
type, sub-item length, and sub-item count. This information
corresponds to that which is specified in the item part of the
schema.
* Determine the number of items in the database available to the
current user and to get a list of numbers identifying those items.
The numbers indicate the position of each data item in the item
part of the schema. The type of access, for example read-only,
can also be determined.
* Determine the number of items in a particular data set available
to the current user and get a list of those item numbers and the
type of access available for each one.
In relation to data sets, DBINFO can be used to:
* Determine whether the current user can add or delete entries to a
particular data set.
* Get a data set description including the data set name, type,
length in halfwords and blocking factor for data entries in the
set, number of entries in the set, and the capacity.
* Determine the number of data sets the current user can access and
get a list of the data set numbers indicating the position of the
data set definition in the set part of the schema. The type of
access to each set is also indicated.
* Determine in which data sets a particular data item is available
to the current user. The number of data sets, a list of data set
numbers, and the type of access available for each set is
returned.
In relation to paths, DBINFO can be used to:
* Get information about the paths associated with a particular data
set including the number of paths. If the data set is a master
set, the information includes the data set number, search item
number, and sort item number for each related detail. If the data
set is a detail set, the information includes the master data set
number of the related master data set, the detail search item
number and sort item number for each path.
* Determine the key item number of a master data set or the search
item number for the primary path of the detail and the data set
number of the related master. In either case, if the search item
is inaccessible to the current user, no information is returned.
Special Uses of DBINFO
If the application program uses data items and data set numbers when
calling the other TurboIMAGE/XL procedures, it is good practice to
determine these numbers by calling DBINFO at the beginning of the program
to set up the numbers. It is not practical to code the numbers into the
program because a change to the database structure might require
extensive changes to the application programs. Likewise, it is
inefficient and time consuming to call DBINFO throughout the program to
determine these numbers. Many application programmers prefer the
convenience and flexibility of using the data item and data set names in
procedure calls.
DBINFO is useful when writing general inquiry applications similar to the
QUERY/3000 database inquiry facility. DBINFO can also be used to obtain
information regarding the logging facility, dynamic transactions,
third-party indexing, and the critical item update (CIUPDATE) option
settings for a database and the current process. In relation to Native
Language Support (NLS), DBINFO can be used to get the MPE/iX numeric code
that defines the native language supported by the database. (Refer to
"Database Description Language" and "Schema Structure" in chapter 3.)
Checking Subsystem Flag
A subsystem flag can be set with the DBUTIL >>SET command. This flag
indicates whether subsystems, including user programs, can access the
TurboIMAGE/XL database and, if access is allowed, whether it is read only
or both read and write. Because the flag does not actually allow or
prevent access, the subsystem or user program must include a call to
DBINFO to test this flag. QUERY/3000 is the primary subsystem which uses
the subsystem flag.
MPE/iX 5.0 Documentation