Главная » Статьи » Мои статьи |
Языки форматирования CDS/ISIS и ИРБИС
[u]Язык форматирования ISIS for DOS[/u] 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. " Строковые функции " ). Источник: http://www.nbuv.gov.ua/books/19/isis/ | |
Просмотров: 3681 | Комментарии: 11
| Теги: |
Всего комментариев: 2 | |||
| |||