Object RSL
Последнее изменение этой страницы: 21:33, 8 июня 2016.
Парадигма |
мультипарадигменный: объектно-ориентированный, проблемно-ориентированный процедурный, событийный |
---|---|
Спроектировано | Сергей Кубрин |
Печать дисциплины | динамическая |
Портал: | http://www.softlab.ru/ |
Главная реализация | |
RS-Bank, InterBank, RS-Securities, RS-Payments |
RSL или Object RSL (R-Style Language) — проблемно-ориентированный, интерпретируемый, проприетарный язык программирования, разработанный компанией R-Style Softlab для использования в своих программных продуктах. Является макроязыком. Находится в свободном распространении и доступен для скачивания всем желающим.
Содержание
История
Язык RSL был создан в 1994 году. Первые дополнения появились лишь в 1997, а именно была добавлена возможность подключения С++ модулей и язык стал объектно-ориентированным. В 1998 году в язык добавили несколько стандартных классов. В 2003 году была добавлена поддержка модулей платформы .NET
Оболочка RSL
Оболочка RSL - среда разработки, включающая в себя:
- текстовый редактор
- отладчик
- интерпретатор / прекомпилятор
- редактор консольных диалоговых окон
- редактор структур БД Pervasive PSQL
- редактор графических отчётов Visual RSL
- SDK для создания подключаемых модулей на языке C DLM SDK
Пример программы
Пример программы для обработки сообщений диалогового окна:
macro EvenMacro(dlg, cmd, id, key)
/* Установим фокус ввода на поле Dat */
if (cmd == DLG_INIT)
SetFocus (dlg, “Dat”)
return CM_IGNORE;
/* Нажата клавиша F3 */
elif (cmd == DLG_KEY)
if (key == 317)
dlg.Int = 500;
dlg.Lab = “NewLabel”;
dlg.Str =
“Это новая строка”;
UpdateFields (dlg);
/* Нажата клавиша Enter */
elif ( (key == 13) and
(id == 6 ) )
SetFocus (dlg, 0);
return CM_IGNORE;
end;
/* Нажата экранная кнопка */
elif (cmd == DLG_BUTTON)
/* Выйти с сохранением */
if (trim (fldname (dlg, id)) == “~O~k”)
return CM_SAVE;
/* Выйти без сохранения */
elif (trim (fldname (dlg, id)) == “~C~ancel”)
return CM_CANCEL;
end;
end;
/* Проверка правильности ввода данных */
if (cmd == DLG_REMFOCUS)
if ( (id == 1) and (dlg.Int < 100) )
MsgBox (“Значение должно быть больше 100”);
return CM_CANCEL;
end;
elif (cmd == DLG_SETFOCUS)
message (“Focus installed”);
elif (cmd == DLG_SAVE)
if (dlg.Int < 100)
SetFocus (dlg, 1);
MsgBox (“Значение
должно быть |>100”));
return CM_CANCEL;
end;
elif (cmd == DLG_DESTROY)
message (“Dialog is destroyed”);
end;
return CM_DEFAULT;
end
Типы данных
Скалярные типы
Название типа | Ключевое слово для декларации | Код типа | Принимаемые значения |
---|---|---|---|
Целое число | Integer | V_INTEGER | От -2147483648 до 2147483647 |
Число с плавающей точкой | Double | V_DOUBLE | 15 значащих десятичных цифр |
Число с плавающей точкой длинное | DoubleL | V_DOUBLEL | 15 значащих десятичных цифр (аналог Double) |
Строка символов | String | V_STRING | |
Логическая величина | Bool | V_BOOL | True, False |
Дата | Date | V_DATE | |
Время | Time | V_TIME | |
Дата и время | DateTime | V_DTTM | |
Адрес памяти | MemAddr | V_MEMADDR | |
Ссылка на процедуру RSL | ProcRef | V_PROC | |
Ссылка на метод объекта RSL | MethodRef | V_R2M | |
Двоично-десятичное число с 4-мя знаками после запятой | Decimal | V_DECIMAL | 28 значащих цифр (аналог Numeric) |
Двоично-десятичное число с плавающей точкой. Используется для вещественных величин (денежных сумм, курсов валют, процентных ставок и пр.) | Numeric | V_NUMERIC | 28 значащих цифр |
Тип для денежных величин | Money | V_MONEY | 28 значащих цифр (аналог Numeric) |
Длинный тип для денежных величин | MoneyL | V_MONEYL | 28 значащих цифр(аналог Numeric) |
Специальное значение "Нулевое значение", или "Умалчиваемое значение" | SpecVal | Специальной константы нет. Код типа: 26 | OptVal или NullVal |
Специальное значение "Пусто" | ----- | V_UNDEF | Null |
Особенности:
- Лексемы типа DoubleL являются синонимом типа Double;
- Лексемы MoneyL являются синонимом Money;
- Лексемы Decimal являются синонимом Numeric.
Для внутреннего представления переменных типа Money используется тип Numeric. Эти типы, используемые в ранних версиях RSL, оставлены только для совместимости исходного кода на RSL.
Объектные типы
Объектные типы данных подразделяются на специализированные объекты и обобщённые объекты (GenObject). Обобщённые объекты создаются либо непосредственным вызовом конструктора RSL-класса, либо при помощи стандартной процедуры GenObject, принимающей имя RSL-класса в качестве строкового параметра. И конструктор, и процедура GenObect возвращают ссылку на созданный объект. В настоящее время специализированные объекты являются устаревшими. В новом коде рекомендуется использовать обобщённые объекты, реализованные на замену специализированных объектов.
Название типа | Ключевое слово для декларации | Код типа | Тип аналогичного обобщённого объекта |
Ссылка на специализированный объект "файл базы данных" | BtFileRef | V_FILE | TBfile |
Ссылка на специализированный объект "структура в памяти" | StrucRef | V_STRUC | TRecHandler |
Ссылка на специализированный объект "массив значений" | ArrayRef | V_ARRAY | TArray |
Ссылка на специализированный объект "текстовый файл" | TxtFileRef | V_TXTFILE | Нет |
Ссылка на специализированный объект "Файл dBase" | DbfFileRef | V_DBFFILE | Нет |
Ссылка на обобщённый объект RSL класса | Object для любого объектного типа, или <Имя RSL класс> | V_GENOBJ |
Ссылки
- Кубрин С. Object RSL — объектно-ориентированная версия языка RSL. — RS-Club, 1997. Архивировано из первоисточника 21 апреля 2015.
- R-Style Softlab: форум по RSL, исходники на RSL
- Домашняя страница одного из ведущих разработчиков Сергея Кубрина
- Byte Россия. Создание контейнеров элементов управления ActiveX
- Мир ПК. Visual RSL — объектно-ориентированный генератор отчётов
ISSN 2542-0356
Следуй за Полисом
Оставайся в курсе последних событий
Лицензия
Если не указано иное, содержание этой страницы доступно по лицензии Creative Commons «Attribution-NonCommercial-NoDerivatives» 4.0, а примеры кода – по лицензии Apache 2.0. Подробнее см. Условия использования.