| Каталог | Индекс раздела |
| Оглавление | Вперед |
Язык процедур 2/REXX для OS/2* (именуемый в дальнейшем REXX) разработан как язык процедур Systems Application Architecture* для семейства продуктов типа Office Vision и операционной системы OS/2. Он предназначен для того, чтобы облегчить программирование в стадии кодирования и отладки. Высокое качество программирования может быть достигнуто при использовании общепринятых слов английского языка в синтаксисе языка процедур, что одинаково понятно как начинающему, так и опытному программисту.
REXX использует ряд мощных программных функций общего назначения и стандартные арифметические возможности наряду с командами OS/2 в простой конструкции. Существующие пакетные файлы могут быть преобразованы в процедуры REXX, обладающие большими функциональными возможностями.
Процедуры REXX выполняются только в сеансах OS/2, они должны иметь расширение файла .CMD и начинаться со строки комментария (/*....*/). Также, как и для пакетных файлов, чтобы выполнить процедуру REXX, необязательно указывать расширение .CMD.
Приведенная информация:
Настоящая оперативная информация по REXX предназначена для ознакомления с языком, получения сведений об
его основных особенностях и возможностях, а также для формирования представления о базовых принципах его
работы. Разделы от "Приступая к работе .." до "PMREXX" представляют собой краткий обзор, основанный на
информации об общих концепциях REXX, в то время как разделы "Инструкции" и "Функции" содержат
конкретные сведения обо всех инструкциях и функциях, которые являются частью языка. Для получения более
детальной информации по языку REXX обращайтесь к документу Язык процедур 2/REXX. Справочник или
Руководство пользователя.
Процедура REXX представляет собой программу, состоящую из набора заданий, заключенных в один обрабатывающий или пакетный файл.
Для написания программ могут быть использованы многие языки программирования. BASIC, который широко используется для базовых вычислений, имеет очень ограниченный набор правил, однако при написании сложных программ требует многих строк кода. Такие языки, как PL/1, COBOL, C, APL и PASCAL имеют более обширный набор правил, но при этом позволяют в нескольких строках закодировать большее число функций.
REXX сочетает простоту такого языка программирования, как BASIC, с возможностями более мощных языков, перечисленных выше. REXX легок в изучении, так как использует знакомые слова и понятия. При этом REXX позволяет решать как простые задачи, так и более сложные комплексные проблемы.
Чтобы начать работу с языком REXX, необходимо иметь:
Многие изучают язык программирования, просматривая примеры, поэтому настоящий обзор сопровождается примерами процедур REXX. Сначала просмотрите процедуру, затем изучите разъяснение к примерам, чтобы понять, что содержится в процедуре. При желании можно выполнить процедуру, чтобы увидеть, как она работает.
Напишем следующую процедуру REXX с помощью текстового редактора. Чтобы написать процедуру REXX с именем HELLO.CMD, выполните следующие инструкции:
1. Создайте текстовый файл с именем HELLO.CMD.
2. Наберите текст процедуры HELLO.CMD, приведенной ниже:
/* Введение в REXX */
SAY "Привет! Я - REXX"
SAY "Как Вас зовут?"
PULL who
IF who = ""
THEN
SAY "Привет, Незнакомец"
ELSE
SAY "Привет," who
EXIT
3. Сохраните файл и выйдите из текстового редактора.
Теперь все готово для того, чтобы выполнить эту процедуру REXX. Наберите имя процедуры в командном режиме OS/2 и нажмите клавишу ENTER.
hello
Когда процедура сделает паузу, Вы можете либо ввести свое имя, либо просто нажать клавишу ENTER, чтобы увидеть второй вариант ответа.
Далее приведено краткое описание каждой части процедуры HELLO.CMD :
/* Введение в REXX */ В этом комментарии указывается, что данная процедура выполняет. Строка комментария начинается с символа /* и заканчивается символом */. Все процедуры REXX должны начинаться с комментария в первой позиции первой строки файла. Строка комментария указывает процессору команд, что процедура, которую нужно выполнить, - это процедура REXX. По этому признаку процессор команд отличает ее от обычных пакетных файлов.
SAY "Привет! Я - REXX." SAY "Как Вас зовут?" С помощью этих инструкций слова, заключенные в двойные кавычки, выводятся на экран.
PULL who С помощью инструкции PULL читается ответ, введенный с клавиатуры, и помещается в память операционной системы. Who - это имя, присвоенное области памяти, куда помещается введенный пользователем ответ. В инструкции PULL можно использовать любое имя.
IF who = " " Инструкция IF проверяет условие. В этом примере проверяется, пусто ли поле who. Оно будет пустым, если пользователь набрал пробел, а затем нажал клавишу ENTER, либо просто нажал клавишу ENTER.
THEN Определяет, что в случае истинности проверяемого условия, должна выполняться инструкция, следующая за данной.
SAY "Привет, Незнакомец" Выводит на экран слова Привет, Незнакомец.
ELSE Определяет, что в случае ложности проверяемого условия должна выполняться инструкция, следующая за данной.
SAY "Привет," who Выводит на экран слово Привет с последующим отображением содержимого поля who.
EXIT Эта инструкция прекращает выполнение процедуры.
Если пользователь с именем Сергей выполнит процедуру HELLO, то протокол его работы будет иметь следующий вид:
[C:\]hello Привет! Я - REXX. Как Вас зовут? Сергей Привет, Сергей [C:\]
Если Сергей не введет свое имя, а наберет пробел, то протокол работы будет следующим:
[C:\]hello Привет! Я - REXX. Как Вас зовут? Привет, Незнакомец [C:\]
В этом разделе пользователю предоставляется возможность ознакомиться с некоторыми элементами, используемыми при написании процедур REXX. Не беспокойтесь том, что при программировании могут быть ошибки, так как в этом разделе информация излагается последовательно по шагам.
| Прим. | При написании процедур REXX рекомендуется для каждого элемента использовать отдельную строку. Если Вы хотите расположить элемент в нескольких строках, то поставьте запятую (,) в конце строки. Это обозначает, что элемент продолжается на следующей строке. Если же нужно поместить несколько элементов в одной строке, то разделите их точкой с запятой (;). |
В процедурах REXX могут быть любые или все перечисленные ниже элементы:
Все процедуры REXX должны начинаться комментарием, расположенным с первой позиции первой строки файла. Комментарий указывает процессору команд, что программа, которую нужно прочитать и выполнить, - это процедура REXX. Для обозначения комментария используются следующие символы:
/* Отмечает начало комментария
*/ Отмечает конец комментария
Когда интерпретатор команд находит символ /*, он прекращает интерпретацию; если же он встречает символ */, интерпретация начинается с информации, следующей за этим символом. Комментарий может содержать несколько слов, несколько строк или вообще не содержать информации, т.е. состоять из пустого элемента, как показано на следующих примерах:
/* Это комментарий. */или
SAY "'Будьте готовы!'" /* Этот комментарий расположен в той же строке, что и инструкция, и продолжается на следующей строке */
В начале процедуры REXX можно использовать комментарий типа /* */, однако гораздо предпочтительнее помещать в качестве комментария краткое описание процедуры.
Комментарий может отражать назначение данной процедуры, способ ввода информации, вывода результатов работы и т.д. Комментарии помогают быстрее разобраться в процедуре, когда Вы будете читать ее спустя некоторое время. Комментарии можно добавлять, улучшать или использовать в разных частях этой или другой процедуры.
При написании процедуры не забывайте, что кто-то будет ее использовать и, возможно, ее потребуется модифицировать. Поэтому добавление комментариев к инструкциям помогает понять каждый шаг процедуры. Если к тому же процедура используется достаточно редко, то комментарии позволяют самому разработчику быстро освежить в памяти ее назначение. Вообще говоря, процедура должна быть прокомментирована достаточно хорошо, чтобы быть понятной всем, кто будет ею пользоваться.
Строка представляет собой цепочку символов, заключенных в апострофы или кавычки. Можно использовать любые из этих символов, но только парами. Когда интерпретатор команд встречает один из этих символов, он прекращает интерпретацию и последующие символы оставляет в таком виде, в каком они были набраны, включая строчные и прописные буквы. Когда интерпретатор команд опять встречает такой же символ, он возобновляет интерпретацию. Например:
'Грандиознейшее Шоу на Планете' "Президент правит своей страной"
Оба сообщения - строки.
Чтобы использовать апостроф или кавычки внутри строки, для обрамления полной строки выберите другой символ. Например:
"Don't count your chickens before they hatch."или
'Do not count your "chickens" before they hatch.'
Внутри строки можно также использовать удвоенный символ (такого же типа, как и для обрамления полной строки). Например:
SAY "Mary said ""He's here."""
Эту инструкцию REXX интерпретирует следующим образом:
Mary said "He's here."
Инструкция приказывает системе выполнить какое-либо действие. Инструкции могут содержать одно или несколько присваиваний, меток или команд и, как правило, начинаются с новой строки. Далее приводятся краткие описания и примеры общеупотребительных инструкций.
Инструкция SAY - Формат инструкции SAY следующий:
SAY выражение
Выражение представляет собой какое-либо сообщение, которое Вы хотите вывести на экран, либо арифметическое выражение, которое должно быть вычислено, как, например, в следующем уравнении:
SAY 5 + 6 "= одиннадцать"
На экран будет выведено
11 = одиннадцать
Все символы в инструкции SAY, не заключенные в кавычки, преобразуются в прописные буквы или обрабатываются. Поэтому, если нужно вывести сообщение именно так, как оно набрано, то заключите его в кавычки.
Инструкции PULL и PARSE PULL - Обычная последовательность инструкций в процедуре - SAY для задания вопроса, а затем PULL для получения ответа. Ответ, введенный пользователем, помещается в память системы. Процедура, текст которой приведен ниже, выполнится некорректно, если инструкция PULL будет предшествовать инструкции SAY.
Вопрос: Что произойдет, если выполнится процедура NAME.CMD, текст которой приведен ниже?
/* Использование инструкции PULL */ SAY "Введите Ваше имя" PULL name /* Помещает ответ пользователя в память */ SAY "Привет" name EXIT
Ответ: NAME.CMD помещает введенное имя в память, а затем выводит это имя без кавычек в любом месте файла, где появится слово name.
Если Вы выполните процедуру NAME, то, возможно, заметите, что все буквы имени преобразуются в прописные. Чтобы сохранить символы в том виде, в каком они были набраны, используйте инструкцию PARSE PULL. Ниже приведен пример процедуры CHITCHAT.CMD, которая использует эту инструкцию:
/* Использование инструкции PARSE PULL */ SAY "Привет! Вы все еще там?" SAY "Я забыл Ваше имя. Как Вас зовут?" PARSE PULL name SAY name "Вы собираетесь на семинар к Ричарду?" PULL answer IF answer = "YES" THEN SAY "Хорошо. Увидимся там!" IF answer = "NO" THEN SAY "Как жаль, мы пропустим Ваше сообщение." EXIT
Инструкция PARSE PULL считывает все символы, введенные с клавиатуры так, как они были набраны, строчными или прописными. В приведенной процедуре имя выводится так, как Вы его ввели. Однако символы, помещенные в поле answer, преобразуются в прописные, поскольку при этом используется инструкция PULL. Это гарантирует, что какой бы Вы ответ ни ввели, yes, Yes или YES, будет выполнено одно и то же действие.
Инструкция EXIT - Инструкция EXIT прекращает выполнение процедуры. Эта инструкция должна использоваться в процедурах, содержащих подпрограммы. Несмотря на то, что инструкция EXIT необязательна для некоторых процедур, использование ее в конце каждой процедуры - признак хорошего стиля программирования.
Команда - это слово, фраза или аббревиатура, которые приказывают системе выполнить определенные действия. В языке REXX все, что не является инструкцией REXX, оператором присваивания или меткой, рассматривается как команда. Например, в процедурах REXX можно использовать такие команды OS/2, как COPY, BACKUP, PRINT, TYPE и т.д.
Ниже приводится пример использования команды OS/2 TYPE в процедуре REXX:
/* Использование команд в процедуре REXX */ TYPE hello.cmd EXIT
Это означает, что REXX инициирует выполнение команды TYPE.
Оператор присваивания сообщает системе, что цепочку символов нужно поместить в определенное поле в памяти операционной системы. Например:
Work = "Здание 021"строка Здание 021 запоминается как значение поля Work в памяти операционной системы. Так как поле Work может принимать различные значения (переопределяться по ходу выполнения) в различных частях процедуры, то его можно назвать переменной.
В качестве метки может выступать любое слово, за которым следует двоеточие (между словом и двоеточием не должно быть пробелов) и которое не заключено в кавычки. Например:
MYNAME:
Метка отмечает начало подпрограммы. Ниже приведен пример использования метки error внутри процедуры:
.
.
.
IF problem = 'yes' then SIGNAL error
.
.
.
error:
SAY 'Ошибка в данных'
EXIT
| Каталог | Индекс раздела |
| Оглавление | Вперед |