PARSE
Инструкция PARSE используется для присваивания данных из различных источников одной или нескольким переменным в соответствии с правилами и шаблонами, описанными в разделе по разбору слов документа Язык процедур 2/REXX для OS/2. Справочник.
Если указан шаблон, то он представляет собой список символов, разделенных пробелами.
Если шаблон не указан, то переменные не назначаются, но при необходимости выполняется подготовка данных к разбору. Например, для PARSE PULL строка данных перемещается из текущей очереди данных; для PARSE LINEIN (и PARSE PULL, если текущая очередь пуста) строка выбирается из входного потока значений по умолчанию; для PARSE VALUE вычисляется выражение. Для PARSE VAR выбирается указанная переменная. Если эта переменная не имеет никакого значения, то устанавливается условие NOVALUE, если оно разрешено.
Если указан режим UPPER, то буквы в строке, которую нужно разобрать, сначала переводятся в прописные (например, строчные a-z в прописные A-Z). В противном случае при разборе слов не производится перевод строчных букв в прописные.
Данные, используемые для каждого из вариантов инструкции PARSE, приведены ниже:
PARSE ARG - Разбираются строки, которые передаются программе, подпрограмме или функции в качестве входного списка аргументов. Для получения более подробной информации смотрите описание инструкции ARG.
Прим. | Строки аргументов в процедуру REXX или внутреннюю программу могут также передаваться с помощью встроенной функции ARG. |
PARSE LINEIN - Разбирается следующая строка из входного потока значений по умолчанию. (Смотрите документ Язык процедур 2/REXX для OS/2. Справочник для получения сведений о формате входных данных REXX). PARSE LINEIN - это краткая форма следующей инструкции:
Если нет готовых доступных строк, то выполнение программы временно приостанавливается до тех пор, пока строка не завершится. Отметим, что инструкцию PARSE LINEIN нужно использовать только в том случае, когда необходим прямой доступ к входному потоку символов.
Обычный построчный диалог с пользователем лучше вести с помощью инструкций PULL или PARSE PULL.
Чтобы проверить, есть ли доступные строки во входном потоке значений по умолчанию, используйте встроенную функцию LINES.
PARSE PULL - Разбирается следующая строка из очереди. Если очередь пуста, то строки считываются с устройства ввода, определенного по умолчанию; обычно это пользовательская клавиатура. Вы можете добавить данные в начало или конец очереди, пользуясь инструкциями PUSH и QUEUE соответственно. Вы можете также определить количество строк в очереди на данный момент, используя встроенную функцию QUEUED. Очередь остается активной до тех пор, пока активен языковый процессор. Очередь может изменяться другими программами в операционной системе и может использоваться как средство взаимодействия между этими программами и процедурами REXX.
Прим. | Инструкции PULL и PARSE PULL сначала считывают данные из текущей очереди данных. Если очередь пуста, то считывание производится из входного потока, принятого по умолчанию, - STDIN (обычно это клавиатура). |
Исходная строка содержит символы OS/2, за которыми могут следовать COMMAND, FUNCTION или SUBROUTINE в зависимости от того, как была вызвана программа: как команда системы, как функция в выражении или с помощью инструкции CALL. Указанные символы предшествуют спецификации полного пути программного файла.
Поэтому разобранная строка могла бы быть выведена в следующем виде: OS/2 COMMAND C:\OS2\REXTRY.CMD
PARSE VALUE - Данные, которые должны быть разобраны, являются результатом вычисления выражения. Следует отметить, что WITH в данном контексте является вложенным ключевым словом и поэтому не может использоваться в качестве символа внутри выражения. Например: PARSE VALUE time() WITH hours ':' mins ':' secs
получает текущее время и разбивает его на составные части.
PARSE VAR имя - Разбирается значение переменной, указанной с помощью имени. Имя должно быть символом, действительным для определения имени переменной; т.е.
не может начинаться с точки или цифры. Заметим, что переменная имя не изменяется до тех пор, пока она не появится в шаблоне. Например: PARSE VAR string word1 string извлекает первое слово из string и помещает его в переменную word1, передавая остаток назад в string. Аналогично: PARSE UPPER VAR string word1 string перед тем, как разобрать данные, переводит буквы string из строчных в прописные.
PARSE VERSION - Разбирается информация, содержащая сведения о версии языка и дате языкового процессора. Она состоит из пяти слов (разделенных пробелами): сначала строка "REXXSAA", затем описание версии языка ("4.00")и, наконец, даты выпуска("13 июня 1989").
Прим.   | Информация PARSE VERSION должна разбираться на основе слов, а не на основе абсолютной позиции столбца . |