The UNESCO micro CDS/ISIS Software

3. Техническое описание

3.1. Таблица определения полей (ТОП)

     ТОП  содержит описание полей записей главного файла (файла
документов). Здесь описываются различные  поля,  которые  могут
присутствовать в записи и параметры для каждого поля.
     ТОП используется для управления созданием  рабочих  листов
по  вводу  данных для базы данных и для контроля содержания по-
лей; создается модифицируется  посредством  программы  ISISDEF,
используя строковый редактор CDS/ISIS (описанный в разделе 14 "
Строковый редактор "). Пример ТОП в строковом редакторе показан
на рис.5.

————————————————————————————————————————————————————————————————
|  ТАБЛИЦА ОПРЕДЕЛЕНИЯ ПОЛЕЙ (ТОП)          БАЗА ДАННЫХ: CDS   |
|——————————————————————————————————————————————————————————————|
| ? | ПРИЗНАК |        ИМЯ          |ДЛИНА|ТИП|ПОВТО-|РАЗДЕЛИ- |
|   |         |                     |     |   |РЯЕ-  |ТЕЛИ/    |
|   |         |                     |     |   |МОСТЬ |ШАБЛОН   |
|——————————————————————————————————————————————————————————————|
| -      12    Conference main entry  300   X            npdz  |
| -      24    Title                  500   X            Z     |
| -      25    Edition                100   X                  |
| -      26    Imprint                300   X            abc   |
| -      30    Collation              100   X            abc   |
| -      44    Series                 300   X     R      vz    |
| -      50    Notes                  500   X                  |
| -      69    Keyuords              1000   X                  |
| -      70    Personal Authors       100   X     R            |
| -      71    Corporate Bodies       300   X     R            |
| -      72    Meetinge               300   X     R      npdz  |
| -      74    Added title            500   X     R      Z     |
| -      76    Other landuage titles  500   X     R      Z     |
|                                                              |
|                                                              |
|                                                              |
|                                                              |
|           Рис.5     Пример таблицы определения полей         |
|                                                              |
————————————————————————————————————————————————————————————————

3.1.1. Структура базы данных

     Возможности CDS/ISIS позволяют описать базу данных в соот-
ветствии  со спецификой ваших требований. CDS/ISIS не фиксирует
семантики обрабатываемой информации. Он просто выполняет  набор
функций, обычно требуемых в любой системе хранения и поиска ин-
формации,  которые обеспечивают создание эффективных информаци-
онных систем. В связи с этим, невозможно предложить ряд  исчер-
пывающих правил для создания базы данных, а возможно предложить
только  общие рекомендации. Ниже изложены основные требования к
структуре базы данных. Для того,чтобы  в  совершенстве  изучить
CDS/ISIS,  вы должны ознакомиться со всеми его возможностями, в
частности, с элементами базы данных, описанными в  этой  главе,
поскольку  слабое  знание  базы данных может позже помешать ис-
пользованию некоторых возможностей CDS/ISIS.  Например,  полное
понимание  таких совершенных возможностей как REF функция языка
форматирования (см.главу 3.3.2.2 " REF(выражение,формат)",  или
программных  возможностей ISISPAS, необходимых при создании ин-
тегрированных баз данных.

3.1.1.1. Элементы данных

     Под элементами данных подразумевают простейшую  часть  ин-
формации.  Первый шаг в проектировании базы данных будет первым
шагом внимательного и всестороннего анализа требуемых элементов
данных. Обьекты, подходящие для  выбора  в  качестве  элементов
данных,  должны быть таковыми, что с ними можно работать по от-
дельности.
     Чтобы определить это, вы  будете  задавать  себе  типичные
вопросы,  такие  как:" Будет ли обьект нуждаться в сортировке ?
", "Должен ли он быть поисковым ? " , " Нужно ли  его  печатать
иначе, чем остальные, например жирным шрифтом или большими бук-
вами и т.д.".
     Если ответ на любой из этих  вопросов  будет  "Да",  тогда
обьект будет выбран как элемент данных.

3.1.1.2. Поля и подполя

     Элементы  данных  содержатся в полях или подполях.
Поле  идентифицируется  числовым  признаком и описывается в ТОП
базы данных. Вы можете считать признак именем поля или его  но-
мером, поскольку он известен CDS/ISIS. Каждый раз, когда вы хо-
тите обрабатывать отдельные элементы данных CDS/ISIS, вы должны
указать номер поля, где этот элемент описан. Например, в данной
раннее  ТОП, Title присвоен номер 24. Если вы хотите отобразить
содержимое поля Title вы должны в CDS/ISIS указать V24 (на язы-
ке форматирования команд поля).
     CDS/ISIS,  обычно, трактует содержимое поля, как непрерыв-
ную строку символов и как один обьект. Вы можете, однако,  под-
разделить  поле  на подполя. В этом случае поле будет содержать
более чем один элемент данных, каждый из  них  будет  описан  в
различном  подполе.  Непохожие поля, подполя не отождествляются
признаком, но ограничены подполем.
     Ограничителем  подполя есть 2 символьный код, предшествую-
щий и идентифицирующий подполе переменной длины внутри поля. Он
состоит из символа ^(не знак),  далее  следует  алфавитный  или
числовой символ, например:^a.
     В распечатке ТОП, приведенной раннее, поле Imprint опреде-
лено  как  содержащее  город, издателя и дату публикации в трех
подполях а, b и соответственно с. Примером Imprint может быть:

                    ^aParis^bUnesco^c1985

     Поле, содержащее подполя, может быть доступно  как  единый
обьект при ссылке на его номер (например V26).
     В этом случае CDS/ISIS использует опции, которые подавляют
признаки подполей,автоматически замещая их знаками пунктуации.
     Однако, так как подполя идентифицируются разделителями, вы
можете  также иметь доступ к каждому подполю отдельно, указывая
как признак поля, так и ограничитель релеватного подполя. Напри-
мер:V26 ^b относится к подполю Publisher поля Imprint и V26  ^a
относится к подполю места публикации.
     При проектировании базы данных,  необходимо  помнить,  что
язык  форматирования CDS/ISIS имеет средства для автоматической
замены разделителей подполей знаками пунктуации. Попробуйте ес-
ли возможно, выбрать коды  разделителей  таким  образом,  чтобы
пунктуация  была  подходящей для применения, в противном случае
вы должны будете форматировать  каждое  подполе  индивидуально.
Стандартная таблица замены разделителей дана в разделе 3.2.2. "
Командный  режим  " . Заметим, что первое подполе, разбитого на
подполя поля, не должно иметь  ограничителя  подполя,  так  как
считается, что он уже есть. Например, если в поле заглавие, где
вы  хотите  использовать  подполе  для подзаглавия, и заглавная
часть поля присутствует всегда, то разделитель подполя  не  ну-
жен. Таким образом, следующее содержимое этого поля возможно:

     IL nome della rosa^bnaturalmente, un manoscritto

3.1.1.3. Повторяющиеся поля

     В тех случаях, когда элементы данных могут встречаться бо-
лее одного раза в записях, CDS/ISIS будет создавать столько по-
лей,  сколько требуется, сколько нужно, чтобы включать все слу-
чаи наличия таких элементов данных. Этот  тип  поля  называется
повторяемым  типом  поля.  Типичным  примером есть поле автор в
библиографической записи. Все  экземпляры  повторяющегося  поля
имеют  тот же номер. CDS/ISIS предоставляет возможности для ра-
боты и форматирования таких полей. Помните однако, что в основ-
ном вы не имеете доступа к отдельному экземпляру повторяющегося
поля индивидуально.Часты случаи, например, когда первый экземп-
ляр повторяющегося поля требует отдельной обработки  (например,
первый автор). Если ваше приложение требует этого, то нужно оп-
ределить  два разных поля: одно содержащее первое вхождение (не
повторяющееся), и  второе  поле,  содержащее  другое  вхождение
(повторяющееся).
     Повторяющиеся  поля  могут содержать подполя, которые дают
вам возможность обращаться к  2-х  размерным  табличным  данным
(одно  измерение  -  поле,  другое  -  подполе).  Заметим,  что
CDS/ISIS не имеет возможности прямо обращаться к  повторяющимся
подполям  в  пределах  поля. Однако, вы можете осуществить это,
если это требует приложение, путем  использования  возможностей
программирования  CDS/ISIS.  Кроме того, вы можете описать поле
повторяющимся даже если оно содержит один элемент  данных.  Это
может быть полезно, например, чтобы иметь возможность разрывать
относительно длинный текст, такой как статья или реферат, чтобы
сохранить  их  содержимое  при выводе. Путем определения такого
поля, как повторяющегося, вы можете потом использовать  возмож-
ности  языка  форматирования,предназначенные  для повторяющихся
полей, чтобы выделить первую строку каждого абзаца.
     Другой пример, когда вы хотите  иметь  возможность  искать
длинные  поля  по словам путем ввода каждого параграфа, как от-
дельного вхождения. Вы можете использовать опцию  F  поискового
языка,  ограничив  поиск  в  параграфе двумя или более словами,
причем такими, что поиск не смог бы осуществляться,  если  поле
было повторяемым (см.раздел 3.6 " Поисковый язык CDS/ISIS ").

3.1.1.4. Управляющие символы

     Обычные символы, хранимые в полях, также индексированы как
данные,  и могут быть интерпретированы CDS/ISIS как управляющие
символы, в отличие от символов данных, и будут вызывать некото-
рые специальные процедуры обработки. Управляющие символы резер-
вированы для использования в CDS/ISIS и поэтому не  могут  быть
использованы как данные.

3.1.1.4.1. Ограничители поисковых терминов

     Ограничители поисковых терминов могут  использоваться  для
идентификации ключевых слов или выражений, содержащихся в запи-
сях,  чтобы  обеспечить их поиск. Различные технические приемы,
которыми снабжен CDS/ISIS в указателе записи, описаны  в  главе
"Таблица  выбора  полей (ТВП)" . Ключевые слова в записях могут
быть отмечены двумя путями: либо заключены между парой  ко-
сых  (/.../),  либо заключены в треугольные скобки (<...>).
Преимущество использования треугольных скобок  предпочтительней
использования  пары косых, поскольку треугольные скобки в отли-
чии  от  косых  скобок,  являются  резервируемыми  символами  и
CDS/ISIS воспринимает как опцию каждое появление скобок или по-
давляет их, когда отсутствие опции подавляет скобки.
     Когда скобки подавлены, они обычно удалены из отображенной
версии  поля, исключая тот случай, когда открывающая скобка не-
посредственно следует за закрывающей: в  этом  случае  CDS/ISIS
будет ставить (замещать) их точкой с запятой и пробелом.
     Например, путем выбора соответствующего  режима  вывода  на
экран следующая строка:

     university course  documentation training  library schooL

     будет отображена как:

     university course; documentation trainind; library school.

     Исключая случай упомянутый ранее, вы должны следить, чтобы
было  достаточно  пространства за открывающейся и закрывающейся
скобкой соответственно. Например, ключевые слова  вложенные  из
другого текста в поле как ниже:

     Mission report   describing   a   (university   course)  in
(docunentation training) at an East African (library school)

     Окружающее  пространство  вокруг ключевых слов должно при-
сутствовать для того, чтобы правильно отображать результат:

     Mission report    describing   a   university   course   in
documentation training at an East African library school.

     Если поле было введено как:

     Mission report           describing            a (university
course) in (documentation training)  at  an  East  African (library
school)

     CDS/ISIS отобразит его как:

     Mission report      describing      auniversity      course
indocumentation trainingat an East Africanlibrary school

     Другими словами CDS/ISIS просто игнорирует скобки и не  бу-
дет заменять их пробелами.

3.1.1.4.2. Средства сортировки

     Когда  печатаются  результирующие каталоги, вам необходимо
отсортировать содержимое одного или более полей в порядке печа-
ти записей в требуемой последовательности.  CDS/ISIS  старается
создать  отсортированную  последовательность  согласно с обычно
принятыми правилами наполнения, но иногда это может быть невоз-
можно. В таких случаях, CDS/ISIS  предоставит  вам  возможность
констатировать полностью как данное поле должно быть отсортиро-
ванным  снабженное заполняющей информацией во время ввода ваших
данных.
     Эти возможности позволяют вам инструктировать CDS/ISIS за-
менять или игнорировать любую последовательность символов  дан-
ных в поле всякий раз, когда поле используется как запоминающий
элемент, используя один из следующих спецификаций:

text-a=text-b в  этом  случае,  CDS/ISIS  заменит  text-a  на
                 text-b  когда  поле использовано в сортировке,
                 но использует  text-a  (и  игнорирует  text-b)
                 когда поле отображается.

text-a  в этом случае, text-a будет игнорироваться когда сорти-
       руется и только используется для отображения поля.

     Ниже  показано несколько случаев в которых обычно эти воз-
можности использованы (но их применение  не  ограничено  только
этими случаями):

     Введено как The evolution of information systems
     Отсортировано как EVOLUTION OF INFORMATION SYSTEMS
     Отображено как The evolution of information systems
     Введено как 100=onehundred days
     Отсортировано как ONEHUNDRED DAYS
     Отображено как 100 days
     Введено  как  Мс=mac Pherson,  J.
     Отсортировано как MACPHERSON J.
     Отображено как МсPherson, J.

3.1.2. Параметры ТОП

     Каждая  строка  ТОП описывает одно поле записи файла доку-
ментов и содержит 6 параметров: номер поля,  имя,  длина,  тип,
повторяемость  и  разделители подполей или шаблоны. Они описаны
ниже.

3.1.2.1. Номер поля.

     Номер  -  это уникальное числовое значение (в диапазоне 1-
32767) идентифицирующее поле. Признак  поля  используют  всякий
раз,  когда  CDS/ISIS  необходимо выполнить данную операцию над
полем. Признак описан в главной записи и соединен с  содержимым
соответствующего поля.

3.1.2.2. Имя поля

     Имя поля - описательное имя, которое вы присваиваете полю.
Оно обычно используется в рабочих листах для ввода  данных  для
идентификации  на  экране.  Вы можете полагать что имя поля это
то, что вам известно, тогда как номер есть имя, согласно  кото-
рому  поле  известно CDS/ISIS. Имя поля может быть длиной до 30
символов.
     При создании рабочего листа по вводу данных, CDS/ISIS  бу-
дет выводить это имя как имя поля по умолчанию.

3.1.2.3. Длина поля.

     Это  число  (в диапазоне 1-1650) показывает предполагаемую
длину поля.  Пока  создается  рабочий  лист  по  вводу  данных,
CDS/ISIS  будет  использовать это значение как длину по умолча-
нию.
     Из-за закрытой связи между длиной поля и рабочими  листами
по вводу данных, CDS/ISIS не позволяет вам определить длину по-
ля  большую чем 1650 символов (что соответствует одной странице
рабочего листа), поэтому поле не может быть в промежутке  между
двумя страницами рабочих листов. Заметим, однако, что, хотя все
поля  в базе данных имеют переменную длину, длина точно опреде-
ленная здесь только характеристическая и CDS/ISIS не настаивает
на ней, исключая поля для типа - шаблон, где длина  фиксирована
и  максимальная длина ограничена 20 символами. Для другого типа
поля, вы имеете опцию, где создаетя рабочий лист по вводу  дан-
ных, каждый предел длины поля определен в ТОП или строковый ре-
дактор  снабжен  произвольной длиной по умолчанию 100 символов,
если вы не введете длину.

3.1.2.4. Тип поля.

     Тип поля - условный код, указывающий на возможные  ограни-
чения  в  символах  данных, которые могут храниться в поле. Тип
поля может быть одним из следующих:

     X- поле может содержать любой  алфавитно-цифровой  символ.
Поля X - типа не проверяются CDS/ISIS.

     A- поле может только содержать текстовые символы (заметим,
что пробел не является текстовым символом!). На протяжении вво-
да  данных, CDS/ISIS проверяет эти ограничения, выдавая сообще-
ния, если ограничение не удовлетворено, и просит вас  откоррек-
тировать поле.

     N- поле может только содержать численные символы (0-9). На
протяжении ввода данных, CDS/ISIS проверяет это условие, и  вы-
дает сообщение об ошибке, если условие не удовлетворено, то про-
сит вас откорректировать поле.

     Р- поле имеет фиксированную структуру, управляемую элемен-
том  шаблоном  который вы определили в рабочем листе ввода дан-
ных. Тип входного шаблона определяется символами, которые могут
вводиться в каждой позиции  поля.  Шаблоны  описаны  далее.  По
умолчанию тип строкового редактора - X .
     Описанные  текстовые  символы  могут быть настроены каждым
пользователем посредством системной таблицы ISISAC.ТАВ, описан-
ной в разделе 17.6 " Таблица буквенных символов (ISISAC.ТАВ) " .

3.1.2.5. Повторяемость

     Этот  параметр  определяет, есть ли поле повторяемым (т.е.
оно может встречаться более чем раз в любой длинной записи) или
нет. R указывает на то, что поле  повторяется  (см.,  например,
поля  44,70,71,72,74, и 76 в примере ТОП данном на рис. 5). За-
заметим, что Р-тип (шаблон) поля может не быть повторяемым.

Число вхождений поля повторяемости ограничено максимальной дли-
ной записи.

3.1.2.6. Подполя и Шаблон

     В зависимости от определенного типа поля, этот элемент оп-
ределяет набор полей, допустимых в  поле,  если  таковые  есть,
(для типов Х,А или N), или шаблон (для типа Р).

3.1.2.6.1. Подполя

     Если поле содержит подполя, идентификатор подполя позволя-
ет  определить  их  в порядке, в котором они должны появляться.
Заметьте, что символ отрицание(^), идентифицирующий разделитель
подполя не вводится. Например, если поле содержит подполя ^а ^в
и ^с, они определены в ТОП как aбс(но не ^a^в^c).

3.1.2.6.2. Шаблон

     Шаблон-посимвольное описание содержимого поля.
     Для каждой позиции поля вы определяете в шаблоне тип  сим-
вола, который он может содержать:

     X -  позиция может содержать любой алфавитно-цифровой символ
        
     A -  позиция должна содержать текстовые символы

     9 -  позиция должна содержать числовые символы

     other (другие) -  позиция должна содержать указанные символы

     Заметим, что X и A должен вводиться в верхнем регистре (как
заглавные).

     Ниже даны  некоторые  примеры  шаблонов  и  соответствующие
входные данные:

     Шаблон                  Входные данные
     99-999/АА               35-674/ХЕ         (правильно)
                             35-j56/ХЕ         ('j' не правильно)
     XXX(AA)9                XRR(BB)7          (правильно)
                             ...(78)9          ('78'не правильно)

     Заметим следующие ограничения на поля Р-типа:

     - максимальная длина ограничена 20 символами;
     - они не могут быть повторяемыми; и
     - они не могут содержать подполя.

3.1.3. Модификация ТОП

     Хотя  вы  можете модифицировать ТОП после ее создания, ис-
пользуя программу ISISDEF, вы должны знать, что некоторые изме-
нения могут иметь тяжелые последствия, особенно если вы  имеете
уже  введенные записи в соответствующей базе данных. Каждый раз
изменяя ТОП, CDS/ISIS выполнит проверку последовательности  ра-
бочих  листов, определенных для базы данных и, если необходимо,
автоматически модифицирует их под определенные условия.  Допол-
нительные  изменения, однако, могут требоваться не только в ра-
бочих листах, но также в ТОП и  форматах воспроизведения.
     В случае модификации ТОП, изменения могут потребоваться  в
самой базе данных. Если изменений требует база данных, вы може-
те  выполнить их автоматически, используя программу ISISXCH им-
порта/экспорта, или вы можете это сделать вручную.
     Ниже даны некоторые пояснения относительно влияния некото-
рых изменений ТОП, а также индикации, на которую CDS/ISIS авто-
матически реагирует.

     Добавление поля: Добавить поле, как  последнее  в  рабочих
листах ввода данных; прибавить поле, в как последнее в форматах
отображения;  прибавить  поле в инвертированном файле FST, если
потребуется.

     Удаление поля: CDS/ISIS будет автоматически  удалять  поле
во всех рабочих листах в которых оно встречается, которое будет
эффективно  сдерживать  любой  дополнительный ввод этого поля в
базе данных; вы можете, если хотите  удалить  поле  из  рабочих
листов, в которых оно встречалось, используя программу ISISDEF;
удалить  поле  из форматов в которых оно встречалось; если поле
было введено в любую запись базы данных, то  используйте  прог-
рамму  ISISXCH  для его удаления; если поле было инвертировано,
удалите его из ТОП и переинвертируйте базу данных.

     Изменить номер (код) поля:
     Делается тогда, когда вы будете удалять старое поле и  до-
бавлять новое.
     Чтобы  изменить  номер поля, используют программу ISISXCH,
затем, если поле было инвертировано, переинвертируйте базу дан-
ных.
     Изменение имени поля: Изменить, если необходимо, имя  поля
в рабочих листах и в форматах.

     Увеличение  длины  поля: Увеличить, если необходимо, длину
поля в рабочих листах.

     Уменьшение длины поля:  CDS/ISIS  автоматически  уменьшает
длину поля в рабочих листах, если поле не есть повторяющимся.

     Изменение типа поля: CDS/ISIS будет автоматически изменять
тип поля во всех рабочих листах, где поле встречается.  Однако,
если запись содержит данные, описанные по-старому, не совмести-
мые  с новым типом, тогда такие поля могут требовать ручных из-
менений.

     Сделать поле повторяемым: Увеличить, если необходимо, дли-
ну поля в рабочих листах или определить его как поле прокрутки,
если поле инвертировано, модифицировать инвертированный файл ТОП
для извлечения всех случаев  поля;  модифицировать  форматы  для
точного формирования поля.

     Сделать поле не повторяемым: CDS/ISIS уменьшит, если необ-
ходимо,  длину  поля  в рабочем листе, где поле встречается; вы
должны вручную удалить дополнительные лишние входные поля, если
таковые есть в базе данных или предпринять альтернативные дейс-
твия.

     Изменение  структуры  подполя: Вы должны, если необходимо,
переформатировать встречающиеся поля в базе данных  согласно  с
новой  структурой, используя ISISXCH; если поле было инвертиро-
вано и элементы инвертированного файла не длиннее соответствую-
щих  элементов  в новой структуре, переинвертируйте базу данных
после того, как соответственно измените ТОП; форматы могут также
требовать изменений.

     Изменения шаблона поля:  CDS/ISIS  автоматически  изменяет
шаблон  во  всех  рабочих листах, где встречается поле. Однако,
записи, уже описанные в базе данных, могут быть  несовместимыми
с новым шаблоном, который вы определили. В этом случае они дол-
жны быть изменены вручную.

3.2. Язык форматирования.

     Язык форматирования позволяет определить точные требования
по  форматированию  записей базы данных. С помощью этого языка,
можно выбрать один или более конкретных элементов данных в нуж-
ном порядке, вставить текстовые  константы  по  вашему  выбору,
например,  отметить  подзаголовками  некоторые  или все поля, а
также определить требования по горизонтальному и  вертикальному
размещению  данных. Совокупность команд по форматированию печа-
ти, описываемых в данной главе, называется  форматом.  В  общем
случае  формат  определяет подмножество полей записей базы дан-
ных, которые затем могут использоваться CDS/ISIS для выполнения
заданной функции. Хотя форматы в основном используются для спе-
цификации способа выдачи записей на экран или  принтер,  однако
они также широко используются в системе каждый раз, когда необ-
ходимо выполнить специфические операции с одним или несколькими
элементами  данных. Hапример, в таблице выбора полей формат ис-
пользуется для определения данных, к которым должна применяться
данная техника индексирования.  Язык  форматирования,  следова-
тельно,  является  ядром многих операций CDS/ISIS и эффективное
использование CDS/ISIS требует тщательного его  изучения.  Фор-
мальное  определение  языка форматирования дано в разделе 3.2 "
Язык форматирования ".
    Hекоторые форматы могут показаться очень сложными, и вы мо-
жете  предположить,  что  язык форматирования сам по себе очень
сложный. Фактически же все форматы, даже наиболее сложные, сос-
тавлены из одной или более простых команд и  выражений,  разде-
ленных  запятыми  или пробелами. Кажущаяся сложность следует из
факта, что таких команд может быть много в одном формате.  Сле-
довательно,  ключом  к пониманию формата является анализ каждой
команды в отдельности.
     Хотя все форматы составлены с использованием одного и того
же языка форматирования, они могут быть разделены на  группы  в
зависимости от предполагаемого их использования:
     Экранные  форматы используются для вывода записей на экран
или принтер (в последнем случае их называют форматами печати).
     Форматы выборки используются в ТВП для определения данных,
которые нужно индексировать.
     Обрабатывая формат, CDS/ISIS работает с  тремя  объектами:
запись базы данных, формат, рабочая область, в которой хранится
вывод,  продуцируемый  форматом. Команды выполняются последова-
тельно, в порядке, в котором они даны в формате. Hекоторые  ко-
манды продуцируют действия (такие, как переход на новую строку,
пропуск  одной  или  более  пустых строк и т.д.). Продуцируемые
данные хранятся как строки текста в  рабочей  области,  которые
затем передаются в соответствующую программу для дальнейшей об-
работки, т.е. для печати.
     Когда формат используется для выдачи данных на экран, про-
дуцируемые  строки  обычно ограничены определенной максимальной
длиной (шириной строки). Hапример,  вызывая  строки  на  экран,
CDS/ISIS автоматически ограничивает ширину строки 80 символами.
Hесмотря  на то, что командами форматирования требуется перейти
на новую строку, CDS/ISIS будет выдавать данные  последователь-
но,  стараясь заполнить каждую строку настолько, насколько воз-
можно. Если данное поле превышает длину строки, CDS/ISIS  поде-
лит  его на необходимое количество строк. Когда CDS/ISIS разби-
вает данные на строки,  точка  деления  всегда  оказывается  на
уровне слов, т.е. слово никогла не разрывается на две строки.
     Все команды формата могут вводиться большими или маленьки-
ми буквами или комбинацией больших и малых букв.
     Все  примеры по форматированию в следующих разделах ссыла-
ются на запись, приведенную на рис.6, в которой содержание  по-
лей  дано в том виде, в каком оно хранится в записи. Эта запись
взята из базы данных CDS, поставляемой ЮHЕСКО на дискетах вмес-
те с CDS/ISIS (ТОП соответствующей базы данных описана в разде-
ле 3.1 "Таблица определения полей (ТОП)").
_____________________________________________________________________

   HФД=4

   Метка                          Содержание
   -----   ----------------------------------------------------------

   24      An Electric  hydrometer  apparatus  for  measuring water-
           vapour loss from plants in the field
   26      ^aParis^bUnesco^c1965
   30      ^ap. 247-257^billus.
   44      Methodology of plant eco-physiology: proceedings of the
           Montpellier Symposium
   50      Incl. bibl.
   69      Paper on hydrometers plant transpiration moisture
           water balance
   70      Grieve, B.J.
   70      Went, F.W.

                        Рисунок 6
_____________________________________________________________________

3.2.1. Селекторы поля

     Селекторы  поля - это команды, используемые для извлечения
определенного поля или подполя из записи.  Специальная  команда
позволяет  извлечь  номер записи в файле документов (MFN), хотя
MFN не является полем. (MFN не имеет метки  и  не  определен  в
ТОП).

3.2.1.1. Команда поля

     Для извлечения поля из записи нужно закодировать букву V с
меткой  поля,  которое  вы хотите извлечь. V (мнемонический код
поля переменной длины) является командой, указывающей CDS/ISIS,
что вы хотите извлечь поле. Она может вводиться как  заглавной,
так и прописной буквой.
_____________________________________________________________________

Формат                         Выходные данные
-------    ----------------------------------------------------------

  V24      An Electric  hydrometer  apparatus  for  measuring water-
           vapour loss from plants in the field
  V26      ^aParis^bUnesco^c1965
  V30      ^ap. 247-257^billus.
  V44      Methodology of plant eco-physiology: proceedings of the
           Montpellier Symposium
                          Рисунок 7
_____________________________________________________________________

3.2.1.2. Команда подполя

     Для  извлечения конкретного подполя из данного поля просто
добавьте соответствующий разделитель подполя к метке, как пока-
зано на рис.8. Заметьте, что вы можете использовать специальный
разделитель подполя ^* для извлечения первого подполя, если оно
есть. В этом случае первому подполю необязательно должен  пред-
шествовать действительный разделитель подполя.
     Отметьте,  что  разделитель подполя можно вводить как заг-
лавной буквой, так и прописной, это безразлично.
_________________________________________________________________

Формат                               Вывод
--------    -----------------------------------------------------
V26^В       Unesco
V26^a       Paris
V30^a       p. 247-257
V44^*       Methodology of plant eco-physiology: proceedings of 
            the Montpellier Symposium
V26^*       Paris

                        Рисунок 8
________________________________________________________________

3.2.1.3. Извлечение фрагмента поля или подполя

     Вам может понадобиться, в некоторых случаях, извлечь часть
поля, которая не является подполем, особенно в  случаях,  когда
поле  имеет фиксированный формат во всей базе данных (например,
стандартизованную запись даты YY-MM-DD). Вы можете сделать  это
введением  команды смещение/длина непосредственно после команды
поля или подполя,к которому эта команда применяется. Эта коман-
да может быть введена  в  виде  *смещение.длина  или  *смещение
или длина, где:
     *смещение  указывает позицию первого символа, который дол-
               жен быть извлечен из поля или  подполя  (позиции
               символов  считаются  с  нуля, т.е. первый символ
               находится в позиции номер 0, второй - в  позиции
               1  и т.д.); если смещение опущено, CDS/ISIS счи-
               тает смещение равным 0;
       .длина указывает количество символов, которые нужно изв-
               лечь; если длина опущена, то извлекается все по-
               ле, начиная с символа, указанного в смещении.
     Некоторые примеры этой команды даны на рис.9 где предпола-
гается, что запись, взятая для примера, содержит также поле 1 в
следующем виде:

                      88-Nov-05
   _____________________________________________

         Формат                   Вывод
   --------------------     --------------------
   V1*3.3                   Nov
   V1.2                     88
   V1*7                     05
   V1*7, V1*2.4             05-Nov
   V1*7, V1*2.5, V1.2       05-Nov-88
   V26.3                    ^aP
   V26^b*2.4                esco


                      Рисунок 9
   ____________________________________________

     Отметьте, в двух последних примерах есть разница в обраще-
нии с полем, содержащим подполя: если идет ссылка на поле (т.е.
V26), то смещение ноль представляет первый действительный  сим-
вол  поля,  в  то  время как при ссылке на подполе (т.е. V26^b)
смещение ноль представляет первый символ данных после  раздели-
теля подполя.

3.2.1.4. Команда смещения

     Когда  CDS/ISIS обрабатывает команду поля или подполя, вы-
вод содержимого поля начинается с текущей позиции строки, кото-
рая зависит от последней выполненной команды. Если поле не вме-
щается в текущую строку, CDS/ISIS создает столько  дополнитель-
ных строк, сколько требуется. Обычно последующие строки начина-
ются с первой позиции. Вы можете изменить эти позиции с помощью
команды  смещения,  которая должна следовать непосредственно за
командой поля (или подполя). Команда смещения кодируется следу-
ющим образом (f,c) или (f), где:
     f - указывает количество пробелов, которые должны быть ос-
         тавлены с левого  поля  перед  форматированием  первой
         (или единственной) строки поля. Эта команда эффективна
         только  в  случае,  если  поле  форматируется с начала
         строки, в противном случае она игнорируется;
     с - указывает количество пробелов, которые должны быть ос-
         тавлены с левого поля перед форматированием всех  пос-
         ледующих  строк поля, форматируемого на более, чем од-
         ной строке.
     Значение ноль может быть назначено как для f, так и для с.
Если  нужно  использовать  только  f,  c  может  быть   опущено
(CDS/ISIS  присваивает  ноль  по умолчанию). Однако, если нужно
только c, вы должны определить и f. Hекоторые примеры приведены
на рисунке 10.
______________________________________________________________________

   Формат                               Вывод
------------     -----------------------------------------------------
 V44             Methodology of plant eco-physiology: proceedings of the
                 Montpellier Symposium
 V44(10)                   Methodology of plant eco-physiology:
                 proceedings of the Montpellier Symposium
 V44(5,9)             Methodology of plant eco-physiology: proceedings
                           of the Montpellier Symposium
 V44(0,8)        Methodology of plant eco-physiology: proceedings of the
                            Montpellier Symposium


                           Рисунок 10
______________________________________________________________________

3.2.1.5. Команда MFN

     Для извлечения номера записи в  файле  документов  введите
следующее:

           MFN или MFN(d)

где d - количество цифр, которые должны быть выведены на экран.
Если (d) опущено, по умолчанию выводится 6 цифр. См. рисунок 11.
   _______________________________

      Формат              Вывод
   -------------       -----------
    MFN                000004
    MFN (3)            004
    MFN (2)            04
    MFN (1)            4

            Рисунок 11
   _______________________________

     Oтметьте, что вы можете использовать F функцию (см. раздел
3.3.2.1 " F(expr-1, expr-2, expr-3)" ) для  подавления  ведущих
нулей.

3.2.2. Команда режима

     CDS/ISIS может выводить данные на экран в  трех  различных
режимах:
     режим проверки: в этом режиме поля выводятся на экран точ-
но  в  том  виде,  как  они  хранятся  в  записи. Отметьте, что
CDS/ISIS не вносит никаких разделителей между полями или экзем-
плярами повторяющегося поля. Следовательно, это забота  пользо-
вателя  обеспечить адекватное разделение полей с помощью команд
размещения, литералов или повторяющихся групп (см.разделы  3.2.
3.  ,  3.2.4 , 3.3.5, " Команды вертикального и горизонтального
размещения " , " Литералы ", и " Повторяющиеся группы " ). вер-
тикального и горизонтального размещения" , "Литералы" и "Повто-
ряющиеся группы ). Этот режим обычно используется  для  вывода
на экран записей в проверочных целях;
     режим  заголовка: этот режим обычно используется для заго-
ловков при печати каталогов и индексов. Все управляющие  симво-
лы,  введенные  в  данные, такие как средства изменения порядка
сортировки (см.раздел 8.3.13 " Сортировка " ) и  ог  раничители
дескрипторов  (  и  ) игнорируются (за исключением указанного
ниже), в то время как разделители подполей заменяются  пунктуа-
цией (см.ниже).
     режим данных: этот режим похож  на  режим  заголовка,  но,
вдобавок,после  каждого  поля автоматически ставится точка (.),
за которой следуют два пробела (или просто  два  пробела,  если
поле оканчивается каким-либо знаком пуктуации). Отметьте, одна-
ко,  что эта автоматическая пунктуация подавляется, если за се-
лектором поля следует суффикс-литерал (см.раздел 3.2.4 "  Лите-
ралы ").
     Когда CDS/ISIS форматирует поле, содержащее подполе, в ре-
жимах заголовка или данных, он автоматически заменяет введенные
разделители подполей знаком пунктуации (первый разделитель под-
поля, если есть, всегда игнорируется). Далее, специальная  ком-
бинация  символов >< заменяется на ';', обеспечивая таким обра-
зом простой способ форматирования  полей,  содержащих  перечень
ключевых фраз, заключенных в угловые скобки (и сохраняя нажатие
клавиши  во время ввода данных). Таблица стандартного замещения
разделителей подполей выглядит так:

              ^a         замещается на ';'
              ^b до ^i   замещается на ','
              все другие замещаются на '.'

     Команда режима кодируется Mmc,
     где:
           m  определяет режим следующим образом:
              Р - режим проверки
              H - режим заголовка
              D - режим данных
     с  определяет способ написания следующим образом:
              U - данные конвертируются в заглавные буквы
              L - данные не изменяются
     Команда режима может появляться  в  формате  столько  раз,
сколько  необходимо,  каждая команда действует до тех пор, пока
не  появляется  следующая.  Если  команда  режима  отсутствует,
CDS/ISIS использует по умолчанию MPL (режим проверки, данные не
конвертируются  в заглавные буквы). Примеры команды режима даны
на рис.12.
______________________________________________________________________

 Формат                                Вывод
----------      ------------------------------------------------------
  
mpl,v24     An Electric  hydrometer  apparatus  for  measuring water-
            vapour loss from plants in the field
mhl,v24     An Electric  hydrometer  apparatus  for  measuring water-
            vapour loss from plants in the field
mdl,v24     An Electric  hydrometer  apparatus  for  measuring water-
            vapour loss from plants in the field.
mdu,v24     AN  ELECTRIC  HYDROMETER  APPARATUS  FOR  MEASURING WATER-
            VAPOUR LOSS FROM PLANTS IN THE FIELD.
mpl,v26     ^aParis^bUnesco^c1965
mhl,v26     Paris, Unesco, 1965
mdu,v26     PARIS, UNESCO, 1965.
mpl,v69     Paper on: 
            
mdl,v69     Paper   on:   hydrometers;   plant  transpiration; moisture;
            water balance.
   

                                 Рисунок 12
______________________________________________________________________

3.2.3. Команды горизонтального и вертикального размещения

     Язык форматирования обеспечивает пять команд для  управле-
ния горизонтальным и вертикальным размещением. Они приведены на
рис.13.
____________________________________________________________________

 Команда                           Функция
---------    -------------------------------------------------------
  Xn         Вносит n пробелов перед форматированием следующего поля
  Cn         Устанавливает позицию строки n
  /          Переход на новую строку (если предыдущая строка не была
             пустой)
  #          Переход на новую строку (безусловный)
  %          Удаляет ранее созданные пустые строки (если они есть)

                             Рисунок 13
____________________________________________________________________

     Команда Xn вносит n пробелов перед форматированием следую-
щих  данных.  Однако,  если  на текущей строке осталось менее n
свободных позиций, CDS/ISIS просто переходит на  новую  строку.
Так,  например, если следующая свободная позиция текущей строки
- 77, а ширина строки определена 80, то выполнение  команды  Х7
приведет к размещению следующих данных с начала следующей стро-
ки (а не с третьей позиции следующей строки).
     Команда  Сn  указывает, что следующие данные должны разме-
щаться, начиная с n-й позиции следующей  строки.  Это  средство
позволяет  осуществлять  вывод  по колонкам. Если n оказывается
больше ширины строки, команда игнорируется.
     Команда / сходна с возвратом каретки на  пишущей  машинке,
т.е. она переводит на новую строку и, следовательно, приводит к
размещению  данных с начала следующей строки. Однако, в отличие
от возврата каретки, многократно подряд  расположенные  команды
/,  хотя  и  являются  синтаксически  правильными, имеют тот же
смысл, что и одна команда /, т.е. / никогда не производит  пус-
тых строк. Для этой цели предусмотрена команда #. Она выполняет
ту же функцию, что и /, но переход на новую строку является бе-
зусловным. Так, вы можете использовать комбинацию /# для созда-
ния  одной (и только одной) пустой строки (отметьте, что комби-
нация ## может привести к пропуску одной или двух пустых  строк
в  зависимости  от того, была ли пустой строка, форматированная
перед выполнением первой команды #).
     Использование команды # может вызвать  затруднение  в  тех
случаях, когда выбираемое поле оказывается пустым. Эта ситуация
хорошо иллюстрируется на следующем примере:

                   /#V10/#V20/#V30 ...

     Если  все поля присутствуют в записи, то в результате поля
10, 20, и 30 будут располагаться с начала строк и каждому будет
предшествовать одна пустая строка. Однако, если поле 20 отсутс-
твует, то между 10 и 30 полями будет пропущено две пустые стро-
ки. Это может быть нежелательно если  действительно  требуется,
чтобы между полями была пропущена именно одна пустая строка не-
зависимо  от наличия или отсутствия некоторых полей, тогда при-
веденная выше спецификация не приведет к желаемому результату.
     Эту проблему решает команда %. Ее действие  заключается  в
подавлении  всех  последовательных пустых строк (если они есть)
между текущей строкой и последней непустой строкой.
     Так, следующий формат:

                   %##V10%##V20%##V30 ...

приведет к пропуску одной и только одной  строки  между  каждым
полем,  даже если некоторые из них отсутствуют в записи. Допол-
нительные примеры этих команд даны на рис.14.
___________________________________________________________________

       Формат                                Вывод
---------------------     ----------------------------------------
v26^b,x3,v26^a            Unesco   Paris
v26^b/v26^a               Unesco
                          Paris
v26^b/#v26^a              Unesco

                          Paris
v26^b,c20,v26^a           Unesco              Paris
v26^b,####%v26^a          Unesco
                          Paris
mdl,v26,v30               Paris, Unesco, 1965. p. 247-257, illus.
mdl,v26/v30               Paris, Unesco, 1965.
                          p. 247-257, illus.


                             Рисунок 14
____________________________________________________________________

3.2.4. Литералы

     Литерал - это строка символов, заключенная между соответс-
твующими разделителями, которая вносится в  выводимый  текст  в
таком  виде,  как она приведена. Литералы могут использоваться,
например, как подзаголовки полей.
     Литералы существуют трех типов:
     яусловные литералы : определяют текст, который будет выве-
ден только если соответствующее поле присутствует в записи. Ес-
ли команда выбора соответствующего поля - это  команда  подполя
(т.е.  v24^a), то текст будет выведен только тогда, когда соот-
ветствующее подполе присутствует в записи. Если команда  выбора
поля  определяет  повторяющееся  поле,  то  текст будет выведен
только один раз, независимо от количества повторений поля.  Ус-
ловные  литералы  заключаются  в двойные кавычки ("), " например,
"Заголовок: ".
     повторяющиеся литералы : как и условные литералы, они  оп-
ределяют текст, который должен быть выведен только тогда, когда
соответствующее поле или подполе присутствует в записи. Однако,
если  поле  повторяющееся, литерал будет распечатан для каждого
повторения поля. Повторяющиеся литералы  заключаются  в  верти-
кальные черты (|), например |Автор: |.
     безусловные литералы : определяют текст, который будет вы-
веден независимо от наличия полей. Безусловные литералы  заклю-
чаются  в одинарные кавычки ('), например 'Краткое содержание'.
Поскольку безусловные  литералы  всегда  выводятся  как  единый
фрагмент текста (т.е. безусловные литералы не могут разбиваться
на две строки), их длина не может превышать ширину строки, ина-
че  они будут обрезаны. Чтобы вывести текст, превышающий ширину
строки, нужно разбить его на два  или  более  литералов.  Можно
также обеспечить любое требуемое смещение с помощью команды Сn.
     Литерал  не  должен содержать разделитель литерала, напри-
мер, безусловный литерал не может содержать  одинарную  кавычку
(хотя  может  содержать двойные кавычки и/или вертикальную чер-
ту).
     Условные и/или повторяющиеся литералы ассоциируются с  по-
лем  или  подполем своим размещением в формате: литералы, пред-
шествующие селектору поля (называемые  также  префикс-литерала-
ми),  будут выведены перед содержимым поля, в то время, как ли-
тералы, следующие за селектором  поля  (называемые  также  суф-
фикс-литералами), будут выведены после содержимого поля.
     Если  за  повторяющимся  префикс-литералом непосредственно
следует знак
'+' (например, |xxx|+), он будет выведен  перед  каждым,  кроме
первого, повторением поля.
     Если повторяющемуся суффикс-литералу непосредственно пред-
шествует знак
'+'  (например,  +|xxx|), он будет выведен после каждого, кроме
последнего, повторения поля.
     Повторяющиеся префикс-литералы и все суффикс-литералы фор-
матируются так, как будто они физически являются частью  содер-
жимого ассоциируемых полей и, следовательно, подчиняются коман-
дам  смещения, если они есть. Условные префикс-литералы не под-
чиняются команде смещения поля (однако, чтобы обеспечить смеще-
ние этих литералов, можно использовать команду Сn).
     Данное поле может ассоциироваться с более, чем одним лите-
ралом. В этом случае различные литералы должны подчиняться сле-
дующим правилам и порядку:

     Префикс-литералы .
     1.Один  или  более условных префикс-литералов. За условным
префикс-литералом может следовать другой условный префикс-лите-
рал, команды вертикального и горизонтального размещения, коман-
ды режима, и/или esc-команды. (см. раздел 3.3.6 " Команда пере-
хода ( Escape ) " ). Все команды между первым условным префикс-
литералом и ассоциируемым с ним селектором поля становятся  ус-
ловными  и  будут  выполнены только при наличии поля, иначе они
игнорируются.
     2.Один и только один повторяющийся  префикс-литерал.  Если
такой  литерал  есть,  он должен непосредственно предшествовать
ассоциируемому селектору поля.

     Суффикс-литералы.
     3.Один и только один повторяющийся  суффикс-литерал.  Если
такой  литерал есть, он должен следовать непосредственно за ас-
социируемым селектором поля.
     4. Один и только один условный суффикс-литерал. Если такой
литерал есть, он должен следовать непосредственно за  повторяю-
щимся суффикс-литералом,  или ассоциируемым селек-
тором поля.
     5. Суффикс-литералы не должны разделяться запятыми,  и  не
должно  быть  запятой  между селектором поля и первым суффикс -
литералом, запятая обозначает конец суффикс-литералов, ассоции-
руемых с данным селектором поля.
     Hулевые  литералы (т.е. литералы длиной ноль, такие как ""
или ||) разрешаются и могут быть  использованы,  например,  как
префикс-литералы,  для обеспечения условного вертикального раз-
мещения или как суффикс-литералы, для временного подавления  ав-
томатической пунктуации, которую CDS/ISIS обеспечивает в режиме
данных.
     Литералы  переводятся  в заглавные буквы, если расположены
после команды режима.
     Примеры различных типов литералов приведены на рисунке 15.
_________________________________________________________________________

        Формат                                 Вывод
---------------------------      ----------------------------------------
'MFN:   ',mfn(3)/                MFN:   004
mdl,"Заглавие:  "v24(0,10)       Заглавие:An  Electric  hydrometer
                                 apparatus for measuring water-vapour
                                 loss from plants in the field.
'MFN:   ',mfn(3)/mdl,            MFN:   004
"Заглавие: ",mdu,v24(0,10)       Заглавие: AN ELECTRIC HYDROMETER
                                 APPARATUS   FOR  MEASURING WATER-VAPOUR
                                 LOSS  FROM  PLANTS  IN THE FIELD.
'MFN:   ',mfn(3)/mdu,            MFN:   004
"Заглавие: ",v24(0,10)           ЗАГЛАВИЕ: AN ELECTRIC HYDROMETER
                                 APPARATUS   FOR  MEASURING WATER-VAPOUR
                                 LOSS  FROM  PLANTS  IN THE FIELD.
v70                              Grieve, B.J.Went, F.W.
v70|; |                          Grieve, B.J.; Went, F.W.;
v70+|; |                         Grieve, B.J.; Went, F.W.
|; |v70                          ; Grieve, B.J.; Went, F.W.
|; |+v70                         Grieve, B.J.; Went, F.W.
"Авторы"/v70(3,3)+|; |           Авторы
                                    Grieve, B.J.; Went, F.W.
|(|v70(3,3)|)|                   (Grieve, B.J.)(Went, F.W.)
"(by: ",v70+|; |")"              (by: Grieve, B.J.; Went, F.W.)
mdl,v26                          Paris, Unesco, 1965.
mdl,v26""                        Paris, Unesco, 1965
mdl,v26""/#v99,v30^a             Paris, Unesco, 1965. p. 247-257.
mdl,v26,""/#v44|: |,v30^a        Paris, Unesco, 1965.
                                  Methodology of plant eco-physiology:
                                   proceedings of the Montpellier
                                   Symposium: p.247-257.
  
                              Рисунок 15
________________________________________________________________________
  

3.2.5. Мнимый селектор поля

     Мнимый селектор поля реализует условный вывод литералов  в
зависимости  от наличия или отсутствия данного поля или подполя
без вывода содержимого ассоциируемого поля. Мнимый селектор по-
ля кодируется следующим образом:

                  Dt  или  Dt^x  или  Nt  или  Nt^x,

где:
     D или N- указывает, что это мнимый селектор поля. D указы-
              вает, что  все  ассоциируемые  условные  литералы
              должны  выводиться только когда поле присутствует.
              N указывает, что они должны выводиться только при
              отсутствии поля.
        t  -  метка поля, управляющего выводом литералов.
       ^x - код обычного разделителя подполя. Если он приведен,
              то это значит, что вывод литералов зависит от на-
              личия или отсутствия определенного  подполя  (от-
              метьте,  однако, что отсутствие поля говорит и об
              отсутствии подполей в этом поле).
    Мнимому селектору поля обычно предшествует по крайней  мере
один  условный префикс-литерал (который может быть нулевым), за
ним могут следовать один или более двух условных  префикс-лите-
ралов,  команды вертикального и горизонтального размещения, ко-
манды режима и/или Esc-последовательности. Мнимый селектор поля
не может иметь суффикс-литералов.
     Hесколько примеров этих команд приведены на рисунке 16.
   _____________________________________________________________

           Формат                           Вывод
 ---------------------------    -----------------------------
 "[Только по-англ.]" n76        [Только по-англ]
 "(Отс.)"n70^,v70+|; |          Grieve, B.J.; Went, F.W.
 "(Отс.)"n80,v80+|; |           (Отс.)
 "[Материалы конф.]"d44         [Материалы конф.]
 "[нет даты]"n26^c,v26^c        1965
 "[нет даты]"n27^c,v27^c        [нет даты]

                        Рисунок 16
 _____________________________________________________________

3.2.6. Выражения

     Язык форматирования позволяет вычислять  и/или  сравнивать
значения  с помощью выражений. Выражения построены так, что при
вычислении возвращают значения. Этим значением может быть стро-
ка сиволов (т.е. содержимое данного поля или литерал),  в  этом
случае  выражение называется строковым выражением; число, назы-
вается числовым выражением или им может быть значение истиннос-
ти (истина или ложь), тогда выражение называется  булевым  (или
логическим).  CDS/ISIS  также обеспечивает набор функций, кото-
рые, основываясь на аргументе,  выполняют  какие-то  функции  и
возвращают  значения.  Функции,  возвращающие число, называются
числовыми функциями; функции, возращающие строку символов,  на-
зываются  строковыми; а те, что возвращают значение истинности,
называются булевыми. Только строковые функции  могут  использо-
ваться непосредственно как команды форматирования. Числовые вы-
ражения могут использоваться в булевых выражениях или как аргу-
менты  функций. Булевы выражения и булевы функции могут исполь-
зоваться только в контексте IF команды.

3.2.6.1. Числовые выражения

   Числовые выражения формируются из операндов,  которые  имеют
числовое значение, и операторов, определяющих какие должны быть
произведены вычисления.
   В числовых выражениях можно использовать следующие операнды:
     числовые   константы : такие как 5, 18, 98,65;
числовые  константы могут быть представлены в виде целых чисел,
десятичных или в экспоненциальной нормальной  форме,  например,
1.5Е5  (т.е.  значение  1,5 умножить на 10 в 5-ой степени, т.е.
150000);
     числовыеяфунции: такие как     val(v10)
     (функции описаны в главе "Числовые функции");
      MFN : значение MFN записи;
     числовые выражения: когда выражение используется как опе-
ранд,  оно должно  быть  заключено  в  скобки,  например,
(val(v20)-5).
     Допустимые операторы:
     +  сложение (или унарная +);
     -  вычитание (или унарная -);
     *  умножение;
     /  деление.
     Как и в обычной алгебре при отсутствии скобок унарные опе-
рации выполняются первыми, а умножение и деление выполняются до
сложения  и вычитания. Два и более операторов одного уровня вы-
полняются слева направо.Можно использовать скобки для изменения
порядка вычисления: выражения, заключенные в скобки, выполняют-
ся первыми, и выражения большей глубины вложенности вычисляются
перед выражениями меньшей глубины вложенности скобок.
     Отметьте, что поскольку селекторы поля (т.е.v10 или v10^a)
представляют строки текста, они  не  могут  использоваться  как
операнды в числовых выражениях. Однако, может быть использована
функция  VAL для конвертирования содержимого поля или подполя в
числовое значение.
     Также числовое выражение не может выводиться на  экран,  а
должно  сначала  конвертироваться в символьную строку с помощью
функции F.
     Нами приведены примеры числовых выражений (предполагается,
что MFN=10, v1^a=10, v1^b=20 и v2=30):

            Выражение                        Значение
  -------------------------------           ----------
  0.155е+3                                155
  1е-3                                      0.001
  2*3+9                                    15
  2*(3+9)                                  24
  10-(4*(2-1))                              6
  15*0.001                                  0.015
  mfn+100                                 110
  val(v2)+val(v1^a)*7.5                   105
  (val(v1^a)-val(v1^b))/100                -0.1

     CDS/ISIS версии IBM PC конвертирует все числа,  используе-
мые  в  вычислениях  с плавающей точкой одинарной точности. Это
обеспечивает точность - примерно 7 цифр с максимальным значени-
ем 1.701411Е38. В версии VAX  используются  числа  с  плавающей
точкой двойной точности, что обеспечивает точность
 - 15 цифр.

3.2.6.2.Cтроковые выражения

     Строковые  выражения формируются из операндов, которые яв-
ляются строками символов. Поскольку  CDS/ISIS  не  обеспечивает
явных  строковых операторов, строковое выражение всегда состоит
из одного операнда, которым может быть:
     безусловный литераля: такой например, как некоторый текст
     селектор поляя: который  может  включать  команду  смеще-
ние/длина (т.е. v26^c*2.2);
     ястроковая  функцияя:  такая, например, как S(v24,v25,v26)
(описанная в разделе 3.3.2. " Строковые функции " ).

3.2.6.3. Булевые выражения

     Булевые выражения используются для определения  истинности
или  ложности множества из одного или более условий, и вычисле-
ния значения истинности.  Операциями  булевых  выражений  могут
быть:
    выражения отношенияя: сравнивают два значения и определяют,
предшествует ли данное отношение (см.ниже), например, mfn<10;
    булевые функциия: такая, например, как Р(v24), которая воз-
вращает значение истины (см. раздел 3.3.3 " Булевые функции "
).
     Выражение  отношения позволяет определять верно ли опреде-
ленное отношение между двумя значениями. Общая форма  выражения
отношения:
               выражение-1  оператор-отношения  выражение-2
где:
     выражение-1         - числовое или строковое выражение;
     оператор-отношения  - может быть одним из:
                           =  равно
                           ()  неравно
                           (  меньше
                           (=  меньше или равно
                           )  больше
                           )=  больше или равно
                           :  содержит (используется только для
                              строковых выражений)
     выражение-2 - выражение того же типа, что  и  выражение-1,
                           т.е. выражение-1 и выражение-2 долж-
                           ны  быть  либо  числовыми,  либо оба
                           строковыми.
     Операторы отношения = () ( (= ) )= имеют свое обычное зна-
чение, когда применяются к числовым выражениям (в рамках  огра-
ничений  точности  числовых  значений,  определенных  в разделе
3.2.6.1 "Числовые выражения" ). Когда  сравниваются  строковые
выражения, применяются следующие правила:
     1.  кроме оператора :"содержит" строки сравниваются в точ-
ности в том виде, в каком они есть, т.е. большие и малые  буквы
сравниваются по своим ASCII кодам (т.е. А будет меньше а);
     2.  два строковых выражения не считаются равными, несмотря
на то, что имеют равную длину. Если два выражения,  представляю-
щие  строки  равной  длины,  таковы,  что символ в символ равны
вплоть до последнего символа более короткого выражения, то  это
более короткое выражение считается меньше, чем более длинное.
     Оператор  :"содержит"  ищет  строку символов (определенную
выражением-2) в другой строке (определенную выражением-1). Если
второй операнд оказывается где-либо в первом операнде,  резуль-
татом  будет  истина. Этот оператор считает малые буквы равными
соответствующим большим буквам. Например,  результатом  выраже-
ния:
                            v10 : `химик`

будет  Истина только в том случае, если поле 10 содержит строку
химик, в противном случае будет Ложь. Отметьте, что вторым опе-
рандом может быть произвольная строка символов, которая не обя-
зательно является действительным словом. Так, в приведенном вы-
ше примере, результат будет истина не только когда поле 10  со-
держит  слово  " химик ", но и когда поле содержит такие слова,
как " биохимик ", " фотохимик " и др.
     Операнды  булевых  выражений  могут объединяться с помощью
следующих булевых операторов:
     NOT этот оператор дает значение Истина, когда операнд име-
          ет значение Ложь, и значение Ложь,  когда  операнд  -
          Истина.  Оператор NOT может использоваться только как
          унарный, т.е. он всегда применяется к булевому  выра-
          жению, следующему за ним;
     AND этот оператор дает значение Истина, когда оба операнда
          истинны.  Если  хотя бы один из операндов - Ложь, ре-
          зультатом является Ложь;
     OR этот оператор выполняет включающую OR операцию. Резуль-
          татом является Истина, когда один  или  оба  операнда
          истинны,  в  противном  случае  результатом  является
          Ложь.
     При вычислении булевых выражений, при  отсутствии  скобок,
CDS/ISIS  сначала  выполняет  NOT операцию, затем AND операциии
перед OR операциями.Набор из двух  и  более  операторов  одного
уровня  обрабатывается слева направо. Можно использовать скобки
для изменения  порядка  вычисления:  выражения,  заключенные  в
скобки выполняются первыми, при наличии вложенных скобок первы-
ми выполняются выражения, заключенные во внутренние скобки.
     Примеры булевых выражений даны на рис.17.
     ________________________________________________________
                  Выражение                    Значение
     ---------------------------------    -------------------
     mfn=4                                    Истина
     not mfn=4                                Ложь
     not (not mfn=4)                          Истина
     v24 = 'plants`                           Ложь
     v24 : 'plants`                           Истина
     v24 : 'PLANTS`                           Истина
     v44.6 = 'METHOD`                         Ложь
     v44.6 = 'Мethod`                         Истина
     v24 : 'plants` AND v44 : 'method`        Истина

                     Рисунок 17
     _______________________________________________________

3.3. Функции

     Функция вычисляет значение (называемое  значением  функции
или  возращаемым значением), которое затем подставляется вместо
функции при вычислении выражения.
     Функции могут иметь один  или  более  аргументов,  которые
должен определить пользователь; значения аргументов используют-
ся в вычислении значения функции. Так, значение функции зависит
от  значения  определенных  аргументов. Аргументы заключаются в
скобки и разделяются запятыми.
     Аргументы могут быть трех типов:
     формат  : формат CDS/ISIS, который может содержать любую
разрешенную команду форматирования; исключение составляет функ-
ция REF (см. раздел 3.3.2.2 "REF (выражение, формат)"), в кото-
рой  формат  используется  как  аргумент,  т.е.  результирующий
текст, полученный при обработке этого формата и переданный фун-
кции, а не формат сам по себе.
     числовое  выражение  : когда числовое выражение является
аргументом, оно вычисляется первым, и его  значение  передается
функции.
     селектор поля : селектором поля в качестве аргумента мо-
жет  быть как команда поля, так и подполя, которая не может со-
держать команду смещение/ длина.
     Ниже описыватся допустимые функции  и  соответствующие  им
аргументы; функции классифицированы в соответствии с типом зна-
чения, которое они возвращают.

3. 3.1.Числовые функции.

3.3.1.1. VAL (формат)

     Функция VAL возвращает числовое значение своего аргумента.
Аргумент  формат - это формат CDS/ISIS, который может содержать
любую возможную команду форматирования.  CDS/ISIS  обрабатывает
аргумент, чтобы получить строку текста. Затем эта строка скани-
руется слева направо до тех пор, пока не найдется числовое зна-
чение  (которое  может  быть в экспоненциальном представлении).
Функция VAL возвращает это числовое значение,  переведенное  во
внутреннее  машинное  представление, удобное для выполнения вы-
числений. Если не найдено никаких числовых значений,  возвраща-
ется  значение ноль. Если текст содержит более, чем одно число-
вое значение, возвращается только первое.  Например  (предпола-
гая, что v1^a=10, v1^b=20,  v2=30):
               Формат                 Значение
     -------------------------     --------------
     VAL ('15.79`)                    15.79
     VAL (v1)                         10
     VAL (v1^a)                       10
     VAL (v2)                         30
     VAL ("19" v1^b)                1920
     VAL ('xxxx7yyy8zzzz`)             7
     VAL ('abs.5.8t-4ml`)              0.00058
     VAL ('вода`)                      0
     Val ('Июль-Август 1985`)          0

     В  последнем  примере  значение  0  (а  не  1985), так как
CDS/ISIS рассматривает минус между Июль и Август как начало от-
рицательного числового значения, а А от Август как  его  конец,
поэтому  выбранное значение получается просто '-` и результатом
является 0. Поэтому важно более четко определить правила  ввода
данных для тех полей или подполей, которые будут использоваться
для численных вычислений.

3.3.1.2. RSUM (формат)

     Функция RSUM возвращает сумму одного  или  более  числовых
значений.  Текст, продуцированный аргументом, сканируется слева
направо, как в функции VAL, и все выбранные  числовые  значения
складываются.  Полученная сумма является значением функции. От-
дельные значения должны быть разделены одним или более нечисло-
выми символами, и это забота пользователя внести эти разделите-
ли через формат, являющийся аргументом. RSUM может ипользовать-
ся для вычисления суммы всех числовых значений, содержащихся во
всех повторениях данного повторяющегося поля. Например (предпо-
лагая, что поле 1 имеет четыре повторения, содержащих 1,2,3,  и
4):

         Формат                    Значение
     -----------------------     -----------
     rsum ('10,20,30`)              60
     rsum (v1|;|)                   10
     rsum (v1|,|,'48,3.5`)          61.5

3.3.1.3. RMIN (формат)

     Функция RMIN возвращает минимальное значение из одного или
нескольких  числовых  значений. Текст, продуцированный аргумен-
том, сканируется слева направо, как для VAL функции, и извлека-
ются все чис ловые значения . Алгебраически самое малое из этих
значений - значение функции.  Отдельные  значения  должны  быть
разделены  одним  или более нечисловыми символами, и это забота
пользователя внести эти символы через формат, данный в аргумен-
те. RMIN может использоваться для  вычисления  минимального  из
числовых значений, содержащихся во всех повторениях повторяюще-
гося  поля. Например (предполагая, что поле 1 имеет четыре пов-
торения, содержащих 10, 20, 30 и 40):

            Формат               Значение
     --------------------       -----------
     rmin ('1,2,-3`)               -3
     rmin (v1|;|)                  10
     rmin (v1|,|,'48,3.5')          3.5

3.3.1.4. RMAX (format)

     Функция RMAX возвращает максимальное  значение  из  одного
или нескольких числовых значений. Текст, продуцируемый аргумен-
том, сканируется слева направо, как для VAL функции, и все чис-
ловые  значения  извлекаются.  Алгебраически наибольшее из этих
значений - значение функции.  Отдельные  значения  должны  быть
разделены  одним  или более нечисловыми символами, и это забота
пользователя внести эти символы через формат, данный в аргумен-
те. RMAX может использоваться для вычисления  максимального  из
числовых значений, содержащихся во всех повторениях повторяюще-
гося поля. Например , поле 1 имеет четыре пов торения, содержа-
щих 10, 20, 30 и 40:

             Формат                 Значение
     -----------------------        --------
     rmax ('1, 2, -3`)                     2
     rmax (v1|;|)                         40
     rmax (v1|,|,'48,3.5`)                48

3.3.1.5. RAVR (формат)

     Функция RAVR возвращает среднее значение (в арифметическом
смысле) из одного или нескольких числовых значений. Текст, про-
дуцируемый аргументом, сканируется слева направо, как для функ-
ции VAL, и извлекаются все числовые значения. Затем вычисляется
среднее  значение - значение функции. Отдельные значения должны
быть разделены одним или несколькими нечисловыми  символами,  и
это забота пользователя - внести эти символы через формат, дан-
ный в аргументе. RAVR может использоваться для вычисления сред-
него  из  числовых  значений,  содержащихся во всех повторениях
данного повторяющегося поля. Например ,  поле  1  имеет  четыре
повторения, содержащих 10,20,30 и 40:

              Формат               Значение
     ------------------------     ---------
     ravr ('1, 2, -3`)               0
     ravr (v1|;|)                   25
     ravr (v1|,|,'48,3.5`)          25.25

3.3.1.6. L (формат)

     Функция  L  использует  текст, продуцируемый форматом, как
поисковый термин для инвертированного файла  и  возвращает  MFN
первой  ссылки (если она есть). Перед поиском в инвертированном
файле термин автоматически переводится в  большие  буквы.  Если
термин  не  найден,  значением функции является ноль. Функция L
обычно используется вместе с REF функцией (см.  раздел  3.3.2.2
"REF  (выражение, формат)", где приведены примеры использования
функции L).
     Отметьте,  что при обработке аргумента - формата использу-
ется текущий режим вывода данных (см. раздел 3.2.2.  "Командный
режим  ").  Это важно, поскольку в результате использования не-
верного режима можно не найти термин в  инвертированном  файле.
Как  правило, следует использовать тот же режим, который приме-
няется в ТВП инвертированного файла.

3.3.2. Строковые функции.

     Строковые функции могут использоваться как операнды  стро-
ковых выражений и как команды форматирования. Когда они исполь-
зуются как команды, значение функции будет форматироваться так,
как если бы оно было полем записи.

3.3.2.1. F (выраж-1, выраж-2, выраж-3)

     Функция F преобразует числовое значение из его внутреннего
представления с плавающей точкой в символьную строку.  Все  три
аргумента  - числовые выражения. Первый аргумент, выраж-1, чис-
ло, которое должно конвертироваться. Второй аргумент,  выраж-2,
-  минимальная  ширина  выходной строки; и третий аргумент, вы-
раж-3 - количество десятичных позиций. Второй и третий аргумен-
ты необязательны. Отметим, однако, что  если  присутствует  вы-
раж-3, то выраж-2 не может быть опущено. Выраж-2 определяет ми-
нимальную ширину, т.е. значением функции будет символьная стро-
ка  длиной  как минимум выраж-2 символов, и если конвертируемое
числовое значение требует выраж-2 символов или меньше, оно  бу-
дет  выровнено по правой границе внутри этой ширины. Если коли-
чество символов, требуемое для представления значения  выраж-1,
больше данной ширины, CDS/ISIS использует добавочные позиции. В
этом  случае  выходная строка будет длиннее, чем выраж-2 симво-
лов.
     Выраж-3 определяет количество десятичных позиций, если оно
опущено, результат будет в научном экспоненциальном представле-
нии, и, если также опущено выраж-2, то по умолчанию использует-
ся 16 символов. Если аргументы присутствуют, результатом  будет
округленное  представление с фиксированной точкой выраж-1 с вы-
раж-3 цифрами после запятой. Если выраж-3 равно  нулю,  то  вы-
раж-1  округляется до ближайшего целого числа и на выходе будет
целое число без десятичных знаков.
     При преобразовании целых чисел и чисел с десятичными  зна-
ками,  в  том  случае,  когда целая часть числа слишком длинная
чтобы быть представленной, выходная  строка  заменяется  серией
звездочек (*).
     Функция F может быть использована для выравнивания колонки
чисел по десятичной запятой путем выбора подходящей ширины.

     Ниже приведены примеры функции F:

          Формат                   Значения
     -------------------     ----------------------
     f (1)                    1.000000000E+00
     f (1,10)                 1.000E+00
     f (-1,10,2)                  -1.00
     f (1,5,2)                1.00
     f (1,8,2)                   1.00
     f (mfn,1,0)             4
     f (mfn,2,0)              4
     f (mfn,3,0)               4

3.3.2.2. REF (выражение, формат)

     Функция REF позволяет извлечь данные из альтернативной за-
писи файла документов. Первый аргумент - это  числовое  выраже-
ние, дающее MFN альтернативной записи, которая должна быть выб-
рана,  а второй аргумент - это формат, который должет быть при-
менен к этой записи. Если значение выражения  не  соответствует
MFN  существующей записи базы данных, то функция REF даст нуле-
вую строку (т.е. ничего не будет выведено). Процесс,  выполняе-
мый  функцией  REF  представлен на рис. 18, где предполагается,
что текущая форматируемая запись - запись 1.

  ________________________________________________________________________
                                                                               
  +----MFN 1----------------------------------+
  I метка     содержание                      I
  I ------    -----------                     I
  I   1       Institute for social welfare    I
  I   2       5, Delaware Street              I
  I   3       Kensington                      I
  I   4       98                              I
  +-----------I-------------------------------+
              I
              +---поле 4 объединяет эти записи ---+
                                                  I
                                                  I
                                     +-----MFN   98--------------------------+
  +-----Прочитанная запись 98 ------)I  метка     содержание                 I
  I                                  I  -------   -------------              I
  I                                  I    10      UК                         I
  I                   +-----------------) 11      United Kingdom----------+  I
  I                   I              I    12      Royame Uni              I  I
  I                   I              +------------------------------------I--+
  I                   I                                                   I
  I                   I                                                   I
val(v4)=98            I                                                   I
  I                   +--V11 ссылается на запись 98--+                    I
  I                                                  I                    I
  I                                                  I                    I
  +----функция REF использует связку в поле 4--+     I                    I
                                               I     I                    I
                                               I     I                    I
                   Формат: mpl, v1/v2/v3/ref(val(v4),v11)                 I
                                                                          I
                   Вывод:  Institute for social welfare                   I
                           5, Delaware Street                             I
                           Kensington                                     I
                           United Kingdom <-------------------------------+
                                                                               
                   Формат: mpl,v1/v2/v3/ref(val(v4),v12)
                                                                               
                   Вывод:  Institute for social welfare
                           5, Delaware Street
                           Kensington
                           Royaume Uni
                                                                               
                   Формат: ref(val(v40,v10)
                                                                               
                   Вывод:  UK
                                                                               
                                                                               
                            Рисунок 18
  ________________________________________________________________________
                           
      Как  видно из рисунка, функция REF - очень мощное средст-
во,поскольку позволяет объединить данные,  которые  хранятся  в
различных  записях  базы данных и заставляет их появиться перед
пользователем как будто хранящиеся в одной записи. В этом  пер-
вом  примере  записи  1 и 98 связываются спецификацией в поле 4
связанной записи 1 MFN , которая содержит  названия  страны  на
английском и французском языках, через формат можно извлечь лю-
бой из языков, определением релевантной метки связанной записи.
     В  некоторых  случаях  связывание  записей через MFN может
быть неудобным с точки зрения ввода данных.Кроме того, что  лю-
бая  ошибка  в MFN связанной записи даст вывод неверных данных,
может потребоваться много времени для  определения  правильного
MFN,  который  надо  использовать.  В  случае,  изображенном на
рис.18, например, может оказаться, что исходный документ, с ко-
торого вводятся данные, уже содержит нормализованный код страны
("UK" в нашем случае). Для использования MFN, как связки с  за-
писью страны может потребоваться разьяснительный список или вы-
яснение  в  базе данных, что MFN записи, соответствующей 'UK` -
98: было бы значительно проще ввести сразу "UK", а не  98.  Это
возможно,  и  можно  получить такой же вывод, какой приведен на
рис.18, организацией базы  данных  таким  образом,  чтобы  было
удобно использовать функцию L (см. раздел 3.3.1.6 "L(формат)").
     Функция  L находит MFN соответствующий поисковому термину.
Т.е. эту функцию можно использовать для преобразования символь-
ной строки (такой как "UK" ) в MFN. Чтобы можно было  использо-
вать  функцию L, нужно установить уникальное соответствие между
символьной строкой и соответствующим  ей  MFN.  Инвертированный
файл  обеспечивает такой механизм (см. раздел 1.3.3 "Инвертиро-
ванный файл"). В нашем примере, было  бы  удобно  инвертировать
поле 10 записей 'страна` для установления уникального соответс-
твия между кодом страны и соответствующим MFN (отметим, что по-
нятие  уникальности  важно,  т.к.  функция  L предполагает, что
ключ, который она ищет, имеет одну и только одну ссылку. И  это
забота  пользователя обеспечить уникальность этого соответствия
использованием, если необходимо, префикса  поискового  термина,
как  указано  в разделе 3.4.2 "ТВП для инвертированного файла".
Рисунок 19 иллюстрирует этот метод.
     CDS/ISIS не рассматривает природу соответствия между двумя
записями. Она просто обеспечивает механизм связывания  записей.
При  практическом  применении  пользователь  обычно  определяет
смысл отношения через соответствующее применение языка формати-
рования и специальное физическое  проектирование  базы  данных.
Например, библиографическая запись должна быть связана с исход-
ной  и  последующей  записями, чтобы отразить различную природу
этих сообщений. Отметим, что поскольку вторым аргументом  функ-
ции  REF является формат, эту функцию можно использовать рекур-
сивно для установления иерархических соотношений более высокого
порядка, таких, например, какие требуются в тезаурусах.
     Функция REF может использоваться в формате сколько  угодно
раз,  не  превышая,  однако, выходные ограничения (т.е. размеры
рабочей области). Она ограничена 8000  символами.  Отметим,  что
это ограничение выполнения,а не языка форматирования.
  ________________________________________________________________________

  +---MFN 1----------------------------------  ТВП инвертированного файла
  I  Метка  Содержание                      I    -------------------------
  I ------  --------------------------------I    .
  I    1    Institute for social welfare    I    .
  I    2    5,Delaware Street               I    .
  I    3    Kensington                      I    10  0  "CC="v10
  I    4    UК                              I    .
  +----------I------------------------------+    .
             I                                   .
             I
  Поле 4 обеспечивает логическую связь между записями 4 и 98
             I
  +----------------------+   +----------------+
  I Инвертированный файл I   I                I
  I--------------------- I   I    +-------MFN 98---------------------+
  I                      I   I    IМетка     Содержание              I
  I  СС = ОК 98--------------+    I------   -------------------------I
  I                      I        I  10      UК                      I
  +----------------------+  +--------11      United Kingdom -------------+
            I               I     I  12      United Kingdom          I   I
            I               I     +----------------------------------+   I
            I               I                                            I
            I               +--v11 ссылается на запись 98-----+          I
            I                                                 I          I
            +------функция L ищет 'CC=OK`--------------+      I          I
                                                       I      I          I
                                                       I      I          I
                         Формат: mpl, v1/v2/v3/ref(l("CC="v4),v11)       I
                                                                         I
                         Вывод:  Institute for social welfare            I
                                 5, Delaware Street                      I
                                 Kensington                              I
                                 United Kingdom <------------------------+

                         Формат: mpl, v1/v1/v3/ref(l("CC="v4),v12)

                         Вывод:  Institute for social welfare
                                 5, Delaware Street
                                 Kensington
                                 Royaume Uni

                            Рисунок 19
   _______________________________________________________________________

3.3.2.3. S (формат)

     Функция  S  возвращает текст, полученный из аргумента. Как
упоминалось ранее, CDS/ISIS не обеспечивает явных операций  для
строковых  выражений. Функция S может быть использована для вы-
полнения строковой конкатенации. Это особенно удобно в  булевых
выражениях,  где  гораздо эффективнее использовать такое импли-
цитное OR по сравнению с эксплицитным оператором OR.  Например,
следующие булевы выражения:

                S(mdl,v10,v20,v30):'water`
                v10: 'water` OR v20: 'water` OR v30: 'water`

     эквивалентны  (они  оба  истинны,  если хоть одно из полей
10,20 или 30 содержит строку 'water`), но первое будет выполне-
но гораздо быстрее второго.

3.3.2.4. Пользовательские точки подключения в формате

     В формате можно вызвать программы, написанные  на  Паскале
CDS/ISIS  и  предназначенные для выполнения специальных функций
по форматированию, требуемых в частных применениях, которые  не
могут быть решены с помощью языка форматирования. Эти программы
называются  пользовательскими  точками  подключения  в формате.
Поскольку пользовательские точки разработаны для удовлетворения
специфических нужд, их описание не входит в описание языка фор-
матирования. CDS/ISIS обеспечивает, однако, нормализованный ин-
терфейс пользовательских точек подключения с языком  форматиро-
вания.
     С точки зрения языка форматирования пользовательские точки
подключения  являются  строковыми функциями с аргументом - фор-
мат. Сначала обрабатывается аргумент и его результат передается
функции. Пользовательские точки подключения возвращают символь-
ную строку, с которой CDS/ISIS работает как с полем записи, ко-
торое нужно форматировать.
     С точки зрения Паскаля, CDS/ISIS является пользовательской
точкой подключения , объявленной с атрибутом [FORMAT] (см.  ру-
ководство по Паскалю CDS/ISIS для уточнения подробностей интер-
фейса).
     Перед  внесением пользовательской точки подключения в фор-
мат, соответствующая этой точке программа должна  быть  успешно
откомпилирована.
     Пользовательская  точка  подключения  включается  в формат
следующим образом:
     
              & имя (формат)
     
где:
     & - идентифицирует пользовательскую точку подключения;
     имя - имя программы на Паскале  CDS/ISIS,  которая  должна
           быть выполнена;
     формат - аргумент.
     
     Команда  смещения (см. раздел 3.2.1.4 "Команда смещения" )
может  употребляться  с  пользовательской  точкой  подключения.
CDS/ISIS применяет ее к выходной строке. На рисунке 20 приведен
пример  пользовательской  точки  подключения в формате, которая
просто возвращает аргумент, как значение функции.
   ______________________________________________________________________

    ----------Пользовательская точка подключения------------------------
    I                                                                  I
    I  Program SAMPLE(arg:string; lw, oce:real; str:string) [FORMAT]   I
    I  begin                                                           I
    I  str := arg;                                                     I
    I  end.                                                            I
    --------------------------------------------------------------------

            Формат                          Вывод
    ------------------------  -------------------------------------------
    &sample('xxx`)            xxx
    &sample(v26^a)            Paris
    &sample(mhl,v24)          An Electric hydrometer apparatus for
                              measuring water-vapour loss from plants
                              in the field
    &sample(mhn,v24)(0,5)     AN ELECTRIC HYDROMETER APPARATUS FOR
                                   MEASURING WATER-VAPOUR LOSS FROM
                                   PLANTS IN THE FIELD


                              Рисунок 20
   ________________________________________________________________________

3.3.3. Булевы функции.

3.3.3.1. Р (селектор поля)

     Функция Р возвращает значение Истина,  если  форматируемая
запись содержит по крайней мере одно повторение поля или подпо-
ля, указанного в аргументе. Например:

         Формат          Значение
     -------------   -----------------
        Р(v24)           Истина
        P(v26^d)         Ложь
        P(v80)           Ложь

3.3.3.2. А (селектор поля)

                   
     Функция  А  возвращает значение Истина, если форматируемая
запись не содержит ни одного повторения поля или подполя,  дан-
ного в аргументе.
     Отметьте, что из-за  отсутствия  поля  следует  отсутствие
всех  подполей. Таким образом, если селектор поля специфицирует
подполе, функция А возвращает значение Истина, если  поле  при-
сутствует,  а отсутствует только указанное подполе или отсутст-
вует все поле. Например:

        формат           значение
     --------------   --------------
      a(v24)             Ложь
      a(v24^s)           Истина
      a(v26^d)           Истина
      a(v80)             Истина

3.3.4. Команда IF

     Команда IF позволяет составлять контекстно-смысловые  фор-
маты,  т.е.  форматы, способные варьировать вывод в зависимости
от содержимого форматируемой записи.
     Команда IF кодируется следующим образом:
           
            IF  условие  THEN  формат-1  ELSE  формат-2  FI

где:
     условие - булево выражение, определенное в разделе 3.2.6.3
     "Булевы выражения":
                  
     формат-1     формат CDS/ISIS, который обрабатывается только  и
                  только  в  том  случае, если значением булева
                  выражения является Истина;
     формат-2     формат CDS/ISIS, который обрабатывается только  и
                  только  в том случае, если значением булевого
                  выражения является ложь.

     Предложение яELSE формат-2я необязятельно,  и  может  быть
опущено.  Ключевые слова IF, THEN и FI обязательны всегда, хотя
формат-1 может быть опущен, если присутствует предложение  ELSE
(т.е.  если условие истинно, то ничего не будет выведено). Сле-
довательно команда IF может принимать одну из следующих альтер-
нативных форм:
                                 
                IF  условие  THEN  формат-1  FI
                IF  условие  THEN  ELSE формат-2  FI
                                               
     Поскольку нет никаких ограничений на команды, которые мож-
но употреблять в формате-1 и формате-2, IF команды  могут  быть
вложены  на  любую желаемую глубину. Ключевое слово FI, в таком
случае, должно закрывать каждую IF команду (можно рассматривать
IF и FI как пару скобок). Например:

if  p(v1)  then  v24  else  if  p(v2)  and  a(v3)  then  v5  fi  fi
I                           I                                I   I
I                           I                                I   I
I                           +--------------------------------+   I
+----------------------------------------------------------------+

     Команда IF особенно полезна для создания обобщенных форма-
тов в интегрированных базах данных, которые содержат  различные
типы записей. В этом случае обычно надо иметь различающие метки
для  каждого  типа  записей  (обычно есть поле, содержащее код,
идентифицирующий тип записей). Так, проверяя тип записи  с  по-
мощью  IF  команды, можно создать в одном формате специфическое
форматирование каждого типа записей. Подробный пример для  базы
данных, содержащей записи институтов и исследователей, приведен
на рисунке 21.

 __________________________________________________________________________

   +-----MFN 1-----------------------+  +--------MFN 2--------------------+
   I  Метка    Содержание            I  I  Метка        Содержание        I
   I--------  ----------------       I  I -------  --------------------   I
   I   1       INST                  I  I    1     PERS                   I
   I  11       Institute for peace   I  I   21     ^aBrown^bJohn^ccMr.    I
   I           research              I  I    22    45-11-23               I
   I  12       12, Moon Street       I  I    23    Chemistry Physics      I
   I  13       Arlington, VA         I  I    24    1                      I
   I  14       USA                   I  I                                 I
   +---------------------------------+  +---------------------------------+

   Формат:  v1, '-', f(mfn,1,0)/mdl,
            if v1 = 'INST` then v11/v12(4,4)/v13(4,4)/v14(4,4)/
            else v21^c " ",v21^b " ",v21^a" "/"Date of birth: "
            v22*6.2,'.`,v22*3.2,'.19`,v22.2/
            "Fields of interest: ", v23/"Employer: "/d24,
            ref (val(v24),v11(4,4)/v12(8,8)/v13(8,8)/v14(8,8)/)fi

   Вывод (при форматировании записи 1):
            INST-1
            Institute for peace research
                12, Moon Street
                Arlington, VA
                USA

   Вывод (при форматировании записи 2):
            PERS-2
            Mr. John Brown
            Date of birth: 23.11.1945
            Fields of interest: Chemistry; Physics
            Employer:
                Institute for peace research
                    12, Moon Street
                    Arlington
                    USA

                               Рисунок 21
  _________________________________________________________________________

3.3.5. Повторяющиеся группы.

     Повторяющаяся группа состоит из набора команд форматирова-
ния, заключенных в скобки. Смысл этих команд обычный, за исклю-
чением  того, что с повторяющимися полями обращаются особым об-
разом.
     Чтобы понять концепцию повторяющейся группы, надо  узнать,
как CDS/ISIS обращается с повторяющимися полями. Если нет ника-
ких указаний, CDS/ISIS рассматривает все повторения повторяюще-
гося  поля  (в  порядке, в котором они были введены) как единую
строку текста.
     Повторяющаяся группа изменяет порядок обращения CDS/ISIS с
повторениями повторяющегося поля путем обработки одного  повто-
рения, а не всех повторений вместе. Этот процесс наглядно пред-
ставлен на рисунке 22.
     Когда  CDS/ISIS обнаруживает скобку, открывающую повторяю-
щуюся группу, происходит следующее:
     1. Счетчик повторений устанавливается в 1.
     2. Обрабатывается формат, заключенный в скобки, таким  об-
разом, что все селекторы полей внутри группы выдают только пов-
торения полей, соответствующие текущему счетчику повторений.
     3.  Если  никакого вывода не было произведено (т.е. больше
нет повторений ни в одном из повторяющихся полей группы), обра-
ботка повторяющейся группы  прекращается.  В  противном  случае
счетчик повторений увеличивается на 1 и шаги 2 и 3 повторяются.

  ________________________________________________________________________

                  яБез использования повторяющейся группы

          +---------+ повторения для каждого повторения поля
          I         I
          I         I
          I         I
  ---------)  v70   +------------------продолжение обработки формата
        I             I                после последнего повторения
        I             I
        +------+------+
               I
               I
    повторяющиеся литералы, если они есть,
    обрабатываются для каждого повторения


                    С использованием повторяющейся группы
 
   +----повторение для каждого повторения поля---+
   I                                             I
   I                                             I
   (...................v70.......................)-----)продолжение обра-
                                                        ботки формата после
                                                        последнего повто-
                                                        рения

                            
                            Рисунок 22
  _________________________________________________________________________


     Отметим,  что  все команды форматирования внутри повторяю-
щейся группы обрабатывают одно повторение в каждый момент  вре-
мени  (как  объяснялось выше), включая, следовательно, поля, на
которые ссылаются из команды IF, выражений и функций,  а  также
из строковых функций, используемых как команды.
     Из  приведенных  выше  объяснений следует, что безусловные
литералы нельзя использовать в повторяющейся  группе  (если  вы
все же будете их использовать, то эти литералы будут распечата-
ны на один раз больше, чем нужно).
     В  большинстве случаев использование простых команд форма-
тирования, таких как команда режима или повторяющиеся литералы,
удобно для адекватного обращения с повторяющимися  полями,  как
показано ниже:

         Формат              Вывод
    ---------------  ----------------------
       mpl,v70      Grieve, B.J.Went, F.W.
       mdl,v70      Grieve, B.J.  Went, F.W.
       v70+|; |     Grieve, B.J.; Went, F.W.

     Однако, есть случаи, когда нужно отформатировать повторяю-
щиеся  поля другим путем. Часто нужно, например, вывести каждое
повторение на новой строке, что может быть сделано только с по-
мощью повторяющейся группы:

         Формат             Вывод
    ---------------  ---------------------
      v70/v26^a      Grieve, B.J.Went, F.W.
                     Paris
      (v70/),v26^a   Grieve, B.J.
                     Went, F.W.
                     Paris

     В первом случае команда перехода на новую строку  (/)  вы-
полнена  япосле  форматирования явсехя повторений поля 70, а во
втором случае она выполнена после якаждогояповторения поля.
     Пример на рис.23 иллюстрирует обращение  с  повторяющимися
полями,  содержащими подполя (предполагается, что запись содер-
жит два повторения поля 20, как  указано).  Здесь  употребление
повторяющейся  группы помогает правильно вывести различные под-
поля якаждогояповторения повторяющегося поля в виде таблицы.
  ________________________________________________________________________
  
   Содержание поля:

   20 ^aNew York^bMcGraw Hill^c1988
   20 ^aLondon^bAcademic Press^c1975

   Формат: /(v20^a,c11,v20^b,c30,v20^c/)
   Вывод:  New York  McGraw Hill         1988
           London    Academic Press      1975

   Формат: /v20^a,c11,v20^b,c30,v20^c/
   Вывод:  New YorkLondon
                     McGraw HillAcademic Press
                                        19881975

                               Рисунок 23
  ________________________________________________________________________

     Если нужно вывести литерал перед  данными,  продуцируемыми
повторяющейся  группой,  можно использовать безусловный или ус-
ловный литерал. Отметим, однако, что  условный  литерал  должен
ассоциироваться  с селектором поля (повторяющаяся группа не яв-
ляется селектором поля); для этой цели удобно использовать мни-
мый селектор поля (см.рисунок 24).
     Для следующего примера  повторяющегося  поля  предположим,
что в записи личного дела поле 10 содержит предыдущие места ра-
боты  человека, а поле 20 содержиит должности, которые он ранее
занимал. В такой записи оба поля 10 и 20 будут  повторяющимися,
поскольку  человек  может сменить не одно место работы. Это тот
случай, когда существует  логическая  взаимосвязь  между  двумя
повторяющимися полями. Рисунок 24 показывает использование пов-
торяющейся группы для вывода этих двух полей (а также иллюстри-
рует употребление мнимого селектора поля).
   ______________________________________________________________________

   Содержание записи

   10 Bedford and Associates
   20 Junior programmer
   10 Van Allen Inc.
   20 Systems programmer
   10 Michigan University
   20 Lecturer in Computer Sciences

   Формат: "EMPLOYMENT HISTORY"/#d10,(v10(4,4)/v20(8,8)/#

   Вывод:  EMPLOYMENT HISTORY
         
               Bedford and Associates
                   Junior programmer
        
               Van Allen Inc.
                   Systems programmer

               Michigan University
                   Lecturer in Computer Sciences


   Формат: "EMPLOYMENT HISTORY"/d10,(c4,v10|: |,c3,v20/)

   Вывод:  EMPLOYMENT HISTORY
               Bedford and Associstes:      Junior programmer
               Van Allen Inc.:              Systems programmer
               Michigan University:         Lecturer in Computer Science
           
                           
                                   Рисунок 24
   _______________________________________________________________________

     Повторяющиеся группы не могут быть вложенными (т.е. повто-
ряющаяся группа не может содержать другую  повторяющуюся  груп-
пу),  за  исключением внутренней группы, содержащейся в формате
аргумента функции REF. Так, например, разрешен следующий формат:

                (v10,ref(val(v20),v10,(v20,v30)))

в то время, как не разрешен ниже приводимый формат,  в резуль-
тате чего появится сообщение об ошибке:

                       (v10(v20,v30))

     Отметим, что использование повторяющейся группы обязатель-
но, когда:
  1. вы используете повторяющееся поле, как аргумент  функции  L;
  2. первый аргумент функции REF ссылается на повторяющееся поле.
Также нужно учитывать, необходимо ли употребление повторяющейся
группы, когда повторяющееся поле используется в булевом выраже-
нии команды IF.

3.3.6.ESCAPE команда

     В  формат,  используемый  для печати, можно вносить escape
последовательности для активации или дезактивации  определенных
функций  принтера  (такие как: жирный шрифт или итальянская пе-
чать), конечно, если ваш принтер обеспечивает  поддержку  таких
escape последовательностей. Специфические escape последователь-
ности,  поддержку  которых  обеспечивает ваш принтер, описаны в
Руководстве пользователя принтера, поставляемом вместе с  прин-
тером его производителем.
     Escape команда кодируется следующим образом:
     
                             ! /еее/
где:
     !   -  идентификатор escape последовательности;
     /  -  разделитель escape последовательности. Им может быть
            любой символ, не встречающийся в еее;
     еее - escape последовательность, которая должна быть пере-
            дана  на   принтер.   (CDS/ISIS   обычно   передает
            ESC eee).

Например,  на большинстве принтеров следующий формат приведет к
печати поля 24 жирным шрифтом и поля 44 - итальянским (показано
использование различных разделителей  escape  последовательнос-
тей):
     
             !!Е!,v24,!;F;,v70+|; |,!{4},v44,![5]
     
   Ограничения реализации. Если при выводе на печать вы исполь-
зуете escape команды для выбора различных типов  шрифтов  (жир-
ный, итальянский и т.д.), вы не можете, в общем случае, осущес-
твлять  многоколонный  вывод, за исключением того случая, когда
текст, к которому применяется escape  последовательность,  пол-
ностью  содержится в одной строке и эффект этой escape последо-
вательности заканчивается перед выводом следующей строки. Более
того, нельзя использовать печать с  пропорциональным  внесением
пробелов  одновременно с многоколонной печатью. Если вы это бу-
дете использовать, то левая граница второй и последующих  коло-
нок не будет как следует выровнена.
   Замечания  для  версии VAX и WANG PC: Еси вы используете VAX
или WANG PC версии, вы можете  использовать  escape  команды  в
форматах  вывода на экран для выделения полей специальным изоб-
ражением, таким как подсвечивание, подчеркивание, обратная рас-
краска и т.д. Версия IBM PC не поддерживает escape команды  для
вывода на экран.

3.3.7. Ошибки формата.

     Во время интерпретации и обработки формата CDS/ISIS выпол-
няет  синтаксический  анализ формата для установления его соот-
ветствия правилам языка форматирования. Если CDS/ISIS обнаружи-
вает ошибку, он прекращает форматирование  и  выдает  сообщение
***  Ошибка  в  формате  n *** (где n - код ошибки). При выводе
данных на экран или принтер, все данные,  сформатированные  при
обнаружении  ошибки,  выводятся перед сообщением об ошибке.Этот
вывод данных вместе с сообщением об ошибке поможет вам отыскать
ошибку в формате.

                  Возможные коды ошибок

       1. Обнаружен конец формата в конце  обработки  повторяю-
           щейся  группы. Возможно пропущена закрывающая скобка
           повторяющейся группы.
       2. Вложенность повторяющейся группы (т.е. одна повторяю-
          щаяся группа внутри другой повторяющейся группы).
       8. Команда IF без THEN.
       19. Непарная (
       20. Непарная ).Также может быть неразрешенный операнд  в
           выражении.
       26. Два операнда одной операции  различных  типов  (т.е.
           попытка сложить строковый операнд с числом).
       28. Первый аргумент функции REF - нечисловое выражение.
       51. Слишком много литералов и/или условных команд, ассо-
           циированных с селектором поля.
       53. IF команда не завершена с помощью FI.
       54. Знак + вне контекста: CDS/ISIS ожидает повторяющийся
           литерал за знаком +.
       55. Непарная FI.
       56.  Переполнение рабочей области: ваш формат производит
           слишком большую выдачу,с которой CDS/ISIS  не  может
           справиться.  Рабочая  область ограничена 8000 симво-
           лами.
       58. Один или более аргументов функции F - нечисловые вы-
           ражения.
       60. Нестроковая функция используется как команда (только
           строковые функции могут быть использованы как коман-
           ды).
       61. Аргумент функции А или Р - не селектор поля.
       99. Неизвестная команда (т.е.  арифметические  ошибки  в
           имени функции или команды); может также быть пропуск
           закрывающего разделителя литерала.
      101.  Переполнение стека (возможно из-за слишком длинного
           выражения).
      102.  Недогрузка стека (может быть из-за непарной ). Если
           формат верен, эта ошибка указывает на проблемы прог-
           раммного обеспечения CDS/ISIS).

3.4. Таблица выбора полей ( ТВП )

    Таблица выбора полей ( ТВП ) определяет критерии выбора од-
ного  или  нескольких  элементов из записей файла документов. В
зависимости от программы, в которой используется ТВП, эти  эле-
менты  могут затем использоваться для создания инвертированного
файла для записи, из которой они были извлечены, для сортировки
записей в желаемой последовательности перед выдачей отчетов  на
принтер  или  для  переформатирования  записей во время импорт-
но-экспортных операций.
    Элемент, обычно, определяется как  фрагмент  результирующей
записи в определенном процессе. Хотя в большинстве случаев эле-
ментами в действительности являются элементы данных, т. е. поле
или  подполе,  в других случаях это могут быть слова, фразы или
другие фрагменты данных, которые имеют частный смысл для специ-
фического применения.
    Таблицы ТВП создаются или модифицируются  средствами  прог-
раммы  ISISDEF используя редактор строки системы CDS/ISIS ( см.
раздел 14 " Строковый редактор "). Пример  ТВП,  выдаваемой  на
экран редактором строк, показан на рис. 25.
 
Имя базы данных : CDS    ТВП для инвертированного файла      ТВП имя : CDS
                              
--------------------------------------------------------------------------
   ?   I   ИП   I   ТИ   I     Формат выбора данных
--------------------------------------------------------------------------

   -       24        4        mhl, v 24
                                 
   -       69        2        v 69

   -       70        0        mhl^ v 70 /%/

   -       26        0        "PLACE =", v 26^a

   -       26        0        "PUBL =", v 26^b

--------------------------------------------------------------------------

                    Рис. 25

    ТВП состоит из одной или более строк, каждая из которых оп-
ределяется тремя параметрами :

1. Идентификатор поля (колонка обозначенная ИП);
2. Техника индексирования (ТИ);
3.  Формат выбора данных (использующий язык форматирования сис-
   темы CDS/ISIS).

    Всякий раз, когда требуется выбрать элемент данных, исполь-
зуя  ТВП, система прочтет соответствующие записи файла докумен-
тов и выполнит для каждой записи и  для  каждого  элемента  ТВП
следующие действия :

1.  Использует  формат для извлечения соответствующих данных из
записи;
2. Применим указанный метод  индексирования  к  данным,
полученным таким образом,из указанного идентификатора поля.

    Процесс,  описанный выше, является чисто механическим и вы-
полняется точно так как описан. Он не  передает  информацию  от
одного  шага  к  другому, а только данные о его обработке, хотя
все шаги объединены в достижении желаемого  результата.  Напри-
мер,  тот факт, что определенное поле было выбрано на шаге1 не-
известно шагу 2 : шаг 1 используется языком форматирования  для
формирования  строки символов и передается на шаг 2. Шаг2 обра-
батывает строку символов в соответствии  с  указанной  техникой
индексирования.  Техника  индексирования определяется как обра-
ботка строки символов, но не записей или  полей.  Это  является
следствием  общего  назначения ТВП, которая может использоватся
для таких различных целей, как определение содержимого инверти-
рованного файла или спецификации требований по  сортировке  при
печати,  которые  могут выглядеть, с первого взгляда, полностью
несвязанными.
    Для большинства примеров, можно воспринимать ТВП, как сред-
ство, позволяющее вызвать элементы данных, требуемые для выпол-
нения определенных задач.

3.4.1. Параметры ТВП

    Три параметра строки ТВП описываются ниже в порядке их  ис-
пользования  (при редактировании ТВП средствами редактора стро-
ки, они вводятся в определенном порядке).

3.4.1.1. Формат выбора данных

    Формат  выбора  данных  кодируется используя средства языка
форматирования описанного в разделе 8.3.5 "  Формат  печати  ".
Так  как данные, создаваемые этим форматом, не являются средст-
вом вывода на экран, а обрабатываются впоследствии, CDS/ISIS не
ограничивает ширину строки каким-то  определенным  значением  и
следовательно  данные  никогда  не будут разорваны на несколько
строк. Понятие строк, однако, может быть релевантно  определен-
ной  технике  индексирования,  выполняемой процедурой вывода по
формату. В этом случае CDS/ISIS гарантирует, что  строки  будут
создаваться  только  в  ответ  на команды новой строки, которые
указываются в формате.
    В связи с этим, большинство  команд  форматирования,  такие
как "С", смещение или escape - последовательность, будут обычно
не  связаны в формате выбора данных и могут в некоторых случаях
выдывать непредсказуемые результаты. Поэтому  их  следует  избе-
гать, если нет особой необходимости.
    С другой стороны режим ( см.раздел 3.2.2 " Командный  режим
"),  выбранный для ввода определенных полей, может быть средст-
вом для корректировки функционирования определенной техники ин-
дексирования : некоторые методы  индексирования  требуют  явной
спецификации режима ( указывается в каждой технике индексирова-
ния, обсуждаемой ниже ). Пользователь обязан указать соответст-
вующие команды режима в формате выбора данных, если необходимо.
    Заметим  также,  что требование перевода в заглавные буквы,
может вызвать воздействие других дальнейших процессов, применя-
емых для выбора данных посредством ТВП. Как правило, не требуй-
те перевод в заглавные буквы ( используйте режимы mpl, mhl, mdl
чаще, чем mpu mhu mdu ) до тех пор, пока вы не будете иметь ка-
ких-либо нежелательных эффектов. CDS/ISIS  будет  автоматически
использовать перевод на режим заглавных букв при необходимости.
Например,  все элементы, сгенерированные посредством ТВП, будут
переведены в заглавные буквы перед сохранением в словаре  поис-
ковых  терминов,  даже  если  в ТВП они были введены прописными
буквами.

3.4.1.2. Метод индексирования

    Техника  индексирования  указывает  определенную обработку,
которая будет выполнена с данными, выбранными по формату, в по-
рядке указания элементов при создании ТВП. Существует пять  ме-
тодов индексирования. Каждому из них присваивается числовой код
от 0 до 4, как объясняется ниже.

3.4.1.2.1. метод индексирования 0.

    Создает  элемент из каждой строки, извлеченной в соответст-
вии с форматом. Данная техника обычно используется для индекси-
рования целых полей или подполей. Заметим, что  CDS/ISIS  будет
создавать элементы из строк, но не из полей. Это является след-
ствием  того,  что  CDS/ISIS  воспринимает вывод по формату как
строку символов, где поля не длиннее  идентификатора.  Поэтому,
пользователь  должен быть особо внимательным при вводе данных в
формат, особенно при индексировании повторяющихся  полей  и/или
более, чем одного поля. Другими словами, при использовании дан-
ной  техники  формат  выбора данных должен выводить одну строку
для каждого индексируемого элемента.

3.4.1.2.2. метод индексирования 1.

    Создает элемент из каждого подполя или строки, выбранных по
формату. Так как CDS/ISIS будет искать в выходном формате  коды
разделителей полей, для обеспечения правильной работы этой тех-
ники в формате должен быть использован проверочный режим ( если
режим  не  задан,  то  он  используется по умолчанию ), так как
только в этом режиме сохраняются коды разделителей подполей при
печати ( необходимо помнить, что режимы заголовка и данных  за-
меняют  разделители  подполей  символами пунктуации ). Заметим,
что техника индексирования 1 в действительности  сокращает  ис-
пользование техники индексирования 0. Пример использования этой
техники  приведен  на  рис. 26, который также показывает эффект
использования режима данных.

3.4.1.2.3. метод индексирования 2.

    Создает элемент из каждого термина или фразы, заключенные в
угловые скобки  < > . Любой текст вне скобок не индексируется.
Обратите внимание, что данный метод требует проверочного  режи-
ма, т. к. другие режимы удаляют скобки.
    Пример :

  Содержание записи :   26    ^аПариж^вЮнеско^с1965

--------------------------------------------------------------------------
        ТВП              Формат вывода            Полученные элементы
--------------------------------------------------------------------------

 1  1  mhl,v26           ^aПариж^вЮнеско^c1965      Париж
                                                    Юнеско
                                                    1965

 1  0  mhl,v26^a/v26^в/   Париж                     Париж
       v26^c              Юнеско                    Юнеско
                          1965                      1965
                                                    

 1  1  mdl,v26            Париж,Юнеско,1965         Париж, Юнеско,1965

--------------------------------------------------------------------------

     
    Mission   report   descraibing  a    in
 at East African 

даст следующие элементы при использовании данной техники :

    < university course >
    < documentation training >
    < library school >

3.4.1.2.4. метод индексирования 3.

    Выполняет  те  же операции, что и техника индексирования 2,
за исключением того, что термины или фразы ограничиваются двумя
косыми чертами (/.../). Например : mission report describing  a
/  university  course  /  in  /  document training / at an East
African
/ library school / даст следующие  элементы  при  использовании
данной техники индексирования :

    / university course /
    / documentation training /
    / library school /

3.4.1.2.5. метод индексирования 4.

    Создает элемент из каждого слова в тексте,  выбираемого  по
формату.  Словом  является  любая последовательность алфавитных
символов.
    При использовании этой техники, можно предотвратить  индек-
сирование некоторых незначащих слов, определив их в специальном
файле, называемом файлом стоп-слов (см. раздел 17.3 " Создание
файла  стоп-слов  ",  где  описываются  детали  создания  файла
стоп-слов).
    Обратите внимание, что при использовании данной техники для
индексирования целого поля, содержащего  разделители  подполей,
необходимо указать режимы заглавия или данных ( MHL или MDL ) в
соответствующих  форматах выбора данных, потому что замена раз-
делителей подполя будет происходить перед индексированием и ко-
ды буквенных разделителей подполей будут считаться частью  сло-
ва.  Целесообразно  использовать  режимы заголовка и данных для
индексирования полей, содержащих средства для изменения порядка
сортировки,потому что только форма вывода поля на экран являет-
ся индексируемой, а любые данные, требуемые для сортировки  по-
ля, игнорируются.

3.4.1.3. Идентификатор поля

    Идентификатор поля есть число (в пределах 1 - 32767), кото-
рое назначается каждому элементу, создаваемому на шаге индекси-
рования. Значение идентификатора поля зависит от назначения ис-
пользования ТВП, что объяснено ниже.

    ТВП для инвертированного файла :
идентификатор поля предназначен для использования при поиске.

    ТВП для сортировки :
идентификатор  поля  - это метка поля, которая используется при
применении формата заголовка (см. раздел 8.3.4."  Формат  заго-
ловка ").

    ТВП для переформатирования :
идентификатор  поля  - это ISO метка поля, назначаемая для экс-
порта поля ( см. раздел 12.2.4.1 " Реорганизация ТВП  "  )  или
CDS/ISIS метка, назначаемая для импорта поля.

Можно  найти  дополнительную информацию в ТВП, используемую для
специального назначения см. раздел 8.5 " Системные рабочие лис-
ты  для сортировки xYSRT ", раздел 12.2 " Рабочий лист экспорта
xYISI " и раздел 12.3" Рабочий лист импорта xYISO " .

3.4.2.ТВП для инвертированного файла.

Как указывалось раньше, одна ТВП для кажой базы данных  опреде-
ляет  содержимое  соответствующего инвертированного файла. Эле-
менты данных, создаваемые по этой ТВП,  однажды  запомненные  в
инвертированном  файле,  составляют  словарь поисковых терминов
для данной базы данных. Одного словаря,  однако,  недостаточно,
чтобы  обеспечить  механизм  поиска, т. е. каждый термин должен
быть связан со всеми записями базы данных, в которых он  имеет-
ся.  Таким  образом,  для  каждого поискового термина в словаре
CDS/ISIS определяет список "регистраций", обеспечивающий  такую
связь.  Каждый термин имеет столько регистраций, сколько раз он
встречается в базе данных.
    Более  того,  чтобы обеспечить такие сложные средства языка
поиска, как операторы близости, каждая  "регистрация"  содержит
не только МFN записи, но и дополнительную информацию о располо-
жении термина в записи, из которой он был выбран.
    Регистрация имеет четыре компоненты :

1. MFN записи, содержащей данный термин; CDS/ISIS присваива-
ет эту компоненту автоматически.

2. Идентификатор поля, используемый при поиске, когда  специфи-
цируется  квалификатор  поля. Эта компонента указывается в ТВП.
Обратите внимание, что один и тот же идентификатор  поля  может
быть  назначен  различным  полям, в то время как при поиске они
будут представлены как одно поле.
   
3. Номер назначения, необходимый для применения операторов  по-
иска  на  уровне поля (F) и операторов близости в повторяющихся
полях. Если использование таких операторов является  предназна-
чением  данной базы данных ( которое возникает в случае исполь-
зования техники индексирования 4 ), необходимо присвоить  номер
значения посредством формата, разделив знаком % каждое значение
повторяющегося  поля. Это можно легко сделать, используя повто-
ряющийся суффикс-литерал, например v10 /%/. CDS/ISIS устанавли-
вает номер значения равным 1 для каждого обработанного элемента
ТВП и увеличивает его на 1 каждый раз, когда встречается знак %
в тексте, выдаваемому по формату.

4.  Последовательный  номер термина,  требуемый для отработки
близости поисковых терминов. Он присваивается CDS/ISIS  следую-
щим образом :
   устанавливается 1 для каждого обрабатываемого элемента ТВП и
каждый раз номер значения изменяется, т. е. он увеличивается на
1  для каждого элемента, созданного по указанной технике индек-
сирования. Допустим, для примера, что база данных содержит "ре-
зюме" в повторяющемся поле 68, содержащем  на  каждое  значение
один  параграф, которое должно быть индексировано с использова-
нием техники 4. Указав формат выбора данных mdl, v68/%/, словам
из "резюме" будут присвоены последовательные номера, начиная  с
1  для  каждого параграфа ( тогда как, если формат выбора даных
описан как mdl, v68, слова будут пронумерованы  последовательно
по  всему  "резюме", т. е. первое слово второго параграфа будет
иметь последовательный номер, который на 1 больше, чем  послед-
нее слово в первом параграфе ). В некоторых случаях, определен-
ные термины словаря, генерируемые ТВП для инвертированного фай-
ла могут оказаться бессмысленными или двусмысленными для эффек-
тивного поиска.
    Например, термин IT может быть либо местоимением ( в  таком
случае  он  будет  менее  используемым при поиске ), либо кодом
страны ITALY. Он может также соответствовать цифровым терминам,
таким как 34, значение которого может быть непонятным  при  его
выборе из контекста.
    Если поле, создаваемое такими  терминами,  индексируется  с
помощью  техники 0, можно добавить смысл, используя префикс-ли-
терал для указания метки, которая будет затем  идентифицировать
определенное  использование термина. Например, когда индексиру-
ется поле, содержащее код страны, т. е. v10, можно использовать
следующий формат : " КС = " v10 ( правильнее чем v10 ),  потому
что  код  страны IT будет инвертирован как КС = IT ( правильнее
чем только IT ). Аналогично, если поле 20 содержит номер проек-
та, можно использовать формат " Проект ", v20, для  того  чтобы
потом можно осуществлять поиск Проект34 ( вернее, чем только 34).

    На  рис. 27 показана обработка ТВП данной на рис. 25 , при-
меняемой к записи, показанной на рис.6. Рис.28 показывает  пол-
ную  "регистрацию", назначаемую каждому элементу перед сохране-
нием в инвертированном файле. На рис. 29  показаны  элементы  и
соответствующие  "регистрации",  которые  будут инвертироваться
при использовании файла стоп-слов ( см. раздел 17.3 "  Создание
файла стоп-слов "). Необходимо отметить, что хотя стоп-слова не
выводятся  на  экран, они учитываются в числовой последователь-
ности терминов.

3.4.2.1. Проверка ТВП для инвертированного файла.

    В  этой главе описывается метод проверки ТВП, которая опре-
деляет содержимое инвертированного файла. Здесь  прослеживаются
все  шаги,  начиная с первого момента создания ТВП. Кроме того,
дается возможность лучше понять функционирование ТВП.  По  мере
приобретения опыта, появится возможность пропускать большинство
этих шагов. Однако, желательно делать некоторые предварительные
проверки  перед  полным  инвертированием базы данных, особенно,
если эта база большая.
    1. Введите несколько записей в базу данных. Они должны быть
подобраны таким образом, чтобы отражать все возможные  варианты
действительного  содержания базы данных. Если возможно, исполь-
зуйте реальные данные. В этом случае появится возможность  про-
верить  существующий  рабочий  лист и посмотреть, достаточно ли
правильно он создан для использования различных типов записей.
    2. Имея под рукой распечатку ТВП,  можно  проверить  каждый
формат выбора данных. Используя средства программы ISISRET, вы-
полните следующие действия :
    а) выберите опцию F и введите формат выбора данных ТВП;
    в) выберите опцию В и посмотрите полученный вывод по форма-
    ту;
    с) мысленно примените используемую технику индексирования к
    полученному  выводу  на экран и уточните предполагаемый ре-
    зультат, в частности проверка сводится к следующему :

* если вы применяете технику индексирования 0 к  повторяющемуся
полю, находится ли каждое значение поля на отдельной строке?
* если вы применяете технику 4 к повторяющемуся полю, указан ли
знак  % определяющий каждое значение поля ( если нет, вы будете
не в состоянии использовать (F)  оператор  поиска,  потому  что
CDS/ISIS  будет  назначать один и тот же номер значения каждому
слову и обратится ко всем значениям, как к единому полю);
* если вы применяете технику 2, ограничен ли каждый  термин  на
экране угловыми скобками? (если нет, убедитесь, что ваш формат
не  потребует  никакого  другого режима вывода на печать, кроме
проверочного режима, т. к. угловые скобки  выводятся  на  экран
только в проверочном режиме);
* если вы применяете технику 1, указаны ли на экране разделите-
ли подполей? ( если нет, убедитесь, что использован проверочный
режим);

    d)  если вы предполагаете какие-то ошибки в формате, повто-
       рите шаги (а) - (с), сделав необходимые изменения в фор-
       мате;
    е) повторяЙте шаги (а) - (d) для каждой строки ТВП  до  тех
       пор,  пока полностью не убедитесь в том, что форматы яв-
       ляются правильными. Если вы изменили какой-то из  форма-
       тов,  проверьте  все  изменения,  которые вы сделали или
       лучше распечатайте содержимое экрана на бумагу.

3. Если необходимо, выберите программу ISISDEF и  модифицируйте
   форматы в существующей ТВП согласно замечаний, полученных на
   шаге 2 (е).
4.  Затем  выберите  программу ISISINV, укажите опцию G из меню
xXG1 и установите ограничения  МFN  для  инвертирования  только
нескольких  записей.
5.  Когда связи файлов созданы, выйдите из программы ISIS и на-
печатайте содержимое файлов хххххх. LN1 xxxxxx. LN2 ( где  ххх-
ххх  - имя базы данных ). Эти файлы содержат все поисковые тер-
мины, которые были созданы для каждой записи : являются ли  они
правильными?  Если нет, значит существует какая-то ошибка в ва-
шей TBП. Повторите шаги 1 - 5 до получения необходимого резуль-
тата.
    Как упоминалось выше, по мере совершенствования знаний язы-
ка форматирования, вы можете пропустить шаги 4 и 5 перед попыт-
кой полного инвертирования новой базы данных.

3.4.2.2. Модификация ТВП для инвертированного файла

    Хотя программа ISISDEF позволяет модифицировать  ТВП  после
ее  создания,  необходимо  помнить, что некоторые изменения ТВП
для инвертированного файла потребуют последующего  переинверти-
рования  базы  данных, т. к. инвертированный файл, созданный по
старой ТВП, не будет больше соответствовать элементам,  создан-
ным с помощью измененной ТВП.
    В основном переинвертирование требуется в том случае, когда
нужно выполнить одно или более следующих изменений :

яизменить технику индексированияя: сгенерированные элементы бу-
дут полностью отличаться, если две различные техники индексиро-
вания применяются к одинаковым данным;

ядобавить  или удалить строки в ТВПя: удаление строки в ТВП без
перегенерирования инвертированного файла  оставляет  в  словаре
термины,  которые были сгенерированы в нем и могут быть найдены
при поиске; добавление строки без перегенерирования  инвертиро-
ванного  файла  не будет вызывать доступ к существующим записям
при поиске по новой строке ТВП. Заметим, что добавление  нового
элемента, соответствующего полю, которое ранее не существовало,
не требует переинвертирования;

яизменить формат выбора данныхя: элементы, индексируемые по но-
вому  формату  будут  отличаться  от сгенерированных по старому
формату;

яизменить идентификатор поляя: хотя термины словаря будут оста-
ваться теми же, идентификатор поля, запомненный в  регистрациях
этих  терминов  при создании инвертированного файла будет отли-
чаться.
                                            
                                                      Полученные элементы
                                                ---------------------------
   Строка ТВП          Формат вывода            ID          Элементы
----------------  -----------------------       --  -----------------------
                                                             
24  4  mhl, v24   (An) Electric hygrometer      24  An
                  apparatus for measuring       24  Electric
                  water-vapour loss from        24  hygrometer
                  plants in the field           24  apparatus
                                                24  for
                                                24  measuring
                                                24  water
                                                24  vapour
                                                24  loss
                                                24  from
                                                24  plants
                                                24  in
                                                24  the
                                                24  field

69  2 v69         Paper on : (hygrometers)      69 hygrometers
                  (plant transpiration)         69  plant transpiration
                  (moisture)(water balance)     69  moisture
                                                69  water balance

70  0 mhl, v70/%/ Griev, B. J. %Went, F. W.     70  Grieve, B. J.
                                                70  Went, F. W.

26  0  "PLACE=",  PLACE=Paris                   26  PLACE=Paris
       v26^a

26  0  "PUBL=",   PUBL=Unesco                   26  PUBL=Unesco
       v26^b

--------------------------------------------------------------------------

                         Рис. 27

  MFN      ИП        Повт.     N п/п           Элемент
--------  -----    --------   -------         ---------
                
   4       24         1          1             An
   4       24         1          2             Electric
   4       24         1          3             hygrometer
   4       24         1          4             apparatus
   4       24         1          5             for
   4       24         1          6             measuring
   4       24         1          7             water
   4       24         1          8             vapour
   4       24         1          9             loss
   4       24         1          10            from
   4       24         1          11            plants
   4       24         1          12            in
   4       24         1          13            the
   4       24         1          14            field
                                                    

   4       69         1          1             hygrometers
   4       69         1          2             plant transpiration
   4       69         1          3             moisture
   4       69         1          4             water balance

   4       70         1          1             Grieve, B. J.
   4       70         2          1             Went, F. W.
                                                          
   4       26         1          1             PALACE=Paris
   4       26         1          1             PUBL=Unesco
                                                          
--------------------------------------------------------------------------

                            Рис. 28

 
 MFN  ID    OCC     SEQ    Element
----- ----  -----   ----   --------
  4   24     1       2     Electric
  4   24     1       3     hygrometer
  4   24     1       4     apparatus          |----------------|
  4   24     1       6     measuring          |  Stopword file |
  4   24     1       7     water              |----------------|
  4   24     1       8     vapour             |     AN         |
  4   24     1       9     loss               |     FOR        |
  4   24     1       11    plants             |     FROM       |
  4   24     1       14    field              |     IN         |
                                              |     THE        |
  4   69     1       1     hygrometers        |----------------|
  4   69     1       2     plan transpiration
  4   69     1       3     moisture
  4   69     1       4     water balance
                     
  4   70     1       1     Grieve, B.J.
  4   70     1       2     Went, F.W.

  4   26     1       1     PLACE=Paris
  4   26     1       1     PUBL=Unesco
                                 

                            Рис. 29
       

3.5.Ввод данных.

                  
Рабочий лист : CDS            Стр.: 1/3            База данных : CDS

Конференция.......________________________________________________________
__________________________________________________________________________
__________________________________________________________________________

Заглавие........._________________________________________________________
__________________________________________________________________________
__________________________________________________________________________

Примечание......._________________________________________________________

         ........_________________________________________________________
__________________________________________________________________________

         ........_________________________________________________________
__________________________________________________________________________

Автор(ы)........._________________________________________________________
__________________________________________________________________________
__________________________________________________________________________

Редактор : Вставка           Далее                       MFN = 172
                         
                           Рис. 30
                         
    Ввод данных осуществляется  через  рабочие  листы,  которые
предварительно  создаются  средствами редактора рабочих листов.
Рабочий лист представляет собой печатную форму,  которая  выво-
дится  на экран с выделенным пространством, необходимым для за-
полнения. Ввод информации предполагает использование клавиатуры
аналогичной печатанию на пишущей машинке. Как упоминалось рань-
ше, CDS/ISIS использует два типа рабочих листов : рабочий  лист
для вода данных, используемый для ввода данных, которые запоми-
наются  в  файле  документов, и системный рабочий лист, который
используется для ввода  параметров,  требуемых  для  выполнения
специальных задач, таких как управление печатью. Оба типа рабо-
чих  листов заполняются одинаковым способом. Одно различие сос-
тоит в том, что системный рабочий лист может иметь только  одну
страницу,  в  то  время как рабочий лист для ввода данных может
располагаться на нескольких страницах.
    Пример рабочего листа по вводу данных показан на рис.30. Он
состоит из нескольких полей, каждое из которых имеет метку, оп-
ределяющую смысл данных, которые будут  вводиться,  например  "
Заглавие"
    Заметим,  что когда рабочий лист выводится на экран, нижние
3 строки экрана резервируются для вывода сообщений. Это  прост-
ранство  называется  областью  сообщений,  тогда  как первые 21
строки экрана называются областью данных.
    Каждое  поле  рабочего  листа  вводится  или модифицируется
средствами редактора поля. Дополнительно, CDS/ISIS обеспечивает
все возможности редактирования экрана, такие  как  передвижение
от  одного поля к другому на одной странице или переход назад и
вперед между страницами.
    Следующие параграфы описывают технику ввода данных в  дета-
лях.  Хотя описание касается создания и редактирования записей,
это также относится к вводу и редактированию данных в системных
рабочих листах.

3.5.1. Создание новых записей.

    Создание новой записи осуществляется выбором опции N в меню
xXE1 (программа ISISENT ). CDS/ISIS выводит на экран отобранный
рабочий лист, куда необходимо затем ввести данные и  устанавли-
вает курсор на начало первого поля на экране.
    Нижняя  строка  указывает  номер  записи  файла  документов
(MFN), которая создается, и наличие следующих доступных страниц
(см. рис. 30).
    Для  ввода  поля необходимо просто печатать соответствующие
данные и заканчивать ввод, используя клавишу (CR). CDS/ISIS за-
тем установит курсор на начало следующего поля. Ввод поля конт-
ролируется редактором поля системы CDS/ISIS (см.  раздел  13  "
Редактор  поля"), с которым необходимо ознакомиться перед нача-
лом создания и/или модификации записей в базе данных. Для того,
чтобы оставить поле пустым, нажмите (CR).
    Когда рабочий лист выводится на экран, одно или более полей
могут уже содержать данные, которые были определены администра-
тором  базы  данных или вами, используя опцию "D" в меню xXE1 (
см. раздел 6.1 "D - определение значений по умолчанию ").
    В этом случае можно оставить эти значения как есть,  просто
нажав  (CR),  или удалить их, нажав функциональную клавишу (F2)
или заменить - напечатав новое. Заметим, что удаление или моди-
фикация значения по умолчанию будет действовать только в  теку-
щей  записи, первоначальное значение будет сохраняться для всех
последующих создаваемых записей. Для того чтобы удалить или из-
менить эти значения для нескольких записей, используется  опция
"D"  меню  xXE1.  Когда  курсор устанавливается на данном поле,
можно использовать следующие клавиши для  выполнения  указанных
действий :

CR - переход к следующему полю;
TAB - переход к предыдущему полю. Можно использовать эту кла-
        вишу для ввода данных в поле, которое случайно осталось
        пустым или несформированным.
F2 - удаление выведенного на экран значения по умолчанию ( на
       пустое поле не оказывает воздействия);
F1 - вывод на экран HELP - сообщения, определенного для  поля
       во  время создания рабочего листа. Если HELP - сообщение
       не было создано для поля, то CDS/ISIS выведет  на  экран
       тип поля (цифровое, алфавитное и др.)
       
    Когда все поля сформированы, CDS/ISIS автоматически перехо-
дит  в режим редактирования записи и пользователь получает воз-
можность модифицировать только что  созданные  записи,  если  в
этом есть необходимость. Редактор записей описывается ниже.
    Если  рабочий  лист  состоит из нескольких страниц, процесс
описанный выше, обычно повторяется для каждой страницы.  Допус-
кается,  однако,  прерывать  процесс  при необходимости в любое
время.

3.5.2. Редактирование записей

    Как  только  запись  выбрана для редактирования ( опция "F"
или "R" в меню xXE1 ), CDS/ISIS выводит запись  на  экран,  ис-
пользуя текущий рабочий лист и предлагает указать действия, ко-
торые  необходимо  выполнить. Редактирование записи можно также
осуществить после формирования каждой записи рабочего листа.
    Следующая  подсказка появляется в нижней части экрана ( за-
метим, что подсказка 103/104 выдается при использовании рабоче-
го листа по вводу данных, в то время как подсказка  105  -  при
использовании системного рабочего листа).

Подсказка 103/104 :
     
CR - следующая страница;
В - предыдущая страница;
М - модифицировать;
Х - выход;
С - отменить;
R - восстановление;
Т - закончить;
D - удалить;
N - новая запись.

    Подсказка 105 :  CR -следующая страница   С - отменить
                     М - модификцировать,
                     Х - выход
    Значение каждой функции объясняется ниже :
CR - листание вперед, т. е. вывод на экран следующей страницы
       рабочего листа ( заметим, что если это последняя страни-
       ца рабочего листа, то CR эквивалентно Х).
В - листание назад, т. е. вывод на  экран  предыдущей  страницы
    рабочего листа.
С - оставляет запись неизмененной ( все изменения, которые мог-
    ли быть сделаны в записи - игнорируются ).
D - удаление записи.
М - редактирование страницы.
N - запоминает запись в файле документов ( аналогично Х ) и за-
    тем  создает новую запись. Эта опция позволяет также созда-
    вать записи последовательно, без возвращения в  меню  ввода
    данных между записями. Она также позволяет переключаться из
    режима редактирования записей в режим создания записей.
R - восстанавливает экран ( это может быть необходимо, если ваш
    терминал  является системной консолью, в этом случае опера-
    ционная система может выводить на экран сообщения, частично
    заполняющие рабочий лист ).
Т - оставляет запись неизмененной и прерывает действие операто-
    ров исправления. Если никаких исправлений не было  сделано,
    то эта опция действует также как и "С".
Х - запоминает запись в файле документов.

    Опции "С","X" и "D" прекращают обработку записи так как это
описано выше и передают управление меню xXE1 ( если вы редакти-
ровали  единственную запись ), или продолжают процесс исправле-
ния для следующей записи, если она есть ( если вы находились  в
режиме редактирования некоторой последовательности записей ).
    Опция "Т" является эквивалентной опции "С" относительно те-
кущей записи, кроме того дополнительно прерывает последователь-
ность и выводит на экран меню по вводу данных.
    Если  выбирается  опция "М", CDS/ISIS переходит в режим ре-
дактирования  и  устанавливает  курсор  на первом поле рабочего
листа выведенного на экран. Затем можно добавить данные в  поле
и/или  модифицировать  или удалить их содержимое ( см. раздел "
Редактор поля "). Когда курсор устанавливается на данном  поле,
можно  использовать следующие функциональные клавиши для выпол-
нения указанных действий :
CR - переход к следующему полю;
TAB - переход к предыдущему полю;
F1 - вывод на экран HELP -сообщения, определенного  для  поля
       при создании рабочего листа.
HELP - сообщение обычно содержит  специальное  руководство  для
правильного  ввода  поля.  Если специальное HELP - сообщение не
определено для поля, CDS/ISIS выведет на экран тип поля (  циф-
ровое, алфавитное и т. д. )
F2 - удаляет содержимое поля.

3.5.3. Удаление записи.

    Можно  удалить  запись,  ответив "D" на подсказку 103/104 (
см. выше ). Заметим однако, что запись удаляется логически,  но
не  физически. Другими словами, CDS/ISIS только помечает запись
для ее дальнейшего физического удаления, тем  не  менее,  такую
запись  нельзя  будет в дальнейшем найти или выдать на дисплей.
Записи, помеченные для удаления,  физически  удаляются  (т.  е.
полностью  разрушаются) только при реорганизации файла докумен-
тов. До наступления этого момента, существует возможность восс-
тановить логически удаленную запись, т. е. удалить  пометку  на
удаление, что объяснено ниже.
    Если выбирается удаленная запись на редактирование ( иполь-
зуя  опции  "Е" или "R" меню хХЕ1, CDS/ISIS выдаст информацию о
наличии этого состояния следующей подсказкой :
    Подсказка 26 : Запись удалена. Введите  один  из  следующих
                   кодов  : R - восстановить, N - создать новую
                   запись, CR - оставить удаленной.

    Ответ может быть следующий :

                   CR - оставить запись удаленной;

                    N- заменить удаленную запись на новую.
    В данном случае CDS/ISIS будет вести себя  так,  как  будто
затребовано  создание  новой записи (см.раздел 3.5.1 " Создание
новых записей "), эта новая запись будет иметь тот же MFN,  что
и удаленная запись, которая заменяется;

                     R - повторно активизировать запись.
    В этом случае CDS/ISIS уничтожит метку удаления и выдаст на
экран запись в режиме редактирования (см. раздел 3.5.2 " Редак-
тирование  записи "). Все данные, которые находились в записи в
момент ее удаления, появятся на экране в рабочем  листе.  Заме-
тим,  что  это имеет место только для логически удаленных запи-
сей. Если запись является физически удаленной, то ответ "R" эк-
вивалентен ответу "N".

3.5.4. Руководство для оператора по вводу данных.

    Ниже приводятся основные правила, которые должны быть  соб-
людены при вводе данных. Если создается специальное руководство
для специфического применения, можно включить эти разделы.

3.5.4.1. Ввод поля.

    Как правило, печатайте данные, как будто используете  пишу-
щую  машинку. Помните, однако, что вы используете редактор поля
CDS/ISIS, который предлагает специальные возможности  для  кор-
ректироваки  данных, задействуя функциональные клавиши. Все они
полностью описываются в разделе 13 "Редактор поля ".
    Если пространство, выделенное на экране для  ввода  данных,
больше,  чем  одна  строка,  печатайте CR или пробелы в конце
каждой строки , CDS/ISIS будет автоматически переходить на сле-
дующую строку. Несмотря на то, что слова не  будут  разделяться
по правилам грамматики, это не существенно , когда в дальнейшем
поле будет выводиться на экран или на принтер, CDS/ISIS обеспе-
чит  вывод  текста  таким образом, что разделяться будут только
строки.

3.5.4.2. Ограничители полей.

     При вводе полей, содержащих  подполя,  необходимо  указать
разделитель  подполя впереди каждого значения подполя. Раздели-
тель подполя - это двухсимольный код предшествующий и указываю-
щий переменную длину подполя внутри поля. Он состоит из символа
"^" и следующего за ним буквенного или цифрового символа,  нап-
ример ^а. Если код подполя является алфавитным, его можно ввес-
ти  на верхнем или на нижнем регистре. CDS/ISIS не воспринимает
разницы между ^a или ^A. Поэтому, можно  использовать  наиболее
удобную форму.
     Не оставляйте пробелов и не вставляйте знаки препинания ни
перед, ни после разделителя подполя, если нет специального ука-
зания сделать это.

     Пример поля с тремя подполями :

     ^aUNESCO^bParis^c1985

     Введение пробелов или знаков препинания может вызвать неп-
равильный вывод поля на печать.

3.5.4.3. Повторяющиеся поля

     Если  вводимое  поле  является  повторяющимся и необходимо
ввести более одного значения, введите все значения один за дру-
гим, разделив каждое значение знаком процента ( % ). Нет  необ-
ходимости  вводить  знак  %  после последнего повторителя поля.
Знак % является зарезервированным символом системы. Когда  поле
вызывается  на редактирование, CDS/ISIS будет автоматически ус-
танавливать знак % для каждого  значения  повторяющегося  поля,
где  это требуется. Можно, если необходимо, вставить новое зна-
чение между существующими значениями или  использовать  функции
редактора  поля " вырезание " или " наклеивание " для изменения
порядка значений.
    Нельзя вводить пробелы перед и после знака %. Если  сделать
это, пробелы будут восприняты как часть поля.
    Пример поля " автор ", содержащего два имени :

    BROWN.J.%Jonson.Archibald

3.5.4.4. Поля типа шаблон

    Когда CDS/ISIS устанавливает курсор на поле типа шаблон, то
на  экран выдается шаблон поля ( при условии, что поле не имеет
значения по умолчанию ) для указания того, что можно вводить  в
каждую позицию поля. Сообщение :
    "Введите поле согласно указанному шаблону" также появится в
нижней  части экрана. Шаблон - это посимвольное описание содер-
жимого поля, который может быть следующим :

Х - позиция может содержать любой алфавитно-цифровой символ;

А - позиция должна содержать алфавитный символ;

9 - позиция должна содержать цифру;

другой символ - позиция должна содержать указанный символ.

     Пример шаблона с некоторыми значениями :

Шаблон     Х - 99А

Значение   3 - 58Х  (правильно)
           А - 782 ("2" недопустимо, т. к. эта позиция алфавит-
                    ная) Х / 78R ("/" недопустимо, т. к. в этой
                    позиции должно быть "-")
           Х - 7АВ  ("А" недопустимо, т. к. эта позиция цифровая)

3.5.4.5. Проверка правильности полей

                            
     CDS/ISIS  проверяет правильность каждого вводимого поля на
соответствие типу поля, определенному в ТОП базы данных.
     Если вводимый символ не соответствует заданному типу поля,
CDS/ISIS выдает сообщение об ошибке  и  повторно  устанавливает
курсор  на  начало  поля.  Необходимо сделать исправления перед
повторным вводом поля.

3.5.5. Обновление инвертированного файла

     Необходимо иметь в виду, что CDS/ISIS автоматически не об-
новляет инвертированный файл при каждом добавлении, модификации
или удалении записи. Это необходимо помнить, т. к. пока  инвер-
тированный  файл не обновлен, могут возникнуть следующие ситуа-
ции :

1. Новые записи, которые добавлены, недоступны при поиске.

2. Записи, которые были модифицированны, доступны только в ста-
   рой интерпретации.

3. Записи, которые были удалены, будут еще зарегистрированы, но
   сами записи выдаваться на экран не будут.
   
    Тем не менее, CDS/ISIS хранит в файле документов всю инфор-
мацию, требуемую для обновления инвертированного  файла  и  его
можно выполнить в любое время. Эта операция требует затрат вре-
мени, зависящих от количества обновляемых записей, используемо-
го компьютера и среднего количества поисковых терминов, генери-
руемых для каждой записи.
    После нескольких экспериментов с данной базой данных, можно
установить  примерное время, требуемое для обновления записи и,
если это время вас удовлетворяет, рекомендуется  выполнять  об-
новление инвертированного файла после каждого сеанса ввода дан-
ных (или при работе программы, как объясняется ниже). Исходя из
этих  соображений,  можно  отложить обновление инвертированного
файла на более удобное время (на конец дня, недели и т.д.). Для
выполнения обновления инвертированного файла  вызывается  прог-
рамма  ISISINV  через  главное  меню  системы xXISI (см. раздел
5.1"Меню xXISI"), затем опция "U" в меню xXG1 (см.  раздел  9.1
"U - обновление инвертированного файла ").
    Заметим также, что каждый раз при выходе из программы  ISIS
и смены базы данных, CDS/ISIS проверит сначала, были ли сделаны
какие-то  изменения в текущей базе данных. Если да, система вы-
ведет на экран общее количество сделанных изменений  (  укажет,
сколько  записей  было добавлено, модифицировано или удалено ),
затем предложит обновить инвертированный файл, выдав  на  экран
сообщение :

    Подсказка  267 : Хотите обновить инвертированный файл
                     ( Y/N)?

    Если последует ответ "Y", CDS/ISIS начнет обновление инвер-
тированного файла (любой другой ответ отложит обновление).
    Во  время обновления инвертированного файла, CDS/ISIS может
обнаружить какие-то отклонения либо в файле документов, либо  в
инвертированном файле. Обычно это не происходит, т. к. инверти-
рованный  файл  является полным отражением файла документов. Но
если отклонения все же обнаружены, (они будут отражены на экра-
не соответствующим сообщением ) необходимо будет сделать требу-
емые исправления как только появится возможность, т. к. при на-
личии отклонений файл документов и инвертированный  файл  будут
несинхронизированны.

 Следующие сообщения указывают на наличие ненормальных условий :

391 Внимание! Ссылка не найдена. Нельзя удалить.

392 Внимание! Повторная связь.

393 Системная ошибка. В файле документов ошибка несоответствия.
     Восстановите последнее значение и перегенерируйте инверти-
     рованный файл.

    Объяснение и возможные причины приведены ниже.

Сообщение  391. Внимание! Ссылка не найдена. Нельзя удалить.Это
               сообщение касается удаленных или  модифицирован-
               ных записей. CDS/ISIS пытается удалить из инвер-
               тированного  файла  ссылки, соответствующие уда-
               ленной записи или старую версию модифицированной
               записи ( т. е. версию существовавшую до  сделан-
               ной  модификации  ),  но  не может найти одну из
               ссылок, которую нужно удалить. Ссылка,  вызываю-
               щая это сообщение, будет также выведена на дисп-
               лей в таком виде :

    MFN/идентификатор поля/значение/последовательный номер

См.  раздел 3.4.2." ТВП для инвертированого файла". Это сообще-
ние может быть обусловлено следующим :

* изменение ТВП для инвертированного файла без переинвертирова-
ния базы данных;
* восстановление файла документов после инвертированного файла;
* аварийное  прерывание  процесса  обновления  инвертированного
файла ( отключение электроэнергии ).

Сообщение 392. Внимание! Повторная ссылка. Оно  касается  новых
               или  модифицированных записей. CDS/ISIS пытается
               добавить в инвертированный файл ссылки, соответ-
               ствующие новой записи или модифицированной  вер-
               сии  записи,  но находит, что одна из ссылок уже
               существует  (  обычно  потому,  что  создаваемые
               ссылки должны быть уникальными
               ). Ссылка, вызывающая это сообщение, будет выве-
               дена на экран, как и предыдущая.  Это  сообщение
               может быть обусловлено следующим :

*  использование одинакового идентификатора поля более, чем для
одной строки ТВП, особенно если используется техника индексиро-
вания 4;
* аварийное  прерывание  процесса  обновления  инвертированного
файла (отключение электроэнергии).

Сообщение 393. Оно обычно указывает на испорченность фала доку-
               ментов,  которое  может быть причиной внезапного
               или ненормального выхода из CDS/ISIS (т. е. отк-
               лючение электроэнергии или выключения компьютера
               во время процесса обновления ).

Проблемы, связанные с этими сообщениями, обычно разрешаются пу-
тем переинвертирования базы данных  (после  корректировки  ТВП,
если необходимо).

3.6.Поисковый язык CDS/ISIS

3.6.1.Введение

     Поисковый язык СDS/ISIS базируется на булевой алгебре, ко-
торая обеспечивает удобный способ выражения логических операций
между классами. Каждый поисковый термин, ассоциируемый с данной
записью, фактически  может  рассматриваться  как  представитель
класса  всех записей, ассоциируемых с данным термином. Так, вы-
ражая логические операции между поисковыми терминами, вы можете
точно определить класс записей, которые должны быть  найдены  в
ответ на ваш запрос.
     В следущих параграфах примеры приведены не для того, чтобы
показать, как формировать специфические запросы, они просто ил-
люстрируют возможности поискового языка CDS/ISIS. Однако, поис-
ковый  язык сам по себе не даст вам возможности проводить поиск
в конкретной базе данных. Ключ к полному и эффективеому  поиску
-  это  знание  всех поисковых терминов, употребляемых в данной
БД. Следовательно, важно, чтобы вы ознакомились со словарем по-
исковых терминов, доступных для БД, в которой вы хотите  прово-
дить  поиск и с правилами индексирования записей в этой БД. За-
метьте, что опция "Т" в меню ISISRET, позволит  вам  не  только
вывести  словарь  на  экран  компьютера, но и строить поисковый
запрос путем выбора терминов непосредственно  на  экране.  (см.
раздел  7.1 "Т- вывод на экран терминов доступа").
     Наиболее эффективный путь  выполнения  поиска  в  CDS/ISIS
-через  инвертированный  файл  (и основная причина поддерживать
инвертированный файл - обеспечить быстрый  поиск).  Однако,  вы
можете  это  сделать  только  в том случае, если ваши поисковые
запросы укладываются в рамки  словаря  поисковых  терминов  для
данной  БД,  т.е. если они были выбраны, когда определялось со-
держание инвертированного файла. При этом, как бы хорошо ни бы-
ла продумана ваша БД, все равно будут случаи, когда вы не  смо-
жете  сформировать поисковый запрос через инвертированный файл.
Для этих случаев СDS/ISIS обеспечивает альтернативный поисковый
метод, называемый свободным поиском по тексту, который позволя-
ет вам удовлетворить любой поисковый запрос независимо  от  со-
держания  инвертированного  файла.  Поскольку этот второй метод
менее эффективен, он обычно используется вместе  с  поиском  по
инвертированному  файлу  для  улучшения поисковой стратегии, но
может, если необходимо, использоваться независимо. Если вы  об-
наружите, что вам довольно часто приходится формулировать длин-
ные запросы свободного поиска по тексту,то, возможно, вам стоит
рассмотреть  вопрос  о  переопределении инвертированного файла.
Следущие несколько параграфов описывают метод поиска по  инвер-
тированному  файлу.  Свободный поиск по тексту описан в разделе
3.6.7. "Свободный поиск по тексту".

3.6.2.Поисковые выражения.Типы поисковых терминов

     При  формулировании  вашего поискового выражения вы можете
использовать три типа терминов: точные термины,  термины,  усе-
ченные справа, ANY-термины. Все они описаны ниже.

3.6.2.1. Точные термины

     Точным  термином является любой поисковый элемент, опреде-
ленный для данной БД, такой как предметный дескриптор, ключевое
слово, ключевое выражение, слово из заголовков,  имя  автора  и
т.д.  Вы должны быть знакомы с поисковыми терминами, доступными
в БД, в которой вы намереваетесь проводить поиск.
     Когда вы используете точный поисковый  термин,  вы  должны
его  определить точно так, как он известен CDS/ISIS. Рекоменду-
ется иметь список поисковых терминов под рукой во время  форму-
лировки  запроса  (или  использовать опцию Т программы ISISRET,
описанную в разделе 7.1. "Т- вывод на экран терминов доступа"),
для вывода на экран поисковых терминов.
     Даже  небольшие  изменения  в  написании  термина заставят
CDS/ISIS отвергнуть его.
     Так, например, если CDS/ISIS известен термин COLOR (амери-
канское написание), вы не можете использовать этот термин в ан-
глийском написании COLOUR, т.к. он будет отвергнут.
     Важно помнить, что, если поисковый термин содержит  скобки
или  любой из знаков поисковых операций (* + (G) (F) . $ ^) или
начинается со знака #, вы должны заключить его в двойные кавыч-
ки с целью избежать возможной неоднозначности.  Так,  если  ваш
поисковый термин:

     GERMANY (FEDERAL REPUBLIC)

вы должны ввести его в следующем виде

     "GERMANY (FEDERAL REPUBLIC)"

иначе CDS/ISIS выдаст сообщение о синтаксической ошибке.

3.6.2.2. Поисковые термины, усеченные справа

     Вместо использования точных поисковых терминов, вы  можете
дать  только его основу. Эта техника, называемая поиском по ос-
нове или усечением справа, позволяет вам искать по ведущей пос-
ледовательности символов. CDS/ISIS автоматически выполнит логи-
ческую операцию OR между всеми поисковыми  терминами,  имеющими
указанную основу.
     Усечение справа обозначается  знаком  доллара  $,  который
ставится  сразу  после  последнего символа основы. Предположим,
например, что ваш список терминов содержит следующий набор тер-
минов:
     file organization
     film industry
     film libraries
     film-maker
     film-making
     film-making trainig
     filmstrip
     filtration
     Тогда FILM $ является эквивалентом списку:
     film
     film industry
     film libraries
     film-maker
     film-making
     film-making training
     filmstip,
а FILM - $ является эквивалентом списку:
     film-maker
     film-making
     film-making training

     Как и для точных поисковых терминов, если ваша основа  со-
держит  скобки, или любой знак поискового оператора или начина-
ется со знака #, вы должны заключить ее в двойные кавычки  ("). "
Например, "FILM $" является эквивалентом:

     FILM
     FILM INDUSTRY
     FILM LIBRARIES
но FILM $ (без кавычек) выдаст сообщение об ошибке.

     3.6.2.3. ANY термины
     ANY  термины - это коллективный термин ранее определенного
набора поисковых терминов. Когда вы используете  ANY  термин  в
вашей  поисковой  формулировке, CDS/ISIS автоматически выполнит
логическое OR между всеми терминами, ассоциируемыми с этим  ANY
термином.
     ANY  термин  состоит из слова ANY, за которым следует уни-
кальный идентификатор, обычно мнемонический, назначенный  ассо-
циируемому   набору  терминов.  Например,  термин  ANY  BENELUX
COUNTRY может быть использован для поиска записей, заиндексиро-
ванных названием любой страны группы Benelux  (Бельгия,  Hидер-
ланды, Люксембург). Прежде чем ANY- термин может быть использо-
ван  в поисковой формулировке, его значение должно быть опреде-
лено путем определения множества ассоциируемых с  ним  терминов
(см.  раздел  17.4.  "Создание ANY файла"). Заметим, что не все
базы данных должны пользоваться этим средством. Поэтому  прежде
чем  пытаться использовать ANY термин, вы должны убедиться, что
он доступен БД,в которой вы проводите поиск и, если да, то, что
он действительно определен.

3.6.3. Поисковые термины

     Вы можете объединять два или более  поисковых  терминов  в
поисковые  выражения с помощью поисковых операторов, обозначаю-
щих отношения, которые вы хотите  установить  между  терминами.
Три  основных  оператора OR, AND, NOT схематически представлены
на рис.31, где каждый прямоугольник представляет записи,  заин-
дексированные указанным термином, а заштрихованное пространство
представляет  множество записей, которые получатся в результате
применения различных операторов.

3.6.3.1. Логическое OR (включающее)

     Логическое  OR - это оператор объединения классов. Резуль-
татом логического OR между двумя классами является класс, полу-
ченный путем слияния этих двух классов, без дублирования совпа-
дающих элементов.
     Так, если А и В - два термина, представляющие  два  класса
документов,  заиндексированных  терминами А и В соответственно,
логическим OR между этими двумя классами является  класс  доку-
ментов,  заиндексированных  термином  А,  термином В или обоими
терминами.
     Логическое OR, следовательно, используется для  расширения
поиска  и будет, в общем случае, увеличивать количество найден-
ных записей. Символ, используемый  для  обозначения  логической
операции OR - знак "+".
     Так,  например,  для  того чтобы найти документы о странах
Бенелюкс, можно использовать логический оператор  OR  следующим
образом:

     Бельгия + Нидерланды + Люксембург

Заметьте, что порядок, в котором даны три страны безразличен.

     Логическое OR
           |---------|
           | Water   |
           |    |----------|
           |    |    |     |
           |----|----|     |           water + soil
                |  Soil    |
                |----------|


     Логическое AND
          |----------|
          |  Water   |
          |     |----------|
          |     |    |     |          water * soil
          |-----|----|     |
                |  Soil    |
                |----------|

     Логическое NOT
          |----------|
          |  Water   |
          |     |----------|
          |     |    |     |          water ^ soil
          |-----|----|     |
                |  Soil    |
                |----------|

                        Рис.31: Основные поисковые операторы

3.6.3.2. Логическое AND

     Логическое AND - оператор пересечения классов. Результатом
логического AND между двумя классами является класс, содержащий
только элементы, совпадающие для этих классов.
     Так,  если  А  и В - два термина, представлющие два класса
документов, заиндексированных терминами А и  В  соответственно,
логическим  AND между этими двумя классами является класс доку-
ментов, заиндексированных одновременно обоими терминами А и В.
     Логическое AND, следовательно,  используется  для  сужения
поиска  путем  требования одновременного присутствия терминов и
будет, в общем случае, снижать  количество  найденных  записей.
Символ,  используемый для обозначения логической операции AND -
знак "*".
     Так, например, для того, чтобы найти документы о  диалого-
вых и поисковых информационных системах, можно использовать ло-
гический оператор AND следующим образом:

     on-line systems * information retrieval

     Отметьте,  что  порядок, в котором приведены термины, без-
различен.
     Результатом  логического  AND может быть пустой класс,т.е.
класс, не содержащий элементов. В этом случае при поиске не на-
ходится ни одной записи. В приведенном выше примере будет полу-
чен пустой класс, если ни одна запись в БД не содержит одновре-
менно оба термина: on-line systems и information retrieval.

3.6.3.3. Поисковые операторы уровня близости в поле

     Эти операторы  наиболее  ограничительный  тип  логического
оператора  AND и, практически, полезны для поиска по естествен-
ному языку.

     Операторами уровня поля и близости являются:

     (G) - то же поле (все повторения повторяющегося поля расс-
           матриваются как одно поле), например:

     water / (G) / soil (на этот запрос) будут найдены все  за-
писи, в которых и вода, и соль встречаются в одном поле.

     (F)  - то же поле или повторение в повторяющемся поле,нап-
ример:
     water / (F) / soil будут найдены все записи, в  которых  и
                      water,  и  soil  встречаются в одном поле
                      или, если поле повторяющееся, то в  одном
                      повторении повторяющегося поля ((G) и (F)
                      эквивалентны для неповторяющихся полей).

             . как (F), но с дополнительным ограничением: между  тер-
         минами  должно  быть  не более n слов минус 1, где n -
         количество точек. Например: А . В - между терминами не
         должно быть слов; А .. В - не более одного слова между
         А и В; А ... В - не более двух слов между А и В;
       $ как (F), но с дополнительным ограничением: между  тер-
         минами  должно быть точно n слов минус 1,где n - коли-
         чество знаков $.
      Например:
         А $ В  между А и В не должно быть слов.
         А $$ В  точно одно слово должно быть между А и В.
         А $$$ В  точно два слова должно быть между А и В.
         Отметим, что непосредственно до и после оператора дол-
жен быть пробел.

3.6.3.4. Логическое NOT

     Логическое NOT - оператор исключения  класса.  Результатом
логического NOТ между двумя классами является класс, содержащий
все  элементы первого класса, которые не совпадают с элементами
второго класса.
     Так, если А и В - два термина, представляющие  два  класса
документов,  заиндексированных А и В соответственно, логическим
NOT между А и В является  класс  документов,  заиндексированных
только  термином А, но не А и В или В. Символ, используемый для
обозначения логической операции NOT - знак ^ .
     Логическое NOT должно использоваться только в крайних слу-
чаях, поскольку оно может повлечь неадекватную потерю релевант-
ных документов.
     Например, поисковый запрос может относиться к документам о
группах, находящихся в невыгодном положении , исключая при этом
ссылки   на   детей,   находящихся   в   невыгодном   положении
(disadvanbaged  children).Можно  сформировать  запрос следующим
образом:

     disadvantaged group ^ disadvantaged children

     Это возможно, однако, для документов содержащих  раздел  о
детях,  находящихся в невыгодном положении. Эти документы будут
опущены,если сформировать запрос так, как указано выше.
     Отметим далее, что операция NOT, в отличие  от  логических
операций AND и OR, не дает тех же результатов при инверсии опе-
рандов.  Так,  А  ^ В не то же самое, что В ^ А (за исключением
частного случая, когда А и В представляют один и тот же  класс;
в этом случае результатом этой логической операции будет пустой
класс).

3.6.4. Синтаксис поисковых выражений

     Вы  можете  формировать  сложные поисковые выражения путем
комбинирования двух или более поисковых терминов с помощью  по-
исковых операторов, описанных выше.
     Как  в обычной алгебре, вы можете применять скобки для из-
менения порядка выполнения операций. При  вычислении  выражений
принят следующий приоритет операторов:

         (высший)      $ и .
                        (F)
                        (G)
                       * и ^
         (низший)        +

     Если встречаются два или более операторов одного приорите-
та  в пределах одного уровня скобок, они вычисляются слева нап-
раво. Так, например, при вычислении следующего выражения

     А + В * С

CDS/ISIS сначала вычислит В * С, а затем логическое OR между  А
и (В * С). В то время как при вычислении

     (А + В) * С

она сначала вычислит А + В и затем логическое AND между (А + В)
и  С.  Вы можете вкладывать скобки, если нужно, как в следующем
примере:

     ((А + В) * С + (D + E) + F) ^ G

     При формировании поисковых выражений вы  должны  придержи-
ваться простых синтаксических правил:
     1) никакие два логические оператора не могут располагаться
рядом,  исключая  повторения  знаков  "." и "$" (которые не мо-
гут,однако, смешиваться);
     2) используемые скобки должны  быть  сбалансированы,  т.е.
количество  открыващихся  скобок  должно  быть равно количеству
закрывающихся скобок.

3.6.5. Квалификатор поля

     Вы можете использовать квалификатор для  определения  поля
или  группы полей, в которых вы хотите искать термины. Это осо-
бенно удобно для баз данных, которые содержат одинаковые данные
в нескольких полях.
     Квалификатор имеет следующий формат:

     поисковый термин/(t1, t2, t3, ...)

     где t1, t2, t3 - идентификаторы полей, в которых вы хотите
искать ваши термины.
     Идентификатор поля - это, обычно, метка поля. Однако могут
быть исключения. См. раздел 3.4.2.  "ТВП  для  инвертированного
файла" для уточнения понятия "идентификатор поля".
     Квалификаторы поля могут использоваться вместе с поисковы-
ми  операторами  для поиска по ограниченному количеству полей и
могут также применяться к поисковым терминам  усеченным  справа
или ANY терминам. Например, рассмотрим БД, в которой все терми-
ны выбираются из всех полей пословно.
     Простым  применением оператора AND можно найти записи, со-
держащие термины INTERNATIONAL, EXPERT и MEETING:

     internanional * expert * meeting

     Однако, количество записей, удовлетворяющих этому  запросу
может быть очень велико, поскольку каждое слово может быть най-
дено в любом из нескольких полей, например, заголовок, корпора-
ция, предмет и т.д. Путем использования (F) оператора

     international (F) expert (F) meeting

количество используемых записей может быть сокращено, но все же
вы не можете быть совершенно уверены в результате, т.к. термины
могут  появиться и в аннотации, и в заголовке, и в издательстве
и т.д.
     Однако, если вы добавите квалификатор /(62)

     international (F) expert (F) meeting / (62),

то будут найдены только те записи, которые имеют все эти терми-
ны в одном повторении поля 62 (отметьте, что  в  данном  случае
можно применять квалификатор только к одному термину).
     Если оператором является поисковый термин, усеченный спра-
ва,  или  ANY- термин, CDS/ISIS будет применять квалификатор ко
всем членам соответствующего множества.

     Так, например,

     ANY Benelux country / (64)

                    эквивалентно

     Belgium / (64) + Netherlands / (64) + Luxembourg / (64)

3.6.6. Развитие поисковой стратегии

     Основным блоком при построении поисковой формулировки  яв-
ляется  поисковое  выражение,  как определено выше. Каждый раз,
когда вы выбираете опцию S меню  xXGEN  программы  ISISRET,  вы
фактически создаете новое поисковое выражение. В ответ на поис-
ковое выражение CDS/ISIS:
     1)  назначает уникальный номер, называемый номером запроса
к поисковому выражению, которое вы ввели (если оно не  содержит
синтаксические ошибки);
     2)  выводит  на  экран  количество регистраций для каждого
термина в выражении, для каждого подвыражения.

     Так, например, если вы введете поисковое выражение

     (ITALY + FRANCE) * ART

CDS/ISIS ответит
     1   запрос 1: (ITALY + FRANCE) * ART
     2   P = 488 ITALY
     3   P = 1865 FRANCE
     4   T = 2192 - #2 : ITALY + FRANCE
     5   P = 84 ART
     6   T = 8 - #3 : ART * #2
     7   T = 8 - #1 : #3
(отметьте, что номера строк не появляются на экране, они  вклю-
чены  для  облегчения  ссылки  на каждую строку при объяснении,
приведенном ниже):
     Строка 1 содержит номер  запроса,  приписываемый  CDS/ISIS
               поисковому выражению (1 в данном случае).
     Строки  2-3 содержит количество регистраций (р=nnnnnn) для
                каждого термина, используемого на самом  низком
                уровне выражения.
     Строка  4 содержит количество записей (Т=2192), номер под-
               выражения  (#2)  и  выделено  само  подвыражение
               (ITALY+FRANCE).В данном примере БД содержит 2192
               записи,   содержащие  термин  ITALY  или  термин
               FRANCE, или оба.
     Строка 5 содержит количество  регистраций  (р=nnnnnn)  для
              каждого  термина,  используемого на более высоком
              уровне выражения, в данном случае, на самом высо-
              ком уровне.
     Строка 6 содержит количество записей (Т=8), номер подвыра-
              жения (#3:) и выделено второе подвыражение ART  +
              #2 (строка 4).
     Строка  7 содержит количество записей (Т=8), номер запроса
              (#1:) и номер подвыражения (#3) со строки 6.

     Если поисковое выражение содержит ANY-термин, то на  экран
будет  выдано  количество  регистраций всех поисковых терминов,
принадлежащих данному ANY- термину, и общее количество  регист-
раций.  Аналогично, если поисковое выражение содержит поисковый
термин, усеченный справа, то будут выведены на экран количество
регистраций для каждого отдельного  поискового  термина  также,
как общее количество регистраций для усеченного термина.
     Если вы используете недоступный поисковый термин, CDS/ISIS
установит количество его регистраций равным нулю и выдаст сооб-
щение:
               ** не найден **

     Как  было  упомянуто выше, CDS/ISIS присваивает уникальный
номер каждому поисковому выражению. Он также сохраняет все  по-
исковые выражения. В последующих поисковых выражениях вы можете
ссылаться  на ранее введенные с помощью номера запросы, присво-
енные CDS/ISIS, со знаком # перед ним.
     Эта  возможность  позволит  вам  развивать  свою поисковую
стратегию шаг за шагом. Разделение запроса  на  элементы  также
позволяет вам не только контролировать на каждом шаге количест-
во  найденных записей, но и выдавать на экран сами записи, так,
что вы можете проверить в любой момент логическую  правильность
поисковой  формулировки, в смысле релевантности найденных запи-
сей.
     Предположим,  например, что после вывода на экран записей,
найденных в ответ на запрос (ITALY + FRANCE) * ART вы обнаружи-
ли, что были найдены некоторые нерелевантные документы,  потому
что  они касаются conservation of monuments. Вы можете изменить
формулировку запроса следующим образом:

     #1 ^ conservation of monuments

     Ссылка на ранее определенное поисковое выражение называет-
ся обратной ссылкой. Заметьте, что к обратной ссылке можно при-
менять квалификатор поля. Например,

     # 1 / (64)

выберет среди записей, найденных в ответ на запрос  #1,  только
те, в которых поисковые термины найдены в поле 64.
     Для  формулировки  запросов  нет  набора правил. Вы будете
развивать свои навыки, приобретая опыт при работе с CDS/ISIS. В
общем, неопытному человеку не следует сразу использовать  слож-
ные поисковые выражения, а начать с простых, которые затем мож-
но  комбинировать для создания окончательной поисковой формули-
ровки. Если опять сослаться на приведенный выше пример, этот же
поисковый запрос может быть сформулирован за 4 шага:

     номер запроса #1: ART
     номер запроса #2: ITALY+FRANCE
     номер запроса #3: CONSERVATION OF MONUMENTS
     номер запроса #4: #1 * #2 ^ #3

3.6.7. Свободный поиск по тексту

     Этот метод позволяет вам специализировать поисковые требо-
вания по полям, которые не инвертируются и/или  специфицировать
условия,  которые вы не могли бы определить, пользуясь методом,
описанным выше, такие как сравнение полей или сравнение  число-
вых значений полей.
     Свободный поиск по тексту подключается при выборе опции  S
меню ISISRET . Чтобы отличать его от обычного поиска, перед бу-
левым выражением ставится знак "?":

     ? булево выражение или
     ? #n булево выражение,

где
     ? - идентифицирует свободный поиск по тексту
     #n  -  ограничивает свободный поиск по тексту результатами
          ранее введенного запроса (n - номер поискового запро-
          са, в котором может проводиться как поиск по инверти-
          рованному файлу, так и свободный поиск по тексту  или
          комбинация  обоих  типов  поиска); если n опущено, то
          свободный поиск по тексту  проводится  по  всей  базе
          данных.
     булево  выражение - булево выражение CDS/ISIS, как опреде-
          лено в разделе 3.2.6.3."Булевые выражения".

     В ответ на запрос свободного поиска CDS/ISIS вычислит  бу-
лево  выражение  для  каждой записи файла документов и построит
hit список записей, удовлетворяющих специфицированным  условиям
(т.е.  все записи, для которых булево выражение получает значе-
ние "Верно").

     Например:

           ? V24:  'Unesco' and val(V26^C) )=1986

найдет все записи, содержащие Unesco в поле 24 с датой публика-
ции (v26^c) больше или равно 1986. Следующее выражение:

           ? #2 (p(V24) or p(V29)) and V26^b : 'unesco'

найдет среди записей, найденных на запрос #2, только те записи,
которые  содержат  unesco в подполе поля 26 и при этом содержат
поле 24, поле 29 или оба поля вместе.
     Булево выражение может быть настолько  сложным,  насколько
хочет  пользователь,  но  оно не должно превышать границу в 250
символов (немногим более трех строк на экране). Как при  поиске
по  инвертированному файлу, при свободном поиске по тексту зап-
росу присваивается номер, который вы затем можете  использовать
в других поисковых выражениях.
     Отметьте, что хотя выражения при поиске по инвертированно-
му  файлу  и  свободном поиске по тексту не могут смешиваться в
одном выражении, однако можно, используя обратную ссылку,  ком-
бинировать любое количество выражений в отдельном поисковом вы-
ражении, например:

     запрос 1     water * soil
     запрос 2     ? # 1 val(v26^c) )1985
     запрос 3     ANY LATIN AMERICA
     запрос 4     #2 * #3

     Поскольку CDS/ISIS должна читать каждую запись файла доку-
ментов, чтобы проверить удовлетворяются ли условия, время обра-
ботки  запроса  по  свободному поиску может быть очень большим,
особенно если запрос применяется ко всей базе данных.
     CDS/ISIS информирует вас о процессе  обработки  с  помощью
четырех окон, показываемых на экране, так что вы можете следить
за процессом поиска.
     Рис.32  показывает, как выглядит экран во время свободного
поиска по тексту.
     Окна помечены следующим образом:

     MFN - показывает номер обрабатываемой записи  файла  доку-
           ментов;
     Hits  -  показывает  текущее  количество найденных записей
            (оно возрастает на 1 каждый  раз,  когда  находится
            запись, удовлетворяющая булеву выражению);
       % - показывает текущую hit запись, т.е. процентное соот-
            ношение найденных записей, вычисленное в  отношении
            к обработанным записям;
     Зап - общее количество записей, которые должны быть  обра-
           ботаны.

   Вы можете в любое время прервать выполнение свободного поис-
ка по тексту нажатием любой клавиши, чтобы  обдумать  частичные
результаты. Затем вы можете продолжить либо прекратить поиск.

       _____________________________________________________________________
       I                                                                   I
       I                                                                   I
       I                                                                   I
       I        Запрос 1: ? v24: 'Unesco` and val(v26^c) )=1986            I
       I                                                                   I
       I  ____MFN____     ____Hits____     ______%______     _____Зап_____ I
       I  I         I     I          I     I           I     I           I I
       I  I         I     I          I     I           I     I           I I
       I  I         I     I          I     I           I     I           I I
       I  I_________I     I__________I     I___________I     I___________I I
       I                                                                   I
       I                                                                   I
       I        Нажмите любую клавишу для прерывания поиска                I       I                                                                   I
       I        Рис.32                                                     I
       I                                                                   I
       I___________________________________________________________________I


                      
                 


[К оглавлению]