Документация по Clarion

         

INDEX (описывает статический индекс для файла)


метка INDEX([-][field])[NAME()][,NOCASE][,OPT]

- Знак МИНУС перед компонентой индекса означает, что для полей с этой компонентой, индекс сортируется по убыванию (от больших значений к меньшим), по умолчанию сортировка по возрастанию.
field Метка поля из структуры RECORD файла, для которого строится индекс. Поле - это компонента индекса. Переменные с атрибутом DIM (массивы) нельзя использовать в качестве индексных полей.
NAME Имя файла для индекса.
OPT В индекс не попадут сведения о тех записях,
у которых все поля, используемые как компоненты индекса, пусты или содержат нуль.
NOCASE Сортировку проводить без учета регистра.

INDEX описывает "статичный" ключ для файла данных. INDEX обновляется только оператором BUILD. Он используется для доступа к записям в порядке, отличном от физического размещения записей в файле. INDEX можно использовать как для последовательного, так и для произвольного доступа к файлу. В INDEX-е ВСЕГДА разрешены записи с одинаковым значением индексных полей (duplicated entries).
INDEX может строиться на основании более чем одного поля. Порядок, в котором заданы компоненты индекса, определяет порядок сортировки записей по этому индексу. Самые первые компоненты МЕНЕЕ значимы, самые последние - БОЛЕЕ. В общем, файл данных может иметь до 255 индексов (и/или ключей) и каждый индекс может быть длиной до 255 байт (имеется в виду суммарная длина всех полей, задействованных для построения индекса), хотя точное число индексных и ключевых файлов зависит от файлового драйвера.
Если в описании INDEX не заданы имена полей, то создается "динамический" индекс, который позволяет использовать любые поля структуры RECORD в качестве своих компонент, за исключением массивов. Такие компоненты задаются во время исполнения вторым параметром оператора BUILD. Такой подход позволяет произвольно индексировать файлы во время исполнения (С.П.А - и позволяет избежать одинаковых, в целом, процедур, использующих разные порядки сортировки одного и того же файла).
Пример:
Names FILE,DRIVER('Clarion'),PRE(Nam)
NameNdx INDEX(Nam:Name),NOCASE !Индекс по имени
NbrNdx INDEX(Nam:Number),OPT !Индекс по номеру
Rec RECORD
Name STRING(20)
Number SHORT
. .
См. также: ,

Содержание раздела