Как внешние функции возвращают данные в Regina Rexx? - PullRequest
0 голосов
/ 11 января 2019

Я установил пакет Regina Rexx (версия 3.9.1) в Cygwin на Windows 10. Чтобы проверить это, я написал следующий код:

Вызывающий:

#!/usr/bin/rexx
x = 'callee'() ; say 'callee returned' x ; exit

вызываемая:

#!/usr/bin/rexx
say 'In callee' ; return 42

Когда я вызываю вызывающего, я ожидаю увидеть:

> ./caller
In callee
callee returned 42

И на самом деле, это именно то, что я делаю , когда оба execs находятся в моем текущем каталоге. Однако, когда я перемещаю их в другой каталог в $ PATH и вызываю вызывающую программу, я вижу:

> ./caller
caller returned In callee

Это было ... неожиданно. Если есть объяснение поведения в руководстве по Regina Rexx, я его не вижу. Я что-то пропустил? Спасибо.

1 Ответ

0 голосов
/ 11 января 2019

Оказывается, что Rexx execs можно использовать как внешние функции, только если они находятся в каталоге, указанном в переменной REGINA_MACROS, например:

export REGINA_MACROS="${HOME}/subdir:/maybe/somewhere/else"

Без этого вызываемая подпрограмма обрабатывается как еще один исполняемый файл. Возвращаемое значение - все строки stdout с разделителем пробела между ними. Любой вывод stderr отправляется на экран (или перенаправляется) как обычно.

...