Доступны две формы GAL. Первая — это General Automation Language для автоматизации устройств, а вторая — Generalized Automation Language ( GAL ), представляющий собой язык программирования очень высокого уровня для систем на базе MVS, таких как OS/390 и z/OS .
Разработано iLED для предоставления общего языка для стандартизации автоматизации и управления устройствами в жилых (домашняя автоматизация) и коммерческих средах управления. Язык обеспечивает стандартизированный метод связи с/с контролируемыми/управляющими устройствами. На каждом устройстве GAL преобразуется в протокол и среду, специфичные для машины. Примером является управление DVD-плеером. Команда GAL будет <MyHouse MyArea MyRoom MyDevice MyCommand> FredsHouse GroundFloor Lounge DVDplayer ON
. Затем устройство GAL преобразует ее в дискретную ИК-команду для включения DVD-плеера. [1]
Разработанный Expans Systems для предоставления функций и конструкций, которые позволяют программисту перехватывать системные события и планировать ответы, как это реализовано через их продукт AutoMan . Немного похожий на BASIC, GAL позволяет системным программистам и операторам определять логику, применяемую к системным сообщениям, когда они проходят через многосистемную ( sysplex ) среду. GAL также позволяет программисту определять события, которые произошли в прошлом, перехватывая сообщения Action Message Retention Facility (AMRF). Язык имеет встроенные конструкции для получения возраста сохраненного сообщения и принятия решений о его судьбе в зависимости от возраста. GAL можно использовать для написания новых системных команд, перехватывая и интерпретируя все, что вводится в консоль оператора. GAL использует ключевые слова, такие как названия дней недели, названия месяцев и т. д., для автоматического планирования событий в системе. Как и REXX , GAL является как интерпретируемым языком, так и компилируемым языком. Операторы GAL можно вводить в интерпретатор «на лету» или можно заранее определить целые сценарии автоматизации, например, логику для определения автоматических операций системы, и компилировать их в автономном режиме с помощью программы-компилятора GALCOMP.
GAL реализует сравнение с помощью операторов IF, установку переменных, оператор LET и вызовы подпрограмм. GAL позволяет программисту входить в REXX и Assembler, где это необходимо. Очень высокоуровневая природа GAL иллюстрируется оператором EMAIL, который позволяет программисту отправлять оповещение по электронной почте при обнаружении события, требующего вмешательства человека. Предположим, что это событие сообщения требует отправки оповещения получателю по умолчанию:
MSG=XID999S VAR &MSGTXT ДЛИНА 100 ДАВАЙТЕ &MSGTXT = $$MSGTXT ЭЛЕКТРОННАЯ ПОЧТА ТЕМА '&MSGTXT' «Это проблема, требующая срочного внимания»
GAL использует возможности захвата и замены текста. В этом простом примере текст системного сообщения захватывается в переменную, а текст в этой переменной затем используется в качестве темы электронного письма. Сообщение в теле электронного письма — это текст в кавычках, следующий за темой.
GAL позволяет кросс-системным ( IBM XCF ) запросам выдаваться простыми операторами IF, без учета внутренних процессов, необходимых для выполнения кросс-системных коммуникаций. Это просто вопрос идентификации одной или нескольких систем, которые должны быть протестированы.
Например, чтобы проверить, выполняется ли в данный момент задание в партнерской системе:
ЕСЛИ SYS=sysn JOB(имя_задания) АКТИВНЫЙ ДЕЛАТЬ . . . КОНЕЦ