人人可用的 Rexx
2008-11-10 08:28:32 来源:WEB开发网不是每一个字符串都是合法的 Rexx 符号 —— 为限制程序库中的关键字 —— 但是相对于大部分语言,Rexx 在符号命名方面非常自由。举例来说:
清单 8. 在 Rexx 中使用词干变量
$ cat stems.rexx
#!/usr/bin/rexx
foo.X_!1.bar = 1
foo.X_!1.23 = 2
foo.fop.fip = 3
foo.fop = 4
SAY foo.X_!1.bar # foo.X_!1.23 # foo.fop.fip # foo.fop # foo.fop.NOPE
$ ./stems.rexx
1 # 2 # 3 # 4 # FOO.FOP.NOPE
在这个例子中突出说明了几个特性。我们同时为词干及其复合变量赋值(举例来说, foo.fop 和 foo.fop.fip )。同时要注意,未定义的符号 foo.fop.nope 尽管没有赋值,但这样表示只是它本身的拼写。这使我们在大部分情况下可以不用去引用。在大部分 Rexx 上下文中,名称被规格化为大写的。
一个有用的技巧是为带句点的词干赋值,这个值将成为基于这个词干的复合名字的默认值。在下一个例子中,我们也会利用这一功能,将一个复合名的顺序编号的符号作为输出环境变量来 ADDRESS 。
清单 9. ls-3.rexx
#!/usr/bin/rexx
ls. = UNDEF
ADDRESS SYSTEM ls WITH OUTPUT STEM ls.
DO i=1
IF ls.i == UNDEF THEN LEAVE
SAY i || ") " || ls.i
END
当循环进行到某个没有被外部 ls 实用程序的输出所替换的复合变量名时,我们就会检测到“UNDEF”默认值并退出循环(不过,如果输出中可能包含那个字符串,会发生错误冲突)。
Rexx 还有一个错误处理系统,让您 SIGNAL 情况并适当地处理它们。不用再检查默认的复合值,您也可以捕获对未定义变量的访问。举例来说:
更多精彩
赞助商链接