HP 3000 Manuals

TurboIMAGE/XL Enhancement Details [ COMMUNICATOR 3000 MPE MPE/iX RELEASE 4.0 ] MPE/iX Communicators


COMMUNICATOR 3000 MPE MPE/iX RELEASE 4.0

TurboIMAGE/XL Enhancement Details 

by RJ Diepeveen 
Commercial Systems Division 

With this version of MPE/iX, TurboIMAGE/XL offers some new and exciting
enhancements.  Critical Item Update and Indexing should be of particular
interest to many of you.  Hewlett-Packard is pleased to make all of these
enhancements available to you in this release.

The new TurboIMAGE/XL enhancements in this release are:

       Critical Item Update

       Indexing using Third Party Interface

       Dynamic Rollback for Remote Database Access

       IEEE Floating Point Real Numbers

       Four (4) Gigabyte Dataset Sizing

This article provides general information about the operation and some of
the uses for the new enhancements.  The information presented here is in
no way intended to serve as a complete guide to the use of these
enhancements.  The new TurboIMAGE/XL Reference Manual (30391- 90001,
fourth edition) provides you with greater detail.

CRITICAL ITEM UPDATE 

In all previous versions of TurboIMAGE/XL (and IMAGE/3000 as well),
DBUPDATE was limited to the modification of non-critical items.  By way
of definition, critical items are KEY items that are found in Master
sets, and search and sort items that are found in Detail sets.  DBUPDATE
can now modify search and sort items.

Intrinsic Call Sequencing 

If your application required a critical item to be modified, it was
necessary to completely delete the existing entry and then add the entry
back with the modified critical item.  The intrinsic calling sequence,
using a COBOL example, would look like this:

        CALL "DBGET" USING DBNAME, SET, MODE, STATUS, LIST, BUFFER, ARGUMENT.

        CALL "DBPUT" USING DBNAME, SET, MODE, STATUS, LIST, BUFFER.

        CALL "DBDELETE" USING DBNAME, SET, MODE, STATUS.

In most cases, the DBPUT is done first to insure that the call can
complete, then the DBDELETE is executed to remove the initial entry.  The
disadvantages to this calling sequence are that linkage updates are
occurring on all paths, and the new entry is added to the end of chain on
all paths (unless a chain is sorted) destroying entry chronology on the
chain.

By using the CRITICAL ITEM UPDATE feature the calling sequence is
simplified to this:

        CALL "DBGET" USING DBNAME, SET, MODE, STATUS, LIST, BUFFER, ARGUMENT.

        CALL "DBUPDATE" USING DBNAME, SET, MODE, STATUS, LIST, BUFFER.

The contents of the buffer in the call to DBUPDATE would include the
modified search or sort item.  The linkage changes occur only for the
affected paths, not all paths.  Chronology on unmodified paths is
preserved.  The amount of work done by DBUPDATE is significantly less
than that done by the DBPUT/DBDELETE calling sequence thereby providing
improved performance in comparative situations.

CIUPDATE Settings 

By default Critical Item Update is DISALLOWED for a database.  This is
done to preserve backward compatibility for existing software
applications.  To take advantage of this enhancement the Critical Item
Update feature must be SET using DBUTIL. Within DBUTIL you must first
issue the following command:

     >>SET basename[/maintword] CIUPDATE = [DISALLOWED ]
                                           [ALLOWED    ]
                                           [ON         ]

DISALLOWED prevents any process from using Critical Item Update on this
database (Default).

ALLOWED indicates that programmatic enabling of the feature is possible
through calls to DBCONTROL mode 5, but programs that do not make this
call are prevented from using Critical Item Update on this database.

ON allows any process to update critical items in this database unless
the process explicitly disables the feature by calling DBCONTROL mode 6.
This option allows Critical Item Update to be disabled in selected
programs while enabling it for the majority.

The DBUTIL command SHOW, with options ALL or CIUPDATE, displays one of
the following settings:

              CIUPDATE is DISALLOWED
          or   CIUPDATE is ALLOWED
          or   CIUPDATE is ON

Programmatic Control 

When the CIUPDATE setting is ON or ALLOWED then the DBCONTROL intrinsic
can be used to affect the manner in which a process, using a specific
DBOPEN access path, can use DBUPDATE. DBCONTROL mode 5 allows critical
items to be updated for the baseid used in the DBCONTROL call.  DBCONTROL
mode 6 prevents critical items from being updated for the ^fsbaseid used
in the call to DBCONTROL.

