[Содержание_документа] [Конец_документа]

[Выше] [Начало_этой_части] [Конец_этой_части] [Далее]

===========================================

Глава 4 – Введение в Cache ObjectScript

В этой главе обсуждаются следующие темы:

 Элементы языка

 Языковые соглашения

 Шестнадцать важных элементов языка

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

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

Объектный синтаксис также включает поддержку для создания новых объектов и выполнения методов класса через конструкцию ##class.

Cache ObjectScript также поддерживает макрокоманды. Имеется набор предопределенных макрокоманд, которые можно использовать в программе, а также как механизм для создания пользовательских макрокоманд.

Элементы языка

В Cache ObjectScript имеются следующие элементы языка:

 Выражения

 Команды

 Функции

 Переменные

 Макрокоманды

 Операторы

 Объектный синтаксис

Выражения

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

Например, каждая из следующих строк – выражение:

"Woof, Woof" ; литеральное значение

16.3 ; литеральное значение

Person.Name ; свойство

Map.FindState(x,y) ; метод, возвращающий значение

$$SquareRoot(x) ; функция, возвращающая значение

12#7 ; выражения, приводимые к

; единственному значению

Команды

Команды – это основные инструкции языка, которые позволяют Cache выполнять определенные действия. Команды, как правило, состоят из одного или большего количества выражений, определяющих выполняемые командой операции. Однако, имеются случаи, когда команда не имеет вычисляемого выражения. Эти команды называются командами без аргумента.

Примеры некоторых команд см. "Команды".

Функции

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

Cache ObjectScript имеет два типа функций:

 Встроенные функции

 Внешние функции

Встроенные функции

Встроенные функции – это системные функции, которые нельзя изменять. В тексте программы они всегда начинаются с одного символа доллара ("$"). Подробное описание встроенных функций приведено в руководстве по языку Cache ObjectScript.

Примеры встроенных функций можно найти там же.

Внешние функции

Внешние функции – это функции, определяемые пользователем. Эти функции вызываются по имени функции, перед которым находятся два символа доллара ("$").

Например, если создать функцию по имени CubeIt, которая возводит в куб значение его параметра:

CubeIt(number)

Quit number*number*number

то выполнить функцию CubeIt можно так:

SET cubed=$$CubeIt(mynum)

Подробное описание внешних функций приведено в руководстве по языку Cache ObjectScript.

Переменные

В Cache ObjectScript переменные обращаются к данным, хранящимся в памяти или на физическом диске. Переменная определяет значение данных по ссылке на данные.

В Cache ObjectScript поддерживаются три типа переменных:

 Специальные переменные

 Структурированные системные переменные

 Переменные пользователя

Специальные переменные

Специальные переменные позволяют обращаться к определенной информации, хранимой в среде Cache (например, текущая дата и время). В основным, специальные переменные предназначены только для чтения, но некоторые могут использоваться подобно любым другим переменным Cache.

Специальные переменные всегда начинаются с символа доллара ("$").

Примеры специальных переменных см. "Специальные переменные".

Структурированные системные переменные

Структурированные системные переменные – это системные переменные, которые позволяют искать информацию о пользовательских данных на диске и в памяти. Структурированные системные переменные всегда начинаются с символа циркумфлекса, за которым следует символ доллара ("^$").

Подробное описание структурированных системных переменных приведено в руководстве по языку Cache ObjectScript.

Переменные пользователя

Подобно многим языкам программирования, Cache ObjectScript позволяет создавать переменные, связанные c определенным процессом, и переменные, которые определены для нескольких процессов Cache.

Переменные, связанные с одним процессом, могут начинаться с любого алфавитного символа, в то время как переменные, определенные для использования многими процессами, должны начинаться с символа циркумфлекса ("^").

Например, ^MaxVisits - общедоступная определяемая пользователем переменная, хранящая максимальное число свободных посещений офиса доктора.

Макрокоманды

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

