В данном разделе описываются такие элементы языка Informix-4GL, как константы, программные переменные, операции, выражения и операторы общего назначения.
Константы
В Informix-4GL допускаются строковые, числовые константы, константы даты и времени. Существуют три предопределенные константы: TRUE=1, FALSE=0, NOTFOUND=100.
Переменным и значениям полей таблиц допускается присваивание значения NULL. Значение NULL отлично от нуля для чисел и от пробелов для строк. Способ его кодирования считается неизвестным для программиста.
Строковая константа - последовательность символов, записанная на одной строке и заключенная в кавычки или апострофы. Для использования в строке двойных кавычек они должны быть удвоены, либо им должен предшествовать знак "\".
Числовые константы записываются в обычной для языков программирования форме, причем только по основанию 10. Допускается экспоненциальная нотация. Константы типа DATA, DATATIME, INTERVAL задаются как с помощью символьных строк, так и специальным образом.
15
654.89
12967.0e-3
"1.01.97"
"Для продолжения нажмите \"Д\""
Типы данных Informix-4GL. Программные переменные
В языке Informix-4GL имеются простые переменные, переменные типа запись и массивы. Для описания всех переменных служит оператор DEFINE, в котором задаются идентификаторы и соответствующие типы данных.
Informix-4GL поддерживает 7 различных представлений числовых данных, некоторые из которых обозначаются более чем одним ключевым словом.
| Типы данных | Описание и представление | ||
| DECIMAL[(m,n)], DEC[(m,n)], NUMERIC[(m,n)] | Десятичные числа с фиксированной точкой с m (<=32) значащими цифрами, из которых n (<=m) - после запятой | ||
| DECIMAL[(m)], DEC[(m)], NUMERIC[(m)] | Десятичные числа с плавающей точкой, лежащие в интервале от 10**(-128) до 10**128 (по умолчанию DECIMAL(16)) | ||
| MONEY[(m[,n])] | Денежные суммы с фиксированной точкой, соответствующие DECIMAL(m,n) | ||
| FLOAT[(n)],
DOUBLE PRECISION[(n)] |
Двоичные числа с плавающей точкой c точностью, соответствующей double в C | ||
| REAL, SMALLFLOAT | Двоичные числа с плавающей точкой c точностью, соответствующей float в C | ||
| INT, INTEGER | Целые числа в интервале от -2,147,483,647 до 2,147,483,647 аналогично integer в C | ||
| SMALLINT | Целые числа в интервале от -32,767 до 32,767 аналогично short в C |
| Типы данных | Описание и представление | |
| DATE | Календарные даты, хранимые в виде целых чисел дней, прошедших от 31 декабря 1899 года | |
| DATETIME | Моменты времени (дата и время дня), хранимые в виде десятичных чисел с плавающей точкой с нулевой дробной частью и различной точностью, зависящей от требований | |
| INTERVAL | Интервалы времени со знаком, прошедшие между двумя значениями DATETIME |
| Функция | Описание | |
| DAY(date-expr) | Возвращает номер дня месяца от переменных типа DATE или DATETIME | |
| MONTH(date-expr) | Возвращает номер месяца от переменных типа DATE или DATETIME | |
| WEEKDAY(date-expr) | Возвращает номер дня недели от переменных типа DATE или DATETIME | |
| EXTEND(date,quel) | Меняет точность DATE или DATETIME значений, возвращая значение DATETIME | |
| YEAR(date-expr) | Возвращает номер года от переменных типа DATE или DATETIME | |
| DATE(date-expr) | Преобразует целое или символьную строку в переменную типа DATE или DATETIME | |
| MDY(m,d,y) | Строит значение DATE из целочисленных значений месяца, дня, года | |
| TODAY | Строит значение DATE с текущим значением даты |
| Типы данных | Описание и представление | |
| CHAR(n), CHARACTER(n) | Строки фиксированной длины до 32,767 ASCII символов | |
| VARCHAR(m) | Строки переменной длины до 256 байт | |
| TEXT | Символьные строки до 2**31 байт |



| + | сложение | - | вычитание |
| * | умножение | / | деление |
| ** | возведение в степень | mod | деление по модулю |
| () | выделение приоритета | USING | форматирование |
| Операции и функция | Описание | |
| char-var, char-var | Конкатенация строк | |
| char-var[s,t] | Выделение подстроки значений CHAR или VARCHAR | |
| ASCII int-var | Преобразование ASCII-кода в CHAR(1) | |
| char-var CLIPPED | Удаление конечных пробелов | |
| value USING "format" | Получение символьного представления значения value в соответствии с форматом | |
| LENGTH(char-var) | Получение длины символьного выражения, исключая конечные пробелы |
| Операция rel_op | Описание | Тип expr | Примечание |
| = | Равно | Любой | |
| > | Больше | Любой | |
| >= | Больше или равно | Любой | |
| !=, <> | Не равно | Любой | |
| < | Меньше | Любой | |
| <= | Меньше или равно | Любой | |
| [NOT] LIKE | Вхождение | Символьный | |
| [NOT] MATCHES | Вхождение | Символьный | |
| IS [NOT] NULL | NULL-значение | Любой | expr2 отсутствует |

| LET | Значение, вычисленное в общем случае как результат выражения, присваиваемое простой программной переменной, элементу массива или записи. |
| INITIALIZE | Инициализация списка переменных или записи значением NULL или значениями, которые определены как значения по умолчанию для столбцов указанной таблицы. |

| СALL | Вызов функции, возвращающей нуль или более значений, указанных в конструкции RETURNING. |
| FOR | Заголовок цикла, заканчивающийся предложением END FOR и выполняющийся до тех пор, пока переменная цикла не достигнет предельного значения. |
| FOREACH | Заголовок цикла, заканчивающийся предложением END FOREACH и выполняющийся по одному разу для всех строк, возвращенных как результат запроса к базе данных. |
| WHILE | Заголовок цикла, заканчивающийся предложением END WHILE и выполняющийся до тех пор, пока условие, сформулированное в заголовке цикла, не станет ложным. |
| CONTINUE | Переход к следующей итерации цикла, к следующему пункту меню или к продолжению ввода. |
| EXIT | Преждевременный выход из предложений FOR, FOREACH, WHILE, MENU, INPUT, CASE или из всей программы. |
| IF | Заголовок условного оператора, заканчивающегося конструкцией END IF. |
| CASE | Заголовок оператора выбора, заканчивающегося конструкцией END CASE. |
| GOTO | Переход к заранее определенному месту программы на указанную метку. |
| LABEL | Определение метки программы для безусловного перехода. |
| SLEEP | Задержка выполнения программы на указанный промежуток времени. |
| RETURN | Возврат управления из функции, возможно, с возвратом списка выражений, число и типы которых совпадают с обозначенными в предложении RETURNING оператора CALL при вызове функции. |
| RUN | Запуск некоторой программы средствами операционной системы. |
| MAIN | Основной блок программы, на который передается управление при запуске и который заканчивается предложением END MAIN. |
| FUNCTION | Программный блок, содержащий последовательность операторов языка Informix-4GL, заканчивающийся предложением END FUNCTION и, возможно, возвращающий вызвавшей ее функции нуль или более значений посредством оператора RETURN. |
| REPORT | Блок, содержащий спецификации по выводу и форматированию отчета (см. гл. 4). |
