Rexx - 方括号用法

时间:2014-07-31 11:05:30

标签: windows zos rexx

我是Rexx的新手,这里真的是基本的东西,我想快速获得数组的最后一个元素。

Open Object Rexx 4.2.0 for Windows:

test.0=2
test.1="foo"
test.2="bar"
say test.[test.0]

==>按需输出:

bar

我很容易猜到Open Object Rexx解释器正在运行。方括号不能与z / OS上的Rexx一起使用。

我想到的第一件事(没有RTFM):

say test.test.0
say test.(test.0)

==>输出不好:

TEST.TEST.0
    5 *-* say test.(test.0)
Error 16 running Test.REX line 5:  Label not found
Error 16.1:  Label "SYNTAX" not found

是否还有方括号的其他用法? 为什么来自C / Java / Python我会选择test.test.0或者测试。(test.0)就像一个假人?

无法在Rexx中找到有关方括号用法的更多信息,而不是:#Reginald's tail expression

所以在z / OS下我现在坚持:

temp=test.0
say test.temp

4 个答案:

答案 0 :(得分:3)

您已经找到了问题的答案。

大型机REXX(z / OS,z / VSE,z / VM)下的唯一方法与上面编码的一样:

temp=test.0
say test.temp

可以在Compound Symbols(V2.1链接)下的z / OS TSO / E REXX参考中找到有关理解REXX解释器正在执行的操作的最佳文档。它描述了为什么test.test.0不起作用,因为解释器如何处理该行;在这种情况下,它正在寻找一个干测试.test.0。

请注意,您可以编码

test.test.0 = 0

你会有一个有效的词干test.test.0(虽然在大多数情况下可能没用)。

链接中的下一个主题讨论了干变量,它也有很多有用的信息。

我强烈建议同时阅读z/OS TSO/E REXX Referencez/OS TSO/E REXX User's Guide(两个V2.1链接)。


答案 1 :(得分:2)

其他纯(非对象)Rexx替代品:

interpret "say test." || test.0

say value("test." || test.0)

答案 2 :(得分:0)

z / OS上的默认Rexx解释器是Classic Rexx,而不是OORexx。 OORexx has not been ported到z / OS。

答案 3 :(得分:0)

请记住(至少在z / OS中)'。''变量不会自动更新。 E.g:

list.1 = 17
list.2 = 12
say 'List.0 is' list.0

将给出'LIST.0',这是初始化变量的默认值(变量名称)。