~~~~~~~~~~~~~~~~~~~~ Arc.Ask3.Ru ~~~~~~~~~~~~~~~~~~~~~ 
Номер скриншота №:
✰ FB3DECCDBD196110A2DD819511B32E2B__1713707640 ✰
Заголовок документа оригинал.:
✰ Rexx - Wikipedia ✰
Заголовок документа перевод.:
✰ Рекс — Википедия ✰
Снимок документа находящегося по адресу (URL):
✰ https://en.wikipedia.org/wiki/REXX ✰
Адрес хранения снимка оригинал (URL):
✰ https://arc.ask3.ru/arc/aa/fb/2b/fb3deccdbd196110a2dd819511b32e2b.html ✰
Адрес хранения снимка перевод (URL):
✰ https://arc.ask3.ru/arc/aa/fb/2b/fb3deccdbd196110a2dd819511b32e2b__translat.html ✰
Дата и время сохранения документа:
✰ 21.06.2024 09:36:58 (GMT+3, MSK) ✰
Дата и время изменения документа (по данным источника):
✰ 21 April 2024, at 16:54 (UTC). ✰ 

~~~~~~~~~~~~~~~~~~~~~~ Ask3.Ru ~~~~~~~~~~~~~~~~~~~~~~ 
Сервисы Ask3.ru: 
 Архив документов (Снимки документов, в формате HTML, PDF, PNG - подписанные ЭЦП, доказывающие существование документа в момент подписи. Перевод сохраненных документов на русский язык.)https://arc.ask3.ruОтветы на вопросы (Сервис ответов на вопросы, в основном, научной направленности)https://ask3.ru/answer2questionТоварный сопоставитель (Сервис сравнения и выбора товаров) ✰✰
✰ https://ask3.ru/product2collationПартнерыhttps://comrades.ask3.ru


Совет. Чтобы искать на странице, нажмите Ctrl+F или ⌘-F (для MacOS) и введите запрос в поле поиска.
Arc.Ask3.ru: далее начало оригинального документа

Рекс — Википедия Jump to content

Рекс

Из Википедии, бесплатной энциклопедии
(Перенаправлено с REXX )

Рекс
Парадигма мультипарадигмальность : процедурная , структурированная
Разработано Майк Коулишоу
Разработчик Майк Коулишоу, IBM
Впервые появился 1979 год ; 45 лет назад ( 1979 )
Стабильная версия
АНСИ Х3.274 / 1996 ; 28 лет назад ( 1996 )
Дисциплина набора текста Динамический
Расширения имен файлов .cmd, .bat, .exec, .rexx, .rex, EXEC
Основные реализации
ВМ/СП Р3, [1] TSO/E V2, SAAREXX, ARexx , BREXX, Регина, [2] Персональный REXX, REXX/imc
Диалекты
NetRexx , Object REXX , теперь ooREXX , KEXX
Под влиянием
ПЛ/И , АЛГОЛ , ВЫПОЛНЕНИЕ , ВЫПОЛНЕНИЕ 2
Под влиянием
NetRexx , Объект REXX

Rexx ( Restructured Extended Executor ) — это язык программирования, который можно интерпретировать или компилировать . Он был разработан в IBM Майком Коулишоу . [3] [4] Это структурированный язык программирования высокого уровня , разработанный для простоты изучения и чтения. Собственные интерпретаторы Rexx и с открытым исходным кодом Rexx интерпретаторы существуют для широкого спектра вычислительных платформ; компиляторы существуют для мейнфреймов IBM . [5]

Rexx — полноценный язык, который можно использовать в качестве языка сценариев , макросов и языка разработки приложений. Он часто используется для обработки данных и текста и создания отчетов; это означает, что Rexx хорошо работает в программировании Common Gateway Interface (CGI) и используется для этой цели, как и более поздние языки, такие как Perl . Rexx является основным языком сценариев в некоторых операционных системах, например OS/2 , MVS , VM , AmigaOS , а также используется в качестве внутреннего языка макросов в некоторых других программах, таких как SPF/PC , KEDIT , THE и ZOC. эмулятор терминала . Кроме того, язык Rexx можно использовать для создания сценариев и макросов в любой программе, которая использует языки сценариев ActiveX узла сценариев Windows (например, VBScript и JScript), если установлен один из механизмов Rexx.

Rexx поставляется с VM/SP версии 3 или выше, TSO/E версии 2 или выше, OS/2 (1.3 и новее, где он официально называется « Process Language/2 »), AmigaOS версии 2 или выше, PC DOS ( 7.0 или 7.0 или выше) . 2000 ), АркаОС , [6] и Windows NT 4.0 (Resource Kit: Retina). Сценарии REXX для CMS используют общий тип файла EXEC с EXEC и EXEC2, а первая строка сценария определяет используемый интерпретатор. Скрипты REXX для MVS могут [а] быть признан квалификатором низкого уровня EXEC или может [б] распознаваться по контексту и первой строке. Сценарии REXX для OS/2 имеют расширение имени файла .cmd, как и другие языки сценариев, и в первой строке сценария указывается используемый интерпретатор. Макросы REXX для приложений, поддерживающих REXX, используют расширения, определяемые приложением. В конце 1980-х годов Rexx стал распространенным языком сценариев для архитектуры приложений IBM Systems , где он был переименован в «Язык процедур SAA REXX».

