Язык обобщённой автоматизации
Язык обобщённой автоматизации (англ. General Automation Language, также англ. Generalized Automation Language, GAL) — это название для двух различных языков программирования, используемых в области автоматизации. Первый вариант — General Automation Language, применяется для автоматизации устройств; второй — Generalized Automation Language (GAL), представляет собой специализированный высокоуровневый язык программирования для систем на базе MVS, таких как OS/390 и z/OS. В настоящее время версия языка для систем на базе MVS считается устаревшей (legacy)[1].
General Automation Language
Данный вариант Языка обобщённой автоматизации был разработан компанией iLED с целью создания единого языка для стандартизации автоматизации и управления устройствами в жилых (англ. Home automation, Умный дом) и коммерческих системах управления. Язык обеспечивает стандартизированный метод связи между управляемыми и управляющими устройствами. На каждом устройстве GAL преобразуется в специфический для данного устройства протокол и среду передачи данных. Пример — управление DVD-плеером посредством команды GAL: <MyHouse MyArea MyRoom MyDevice MyCommand> FredsHouse GroundFloor Lounge DVDplayer ON. Устройство, поддерживающее GAL, преобразует эту команду в конкретную IR-команду для включения DVD-плеера.
В современных версиях системы eZiControl язык GAL не упоминается, а для программирования используются «блоки управления» (Control Blocks) и стандартные промышленные протоколы, такие как Modbus и BACnet. Независимых авторитетных источников, подтверждающих широкое применение этого языка, не обнаружено[2].
Generalized Automation Language
Вариант Generalized Automation Language был разработан компанией Expans Systems для реализации языковых конструкций и возможностей, позволяющих программисту перехватывать системные события и планировать ответы на них — в частности, средствами продукта AutoMan. По принципу работы данный язык близок к языку BASIC: он позволяет системным программистам и операторам задавать логику обработки системных сообщений при их прохождении через окружения типа мультисистемной конфигурации (Sysplex). GAL также позволяет определять события, произошедшие ранее, путём перехвата сообщений Action Message Retention Facility (AMRF). У языка имеются встроенные конструкции для получения «возраста» (давности) сохранённого сообщения и принятия решений об его обработке в зависимости от этого. GAL можно использовать для создания новых команд системы, перехватывая любые вводимые с операторской консоли команды.
Язык поддерживает ключевые слова для автоуправления событиями во времени (например, имена дней недели, имена месяцев) — это позволяет автоматически выстраивать расписания задач в системе. Аналогично REXX, GAL одновременно реализует интерпретируемый и компилируемый режимы работы. Операторы GAL могут вводиться в интерпретатор в интерактивном режиме или использоваться для описания целых сценариев автоматизации (например, логики автономного управления системой), причём такие сценарии можно компилировать офлайн с помощью специальной программы-компилятора GALCOMP.
В GAL реализованы механизмы сравнения с помощью операторов IF, присваивание переменных с помощью оператора LET, вызов подпрограмм. При необходимости программист может использовать встроенный переход к языкам REXX и ассемблеру. О характере супер-высокоуровневого стиля говорит, например, команда EMAIL, позволяющая отправлять электронное письмо при возникновении события, требующего вмешательства специалиста. Например, если требуется отправить сообщение о возникшем событии:
MSG=XID999S
VAR &MSGTXT LEN 100
LET &MSGTXT = $$MSGTXT
EMAIL
SUBJECT '&MSGTXT'
'This is a problem that needs urgent attention'
В данном примере текст сообщения системы сохраняется в переменной и затем используется как тема письма. Содержимое письма определяется текстом, следующим за строкой темы.
GAL также поддерживает захват и подстановку текста и позволяет формулировать межсистемные (англ. IBM XCF) запросы простыми операторами IF, не заботясь о деталях внутреннего обмена. Необходимо лишь указать системы, которые должны быть проверены.
К примеру, чтобы проверить, выполняется ли определённая задача на партнёрской системе:
IF SYS=sysn JOB(jobname) ACTIVE DO . . . END
В настоящее время язык GAL и продукт AutoMan считаются устаревшими (legacy), а компания Expans Systems не ведёт активной деятельности[3]. Функциональность AutoMan была интегрирована в решения IBM для автоматизации мейнфреймов (IBM Z System Automation)[4]
Примечания
Литература
- GAL Explained. Exspans (24 августа 2015). Дата обращения: 8 июня 2017. Архивировано 27 апреля 2017 года.
- Features Description. — Exspans.
- Generalized Automation Language Compiler. — Exspans.