DELETE [ HP Transact Reference Manual ] MPE/iX 5.0 Documentation
HP Transact Reference Manual
DELETE
Deletes KSAM files or data set entries. DELETE cannot be used with MPE
files.
Syntax
DELETE[(modifier)] file-name[,option-list];
DELETE specifies the deletion of one or more KSAM file entries or data
set entries. For multiple deletions, the entries to be deleted are
determined by match criteria specified in the match register. If you do
not specify match criteria for a multiple deletion, DELETE deletes all
entries in a chain or in the entire file or data set, depending on the
modifier.
If you are performing dynamic transactions (Transact/iX only), be aware
that transactions have a length limit. For a discussion about how DELETE
is affected by this limitation, see "Limitations" under "Dynamic
Roll-back" in Chapter 6.
NOTE After the first retrieval, Transact uses an asterisk (*) for the
call list to optimize subsequent retrievals of that data set.
Statement Parts
modifier To specify type of access to the KSAM file or data set,
choose one of the following modifiers:
none Deletes an entry from a master set based on
the key value in the argument register; this
option does not use the match register.
CHAIN Deletes entries from a detail set or a KSAM
chain. The entries must meet any match
criteria set up in the match register. The
contents of the key and argument registers
specify the chain in which the deletion is to
occur. If no match criteria are specified,
all entries are deleted. If match criteria
is used, all items specified in the match
register must be included in a LIST= option.
CURRENT Deletes the last entry that was accessed from
the KSAM file or data set.
DIRECT Deletes the entry stored at the specified
record number in a KSAM file, a detail set,
or a master set. Before using this modifier,
you must store the record number as a 32-bit
integer in the item specified by the RECNO=
option.
PRIMARY Deletes the master set entry stored at the
primary address of a synonym chain. The
primary address is located through the key
value in the argument register.
____________________________________________
NOTE DELETE(PRIMARY) deletes only one entry
at the primary location, and the
secondary entry, if any, automatically
migrates to the primary location after
the delete.
____________________________________________
RCHAIN Deletes entries from a detail set or a KSAM
chain in the same manner as the CHAIN option,
only in reverse order. For a KSAM file, this
operation is identical to CHAIN.
RSERIAL Deletes entries from a data set in the same
manner as the SERIAL option, except in
reverse order. For a KSAM file, this
operation is identical to SERIAL.
SERIAL Deletes entries in serial mode from a KSAM
file or from a data set that meet any match
criteria set up in the match register. If no
match criteria are specified, all entries are
deleted. If match criteria are specified,
the match items must be included in a LIST=
option.
file-name The KSAM file or data set to be accessed in the deletion.
If the data set is not in the home base as defined in the
SYSTEM statement, the base name must be specified in
parentheses as follows:
set-name(base-name)
option-list One or more of the following options, separated by commas:
ERROR=label Suppresses the default error return that
[([item-name])] Transact normally takes. Instead, the
program branches to the statement
identified by label, and the stack pointer
for the list register is set to the data
item item-name. Transact generates an
error at execution time if the item cannot
be found in the list register. The
item-name must be a parent.
If you omit item-name, as in ERROR =
label();, the list register is cleared.
If you use an "*" instead of item-name, as
in ERROR = label(*);, then the list
register is not touched.
LIST=(range- The list of items from the list register
list) to be used for the DELETE operation. For
data sets, no child items can be specified
in the range list.
If the LIST= option is omitted with any
modifier, all the items named in the list
register are used.
When the LIST= option is used, only the
items specified in a LIST= option have
their match conditions applied when the
items are included in the match register.
When the LIST= option is omitted, items
which appear in the list register and the
match register have their match conditions
applied. Otherwise, the match conditions
for an item are ignored.
The match register can be used only with
the modifiers CHAIN, RCHAIN, SERIAL, or
RSERIAL.
Each retrieved entry is placed in the area
of the data register indicated by LIST=
before any PERFORM= is executed, and then
the delete is performed.
For all options of range-list, the data
items selected are the result of scanning
the data items in the list register from
top to bottom, where top is the most
recent entry added to the list register.
(See Chapter 4 for more information on
registers.)
The LIST= option has a limit of 64
individually listed item names and a limit
of 255 items specified by a range for a
TurboIMAGE data set.
All item names specified must be parent
items.
The options for range-list and the data
items they cause DELETE to access include
the following:
(item-name) A single data item.
(item-nameX: All the data items in the
item-nameY) range from item-nameX
through item-nameY. In other
words, the list register is
scanned for the occurrence
of item-nameY closest to the
top of the list register.
From that entry, the list
register is scanned for
item-nameX. All data items
between are selected. An
error is returned if
item-nameX is between
item-nameY and the top of
the list register.
Duplicate data items can be
included or excluded from
the range, depending on
their position on the list
register. For example, if
range-list is A:D and the
list register is as shown,
then data items A, B, C, D,
and D are selected. For
database files, an error is
returned if duplicate
entries are selected.
If item-nameX and item-nameY
are marker items (see the
DEFINE(ITEM) verb) and if
there are no data items
between the two on the list
register, no database access
is performed.
(item- All data items in the range
nameX:) from the last entry through
the occurrence of item-nameX
closest to the top of the
list register.
(:item- All data items in the range
nameY) from the occurrence of
item-nameY closest to the
top through the bottom of
the list register.
(item-nameX, The data items are selected
item-nameY, from the list register. For
... databases, data items can be
item-nameZ) specified in any order. For
KSAM files, data items must
be specified in the order of
their occurrence in the
physical record. This order
need not match the order of
the data items on the list
register. This option is
less efficient to use than
the options listed above.
(@) Specifies a range of all
data items of file-name as
defined in the data
dictionary. The
range-list is defined as
item-name1:item-namen for
the file.
(#) Specifies an enumeration of
all data items of file-name
as defined in the data
dictionary. The data items
are specified in the order
of their occurrence in the
physical record or form as
defined in the dictionary.
This order need not match
the order of the data items
in the list register.
( ) A null data item list. That
is, delete the entry or
entries, but do not retrieve
any data.
LOCK Locks the specified file or database. If
a data set is being accessed, the lock is
set the whole time that DELETE executes.
If LOCK is not specified but the database
is opened in mode 1, which requires a
lock, the lock specified by the type of
automatic locking in effect is active
while the entry is processed by any
PERFORM= statements, but is unlocked
briefly before the next entry is
retrieved.
For a KSAM file, if LOCK is not specified
on DELETE but is specified for the file in
the SYSTEM statement, then the file is
locked before each entry is retrieved,
remains locked while the entry is
processed by any PERFORM= statements, but
is unlocked briefly before the next entry
is retrieved. (DELETE is not allowed on
MPE files.)
Including the LOCK option overrides
SET(OPTION) NOLOCK for the execution of
the DELETE verb.
A database opened in mode 1 must be locked
while DELETE executes. For transaction
locking, you can use the LOCK option on
the LOGTRAN verb instead of the LOCK
option on DELETE if SET(OPTION) NOLOCK is
specified. If a lock is not specified
(for a database opened in mode 1) an error
is returned.
See "Database and File Locking" in Chapter
6 for more information.
NOCOUNT Suppresses the message normally generated
to indicate the number of deleted entries.
NOMATCH Ignores any match criteria set up in the
match register.
NOMSG Suppresses the standard error message
produced as a result of a file or database
error.
PERFORM=label Executes the code following the specified
label for every entry retrieved by the
DELETE verb before the DELETE operation.
The entries can be optionally selected by
match criteria.
This option allows operations to be
performed on retrieved entries without
having to code loop-control logic. You
can nest up to a maximum of ten PERFORM
options.
RECNO=item-name With the DIRECT modifier, you must define
[(subscript)] item-name to contain the 32-bit integer
number (I(9,,4)) of the record to be
deleted.
With other modifiers, Transact returns the
record number of the deleted record in the
32-bit integer item-name.
The item-name can be modified with
subscript if the referenced item is an
array item. (See "Array Subscripting" in
Chapter 3.)
SINGLE Deletes only the first selected entry.
SOPT Suppresses the optimization of database
calls. This option is primarily intended
to support a database operation in a
performed routine that is called
recursively. The option allows a
different path for the same detail set to
be used at each recursive entry, rather
than optimizing to the same path. It also
suppresses generation of a call list of
"*" after the first call is made. Use
SOPT if you are calling TurboIMAGE through
the PROC or CALL verbs. For an example of
how SOPT is used, see "Examples" at the
end of the FIND verb description.
STATUS Suppresses the actions defined in Chapter
7 under "Automatic Error Handling." You
may want to add status checking to your
code if you use this option. When STATUS
is specified, the effect of a DELETE
statement is described by the 32-bit
integer value in the status register:
Status Meaning
Register
Value
0 The DELETE operation was successful.
-1 A KSAM or MPE end-of-file condition
occurred.
>0 For a description of the condition
that occurred, refer to database or
MPE/KSAM file system error
documentation corresponding to the
value.
STATUS causes the following with DELETE:
* Normal multiple accesses/deletions
become single.
* The normal rewind done by the
DELETE is suppressed, so
CLOSE should be used before
DELETE(SERIAL) or DELETE(RSERIAL).
* The normal find of the chain head
by the DELETE is suppressed, so
PATH should be used before
DELETE(CHAIN) or DELETE(RCHAIN).
See "Using the STATUS Option" in Chapter
7.
Examples
In the following example, the programmer wants to be sure that an entry
is not in MASTER-SET. Therefore, there are two acceptable conditions:
either a status register value of zero (delete successful) or a status
register value of 17 (database error 17--record not found) is acceptable.
DELETE MASTER-SET,
LIST=(KEY-ITEM),
STATUS;
IF STATUS = 17,0 THEN
DISPLAY "ENTRY REMOVED"
ELSE
DO
DISPLAY "ERROR ON DELETE FROM MASTER-SET";
GO TO ERROR-CLEANUP;
DOEND;
This example deletes all entries that contain a DEBT-LEVEL less than the
number entered by the user. DEBT-LEVEL is required in the LIST= option
because DELETE reads each record in the chain into the data register area
associated with DEBT-LEVEL in order to check the match criteria before
deleting the entry.
PROMPT(MATCH) DEBT-LEVEL,LT;
DELETE(CHAIN) DEBT-DETL,
LIST=(DEBT-LEVEL);
This example deletes only the last entry in the data set that matches the
zip code entered by the user.
PROMPT(MATCH) ZIP ("DELETE ZIP CODE");
DELETE(RSERIAL) DETAIL-SET,
SINGLE,
LIST=(NAME:ZIP),
PERFORM=LISTIT;
MPE/iX 5.0 Documentation