В программировании мэйнфреймов сценарий или команду Rexx иногда называют EXEC в честь типа файла CMS, используемого для EXEC . [7] ИСПОЛНИТЕЛЬ 2 [8] и сценарии REXX на CP/CMS и VM/370 через z/VM .

Особенности [ править ]

Rexx имеет следующие характеристики и особенности:

  • Простой синтаксис
  • Возможность маршрутизации команд в несколько сред
  • Возможность поддержки функций, процедур и команд, связанных с конкретной вызывающей средой.
  • Встроенный стек с возможностью взаимодействия со стеком хоста, если таковой имеется.
  • Небольшой набор инструкций, содержащий всего два десятка инструкций.
  • произвольной формы Синтаксис
  • Токены без учета регистра, включая имена переменных
  • символьной строки Основа
  • Динамическая типизация данных , без объявлений
  • Никаких зарезервированных ключевых слов , за исключением местного контекста.
  • Нет возможностей включения файлов
  • Произвольная числовая точность
  • Десятичная арифметика, с плавающей запятой
  • Богатый выбор встроенных функций, особенно строковой и текстовой обработки.
  • Автоматическое управление хранилищем
  • Защита от сбоев
  • Структуры данных, адресуемые по содержимому
  • Ассоциативные массивы
  • Прямой доступ к системным командам и средствам
  • Простая обработка ошибок, встроенная трассировка и отладчик.
  • Несколько искусственных ограничений
  • Упрощенные средства ввода-вывода
  • Нетрадиционные операторы
  • Лишь частично поддерживает параметры командной строки в стиле Unix, за исключением конкретных реализаций.
  • Не обеспечивает базового управления терминалом как часть языка, за исключением конкретных реализаций.
  • Не предоставляет общего способа включения функций и подпрограмм из внешних библиотек, за исключением конкретных реализаций.

У Рекса всего двадцать три, в основном самоочевидные инструкции (например, call, parse, и select) с минимальными требованиями к пунктуации и форматированию. По сути, это язык почти свободной формы , имеющий только один тип данных — строку символов; эта философия означает, что все данные видимы (символичны), а отладка и отслеживание упрощены.

Синтаксис Rexx похож на PL/I , но имеет меньше обозначений; это усложняет анализ (программой), но упрощает использование, за исключением случаев, когда привычки PL/I могут привести к неожиданностям. Одной из целей дизайна REXX был принцип наименьшего удивления . [9]

История [ править ]

до 1990 года [ править ]

Rexx был разработан и впервые реализован на языке ассемблера как собственный проект в период с 20 марта 1979 года по середину 1982 года Майком Коулишоу из IBM, первоначально как язык программирования сценариев для замены языков EXEC и EXEC 2 . [3] Он был разработан как язык макросов или сценариев для любой системы. Таким образом, Rexx считается предшественником Tcl и Python . Создатель Rexx также задумывал его как упрощенную и легкую для изучения версию языка программирования PL/I . Однако некоторые отличия от PL/I могут сбить с толку неосторожных.

Впервые он был описан публично на конференции SHARE 56 в Хьюстоне, штат Техас, в 1981 году. [10] где реакция клиентов, поддержанная Тедом Джонстоном из SLAC , привела к тому, что в 1982 году он стал поставляться как продукт IBM.

На протяжении многих лет IBM включала Rexx почти во все свои операционные системы ( VM/CMS , MVS TSO/E , IBM OS/400 , VSE/ESA , AIX , PC DOS и OS/2 ) и сделала версии доступными для Novell. NetWare , Windows , Java и Linux .

Первая версия, созданная не IBM, была написана для PC DOS Чарльзом Дейни в 1984/5 году. [4] и продается Mansfield Software Group (основанной Кевином Дж. Кирни в 1986 году). [3] Первая версия компилятора появилась в 1987 году и была написана для CMS Лундином и Вудраффом. [11] Другие версии также были разработаны для Atari , AmigaOS , Unix (множество вариантов), Solaris , DEC , Windows , Windows CE , Pocket PC , DOS , Palm OS , QNX , OS/2 , Linux , BeOS , EPOC32 / Symbian , AtheOS , ОпенВМС , [12] : стр.305 Apple Macintosh и Mac OS X. [13]

Версия Rexx для Amiga , названная ARexx , была включена в AmigaOS 2 и далее и была популярна для создания сценариев, а также для управления приложениями. Многие приложения Amiga имеют встроенный «порт ARexx», который позволяет управлять приложением из Rexx. Один единственный сценарий Rexx может даже переключаться между разными портами Rexx, чтобы управлять несколькими запущенными приложениями.

