|
HP COBOL DBMS Database Programming Manual
RECONNECT
Function
The RECONNECT statement moves the current database record of the run
unit from one set to another (possibly the same) set.
record-name
names a subschema record type.
set-name
names a subschema set type.
stment
is an imperative statement executed for an on error condition.
stment2
is an imperative statement executed for a not on error condition.
Syntax Rules
- The record type of record-name must be a member record
type of the set type for each set-name.
- Set-name cannot be specified more than once in the WITHIN
clause.
- Set-name cannot be specified more than once in the
RETAINING clause.
General Rules
- RECONNECT uses the current record of the run unit.
- The current run unit record must be in a realm in ready update mode
and all records required by the Database Control System (DBCS) to
execute the RECONNECT statement must be in realms in available mode.
- Use record-name to check that the record type of the
current record of the run unit is identical to the record type
specified by record-name.
- For each set-name you specify in the WITHIN clause:
- The DBCS disconnects the current record of the run unit from the
set in which it is currently a member and inserts this record in the
current set of the set-name set type.
- The position where the DBCS inserts the record into the set is
determined by the set-ordering criteria defined in the schema for
set-name.
- If the program specifies the ALL option:
- The DBCS considers only those set types that satisfy these
requirements:
- The set type is in your subschema.
- The current run-unit record type is defined in the schema as an
OPTIONAL or MANDATORY member record type of the set type.
- The current run-unit record is presently a member of a set of the
set type.
- For each selected set type:
- The DBCS disconnects the current record of the run unit from the
set in which it is currently a member and inserts this record in the
current set of the selected set type.
- The position where the DBCS inserts the record into the set is
determined by the set-ordering criteria defined in the schema for
set-name.
- Unless otherwise specified by the RETAINING clause (see
Section 4.9.1, RETAINING Clause), the DBCS updates the set type currency indicators for
the reconnected sets to point to the connected record.
- If a database exception condition occurs during the execution of a
RECONNECT statement, the DBCS places a database exception condition
code in the special register DB-CONDITION (see Technical Notes). This
code identifies the condition.
Technical Notes
RECONNECT statement execution can result in these DB-CONDITION database
exception condition codes:
DBM$_CRUN_NULL
|
The currency indicator for the run unit is null.
|
DBM$_CRUN_POS
|
The currency indicator for the run unit points to a vacated position in
the database.
|
DBM$_WRONGRTYP
|
The record type of record-name is not identical to the current record
type.
|
DBM$_CSTYP_NULL
|
There is no current of set type for the set specified in the TO
set-name phrase. This occurs only if the set is not a singular set.
|
DBM$_DUPNOTALL
|
A sort key data item in the record to be reconnected is the same as the
sort key of a record already in the set.
|
DBM$_FIXED
|
The program attempted to reconnect a FIXED member record from one set
type to another set of a given set type.
|
DBM$_NOT_UPDATE
|
The realm is not in ready update usage mode.
|
DBM$_NOT_MBR
|
You attempted to reconnect a record to a set in which it is not a
member.
|
DBM$_CHKMEMBER
|
The Oracle CODASYL DBMS CHECK (member) condition was evaluated to be false.
The database has not been changed.
|
Additional References
- Section 2.2, on reserved words (database special registers)
- HP COBOL Reference Manual, Chapter 6, section on scope of statements
- Section 4.8.1, on database On Error condition
- Section 5.14.1, on RETAINING clause
- USE statement
Example
This example shows how to change a record's set membership (terminal
classifications) when the record (VT3) is a MANDATORY member. (OPTIONAL
members must be DISCONNECTED from the old set occurrence and CONNECTED
to the new set occurrence.)
MOVE "TERMINALS NOT SUP" TO CLASS_DESC.
FIND FIRST CLASS-REC WITHIN ALL_CLASS
USING CLASS_DESC.
MOVE "VT3" TO PART_DESC.
FIND FIRST PART WITHIN ALL_PARTS_ACTIVE.
USING PART_DESC
RETAINING CLASS_PART.
RECONNECT PART WITHIN CLASS_PART.
|
ROLLBACK
Function
The ROLLBACK statement ends your database transaction, nullifies all
database changes made by this run unit since its last quiet point, and
establishes a new quiet point for this run unit.
stment
is an imperative statement executed for an on error condition.
stment2
is an imperative statement executed for a not on error condition.
Syntax Rules
- The STREAM clause cannot be specified if the subschema entry (DB)
does not name a stream.
General Rules
- The ROLLBACK statement ends your database transaction.
- All keeplists are emptied.
- If you do not use the STREAM clause, the ROLLBACK statement does
the following:
- Nullifies all database changes made by the run unit since the last
quiet point
- Terminates the ready mode of all ready realms for the run unit
- Establishes a new quiet point for the run unit
- If you use the STREAM clause, the ROLLBACK statement does the
following:
- Nullifies all database changes made by this stream since the last
quiet point
- Terminates the ready mode of all ready realms for this stream
- Establishes a new quiet point for this stream
- All currency indicators are set to null.
- All realm and record locks are released. These records and realms
are now available to concurrent run units.
- To begin another transaction, the program must execute another
READY statement after it executes the ROLLBACK statement.
- If the run unit abnormally terminates, the DBCS executes an
implicit ROLLBACK statement.
- If a database exception condition occurs during the execution of a
ROLLBACK statement, the DBCS places a database exception condition code
in the special register DB-CONDITION. This code identifies the
condition.
Additional References
- Section 2.2, on reserved words (database special registers)
- HP COBOL Reference Manual, Chapter 6, section on scope of statements
- Section 4.8.1, on database On Error condition
- USE statement (USE FOR DB-EXCEPTION)
- Section 5.2.4, on subschema description (DB)
Example
This ROLLBACK example illustrates one way to end a database transaction
and undo the changes made to the database during the transaction.
010-BEGIN-UPDATE-TRANSACTION.
* This transaction begins with the first READY statement in
* the run unit, continues through a series of DML database
* access statements, and ends with a COMMIT or ROLLBACK.
.
.
.
100-END-UPDATE-TRANSACTION.
DISPLAY "DO YOU WANT TO COMMIT THIS TRANSACTION ? ".
ACCEPT ANSWER.
IF ANSWER = "YES"
COMMIT ...
ELSE
ROLLBACK
ON ERROR
IF DB-CONDITION = DBM-NOT-BOUND
DISPLAY " Database not bound"
ELSE
CALL "DBM$SIGNAL".
END-IF
END-ROLLBACK.
|
|