|
HP COBOL Reference Manual
Additional References
5.3.39 RECORD KEY
Function
The RECORD KEY clause specifies the Prime Record Key access path to
indexed file records.
rec-key
is the Record Key for the file. It is the data-name of a data item in a
record description entry for the file. It can be qualified, but it
cannot be a group item that contains a variable-occurrence data item.
The data item must be described as one of the following:
- Alphanumeric item
- Alphabetic item
- Group item
- Unsigned numeric display item
- COMP-3 integer
- COMP integer
seg-key
is a segmented-key name that represents the concatenation of one or
more (up to eight) occurrences of seg.
seg
is the data-name of a data item in a record description entry for the
file. It can be qualified, but it cannot be a group item that contains
a variable-occurrence data item. The data item must be described as one
of the following:
- Alphanumeric item
- Alphabetic item
- Group item
- Unsigned numeric display item
Syntax Rule
The RECORD KEY clause is required for indexed files. It can be in
either the file description entry or in the file's Environment Division
SELECT clause. However, it cannot be in both the SELECT clause and the
file description entry for the same file.
General Rules
- seg-key is the concatenation of all specified key
segments in the order specified.
- seg-key can be referenced only in a READ (Format 3) or
START statement.
- The RECORD KEY clause specifies the Prime Record Key for a file.
- The order of keys, whether ASCENDING or DESCENDING, must be the
same as the order used when the file was created.
- Each key can be specified as ASCENDING or DESCENDING (ASCENDING is
the default). In an ASCENDING key, lower key values occur toward the
beginning of the sorted file. In a DESCENDING key, higher key values
occur toward the beginning of the sorted file.
- The data description of rec-key, or the segments of
seg-key, and their relative locations in the record, must be
the same as those used when the file was created.
- Only one record description entry for the file must describe
rec-key or the segments of seg-key. The Prime Record
Key has the same character positions in every record of the file.
- If the associated file connector is an external file connector, all
File Description entries in the run unit that are associated with that
file connector must define the same data description entry for
rec-key or the segments of seg-key with the same
relative location within the record.
- The DUPLICATES phrase specifies that two or more records in the
file can have duplicate values in the same rec-key or the
segments of seg-key. If there is no DUPLICATES phrase, two
records cannot have the same value in corresponding Prime Record Key.
On OpenVMS, if the program was compiled with the
/CHECK=DUPLICATE_KEYS qualifier on the command line, and the duplicate
key specification on a file's FD (in other words, specified in the WITH
DUPLICATES phrase) does not match that of the actual file, a run-time
diagnostic will be issued when an attempt is made to open the file with
an OPEN statement. <> On Tru64 UNIX systems, DUPLICATES
must match the specification for DUPLICATES when the file is created,
unless the relaxed key check option is used. <>
Additional Reference
Section 5.3.8
5.3.40 REDEFINES
Function
The REDEFINES clause allows different data description entries to
describe the same storage area.
other-data-item
is a data-name. It identifies the data description entry that first
defines the storage area.
Note
Level-number, data-name, and FILLER are not part of the REDEFINES
clause. They are included in the general format only to clarify the
relative position of the clause.
|
Syntax Rules
- The subject of the REDEFINES clause is the data-name or FILLER in a
Format 1 data description entry.
- The REDEFINES clause must immediately follow its subject.
- The level-numbers of the subject of the REDEFINES clause and
other-data-item must be the same. However, they cannot be
either 66 or 88.
- The REDEFINES clause cannot be used in a level 01 entry in the File
Section.
- The data description entry for other-data-item cannot
contain an OCCURS clause. However, other-data-item can be
subordinate to an item whose data description entry contains an OCCURS
clause. In that case, the reference to other-data-item in the
REDEFINES clause cannot be subscripted or indexed.
- Neither the original definition nor the redefinition can contain a
variable occurrence data item.
- If other-data-item is either an external record or
anything other than a level 01 entry, the number of character positions
it contains must be greater than or equal to the number in the subject
of the REDEFINES clause. If other-data-item is a level 01
entry, and is not an external record, its description need not follow
this rule; that is, other-data-item can contain fewer
character positions than the subject of the REDEFINES clause.
- Other-data-item cannot be qualified even if it is not
unique. The reference to other-data-item is unique without
qualification because of the placement of the REDEFINES clause.
- A program can have multiple redefinitions of the same character
positions. However, they must all refer to other-data-item,
the data-name that originally defined the area.
- The redefining entries cannot contain VALUE clauses except in
condition-name entries.
- No entry with a level-number lower than that of
other-data-item can occur between the data description entry
for other-data-item and the redefinition.
- The entries redefining the storage area must immediately follow
those that originally defined it. There can be no intervening entries
that define additional storage areas.
General Rules
- Storage allocation starts at the location of
other-data-item. Storage allocation continues until it defines
the number of character positions in the data item referred to by the
subject of the REDEFINES clause.
- If more than one data description entry defines the same character
position, the program can refer to the character position using the
data-name associated with any of those data description entries.
Additional References
Example
This example shows the following:
- A sample program containing multiple redefinitions of the same area
- The results of the sample program statements
- The allowable subscripts and the contents for each data item in the
program
5.3.41 RENAMES
Function
The RENAMES clause groups elementary items in alternative or
overlapping ways.
new-name
is the data-name of the item being described. It identifies an
alternate grouping of one or more items in a record.
rename-start
is the data-name of the leftmost data item in the area. It can be
qualified.
rename-end
is the data-name of the rightmost data item in the area. It can be
qualified.
Note
Level-number 66 and new-name are not part of the RENAMES clause. They
are in the general format only to clarify the relationship.
|
Syntax Rules
- A logical record can have any number of RENAMES entries.
- All RENAMES entries referring to data items in a logical record
must immediately follow the last data description entry of the record
description entry.
- The program cannot qualify data-names with new-name.
- The program can qualify new-name only by the names of the
associated level 01, FD, or SD entries.
- The data description entries for rename-start and
rename-end:
- Cannot have an OCCURS clause
- Cannot be subordinate to an item whose data description entry has
an OCCURS clause
- rename-start and rename-end must be the names of
elementary items or groups of elementary items in the same logical
record. They cannot be the same data-name.
- A level 66 entry cannot rename another level 66 entry. Nor can it
rename a level 88, level 01, or level 77 entry.
- None of the items in the range, including rename-start and
rename-end, can be variable occurrence data items.
- The words THRU and THROUGH are equivalent.
- rename-end cannot be subordinate to rename-start.
The beginning of rename-end cannot be to the left of the
beginning of rename-start. The end of rename-end must
be to the right of the end of rename-start.
General Rules
- If rename-end is used, new-name includes all
elementary items:
- Starting with rename-start, if rename-start is an
elementary item or the first elementary item in rename-start,
or if rename-start is a group item
- Ending with rename-end, if rename-end is an
elementary item or the last elementary item in rename-end, or
if rename-end is a group item
- If rename-end is not used, all data attributes for
rename-start become data attributes for new-name. In
this case, you are renaming a single data item. If that item is a group
item, new-name is also treated as a group item. If that item
is an elementary item, new-name is also treated as an
elementary item.
|