1990 по настоящее время [ править ]

В 1990 году Кэти Дэйгер из SLAC организовала первый независимый симпозиум Rexx, который привел к созданию Языковой ассоциации REXX. Симпозиумы проводятся ежегодно.

несколько бесплатных Доступно версий Rexx. В 1992 году появились два наиболее широко используемых порта с открытым исходным кодом : REXX/imc Яна Коллиера для Unix и Regin Андерса Кристенсена. [2] (позже принят Марком Хесслингом) для Windows и Unix. BREXX хорошо известен благодаря платформам WinCE и Pocket PC и был «обратно портирован» на VM/370 и MVS .

OS/2 имеет систему визуальной разработки от Watcom VX-REXX . Другим диалектом был VisPro REXX от Hockware.

Portable Rexx от Kilowatt и Personal Rexx от Quercus — это два интерпретатора Rexx, разработанные для DOS, которые также можно запускать под Windows с использованием командной строки. С середины 1990-х годов появились два новых варианта Rexx:

  • NetRexx : компилируется в Java байт-код через исходный код Java; он вообще не имеет зарезервированных ключевых слов и использует объектную модель Java и поэтому обычно не совместим с «классическим» Rexx.
  • Object REXX : объектно-ориентированная версия Rexx, совместимая с предыдущими версиями.

В 1996 году Американский национальный институт стандартов (ANSI) опубликовал стандарт для Rexx: ANSI X3.274–1996 «Информационные технологии – язык программирования REXX». [14] С 1985 года было опубликовано более двух десятков книг о Рексе.

20 марта 2004 года Rexx отметил свое 25-летие, которое отмечалось на 15-м Международном симпозиуме REXX Языковой ассоциации REXX в Бёблингене, Германия, в мае 2004 года.

12 октября 2004 года IBM объявила о своем плане выпустить Object REXX исходные коды реализации под лицензией Common Public License . Последние выпуски Object REXX содержат механизм сценариев ActiveX Windows Scripting Host (WSH), реализующий эту версию языка Rexx.

22 февраля 2005 г. было объявлено о первом публичном выпуске Open Object Rexx (ooRexx). Этот продукт содержит механизм сценариев WSH, который позволяет программировать операционную систему Windows и приложения с помощью Rexx таким же образом, как Visual Basic и JScript реализуются с помощью установки WSH по умолчанию, а также Perl , Tcl , Python сторонних механизмов сценариев .

По состоянию на январь 2017 г. REXX вошел в индекс TIOBE как один из пятидесяти языков, входящих в сотню лучших, не входящих в топ-50. [15]

В 2019 году 30-й симпозиум Ассоциации языков Rexx отметил 40-летие Rexx. Симпозиум проходил в Херсли, Англия, где Rexx был впервые разработан и реализован. [16]

Наборы инструментов [ править ]

Инструментарий RexxUtil — это пакет функций, доступный для большинства реализаций Rexx и большинства хостовых операционных систем. [17] [18] [19] RexxUtil — это пакет функций файлов и каталогов, оконного ввода-вывода и функций для доступа к системным службам, таким как WAIT и POST.

Rexx/Tk, набор инструментов для графики, который можно использовать в программах Rexx так же, как Tcl/Tk, широко доступен.

Для Windows была разработана среда разработки Rexx RxxxEd. [12] Был разработан RxSock для сетевого взаимодействия, а также другие дополнения и реализации Retina Rexx, а интерпретатор Rexx для командной строки Windows поставляется в большинстве Resource Kits для различных версий Windows и работает под всеми из них, а также ДОС.

Орфография и использование заглавных букв [ править ]

Первоначально язык назывался Rex ( Reformed Executor ); был добавлен дополнительный «X», чтобы избежать конфликтов с названиями других продуктов. Первоначально REX был полностью написан в верхнем регистре, потому что код мэйнфрейма был ориентирован на верхний регистр. В те дни принято было писать имена заглавными буквами, отчасти потому, что почти весь код тогда еще писался заглавными буквами. Для продукта это название было REXX, и в обоих изданиях книги Майка Коулишоу используются заглавные буквы. Расширение REstructured eXtended eXecutor было использовано для системного продукта в 1984 году. [9]

Синтаксис [ править ]

Цикл [ править ]

Структура управления циклом в Rexx начинается с DO и заканчивается ENDно бывает нескольких разновидностей. NetRexx использует ключевое слово LOOP вместо DO для цикла, а ooRexx обрабатывает LOOP и DO как эквивалент при зацикливании.

Условные циклы [ править ]

Rexx поддерживает множество традиционных циклов структурного программирования при проверке условия либо до ( do while) или после ( do until) список инструкций выполняется:

 делать   , пока   [  условие  ] 
  [  инструкции  ] 
  закончится 
 делать   до тех пор, пока   [  условие  ] 
  [  инструкции  ] 
  не закончится 

Повторяющиеся циклы [ править ]