Можно определять макросы в файлах включения (.INC файлы) и ссылаться на макросы в программе по их именам, которым предшествует три долларовых знака ("$$$Macroname"). Код, сохраненный в файле включения, заменяется на макровызов перед трансляцией.

Cache включает много встроенных макрокоманд. Некоторые общие макрокоманды используются для обработки ошибок и для сохранения данных.

Примеры макрокоманд приведены в руководстве по языку Cache ObjectScript.

Операторы

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

operator operand = expression

или

operand1 operator operand2 = expression

 

Cache ObjectScript поддерживает три типа операторов:

 Арифметические операторы

 Строковые операторы

 Логические операторы

Арифметические операторы

Арифметические операторы выполняют операции с числами и используются в Cache для определения числового значения выражения, изменения знака числового значения выражения и для выполнения основных арифметических операций (сложение, вычитание, умножение, деление и возведение в степень).

Строковые операторы

Строковые операторы управляют строковыми выражениями. Например, в Cache ObjectScript имеется оператор слияния (объединения) двух строк в одну – оператор конкатенации ("_").

Логические операторы

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

Cache ObjectScript использует логические операторы для сравнения числовых и строковых выражений. К операторам числового сравнения относятся:

 больше чем

 меньше чем

 больше чем или равно

 меньше чем или равно

К операторам сравнения строки относятся следующие:

 содержит

 проверка по образцу

 следует

 сортируется после

Проверка на "следует" или "сортируется после" выполняется в соответствии с таблицей символов ASCII.

Имеются также операторы, которые выполняют действия с любыми выражениями:

 равняется

 не

Объектный синтаксис

Объектный синтаксис используется для обращения к свойствам, методам, параметрам класса и к экземплярам класса.

Для повышения быстродействия желательно (но не обязательно) определить тип класса каждой ссылки, использующей инструкции #class или ##class().

#class(ClassName).ClassMethod() используется, чтобы определить класс, содержащий метод выполнения. #class используется, чтобы объявить тип класса при объявлении переменных. Можно также использовать #classcontext, чтобы определить активный тип класса для блока кода (программы). Эти блоки завершаются инструкцией #endclasscontext.

При использовании объектного синтаксиса, код не должен зависеть от порядка, в котором следуют параметры.

Обращение к свойствам

С помощью синтаксиса:

oref.Property

выполняется обращение к свойству Property объекта, упомянутого в OREF oref.

В зависимости от контекста, этот синтаксис вызывает метод oref.PropertyGet() или метод oref.PropertySet().

Например:

SET x=Inv.Total -> SET x=Inv.TotalGet()

SET Inv.Total=new -> SET %ok=Inv.TotalSet(new)

Если отменяется метод PropertyGet() или метод PropertySet(), то ссылка на свойство вызывает отмену метода.

Произойдет ошибка, если используется объектный синтаксис для обращения к несуществующему свойству.

Обращение к методам

С помощью синтаксиса:

oref.Method(arg1,arg2,...)

выполняется обращение к методу Method() объекта, упомянутого в OREF oref.

Например:

DO inv.Print()

DO inv.AddVAT(a,b+2)

Даже если метод не имеет никаких параметров, за его именем должны следовать скобки ("()").

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

##class(classname).ClassMethod(arg1,arg2,...)

Методы класса, в отличие от методов образца, не требуют OREF. Если ##class() объявлен для использования с методом класса, OREF может быть опущен. Например:

##class(Invoice).TotalInv()

может быть методом, который возвращает общее количество счетов.

Если метод класса вызывается через OREF, это называется полиморфизмом:

DO inv.TotalInv()

Возникает ошибка при использовании объектного синтаксиса при ссылке на несуществующий метод.

Если метод определен как возвращающий значение, и к нему неправильно обращаются, используя синтаксис DO, ошибки не происходит. Аналогично, если метод определен как не возвращающий значение, а к нему обращаются, используя синтаксис возврата результата, то это является ошибкой.

