Язык обобщённой автоматизации

Язык обобщённой автоматизации (англ. 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]

Примечания

  1. IBM Z System Automation. IBM. Дата обращения: 28 мая 2026.
  2. The Most Commonly Used Programming Languages in Industrial Automation. ESA Automation. Дата обращения: 28 мая 2026.
  3. Palo Alto Networks Completes Acquisition of Expanse. Palo Alto Networks. Дата обращения: 28 мая 2026.
  4. SA z/OS not trapping HASP373 and HASP395 messages are going to NETLOG. IBM Support. Дата обращения: 28 мая 2026.

Литература

Ссылки

  • AutoMan. Exspans System & Software Development. IBM. Дата обращения: 13 июня 2024.
  • AutoMate. Exspans System & Software Development. IBM. Дата обращения: 13 июня 2024.