Как и большинство языков, Rexx может выполнять цикл при увеличении индексной переменной и останавливаться при достижении предела:

 do   index   =   start   [  ограничить   ]   [  по   приращению  ]   [  для   подсчета  ] 
  [  инструкции  ] 
  конец 

Приращение может быть опущено и по умолчанию равно 1. Предел также может быть опущен, что заставляет цикл продолжаться вечно.

Rexx допускает счетные циклы, в которых выражение вычисляется в начале цикла, а инструкции внутри цикла выполняются определенное количество раз:

 сделать   выражение 
   [  инструкции  ] 
  конец 

Rexx может даже зацикливаться до тех пор, пока программа не завершится:

 делать   навсегда 
  [  инструкции  ] 
  конец 

Программа может выйти из текущего цикла с помощью leave инструкция, которая является обычным способом выхода из do forever петлю или можно закоротить ее с помощью iterate инструкция.

Комбинированные петли [ править ]

Как и PL/I , Rexx позволяет комбинировать в одном цикле как условные, так и повторяющиеся элементы: [20]

 do   index   =   start   [  ограничить   ]   [  по   приращению  ]   [  для   счетчика  ]   [  пока   условие  ] 
  [  инструкции  ] 
  конец 
 выполнить   выражение   [  до тех пор, пока   условие  ] 
  [  инструкции  ] 
  не закончится 

Условные предложения [ править ]

Условия тестирования с IF:

 если   [  условие  ]   , то 
  выполните 
  [  инструкции  ] 
  до конца 
  , иначе 
  выполните 
  [  инструкции  ] 
  до конца 

The ELSE пункт является необязательным.

Для отдельных инструкций DO и END также можно опустить:

 если   [  условие  ]   то 
  [  инструкция  ] 
  еще 
  [  инструкция  ] 

Отступы не являются обязательными, но они помогают улучшить читаемость.

Тестирование на несколько условий [ править ]

SELECT Rexx — это структура CASE , полученная из ВЫБИРАТЬ; форма [с] ЛП Оператор ВЫБРАТЬ . Как и некоторые реализации конструкций CASE в других динамических языках, Rexx Предложения WHEN определяют полные условия, которые не обязательно должны быть связаны друг с другом. В этом отношении они больше похожи на каскадные наборы IF-THEN-ELSEIF-THEN-...-ELSE код, чем они похожи на C или Java оператор переключения .

 выберите 
  когда   [  условие  ]   , затем 
  [  инструкция  ]   или   NOP, 
  когда   [  условие  ]   , затем 
  выполните 
  [  инструкции  ]   или   NOP 
  , в 
  противном случае 
   [  инструкции  ]   или   NOP 
  конец 

The Инструкция NOP не выполняет «никаких операций» и используется, когда программист не хочет ничего делать в месте, где потребуются одна или несколько инструкций.

The Предложение OTHERWISE не является обязательным. Если он опущен и условия WHEN не выполняются, то возникает условие SYNTAX.

Простые переменные [ править ]

Переменные в Rexx не имеют типов и изначально оцениваются как их имена в верхнем регистре. Таким образом, тип переменной может меняться в зависимости от ее использования в программе:

 поздороваться   поздороваться   /* => ПРИВЕТ */ 
  привет   =   25 
  поздороваться   / *   => 25 */ 
  привет   =   5 + 3" 
  /   " поздороваться   * => сказать 5 + 3 */ 
  интерпретировать   привет   /* => 8 */ 
  передай   привет 
   поздороваться   /* => ПРИВЕТ   */ 

Составные переменные [ править ]

В отличие от многих других языков программирования, классический Rexx не имеет прямой поддержки массивов переменных, адресованных числовым индексом. Вместо этого он предоставляет составные переменные . [21] Составная переменная состоит из основы, за которой следует хвост. А .(точка) используется для соединения стебля с хвостом. Если используемые хвосты являются числовыми, легко добиться того же эффекта, что и массива.

 делаю   я   =   от 1   до   10 
  стебель  .   я   =   10   -   я 
   конец 

После этого существуют следующие переменные со следующими значениями: stem.1 = 9, stem.2 = 8, stem.3 = 7...

В отличие от массивов, индекс основной переменной не обязательно должен иметь целочисленное значение. Например, допустим следующий код:

 i   =   «понедельник» 
  основа  .   я   =   2 

В Rexx также можно установить значение по умолчанию для основы.

 корень  .    =   'Неизвестный' 
  ствол  .   1   =   «США» 
  основа  .   44   =   «Великобритания» 
  шток  .   33   =   'Франция' 

После этих заданий срок stem.3 будет производить 'Unknown'.

Весь стебель также можно удалить с помощью оператора DROP.

 отказаться    от голосования 

Это также приведет к удалению любого ранее установленного значения по умолчанию.

