KEY (описывает динамический индекс (ключ) для файла)
метка KEY([-][field])[NAME()][,NOCASE][,OPT]
- | Знак МИНУС перед компонентой ключа означает, что для полей с этой компонентой, индекс сортируется по убыванию (от больших значений к меньшим), по умолчанию сортировка по возрастанию. |
field | Метка поля из структуры RECORD файла, для которого строится ключ. Поле - это компонента ключа. Переменные с атрибутом DIM (массивы) нельзя использовать в качестве ключевых полей. |
NAME | Имя файла для ключа. |
OPT | В ключ не попадут сведения о тех записях, у которых все поля, используемые как компоненты ключа, пусты или содержат нуль. |
NOCASE | Сортировку проводить без учета регистра. |
DUP | В файле данных разрешены записи с одинаковыми значениями ключевых полей. |
KEY - это индекс файла данных, который автоматически обновляется при добавлении, изменении или удалении записей. Он используется для доступа к записям в порядке, отличном от физического размещения записей в файле. INDEX можно использовать как для последовательного, так и для произвольного доступа к файлу.
KEY может строиться на основании более чем одного поля. Порядок, в котором заданы компоненты ключа, определяет порядок сортировки записей по этому индексу. Самые первые компоненты МЕНЕЕ значимы, самые последние - БОЛЕЕ. В общем, файл данных может иметь до 255 ключей (и индексов) и каждый ключ может быть длиной до 255 байт (имеется в виду суммарная длина всех полей, задействованных для построения ключа), хотя точное число ключевых и индексных файлов зависит от файлового драйвера.
Пример:
Names FILE,DRIVER('Clarion'),PRE(Nam)
NameKey KEY(Nam:Name),NOCASE,DUP !Ключ по имени
NbrKey KEY(Nam:Number),OPT !Ключ по номеру
Rec RECORD
Name STRING(20)
Number SHORT
CODE
Nam:Name = 'Clarion Software' !Инициализируем ключевое
! поле
GET(Names,Nam:NameKey) !Читаем запись
SET(Nam:NbrKey) !Обрабатывать в порядке
! возрастания поля
! NAM:NUMBER
См. также: , ,