Математические Z-функции
Существует традиционный для общих систем программирования набор математических функций. К ним относятся:
§ тригонометрические функции $ZSIN, $ZCOS, $ZTAN и $ZCOT;
§ три соответствующие Arc-функции $ZARCSIN, $ZARCCOS, $ZARCTAN;
§ две логарифмические функции $ZLN (натуральный логарифм) и $ZLOG (десятичный логарифм);
§ экспоненциальная функция $ZEXP.
Представление даты и времени
В ObjectScript дата представляется в двух форматах – внутреннем и внешнем. Внутренний формат даты это целое число, начиная с 0 для даты 12/31/1840 до 2980013 для даты 12/31/9999.
Внешний формат это формат более привычный для нас, например:
15/12/2003.
Основу внутреннего представления даты и времени составляет специальная переменная $Horolog, состоящая из счетчика дней и счетчика секунд, отделенных друг от друга запятой. Первый счетчик показывает количество дней, начиная с пятницы, 31 декабря 1840 года (нулевой день), второй счетчик – количество секунд, начиная с полуночи.
USER> write $Horolog
59469,47554
Некоторые из функций дополнительно ссылаются на специальную переменную $ZTimeStamp, счетчик секунд которой расширен на доли секунд и которая имеет такой же формат, как $Horolog
$ZDate
Функция $ZDate преобразует дату из внутреннего формата во внешний формат.
>Write $ZDate(60000) 04/10/2005 |
В этой простейшей форме передается аргумент, интерпретируемый как $Ноrоlоg-формат. Показ даты осуществляется в американском формате ММ/ДД/ГГГГ с косой чертой в качестве разделителя.
Функция имеет 9 аргументов. Для нас существенными являются следующие аргументы:
1 аргумент – внутренний формат даты, это число, обязателен, все остальные аргументы не обязательны.
2 аргумент – формат возвращаемой даты. Некоторые значения формата: 1 – американский, 2 и 4 – европейский, 10 – порядковый номер дня недели, при этом 0 – это воскресенье, 1- понедельник и т.д.
3 аргумент – список месяцев. Например: « январь февраль март апрель май июнь июль август сентябрь октябрь ноябрь декабрь».
9 аргумент – подавляет вывод сообщения об ошибке.
Если значение 9 аргумента равно –1, то в случае неправильной даты функция возвращает –1 (минус 1).
В качестве второго аргумента может быть задано число, интерпретируемое как параметр формата.
Таблица. Выбор возможных форматов с помощью второго аргумента функции $ZDate.
2 аргумент | Формат данных | Пример | Замечания |
ДД Ммм [ГГ]ГГ | 10 Apr 2005 | ||
ММ/ДД/[ГГ]ГГ | 04/10/2005 | ||
ДД Ммм [ГГ]ГГ | 10 Apr 2005 | ||
ГГГГ-ММ-ДД | 2005-04-10 | ODBC-формат | |
ДД/ММ/[ГГ]ГГ | 10/04/2005 | Европейский формат | |
Ммм Д, [ГГ]ГГ | Apr 10, 2005 | ||
Ммм Д [ГГ]ГГ | Apr 10 2005 | ||
Ммм ДД [ГГ]ГГ | Apr102005 | ||
ГГГГММДД | Цифровой формат | ||
Месяц Д, [ГГ]ГГ | April10, 2005 |
Использование третьего аргумента представляет интерес в любом языке, отличном от английского. В тех случаях, когда второй аргумент задает формат, показывающий месяц в сокращенной или полной словесной форме, воспользовавшись третьим аргументом, наименование месяца можно перевести на любой язык.
>Write $ZDate(60000, 2, " января февраля марта ... декабря") 10 апреля 2005 |
Примеры:
SAMPLES> write !,$Zdate($Horolog, 2, " январь февраль март апрель май июнь июль август сентябрь октябрь ноябрь декабрь")
Октябрь 2003
SAMPLES>write $zdate($horolog)
11/24/2003
SAMPLES>write $zdate($horolog, 2)
Nov 2003
SAMPLES>write $zdate($horolog, 10)
Понедельник
USER>write $zdate(11111111111111111111, 1,,,,,,, -1)
-1
$ZDateH
Функция $ZDateH преобразует внешний формат даты во внутренний формат. Функция также имеет девять входных аргументов, из которых только первый является обязательным, он задает дату во внешнем формате. Все остальные аргументы имеют тот же смысл, что и для функции $ZDate.
По умолчанию, $ZDateH генерирует ошибку для неправильной даты, но ее девятый аргумент позволяет подавить вывод сообщения об ошибке.
В выражениях для задания внешнего представления даты может использоваться T(для текущей даты) и добавление или вычитание дней, как видно из примеров ниже.
SAMPLES >write $ZDateH("24/11/2003", 4)
SAMPLES >w $ZDateH("21/05/2002", 4)
SAMPLES>write $ ZDateH ("21/9/1999", 5,,,,,,, -1)
-1
SAMPLES>write $ ZDateH ("21 SEP", 5,,,,,,, -1)
SAMPLES>write $ ZDateH ("SEP 21 1998", 5,,,,,,, -1)
SAMPLES>write $ ZDateH ("T+12", 5,,,,,,, -1)
SAMPLES>write $ ZDateH ("MAT 3", 5,,,,,,, -1)
-1>
Write $ZDateH("4/10/2005")
В качестве третьего аргумента можно задать список месяцев на любом языке. $ZDateH (кратко $ZDH) — это обратная функция по отношению к $ZDate. Она возвращает счетчик дней в формате $Horolog для заданной в одном из выше описанных форматов даты.
О других имеющихся в Cache функциях преобразования времени и даты мы лишь упомянем.
$ZDateTime
$ZDT -подобна функции $ZDate, но с заданием времени в различных форматах
>Write $ZDT($H)
09/04/1998 10:13:19
$ZDateTimeH
$ZDTH -аналогична функции $ZDateH, однако создается счетчик секунд в формате $Horolog
>Write $ZDTH("Jun! " 13, 1997 15:19 ! ":23.539", 5)
57142,55163.539
$ZTime
$ZT-создает из счетчика секунд в формате $Horolog время в различных форматах на выбор
>Write $ZT(3600)
01:00:00
$ZTimeH
$ZTH -из времени создает счетчик секунд в формате $Horolog
>Write $ZTH("02:0!"0:00")
$ZF
$ZF позволяет осуществлять вызов программ или функций, написанных на языках, отличных от Cache ObjectScript.
ZF имеет при этом общий вид: $ZF(-1, "командная строка"[, аргументы])
где второй аргумент – ни что иное, как допустимая командная строка соответствующей операционной системы, а третий необязательный аргумент — список отдельных параметров, допустимых для этой команды.
$ZHex
Если аргумент является корректным десятичным значением, функция $ZHex превращает его в соответствующее шестнадцатеричное число. В ином случае аргумент рассматривается как строка, содержащая шестнадцатеричное значение, и производится попытка его преобразования в десятичное значение:
>Write $ZHex(6840) // выводит 1АВ8
>Write $ZHex(16_"H") // выводит 22
$ZISWIDE(str)
В операционных системах, поддерживающих 16-битные символы, функция $ZISWIDE(str) позволяет определить, содержит ли строка str 16-битные символы. Если да, то функция возвращает 1, в противном случае – 0.
Например, $ZISWIDE ($char (71, 300)) вернет 1.
$ZLAscii и $ZWAscii
$ZLAscii и $ZWAscii, а также обратные функции $ZLChar и $ZWChar аналогичны по своему действию двум функциям $Char и $Ascii.
Отличие состоит лишь в том, что функция ZLAscii оперирует с четырехбайтовыми, a $ZWAscii – с двухбайтовыми строками. Сокращения соответственно выглядят так: $ZLA, $ZWA, $ZLC и $ZWC.
Следующие примеры пояснят действие функций. Большей частью они применяются в программах перекодировки и обмена данными, когда дело доходит до преобразования двоичной информации в символы ASCII и наоборот.
>Write $ZWCHAR(25185)
Ab
>Write $ZWASCII("ab")
>Write $ZLCHAR(1684234849)
Abcd
>Write $ZLASCII("abcd")
$ZNAME(str, n)
Функция $ZNAME(str, n) проверяет, соответствует ли строка str соглашениям об именах Cache ObjectScript. Параметр n задает тип проверки, которую необходимо выполнить. Например, для проверки str на допустимое имя локальной переменной можно использовать значение параметра 0. Если в str содержится допустимое имя, функция вернет значение 1, в противном случае – 0. Следующая таблица содержит список допустимых значений n и тип выполняемой проверки.
Таблица Значения параметра функции SZNAME.
Значение параметра | Выполняемое действие |
Проверка на имя локальной переменной | |
Проверка на имя программы | |
Проверка на метку | |
Проверка на имя глобальной переменной | |
Проверка на имя класса | |
Проверка на имя метода | |
Проверка на имя атрибута |
$ZSearch
$ZSearch (сокращенно $ZSE) — это функция, которая специфична для Windows-версий Cache. $ZSearch возвращает полный путь к файлу, имя которого (или маска) передается в качестве аргумента функции.
$ZWPack(str) и $ZWBPack(str)
Функции $ZWPack(str) и $ZWBPack(str) преобразуют аргумент str в двухбайтовый символ. Поскольку str может и не содержать допустимый 16-битовый символ, необходимо для проверки использовать функцию $ZISWIDE.
$ZWPack
$ZWPack возвращает символ в так называемой little-endian форме, a $ZWBPack в big-endian форме. Функции, осуществляющие обратное преобразование –$ZWUNPack и $ZWBUNPack, соответственно.
Дата добавления: 2016-01-20; просмотров: 765;