По соглашению (а не как часть языка) составное слово stem.0 часто используется для отслеживания количества элементов в основе, например, процедура добавления слова в список может быть закодирована следующим образом:

 add_word  :   процедура   предоставляет   словарь  . 
   анализировать   аргумент   w 
   n   =   словарь  .   0   +   1 
  словарь  .   п   =   ш 
   словарь  .   0   =   п 
   возвращаться 

Также возможно иметь несколько элементов в хвосте составной переменной. Например:

 m   =   'Июль' 
  d   =   15 
  y   =   2005 года 
  день  .   й  .   м  .   д   =   'Пятница' 

Для создания эффекта многомерного массива можно использовать несколько числовых элементов хвоста.

Функции, аналогичные составным переменным Rexx, встречаются во многих других языках (включая ассоциативные массивы в AWK , хэши в Perl и Hashtables в Java ). Большинство этих языков предоставляют инструкцию для перебора всех ключей (или хвостов в терминах Rexx) такой конструкции, но в классическом Rexx этого нет. Вместо этого необходимо сохранять вспомогательные списки хвостовых значений по мере необходимости. Например, в программе для подсчета слов можно использовать следующую процедуру для записи каждого появления слова.

 add_word  :   процедуры   выставлений   количество  .    список слов 
   разобрать   аргумент   w   . 
   считать  .   ш   =   количество  .   w   +   1   /* предположим, что количество.   было установлено в 0 */ 
  if   count  .   w   =   1   , тогда   список_слов   =   список_слов   w 
   возвращаться 

а потом позже:

 do   i   =   1   к   словам  (  word_list  ) 
  w   =   word  (  word_list  ,  i  ) 
  сказать   w   count  .   ш 
   конец 

За счет некоторой ясности можно объединить эти методы в одну основу:

 add_word  :   процедура   предоставляет   словарь  . 
   разобрать   аргумент   w   . 
   словарь  .   ш   =   словарь  .   w   +   1 
  , если   словарь  .   w   =   1   /* предполагаем словарь.   = 0 */ 
  затем   выполните 
  n   =   словарь  .   0  +  1 
  словарь  .   п   =   ш 
   словарь  .   0   =   п 
   конец 
  возврата 

и позже:

 сделать   я   =   1   в   словарь  .   0 
  ш   =   словарь  .   я 
   скажи   , что у меня   есть   словарь  .   ш 
   конец 

Rexx здесь не обеспечивает никакой страховки, поэтому, если одно из слов окажется на целое число меньше dictionary.0 эта техника таинственным образом потерпит неудачу.

Недавние реализации Rexx, включая IBM Object REXX и реализации с открытым исходным кодом, такие как ooRexx, включают новую языковую конструкцию , упрощающую итерацию по значению основы или по другому объекту коллекции, например массиву, таблице или списку.

  переборщил  я    ? 
   скажем,   '   -->'   я  .   я 
   конец 

В общем, составные переменные предоставляют механизм для создания практически любой структуры данных в Rexx. К ним относятся списки или простые массивы, n-мерные массивы, разреженные или плотные массивы, сбалансированные или несбалансированные деревья, записи и многое другое.

Инструкции по ключевым словам [ править ]

ПАРСИ [ править ]

The PARSEобучение особенно мощно; он сочетает в себе некоторые полезные функции обработки строк. Его синтаксис:

анализ   [  верхний  ]   источник   [  шаблон  ] 

где origin указывает источник:

  • arg (аргументы, в конце командной строки на верхнем уровне)
  • linein (стандартный ввод, например, клавиатура)
  • pull (очередь данных Rexx или стандартный ввод)
  • source (информация о том, как выполнялась программа)
  • value (выражение) with: ключевое слово with требуется, чтобы указать, где заканчивается выражение
  • var (Переменная)
  • version (номер версии/выпуска)

и шаблон может быть:

  • список переменных
  • разделители номеров столбцов
  • буквальные разделители

upperявляется необязательным; если указано, данные перед анализом будут преобразованы в верхний регистр.

Примеры [ править ]

Использование списка переменных в качестве шаблона

myVar   =   "Джон Смит" 
 анализировать   var   myVar   firstName   фамилия 
  скажите   «Имя:»   firstName 
  скажите    « Фамилия 
 

отображает следующее:

Имя: Джон 
 Фамилия: Смит 

Использование разделителя в качестве шаблона:

myVar   =   "Смит, Джон" 
 анализировать   var   myVar   LastName   ","   FirstName 
  скажите   «Имя:»   firstName 
  скажите    « Фамилия 
 

также отображает следующее:

Имя: Джон 
 Фамилия: Смит 

Использование разделителей номеров столбцов:

myVar   =   "(202) 123-1234" 
 анализировать   var   MyVar   2   AreaCode   5   7   SubNumber 
  скажите   «Код города:»   AreaCode 
  скажите   «Номер подписчика:»   SubNumber 
 

отображает следующее:

Код города: 202. 
 Номер абонента: 123-1234. 

Шаблон может использовать комбинацию переменных, буквенных разделителей и разделителей номеров столбцов.

ПЕРЕВОД [ править ]

