Commit-point processing in MSDBs and DEDBs
Your existing application programs can use either the MSDB commit view or the default DEDB commit view.
MSDB commit view
When you update a segment in an MSDB, IMS does not apply your updates immediately. Updates do not go into effect until your program reaches a commit point.
As a result of the
way updates are handled, you can receive different results if you
issue the same call sequence against a full-function database or a
DEDB and an MSDB. For example, if you issue GHU and REPL calls
for a segment in an MSDB, and then issue another Get call for the
same segment in the same commit interval, the segment that IMS returns to you is the old
value,
not the updated one. If, however, you issue the same call sequence
for a segment in a full-function database or DEDB, the second Get
call returns the updated segment.
When the program reaches a
commit point, IMS also reprocesses
the FLD VERIFY/CHANGE call. If the VERIFY test passes,
the change is applied to the database. If the VERIFY test fails, the
changes made since the previous commit point are undone, and the transaction
is reprocessed.
DEDBs with MSDB commit view
To
use the MSDB commit view for DEDBs, specify VIEW=MSDB on
the PCB statement; if you do not specify VIEW=MSDB,
the DEDB uses the default DEDB commit view. So no changes to any existing
application programs are required in order to migrate your MSDBs to
DEDBs.
Assume that you specify VIEW=MSDB in
the PCB and an application program issues GHU and REPL calls
to a DEDB followed by another GHU call for the segment
in the same commit interval. Then the application program receives
the old value of the data and not the new value from the REPL call.
If you do not specify VIEW=MSDB, your application
program receives the new updated values of the data, just as you expect
for a DEDB or other DL/I database.
You can specify VIEW=MSDB for
any DEDB PCB. If it is specified for a non-DEDB database, you receive
message DFS0904 during ACBGEN.
If you issue
a REPL call with a PCB that specifies VIEW=MSDB,
the segment must have a key. This requirement applies to any segment
in a path if command code 'D' is specified. Otherwise, the AM status
code is returned. See IMS Version 15 Messages and Codes, Volume 4: IMS Component Codes for
information about that status code.
The following code shows
an example of a PCB that specifies the VIEW option.
Sample PCB specifying View=MSDB
PCB , *00000100
TYPE=DB, *00000200
NAME=DEDBJN21, *00000300
PROCOPT=A, *00000400
KEYLEN=30, *00000500
VIEW=MSDB, *00000600
POS=M 00000700