第十九章 ObjectScript - 执行例程
执行例程
执行例程时,使用DO
命令,如下所示:
do ^routinename
要执行一个过程、函数或子程序(不访问其返回值),可以使用以下命令:
do label^routinename
或
do label^routinename(arguments)
要执行过程、函数或子例程并引用其返回值,可以使用$$label^routinename
或$$label^routinename
(参数)形式的表达式。例如:
set myvariable=$$label^routinename(arguments)
在所有情况下,如果标签位于同一个例程中,则可以省略插入符号和例程名称。例如:
do label
do label(arguments)
set myvariable=$$label(arguments)
在所有情况下,传递的参数可以是文字值、表达式或变量名。
New 命令
IRIS
提供了另一种机制,使能够控制例程中变量的作用域:NEW
命令。此命令的参数是一个或多个变量名,以逗号分隔的列表表示。变量必须是公共变量,不能是Global
。
该命令为变量建立一个新的有限上下文(可能已经存在,也可能不存在)。例如,考虑下面的例程:
; demonew
; routine to demo NEW
NEW var2
set var1="abc"
set var2="def"
quit
运行完这个例程后,变量var1
可用,变量var2
不可用,如下例所示:
TESTNAMESPACE>do ^demonew
TESTNAMESPACE>write var1
abc
TESTNAMESPACE>write var2
write var2
^
<UNDEFINED> *var2
如果该变量在使用NEW
之前已经存在,那么在NEW
作用域结束后,该变量仍然存在,并保留其先前的值。例如,考虑下面的Terminal
会话,它使用前面定义的例程:
TESTNAMESPACE>set var2="hello world"
TESTNAMESPACE>do ^demonew
TESTNAMESPACE>write var2
hello world
网友评论