Инструкция INTERPRET оценивает свой аргумент и рассматривает его значение как оператор Rexx. Иногда INTERPRET является наиболее понятным способом выполнения задачи, но он часто используется там, где возможен более понятный код, например, value().

Другие варианты использования INTERPRET — это арифметика произвольной точности Rexx (десятичная) (включая нечеткие сравнения), использование оператора PARSE с программными шаблонами, массивами с основой и разреженными массивами. [ как? ]

 /* демонстрируем INTERPRET с помощью Square(4) => 16 */ 
  X   =   'square' 
  интерпретируем   'say'   X   ||    '(4) ;   выход' 
  SQUARE  :   return   arg  (  1  )**  2 

Это отобразит 16 и выйдет. Поскольку содержимое переменных в Rexx представляет собой строки, включая рациональные числа с показателями степени и даже целые программы, Rexx предлагает интерпретировать строки как вычисленные выражения.

Эту функцию можно использовать для передачи функций в качестве параметров функции , например, для передачи SIN или COS в процедуру вычисления интегралов.

Rexx предлагает только базовые математические функции, такие как ABS, DIGITS, MAX, MIN, SIGN, RANDOM, а также полный набор шестнадцатеричных и двоичных преобразований с битовыми операциями. Более сложные функции, такие как SIN, были реализованы с нуля или получены из сторонних внешних библиотек . Некоторые внешние библиотеки, обычно реализованные на традиционных языках, не поддерживали повышенную точность.

Поддержка более поздних версий (неклассических) CALL variableконструкции. Вместе со встроенной функцией VALUE, CALL можно использовать вместо многих случаев INTERPRET. Это классическая программа:

 /* завершается вводом «exit» или чем-то подобным */ 
  do   навсегда   ;    интерпретировать   linein  ()   ;    конец 

Чуть более сложный «калькулятор Рекса»:

 X   =   'введите ПОКА, чтобы выйти', 
  делайте   до тех пор, пока   X   =   'ПОКА'   ;    интерпретировать   «сказать»   X   ;    потянуть   Х   ;    конец 

PULL это сокращение от parse upper pull. Так же, ARG это сокращение от parse upper arg.

Возможности инструкции INTERPRET имели и другие применения. Программный пакет Valor опирался на интерпретативные способности Rexx для реализации среды ООП . Другое применение было найдено в невыпущенном продукте Westinghouse под названием Time Machine , который смог полностью восстановиться после фатальной ошибки.

ЦИФРОВОЙ [ править ]

 скажем   digits  ()   fuzz  ()   form  ()   /* => 9 0 НАУЧНЫЙ */ 
  скажем   999999999  +  1   /* => 1.000000000E+9 */ 
  числовые   цифры   10   /* ограничено только доступной памятью */ 
  скажем   999999999  +  1   / * => 1000000000 */ 

  скажем   0,9999999999  =  1   /* => 0 (ложь) */ 
  numeric   fuzz   3 
  скажем   0,99999999  =  1   /* => 1 (истина) */ 
  скажем   0,99999999  ==  1   /* => 0 (ложь) */ 

  скажем   100  *  123456789   /* => 1.23456789E+10 */ 
  числовой   формы   разработка 
   скажем   100  *  123456789   /* => 12.34567890E+9 */ 

  скажем   53   //   7     /* => 4 (остальная часть деления)*/ 
  Рассчитывает 2 Вычисляет е
код
 числовые   цифры   50 
  n  =  2 
  r  =  1 
  делать   навсегда   /* метод Ньютона */ 
  rr  =(  n  /  r  +  r  )/  2 
  если   r  =  rr   , то   оставить 
  r  =  rr 
   в конце 
  скажите   "sqrt"   n   ' = '   r 
 
 числовые   цифры   50 
  e  =  2,5 
  f  =  0,5 
  do   n  =  3 
  f  =  f  /  n 
   ее  =  е  +  е 
   если   e  =  ee   , то   оставьте 
  e  =  ee 
   в конце 
  скажи   "е =   е  "
 
выход кврт 2 = 1,414213562373095048801688724209698078569671875377 е = 2,7182818284590452353602874713526624977572470936998

СИГНАЛ [ править ]

Команда SIGNAL предназначена для нештатных изменений в потоке управления (см. следующий раздел). Однако его можно использовать неправильно и обращаться с ним так же, как с оператором GOTO , встречающимся в других языках (хотя он не является строго эквивалентным, поскольку завершает циклы и другие конструкции). Это может привести к созданию трудночитаемого кода.

Обработка ошибок и исключения [ править ]

В Rexx можно перехватывать и обрабатывать ошибки и другие исключения, используя инструкцию SIGNAL. Существует семь системных состояний: ОШИБКА, ОТКАЗ, ОСТАНОВКА, НОВОЕ ЗНАЧЕНИЕ, НЕГОТОВО, ПОТЕРЯННЫЕ ЦИФРЫ и СИНТАКСИС. Обработку каждого из них можно включать и выключать в исходном коде по желанию.