There are other modes that can be used with DBCONTROL, and details about
all of these are available in the reference manual.

DBINFO Information 

The DBINFO intrinsic can be called with mode 502 to obtain database and
access path information about Critical Item Update.  DBINFO mode 502
returns two 16 bit halfwords containing the database setting and the
current setting for the ^fsbaseid used in the DBINFO call.  The possible
return values are:

     Halfword 1 contains the DBUTIL CIUPDATE setting:

            0 = Critical Item Update is DISALLOWED (default)
            1 = Critical Item Update is ALLOWED
            2 = Critical Item Update is ON
     Halfword 2 contains the current setting for this DBOPEN access path:

            0 = Critical Item Update is disabled for this accessor
            1 = Critical Item Update is enabled for this accessor

     This table shows defaults and options:

            Halfword 1       Halfword 2 Default     Halfword 2 Options

                0                    0                     none

                1                    0                     0,1

                2                    1                     0,1

DBCONTROL modes 5 and 6 affect the value in halfword 2.

New CIUPDATE Error Messages 

With new features come new error messages, and CIUPDATE is no exception.
Error conditions vary with the ability of a process to modify critical
items.  If CIUPDATE is not allowed for the baseid, for whatever reason,
and DBUPDATE attempts to modify a critical item, then the standard
condition 41 is returned with the following message:

        DBUPDATE attempted to modify value of critical item--key, search or sort

This error is always returned if a DBUPDATE is attempted against a KEY
item (located in a Master set).

With CIUPDATE enabled, whether at the database level or at the baseid
level, the following error conditions are possible, each returning a 41
in halfword 1 of the status array, with differentiating values in
halfword 3 of the status array:

      Status
     Element 3                 Message

       1xx        No chain head for (master entry) for path xx

       2xx        Full chain for path xx (contains 2,147,483,647 entries)

       3xx        Full automatic master for path xx

       4xx        Full automatic master synonym chain for path xx

Another message you may encounter relates to the use of DBCONTROL mode 5
to activate your use of a ^fsbaseid access path for CIUPDATE. If the
database CIUPDATE setting is DISALLOWED, then DBCONTROL mode 5 returns
condition -82:

        CIUPDATE is set to DISALLOWED; cannot use critical item update

There are additional messages within DBUTIL related to setting and
displaying the CIUPDATE options and are primarily informational in
nature.  Please refer to the TurboIMAGE/XL Reference Manual (30391-90001,
fourth edition) for details.

Design Considerations 

Modification of critical items has been disallowed for so many years that
with its implementation come caveats and usage considerations.  Before
using this feature testing should be done to understand the ramifications
of its use.  Here are some considerations to keep in mind in the use of
this enhancement:

   *   DBERROR and DBEXPLAIN interprets the entire status array and
       presents the new error messages.

   *   Applications may depend on DBUPDATE returning a condition 41 when
       modification attempts are made to critical items.  Additional
       checking must be done by the program in these cases.

   *   When a search item is updated, the entry is no longer found on the
       chain of the previous item value and is at the end of chain for
       the new item value (unless the chain is sorted).

   *   When a sort item is changed, the entry logically moves within the
       chain to the new position.  TurboIMAGE/XL allows sort items of
       data types X, U, and K, corresponding with ASCII, upper case
       ASCII, and absolute binary values.  Values are sorted in ascending
       order.  Should the new sort value be greater than the old value, a
       subsequent chained read (DBGET mode 5) encounters the entry again.
       If a backward chained read (DBGET mode 6) is employed and the new
       sort value is less than the previous, the entry is seen again.

   *   DBOPEN modes 1, 3, and 4 support Critical Item Update.  Mode 2 is
       not supported as this feature requires locking or write exclusive
       capabilities and DBOPEN mode 2 allows shared DBUPDATEs, but does
       not enforce locking.

Updating of critical items has a been a request for some time, and we
hope that with this implementation of the feature your applications will
enjoy new functionality.  As indicated by these considerations, some
aspects of the feature need to be carefully thought out.  Please refer to
the TurboIMAGE/XL Reference Manual (30391-90001) for complete details of
CIUPDATE.

INDEXING WITH THE THIRD PARTY INTERFACE 

Another very popular enhancement request has been for TurboIMAGE/XL to
perform Generic Key searches.  This functionality would mean that a
partial key value could be used for searching, and returning entries
would contain key values where the partial value was all or part of the
item.  For example, suppose your item name was COMPANY, and you wished to
find all entries where the COMPANY value began with the letters HE.
Qualifying entries might include HEATING SPECIALISTS, HENRYS DRY
CLEANING, and HEWLETT-PACKARD CO. This is just an example of generic
value search capabilities.