Каскадный объектный синтаксис

Объектный синтаксис можно использовать вместе со ссылкой на встраиваемые или ссылающимися объектами. Например:

pat.Doc.DocName

выполняет обращение к свойству DocName объекта Doctor, ссылающегося на Patient pat через его свойство DOC, в то время как:

pat.Doc.IsIn()

вызывает метод IsIn() объекта Doctor.

Такие отношения могут иметь произвольную цепочку; Pat.Doc.Office.City может определить город, где находится офис доктора пациента.

Относительный объектный синтаксис

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

METHOD AgeGet() {

RETURNTYPE=%Integer;

CODE = {

IF ..DOB="" QUIT ""

QUIT $H-..DOB\365

}

}

В рамках класса Invoice:

..Print()

Ссылка на метод Print() объекта Invoice.

..Num

Ссылка на свойство Num объекта Invoice.

..#XYZ

Ссылка на параметр XYZ класса объекта Invoice.

..Supplier.SupName

Ссылка на свойство SupName объекта, ссылающегося на свойство Supplier объекта Invoice.

 

Языковые соглашения

Символ начала строки

Каждая строка программы Cache ObjectScript должна начинаться с символа начала строки: пробела или знака табуляции.

Комментарии

Комментарии всегда начинаются с символа точка с запятой (";"). Как и все строки программы Cache ObjectScript, строка комментария должна начинаться с символа начала строки. Если комментарий находится не в начале строки программы, ему должен предшествовать по крайней мере один пробел. Комментарию, который следуют за командами без аргументов, должны предшествовать не менее двух пробелов. Комментарии всегда простираются до конца строки. Cache не поддерживает многостроковые комментарии.

Порядок выполнения операций

Cache ObjectScript имеет строгий "слева направо" порядок выполнения операций. В отличие от многих языков, Cache не выполняет оценку старшинства операции в зависимости от типа выполняемой операции.

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

Выражение

Значение

7-2*7-3

32

7-(2*7)-3

-10

7-2*(7-3)

20

Чувствительность к регистру и уникальность

Вообще, в Cache ObjectScript все имена (включая классы, свойства, методы, параметры класса и переменные экземпляра) чувствительны к регистру клавиатуры. Однако, в SQL и ActiveX (нечувствительны к регистру) не могут использоваться имена, отличающиеся регистром. Так, класс не может содержать и метод "Print", и метод "PRINT" (или, например, "PrInT").

Все команды, системные функции и системные переменные нечувствительны к регистру. Все модификаторы объявления, такие, как #classcontext, #class, также являются нечувствительными к регистру.

Не имеется никакого ограничения на длину имен, кроме того, что они должны быть уникальными в пределах их первых 24 символов.

Использование регистра в именах

Объекты Cache используют следующие соглашения для имен:

 Имя класса, метода, свойства и запроса может состоять из символов обоих регистров, но первый символ каждого слова или фразы должен быть прописной буквой, типа IsValid() или DobIsValid().

 Стандартные, поставляемые в составе системы, имена переменных, типа %this и %val, являются строчными буквами.

 Имена параметров класса – все в верхнем регистре.

Имена и символ “%”

Имена должны состоять из алфавитно-цифровых символов. Исключение – символ "%", который может использоваться только как первый символ имени.

Cache используют символ "%", чтобы резервировать имена для поставляемых в составе системы классов, свойств, запросов и методов, типа %New() или %RegisteredObject. Параметры класса, однако, не начинаются с символа процента.

Когда пользователь присваивает имя классу, методу, свойству или параметру класса, оно не должно начинаться со знака процента ("%").

Символ "пробел" в текстах программ

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

 Команда и ее аргументы должны быть отделены друг от друга только одним пробелом.

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

 Оператор и связанные с ним операнды не должны отделяться друг от друга пробелами.

 

Шестнадцать важных элементов языка

