INDEX Attribute


How to:

Index the values of a field by including the INDEX attribute, or its alias of FIELDTYPE, in the field declaration. An index is an internally stored and maintained table of data values and locations that speeds retrieval. You must create an index to:

Syntax: How to Specify Field Indexing

The syntax of the INDEX attribute in the Master File is:


Text fields cannot be indexed. The maximum field name length for indexed fields in a FOCUS data source is 12 characters. The maximum field name length for indexed fields in an XFOCUS data source is 66 characters.

Example: Specifying an Index for the JOBCODE Field


Joins and the INDEX Attribute


In order to cross reference a segment using a static cross reference, a dynamic cross reference, or an equijoin, at least one field in the segment must be indexed. This field, called the cross-referenced field, shares values with a field in the host data source. Only the cross-referenced segment requires an indexed field, shown as follows:

Other data sources locate and use segments through these indexes. Any number of fields may be indexed on a segment, although it is advisable to limit the number of fields you index in a data source.

The value for the field named JOBCODE in the EMPLOYEE data source is matched to the field named JOBCODE in the JOBFILE data source by using the index for the JOBCODE field in the JOBFILE data source, as follows:

Indexes are stored and maintained as part of the FOCUS data source. The presence of the index is crucial to the operation of the cross-referencing facilities. Any number of external sources may locate and thereby share a segment because of it. New data sources which have data items in common with indexed fields in existing data sources can be added at any time.

Reference: Usage Notes for INDEX

Note the following rules when using the INDEX attribute:

  • Alias. INDEX has an alias of FIELDTYPE.
  • Changes. If the INDEX attribute is removed from a field, or assigned the equivalent value of blank, the index is longer maintained. If you no longer need the index, use the REORG option of the REBUILD facility to recover space occupied by the index after you remove the INDEX attribute. REBUILD is described in Creating and Rebuilding a Data Source.

    To turn off indexing temporarily (for example, to load a large amount of data into the data source quickly), you can remove the INDEX attribute before loading the data, restore the attribute, and then use the REBUILD command with the INDEX option to create the index. This is known as post-indexing the data source.

    You can index the field after the data source has already been created and populated with records, by using the REBUILD facility with the INDEX option.

  • Maximum number. The total of indexes, text fields, and segments cannot exceed 189 (of which a maximum of 64 can be segments and text LOCATION files).

FORMAT and MISSING: Internal Storage Requirements

Some application developers find it useful to know how different data types and values are represented and stored internally:

  • Integer fields are stored as full-word (four byte) binary integers.
  • Floating-point double-precision fields are stored as double-precision (eight byte) floating-point numbers.
  • Floating-point single-precision fields are stored as single-precision (four byte) floating-point numbers.
  • Packed-decimal fields are stored as 8 or 16 bytes and represent decimal numbers with up to 31 digits.
  • Date fields are stored as full-word (four byte) binary integers representing the difference between the specified date and the date format base date of December 31, 1900 (or JAN 1901, depending on the date format).
  • Date-time fields are stored in 8 or 10 bytes depending on whether the time component specifies microseconds.
  • Alphanumeric fields are stored as characters in the specified number of bytes.
  • Variable length alphanumeric fields are stored as characters in the specified number of bytes plus two additional bytes to specify the length of the character string stored in the field.
  • Missing values are represented internally by a flag.