Regina Rexx 中的外部函数 return 数据如何处理?

How do external functions return data in Regina Rexx?

我已经在 Windows10 上的 Cygwin 中安装了 Regina Rexx 包(版本 3.9.1)。为了测试它,我编写了以下代码:

来电者:

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

被叫方:

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

当我调用调用者时,我希望看到:

> ./caller
In callee
callee returned 42

事实上,当两个 exec 都在我的当前目录中时,这正是我看到的。但是,当我将它们移动到 $PATH 中的不同目录并调用调用者时,我看到:

> ./caller
caller returned In callee

这……出乎意料。如果 Regina Rexx 手册中有对行为的解释,我没有看到。我错过了什么吗?谢谢。

事实证明,仅当 Rexx exec 驻留在 REGINA_MACROS 变量中提到的目录中时,它们才可以用作外部函数,如下所示:

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

如果没有这个,被调用的例程将被视为另一个可执行文件。 return 值是所有标准输出行,它们之间有一个 space 分隔符。任何 stderr 输出都像往常一样发送到屏幕(或重定向)。