第十七章 调用Callout Library函数 - 使用 $ZF(-3) 进行简单的库函数调用
使用 $ZF(-3)
进行简单的库函数调用
$ZF(-3)
函数用于加载 Callout
库并执行该库中的指定函数。如果只使用一个库,或者没有进行足够的调用来担心加载库的开销,则 $ZF(-3)
最有用。它允许通过指定库名称、函数名称和以逗号分隔的函数参数列表来调用任何可用的库函数:
result = $ZF(-3, library_name[, function_name[, arguments]])
如果先前调用 $ZF(-3)
尚未加载指定的库,则会加载指定的库。一次只能加载一个库。当后续 $ZF(-3)
调用指定不同的库时,旧库将被卸载,新库将替换它。只要后续 $ZF(-3)
调用指定相同的库,该库就会保持加载状态。加载库后,可以在后续调用中将库名称指定为空字符串 ("")
。
可以加载或卸载库而无需调用函数。要加载新库,只需指定库名称。要卸载当前库而不加载新库,请仅指定空字符串。无论哪种情况,$ZF(-3)
都会返回一个状态代码,指示加载或卸载是否成功。
以下 ObjectScript
代码从两个不同的库中调用两个不同的函数,然后卸载当前库:
使用$ZF(-3)
加载库和调用函数
// define Callout library paths
set libOne = "c:\intersystems\iris\bin\myfirstlibrary.dll"
set libTwo = "c:\intersystems\iris\bin\anotherlibrary.dll"
//load and call
SET result1=$ZF(-3,libOne,"FuncA",123) // loads libOne and calls FuncA
SET result2=$ZF(-3,"","FuncB","xyz") // calls FuncB from same library
//load, then call with null name
SET status=$ZF(-3,libTwo) // unloads libOne, loads libTwo
SET result1=$ZF(-3,"","FunctionOne","arg1")
SET result2=$ZF(-3,"","FunctionTwo","argA", "argB")
//unload
SET status=$ZF(-3,"") // unloads libTwo
- 为了方便起见,库名称被分配给字符串
libOne
和libTwo
。 - 第一次调用
$ZF(-3)
加载Callout
库libOne
并从该库调用函数FuncA
。 - 第二次调用为库名称指定一个空字符串,指示应再次使用当前加载的
libOne
,并从该库调用函数FuncB
。 - 对
$ZF(-3)
的第三次调用仅指定库名称libTwo
。这会卸载libOne
并加载libTwo
,但不会调用任何库函数。该调用返回一个状态代码,指示libTwo
是否已成功加载。 - 第四个和第五个调用从当前加载的
libTwo
中调用库函数FunctionOne
和FunctionTwo
。 - 最后的
$ZF(-3)
调用不会调用库函数,并为库名称指定空字符串。这会卸载libTwo
并且不会加载新库。该调用返回一个状态代码,指示libTwo
是否已成功卸载。
本章的以下部分描述了可以一次加载多个库的 $ZF
函数。这些函数不会与$ZF(-3)
冲突。始终可以使用 $ZF(-3)
,就好像它正在加载和卸载其自己的库的私有副本一样。
网友评论