"Анри Бертьен. Стандартный набор операторов языка REXX (для OS/2) " - читать интересную книгу автора

поскольку имена встроенных функций пишутся в верхнем регистре, то - во
избежание проблем при поиске вызываемого объекта - имя в строке символов
следует указывать В ВЕРХНЕМ РЕГИСТРЕ.
Вызванная подпрограмма, завершив свою работу, может возвратить
результат - так, как если бы она была вызвана в виде функции. Поскольку
формат оператора CALL не предусматривает возвращаемых данных, этот результат
присваивается специальной переменной RESULT - так, как если бы вызов был
осуществлён в виде следующего предложения:

Result=<имя>([выражение 1][,[выражение 2]] ... )

В случае, если вызываемая подпрограмма не возвращает никаких данных (то
есть в операторе RETURN или EXIT (в случае REXX-программы) не содержится
какого-либо выражения, значение переменной RESULT сбрасывается в состояние
неинициализированной переменной.
В общем случае интерпретатор не делает никаких различий между вызовом в
качестве функции и вызовом в качестве подпрограммы, но вызванная программа
всегда может определить, в каком качестве она вызвана. Например, в случае,
когда она написана на REXX, для этого можно воспользоваться оператором PARSE
SOURCE.
При вызове подпрограммы можно указывать до десяти строк входных
параметров (аргументов), если Вы используете интерпретатор CMS, до 20 - в
PC/DOS или в OS/2. Интерпретатор MSG не ограничивает количества аргументов,
но, ввиду ограничения длины самого оператора, вряд ли Вы сумеете указать
больше сотни аргументов. Аргументы отделяются друг от друга запятыми. Они
представляют собой выражения, вычисляемые по порядку слева направо.
Операторы ARG или PARSE ARG, равно как и встроенная функция ARG внутри
вызванной подпрограммы будут обращаться к этим аргументам (а не к тем,
которые были доступны в вызывающей программе). При желании все или некоторые
(в том числе - и не последние) аргументы в операторе CALL могут быть
опущены:

Call piter ,,,'net','swap panels' /* указаны только
4-й и 5-й аргументы */

Когда оператор CALL вызывает переход к подпрограмме с указанным именем,
используется точно такой же механизм поиска и интерфейс вызова, как и при
вызове функций. Порядок поиска описывается в разделе, посвященном разбору
функций; кроме того - в какой-то степени зависит от системы. Коротко его
можно представить следующим образом:
1. Внутренние подпрограммы (только если имя подпрограммы не указано в
кавычках.) Это последовательности операторов внутри самой программы на языке
REXX (внутри REXX-файла), которые начинаются с метки, соответствующей имени,
заданному в операторе CALL.
2. Встроенные подпрограммы. Это подпрограммы, встроенные в интерпретатор для
обеспечения различных функций. Они всегда возвращают строку символов,
содержащую результат выполнения вызванной функции (то есть, собственно,
являются функциями). (см. стр. 79).
3. Внешние подпрограммы. Вы можете сами написать и использовать
подпрограммы, которые являются внешними по отношению к интерпретатору и