Следующая программа будет работать до тех пор, пока не будет завершена пользователем:

 сигнал   об   остановке  ; 
   сделать   а   =   1 
	  сказать   а 
 	  do   100000   /* задержка */ 
	  end 
  end 
  приостановка  : 
  скажем   «Программа была остановлена ​​пользователем» 
  выход 

А signal on novalueоператор перехватывает использование неопределенных переменных, которые в противном случае получили бы собственное имя (в верхнем регистре) в качестве значения. Независимо от состояния NOVALUE условие, состояние переменной всегда можно проверить встроенной функцией SYMBOL возврат VAR для определенных переменных.

The VALUE функцию можно использовать для получения значения переменных без запуска NOVALUE условие, но его основная цель — читать и устанавливать переменные среды , аналогично POSIX. getenv и putenv.

Условия [ править ]

ERROR
Положительный RC от системной команды
FAILURE
Отрицательный RC для системной команды (например, команда не существует)
HALT
Аномальное завершение
NOVALUE
Была ссылка на неустановленную переменную
NOTREADY
Ошибка ввода или вывода (например, попытки чтения за пределами файла)
SYNTAX
Неверный синтаксис программы или какая-либо другая ошибка.
LOSTDIGITS
Значимые цифры потеряны (ANSI Rexx, нет во втором издании TRL)

Когда условие обрабатывается SIGNAL ON, SIGL и RCсистемные переменные можно проанализировать, чтобы понять ситуацию. RC содержит код ошибки Rexx, а SIGL содержит номер строки, в которой возникла ошибка.

Начиная с версии 4 Rexx, условия могут получать имена, а также есть CALL ONпостроить. Это удобно, если внешние функции не обязательно существуют:

 ChangeCodePage  :   процедура   /* защищает настройки СИГНАЛА */ 
  сигнализирует   об   синтаксиса   имени   ChangeCodePage  .   Ловушка 
   вернуть   SysQueryProcessCodePage  () 
  ChangeCodePage  .   Ловушка  :   return   1004   /* windows-1252 в OS/2 */ 

См. также [ править ]

Примечания [ править ]

  1. ^ Команда TSO EXEC с неполным именем набора данных и без опции CLIST или EXEC проверяет квалификатор нижнего уровня или EXEC.
  2. ^ Если первая строка сценария, полученного из SYSPROC, представляет собой комментарий, содержащий REXX, то он обрабатывается как REXX, а не CLIST. Сценарий, полученный из SYSEXEC, должен быть REXX.
  3. ^ Rexx не имеет эквивалента ВЫБРАТЬ ( выражение ); форма ВЫБОР.

Ссылки [ править ]

  1. ^ ИБМ (1999). «Справочник по REXX/VM» (PDF) . МАНМРК . Проверено 29 мая 2023 г.
  2. ^ Перейти обратно: а б Марк Хесслинг (25 октября 2012 г.). «Переводчик Регина Рекс» . Проект SourceForge regina-rexx . Проверено 10 февраля 2014 г.
  3. ^ Перейти обратно: а б с М. Ф. Коулишоу . «Краткая история IBM REXX» . ИБМ . Проверено 15 августа 2006 г.
  4. ^ Перейти обратно: а б Мелинда Вариан. «Симпозиум REXX, май 1995 г.» .
  5. ^ «Каталог всех документов (filter=rexx)» . IBM Библиотечный сервер . 2005. Архивировано из оригинала 15 февраля 2013 года . Проверено 10 февраля 2014 г.
  6. ^ «Включает ли ArcaOS поддержку REXX?» . Проверено 3 сентября 2020 г.
  7. ^ IBM Virtual Machine Facility /370: Руководство пользователя EXEC (PDF) (второе изд.). Международная корпорация бизнес-машин. Апрель 1975 г. GC20-1812-1.
  8. ^ Справочник EXEC 2 (PDF) (второе изд.). Международная корпорация бизнес-машин. Апрель 1982 г. с. 92. SC24-5219-1. Архивировано из оригинала (PDF) 2 апреля 2020 г. Проверено 28 марта 2019 г.
  9. ^ Перейти обратно: а б М. Ф. Коулишоу (1984). «Дизайн языка REXX» (PDF) . Системный журнал IBM (PDF) . 23 (4). IBM Research : 333. doi : 10.1147/sj.234.0326 . Проверено 23 января 2014 г. Может ли новая функция вызывать сильное удивление? Если функция случайно применяется пользователем неправильно и приводит к непредсказуемому результату, эта функция имеет высокий коэффициент неожиданности и, следовательно, нежелательна. Если необходимая функция имеет высокий коэффициент удивления, может потребоваться ее перепроектирование.
  10. ^ М. Ф. Коулишоу (18 февраля 1981 г.). «REX — командный язык программирования» . ДЕЛИТЬСЯ . Проверено 15 августа 2006 г.
  11. ^ Лундин, Ли; Вудрафф, Марк (23 апреля 1987 г.). «T/REXX, компилятор REXX для CMS» . Бюро авторских прав США (TXu000295377). Вашингтон, округ Колумбия: Независимая разведывательная корпорация. Архивировано из оригинала 3 марта 2016 года . Проверено 20 февраля 2010 г.
  12. ^ Перейти обратно: а б Говард Фосдик (2005). Справочник программиста Rexx . Издательство Уайли . п. 390. ИСБН  0-7645-7996-7 .
  13. ^ «Реализации Rexx» . РексЛ.А. Архивировано из оригинала 24 сентября 2006 года . Проверено 15 августа 2006 г.
  14. ^ Хотя ANSI INCITS 274-1996/AMD1-2000 (R2001) и ANSI INCITS 274-1996 (R2007) являются платными, черновой вариант можно скачать бесплатно: «Американский национальный стандарт информационных систем – язык программирования REXX» (PDF) . X3J18-199X.
  15. ^ «Следующие 50 языков программирования» . Индекс ТИОБЕ . tiobe.com. 2017. Архивировано из оригинала 19 января 2017 года . Проверено 10 января 2017 г.
  16. ^ «RexxLA — Расписание симпозиума» .
  17. ^ «Глава 8. Утилиты Rexx (RexxUtil)» . Откройте объект Рекс . Проверено 13 октября 2023 г.
  18. ^ «Советы и рекомендации по REXX: функции REXXUTIL» . EDM2: Электронный журнал разработчиков для OS/2 . Проверено 14 октября 2023 г.
  19. ^ «Переводчик Регина Рекс» . Сорсфордж . Проверено 14 октября 2023 г.
  20. ^ М. Ф. Коулишоу (1990). Язык Rexx - практический подход к программированию (2-е изд.). Прентис Холл . ISBN  0-13-780651-5 .
  21. ^ «Как кодировать массивы и другие структуры данных в Rexx» (PDF) .