Полный список и описание элементов языка Cache ObjectScript можно найти в руководстве по языку Cache ObjectScript. Следующие шестнадцать элементов дадут возможность пользователю начать писать программы.

Так как функции выполняют определенные характерные действия, важность функции определяется тем, что метод пользователя должен делать. Некоторые из главных областей функциональных возможностей, обеспечиваемых функциями, – дата, время, манипуляции с номерами и списками, символьные функции и функции $ZUTIL, которые выполняют системные операции и задачи управления.

Важные команды:

 Команда DO

 Команда SET

 Команда WRITE

 Команда READ

 Команда QUIT

 Команда NEW

 Команда IF

 Команда ELSE

 Команда FOR

Важные специальные переменные:

 Специальная переменная $HOROLOG

 Специальная переменная $ZTIMESTAMP

Важные операторы:

 Арифметические операторы ( +, -, =, *, /, \, **, # )

 Операторы числового сравнения ( >, <)

 Оператор слияния (конкатенации) строк ( _ )

 Оператор "Не" (Not) ( ` )

 Оператор проверки по шаблону (по образцу) ( ? )

Команды

Все обычные задачи выполняются с помощью команд. За именем команды может следовать двоеточие (":") и выражение. Это выражение называется постусловным выражением. Если логическая оценка постусловного выражения – Истина, команда выполняется. Если логическое значение постусловного выражения – Ложь, команда не выполняется и управление передается следующей команде или другому элементу языка.

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

 Команда DO

 Команда SET

 Команда WRITE

 Команда READ

 Команда QUIT

 Команда NEW

 Команда IF

 Команда ELSE

 Команда FOR

Команда DO

Команда DO выполняет инструкцию, которая следует за командой. Если метод не возвращает значение или, если не нужно перехватывать возвращаемое значение, можно использовать команду DO для выполнения метода.

Например, чтобы выполнить метод Speak() класса Dog, используется следующая строка программы:

DO dogl.Speak()

где dogl – объектная ссылка на объект Dog.

Команда SET

Команда SET используется для присвоения значения переменным. Команда может назначить значение одной переменной или сразу нескольким переменным.

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

SET variable=expression

Чтобы присвоить значение сразу нескольким переменным, используют такую конструкцию:

SET (variable1,variable2,...,variablen)=expression

Например, чтобы установить значение свойства Gender экземпляра класса Person используют следующий код:

SET per.Gender="Female"

где per – объектная ссылка к существующему экземпляру класса Person.

В то же самое время можно установить свойство Gender для нескольких объектов класса Person:

SET (per1.Gender, per2.Gender, per3.Gender)="Male"

где per1, per2, per3 – объектные ссылки к трем различным объектам класса Person.

Команда WRITE

Команда WRITE может использоваться с аргументом или без аргумента. Без аргумента команда WRITE отображает имена и значения всех локальных переменных, используя выбранное устройство вывода. Если за командой WRITE следует допустимое выражение, тогда значение этого выражения выводится на устройство вывода.

Например, чтобы вывести значение метода Speak() класса Dog, можно использовать такую запись:

WRITE dog1.Speak() -> "Woof, Woof"

Команда READ

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

READ format, string, variable

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

Следующие коды формата используются для управления вводом пользователя:

Код формата

Результат

!

Переход на новую строку.

#

Переход на следующую страницу. Для терминала это означает очистку текущего состояния экрана и переход в начало обновленного экрана.

?n

Позиционирование в колонку n текущей строки, где n – положительное целое выражение.

Если имени переменной variable предшествует звездочка ("*"), то будет выполнен ввод только одного символа. Если за именем переменной следует #n, то будет прочитано n символов.

Например, следующая команда просит конечного пользователя ввести число от 0 до 9 и сохраняет результат ввода в переменной num:

READ !,"Введите число от 0 до 9:",*num

Можно попросить конечного пользователя ввести число от 0 до 99:

READ !,"Введите число от 0 до 99:",num#2

Можно также предложить выполнить ввод без ограничения на диапозон вводимых чисел:

READ !,"Введите число:",num

о всех этих случаях ввод пользователя будет сохранен в переменной num.

Команда QUIT

Команда QUIT заканчивает процесс, начатый командой DO или FOR или завершает внешнюю функцию или метод.

Команда QUIT без аргумента заканчивает выполнение команд DO или FOR или функций и методов, которые не возвращают значение, и передает управление следующей строке программы.

Команда QUIT с аргументом доступна только для функций и методов и возвращает значение.

Например, метод Speak() класса Dog мог бы содержать следующий код:

QUIT "Woof, Woof"

Когда выполняетcя dog1.Speak(), возвращается "Woof, Woof":

WRITE dog1.Speak() -> "Woof, Woof"

Команда NEW

Команда NEW инициализирует переменные. С помощью этой команды нужно инициализировать все переменные, которые используются в методах.

Например, в коде метода Total() инициализируется переменная sum:

CODE

{

NEW sum

sum=x+y

QUIT sum

}

Команда IF

Команда IF определяет логическое значение (Истина или Ложь) выражения, следующего за именем команды. Если выражение равно Истина, выполняется часть строки, следующая за командой IF, иначе – управление передается следующей строке программы.

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

IF y=0 WRITE "Нельзя делить на 0"

Команда WRITE будет выполнена только тогда, когда y=0.

Команда ELSE

Команда ELSE выполняется, если выражение после последней команды IF принимает значение Ложь.

Например, можно использовать инструкции IF и ELSE, чтобы установить значение Slope:

IF x=0 SET Slope="Undef"

ELSE SET Slope=y/x

Команда FOR

Команда FOR выполняет цикл несколько раз в соответствии со значением переменной управления циклом. Эта переменная может увеличиваться или уменьшаться при выполнении цикла. Циклы могут быть бесконечными или могут иметь конечное значение для переменной управления. Код будет выполняться до тех пор, пока переменная управления удовлетворяет аргументам команды. Если переменная управления не равна конечному значению, выполняется выход из цикла. Переменная управления сохраняет значение последнего выполненного цикла.

Форма команды FOR:

FOR variable=startvalue:increment:endvalue

Например, цикл выполняется 4 раза:

FOR i=1:1:4 WRITE i

Если endvalue не определена, цикл продолжается бесконечно; выйти из цикла можно, используя команду QUIT. Например, следующий цикл будет выполняться до тех пор, пока пользователь на вопрос "Номер: " не ответит вводом пустой строки (нажатием только клавиши конца ввода):

FOR i=0:1 READ !, "Номер: ", num QUIT:num="" SET Sum=Sum+num

IF i=0 SET Average=0

ELSE SET Average=Sum/i

Специальные переменные

Специальные переменные – это переменные, автоматически поддерживаемые системой Cache. Две наиболее полезные специальные переменные:

 Специальная переменная $HOROLOG

 Специальная переменная $ZTIMESTAMP

Специальная переменная $HOROLOG

Специальная переменная $HOROLOG хранит локальную дату и время. $HOROLOG имеет следующий формат:

WRITE $HOROLOG -> date, time

где date – порядковый номер дня после 31 декабря 1840 года

time – число секунд, истекших с последней полуночи

Специальная переменная $ZTIMESTAMP

Специальная переменная $ZTIMESTAMP хранит текущую дату и время в формате UTC (Скоординированное Универсальное Время). $ZTIMESTAMP имеет следующий формат:

WRITE $ZTIMESTAMP -> date, time

где date – порядковый номер дня после 31 декабря 1840 года

time – число секунд, истекших с последней полуночи в формате UTC

Операторы

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

 Арифметические операторы ( +, -, =, *, /, \, **, # )

 Операторы числового сравнения ( >, <)

 Оператор слияния (конкатенации) строк ( _ )

 Оператор "Не" (Not) ( ` )

 Оператор проверки по шаблону (по образцу) ( ? )

Арифметические операторы ( +, -, =, *, /, \, **, # )

В Cache имеются операторы, которые выполняют арифметические операции:

Оператор

Пояснения

+

Предшествует одиночному операнду, интерпретируемому как числовое выражение. Если выражение не может быть оценено как число, его значение – 0. Когда используется с двумя операндами, выполняет их числовое сложение.

-

Предшествует одиночному операнду и, оценив его как числовое выражение, умножает это число на –1 (т.е. меняет знак числа). . Если выражение не может быть оценено как число, его значение – 0. Когда используется с двумя операндами, вычитает числовое значение второго операнда из числового значения первого операнда.

=

Сравнивает два операнда и возвращает Истина, если они равны, иначе – Ложь. Оператор может быть использован с числовыми или строковыми выражениями.

*

Выполняет умножение двух операндов. Если выражение не может быть оценено как число, его значение – 0, а результат – также 0.

/

Выполняет деление первого операнда на второй. Если второй операнд равен 0, генерируется ошибка.

\

Выполняет целочисленное деление первого операнда на второй. Если второй операнд равен 0, генерируется ошибка.

**

Возводит первый операнд в степень второго операнда.

#

Находит остаток от деления первого операнда на второй.

 

Операторы числового сравнения ( >, < )

В Cache есть операторы числового сравнения:

Оператор

Пояснения

<

Возвращает Истина, если числовое значение первого операнда меньше числового значения второго операнда. Если выражение не может быть оценено как число, его значение – 0.

>

Возвращает Истина, если числовое значение первого операнда больше числового значения второго операнда. Если выражение не может быть оценено как число, его значение – 0.

 

Оператор слияния (конкатенации) строк (_)

Оператор слияния (конкатенации) строк объединяет две строки в одну, состоящую из первой строки (первый операнд), за которой следует вторая строка (второй операнд).

Оператор "Не" (Not) ( ‘ )

Оператор "Не" дополняет операторы сравнения условием "Не" или меняет логическое значение Истина на Ложь и наоборот. Например, запись ‘> между двумя операндами означает необходимость проверки того, является ли первый операнд не больше (т.е. меньше или равен), чем второй операнд. Например, результат выполнения следующей строки – Истина:

WRITE 5`>7 -> True

Можно изменить на противоположное значение все логическое выражение, которое проверяет условие:

WRITE `(5>7) -> True

потому что 5>7 означает Ложь.

Оператор проверки по шаблону (по образцу) ( ? )

В Cache имеется механизм проверки информации по образцу. Общая форма сопоставления выражения с образцом – operand?patern.patern – может содержать любую строку и любое число символов управления образцом, определяющих критерии соответствия.

Следующие символы управления доступны для сопоставления с образцом:

Символ

Значение

A

Соответствие любой букве (в верхнем и нижнем регистрах)

C

Соответствие любому управляющему символу ASCII

E

Соответствие любому символу из набора символов ASCII

L

Соответствие любой строчной букве

N

Соответствие любой цифре

P

Соответствие любому символу пунктуации

U

Соответствие любой прописной букве

.

Определяет возможный диапазон символов управления образцом

Например,

"ABCabc"?1.2L

Результат – Ложь, так как операнд содержит три прописные и три строчные буквы, а образец устанавливает проверку на соответствие строки одной или двум строчным буквам в операнде.

Подробное описание оператора проверки по шаблону (по образцу) (?) приведено в руководстве по языку Cache ObjectScript.

===========================================

[Содержание_документа] [Конец_документа]

[Выше] [Начало_этой_части] [Конец_этой_части] [Далее]

===========================================

По вопросам поддержки любых продуктов InterSystems Corporation обращайтесь:

Россия 121019, Москва, Волхонка, 6, #14

Тел.: +7 095 203-4649

Факс: +7 095 956-8268

info@intsys.dol.ru

http://www.intersystems.ru

 

Copyright © 1999, InterSystems Corporation. Все права защищены.