TurboIMAGE/XL Database Management System Reference Manual MPE/iX V6.5 (30391-90011)

Chapter 4 113
Using the Database
Updating Data
DBCONTROL in mode 6 disables the option. Using DBCONTROL modes 5 and 6 does not alter
the permanent setting set with the DBUTIL >>SET command. The database must be opened
in access mode 1, 3, or 4; and your user class must have write access at the set level, or
both read access at the set level and write access at the item level.
Programmers should review the design of any of their applications that are used to update
the values of data items to ensure that the data will be updated as expected. Applications
that open the database in access mode 2 do not need to be modified, because only access
modes 1, 3, and 4 can be used with CIUPDATE. Applications that rely on TurboIMAGE/XL
to restrict update of detail data set search and sort items can continue to do so as long as the
database access mode is not 1, 3, or 4, or the
CIUPDATE
option is set as follows:
DISALLOWED, or
ALLOWED and the process does not call
DBCONTROL
in mode 5.
Otherwise, these applications need to be modified to call the DBINFO procedure to check the
CIUPDATE flags for the database and the current process, and (if need be) to disable
CIUPDATE for the current DBOPEN via the DBCONTROL procedure in mode 6. Another method
of restricting access to search and sort items is by granting read-only access at the data set
level and limiting write access at the data item level.
Applications that allow the sort item for the current chain to be updated must allow the
current entry to be moved within the chain. An entry which is moved can be encountered
twice within one chained read.
To update a detail data set search or sort item, the following sequence of operations is
recommended for your programs:
1. Call DBOPEN in access mode 1, 3, or 4.
2. Call DBLOCK to lock all data which must not be changed by other processes.
3. If this is a logical transaction, you need to declare the beginning of modifications by
calling DBBEGIN or, if you are using dynamic roll-back, DBXBEGIN (see the discussion of
logical transactions later in this chapter).
4. Read data using DBFIND and DBGET to determine what needs to be modified.
5. Call DBINFO to check the specific CIUPDATE option setting for the database and the
setting for the current DBOPEN.
6. If the CIUPDATE setting is ON and has not been disabled by a DBCONTROL mode 6, go to
the next step. If the setting is ALLOWED, call DBCONTROL mode 5 to enable the option.
Note that if the CIUPDATE setting is ON and the option has not been disabled, you can
still call a DBCONTROL mode 5 successfully.
7. If the CIUPDATE option is permitted, call DBUPDATE.
8. If the CIUPDATE option is not permitted, call DBDELETE and DBPUT.
9. Check the status code.
10.If the status code is not 0, call DBERROR and take appropriate action. For example, if
this is a dynamic transaction, you must call DBXUNDO to roll back the transaction.