Several software suppliers have produced quality products that fill this
very niche, plus add a multitude of other sophisticated search
methodologies.  Hewlett-Packard has contracted with two of these
suppliers to provide their solution to TurboIMAGE/XL users using a
supported interface operating with external standards.

The two products are OMNIDEX, from Dynamic Information Systems
Corporation (DISC) of Boulder, Colorado, and SUPERDEX from Bradmark
Technologies, Inc.  of Houston, Texas.  Each product provides Generic and
Keyword Retrieval methodologies, each having options that include
Wildcards, Boolean and Relational Operations.

The integration of TurboIMAGE/XL with these third party products is
seamless and offers these products an umbrella of protection for data
recoverability and logical integrity.


NOTE This enhancement requires a magnitude of documentation that exceeds the scope of this article. The highlights are presented here; however, additional details are best obtained from the ^fsTurboIMAGE/XL Reference Manual and the software suppliers themselves, DISC and Bradmark.
External Changes Many of the TurboIMAGE/XL intrinsics have been enhanced in the implementation of TPI (Third Party Indexing). In addition, root file information has been added to allow proper control and manipulation of TPI structures by TurboIMAGE/XL utilities. As each intrinsic is addressed, note that an increase in the number of supported modes is the common theme. This allows full backward compatibility and extension into the new functionality that TPI offers. Nearly all the intrinsics now include a range of modes reserved for TPI functions beyond the standardized functions. The most significant external changes appear with the search and retrieval intrinsics, DBFIND and DBGET. DBFIND now supports multiple modes, making possible the various standard, generic, and keyword search methods now available. DBGET has also been given new modes, again to deliver the entries qualified by the expanded DBFIND capabilities. DBOPEN and DBCLOSE now support a larger number of modes, mainly to accommodate third party functions beyond the standardized functions. DBPUT, DBDELETE, and DBUPDATE still operate fundamentally the same; however, all indexing functions are completed as part of the intrinsic call. DBINFO now supports an 8xx range of modes that report on a variety of TPI topics. Notable are modes 801 and 803. Mode 801 reports if a third party product has been configured for this database, and mode 803 reports if the database has been enabled for INDEXING. These two modes are worth details. DBINFO (base, qualifier, mode, status, buffer) Mode 801 Returns information on the third party indexing package installed on this database (if any). qualifier: ignored buffer layout: 1-20 Product name (blank if none) (halfwords) 21-25 Version number 26-27 Date of installation (CALENDAR intrinsic) 28-29 Time of installation (TIME intrinsic) Mode 803 Indicates if third party indexing is enabled by DBUTIL. qualifier: ignored buffer layout: 1 Binary zero (0) if INDEXING enabled. (halfwords) Binary one (1) if INDEXING disabled. There is also a range of modes reserved for third party functions beyond the standardized functions. Utility Program Changes DBUTIL has been enhanced to accommodate manipulation of the INDEXING flag. Following the configuration of indexes for the database using the third party utility programs, indexing can be enabled for the base. DBUTIL performs this function and can also disable indexing as necessary. The following syntax applies to these operations: >>ENABLE basename[/maintword] FOR INDEXING >>DISABLE basename[/maintword] FOR INDEXING Of course, the DBUTIL SHOW command with options ALL or FLAGS displays the current flag setting for INDEXING. The DBUTIL commands of PURGE, ERASE, SECURE, and RELEASE all perform the requested function to include the TPI structures. For example, a request to purge a database also purges the related TPI files. DBSTORE and DBRESTOR both treat the database and TPI structures as a single logical database and stores or restores the filesets accordingly. DBChange Plus has been enhanced to work with TPI. For details about these enhancements, refer to the article entitled "DBChange Plus Enhancements" included in this Communicator. DYNAMIC ROLLBACK WITH REMOTE DATABASE ACCESS Dynamic Rollback for local databases was first introduced with the XL Release 3.0 version of MPE/XL. This powerful feature of TurboIMAGE/XL provides logical transaction insurance for your applications. Now, with this release of MPE/iX, Dynamic Rollback can be used with remote database access. Dynamic Rollback was first documented in the XL Release 3.0 Communicator, and you may wish to refer to that issue or the TurboIMAGE/XL Reference Manual (30391-90001, third or fourth editions) for additional details. In summary, however, three intrinsics - DBXBEGIN, DBXEND, and DBXUNDO - constitute the external execution of Dynamic Rollback. Internally the work is accomplished through Transaction Manager. DBXBEGIN and DBXEND demarcate logical transactions that may consist of one or more DBPUT, DBDELETE or DBUPDATE intrinsic calls. Of course, DBGET and DBFIND calls may also be a part of the transaction, but since they do not change data they are not considered part of the logical transaction. DBXUNDO, as a single intrinsic call, can undo all intrinsics back to the last DBXBEGIN. When employed in a remote database environment, the program operating on system A can define and optionally rollback transactions against a database located on system B. It should be noted that in addition to DBXUNDO, program aborts and system aborts cause incomplete logical transactions to rollback. A network failure would look the same as a program failure and rollback would occur. As with local database access, Dynamic Rollback with remote databases requires strong locking. Strong locking is best described as locking that occurs as needed, but where unlocking occurs after completion of the transaction. In the case of Dynamic Rollback the DBUNLOCK would occur either after the DBXEND or DBXUNDO intrinsic call. The reason for this is that, in the event of a rollback, the affected entries must still be locked. There are some additional design considerations in terms of logical transaction size. Details in this area are in the ^fsTurboIMAGE Reference Manual (30391-90001, third or fourth editions). IEEE FLOATING POINT REAL NUMBERS TurboIMAGE/XL now offers the ability to store IEEE format Floating Point Real numbers and display them with QUERY. This is accomplished with a new data type and with enhancements to QUERY. Differences Between HP3000 and IEEE Formats A REAL number is made up of three components: exponent, mantissa, and sign. On HP 3000 computer systems these components are stored in 32 bits for single precision numbers and 64 bits for double precision numbers. The difference between the HP3000 and IEEE format is simply the number of bits allocated to each of the three components. HP3000 IEEE 1 bit for sign 1 bit for sign 9 bits for exponent 8 bits for exponent 22 bits for mantissa 23 bits for mantissa 1 bit for sign 1 bit for sign 9 bits for exponent 11 bits for exponent 54 bits for mantissa 52 bits for mantissa TurboIMAGE/XL data types for REAL numbers are represented by the letter 'R' for HP3000 format and by the letter 'E' for IEEE format. As mentioned before, lengths are either 32 or 64 bits and are represented in 16 bit halfwords, therefore, possible types are R2, R4, E2, and E4. Data Handling By TurboIMAGE/XL TurboIMAGE performs no type checking or verification of your data. TurboIMAGE/XL is simply responsible for storing and delivering this data to you at your request. Therefore, if your program passes an IEEE Real number to TurboIMAGE and the data type is actually R (HP3000 format), the data is stored as is. Many database applications do this type of storage, the only drawback being that QUERY is unable to correctly interpret the values. Regardless of the storage methods employed, DBChange Plus has been enhanced to allow conversions or data type changes to suit your needs. For details about these enhancements, refer to the article entitled "DBChange Plus Enhancements" included in this Communicator. FOUR (4) GIGABYTE DATASET SUPPORT Beginning with this release of MPE/iX, the maximum file size has been expanded to 4 GB. Also with this release, TurboIMAGE/XL supports dataset sizes to this same 4 GB maximum. The impact of this change to your applications should be limited to operational aspects of maintenance. All related HP TurboIMAGE/XL utilities have been enhanced to support this new file system maximum. You may wish to contact your third party software suppliers of database tools to ascertain their support plans in this area. One external change to be aware of is the sizing now performed by DBSCHEMA. In prior versions dataset sizing was performed by DBUTIL at the time of creation. Sizing is now performed in DBSCHEMA, and a root file is not created should a dataset size surpass the operating system file size maximum. The error is: DATA SET SIZE EXCEEDS MPE/XL FILE SIZE LIMITS. On a similar topic, but less severe, DBSCHEMA generates a warning if a dataset size surpasses MPE/V limits; however a root file is generated. DATA SET SIZE EXCEEDS MPE/V FILE SIZE. CONCLUSION Some of these enhancements will hold greater interest for you than others, notably Indexing and Critical Item Update. Others were required to allow your applications to grow with your increased needs as with the larger dataset sizes. Still mthers provide support for standards or offer entirely new functionality. With this release of MPE/iX, Hewlett-Packard hopes these new features of TurboIMAGE/XL meet your approval and needs.


MPE/iX Communicators