Дальнейшее чтение [ править ]

  • Каллауэй, Меррилл. Поваренная книга ARexx: учебное руководство по языку ARexx на персональном компьютере Commodore Amiga . Уайтстоун, 1992. ISBN   978-0963277305 .
  • Каллауэй, Меррилл. Поваренная книга Rexx: учебное руководство по языку Rexx в OS/2 и Warp на персональном компьютере IBM . Уайтстоун, 1995. ISBN   0-9632773-4-0 .
  • Коулишоу, Майкл. Язык Rexx: практический подход к программированию . Прентис Холл, 1990. ISBN   0-13-780651-5 .
  • Коулишоу, Майкл. Язык NetRexx . Прентис Холл, 1997. ISBN   0-13-806332-X .
  • Дэйни, Чарльз. Программирование в REXX . МакГроу-Хилл, Техас, 1990 г. ISBN   0-07-015305-1 .
  • Эндер, Том. Объектно-ориентированное программирование с помощью Rexx . Джон Уайли и сыновья, 1997. ISBN   0-471-11844-3 .
  • Фосдик, Ховард. Справочник программиста Rexx . Вили/Рокс, 2005. ISBN   0-7645-7996-7 .
  • Гарджуло, Габриэль. REXX с функциями OS/2, TSO и CMS . MVS Training, 1999 г. (третье издание, 2004 г.). ISBN   1-892559-03-X .
  • Голдберг, Габриэль и Смит, Филип Х. Справочник по Рексу . МакГроу-Хилл, Техас, 1992 г. ISBN   0-07-023682-8 .
  • Горан, Ричард К. Сводный справочник по REXX . CFS Nevada, Inc., 1997. ISBN   0-9639854-3-4 .
  • Красные книги IBM. Реализация поддержки Rexx в Sdsf . Верванте, 2007. ISBN   0-7384-8914-X .
  • Кизель, Питер К. Рекс: Передовые методы для программистов . МакГроу-Хилл, Техас, 1992 г. ISBN   0-07-034600-3 .
  • Марко, Лу Разработка ISPF/REXX для опытных программистов . Книги CBM, 1995. ISBN   1-878956-50-7
  • О'Хара, Роберт П. и Гомберг, Дэвид Роос. Современное программирование с использованием Rexx . Прентис Холл, 1988 год. ISBN   0-13-597329-5 .
  • Радд, Энтони С. «Практическое использование TSO REXX». Креатеспейс, 2012. ISBN   978-1475097559 .
  • Шиндлер, Уильям. Спускаясь на Землю, Рекс . Идеальное нишевое программное обеспечение, 2000. ISBN   0-9677590-0-5 .

Внешние ссылки [ править ]

Arc.Ask3.Ru: конец оригинального документа.
Arc.Ask3.Ru
Номер скриншота №: FB3DECCDBD196110A2DD819511B32E2B__1713707640
URL1:https://en.wikipedia.org/wiki/REXX
Заголовок, (Title) документа по адресу, URL1:
Rexx - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть, любые претензии не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, денежную единицу можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)