1

我希望使用 InterSystems 提供的Callin API创建一个应用程序,但我需要使用的一些现有 M 代码依赖于假定变量。

如何为我调用的标签提供这种状态?

(请注意,如果我将变量添加为形式参数,它将获得new'd 并且其他标签将停止工作。)


我想创建一个系统,我可以在其中插入另一种语言的代码,这些代码可能被 M 代码“夹在中间”:

s assumed="variable"
s x=$$DoSomethingFunky("FunctionName","arg1","arg2","arg3")

 

; some other file that's being executed by my Callin API program
FunctionName(a1, a2, a3) -> ", ".join(a1, a2, a3, assumed, DoSomethingFunkier(a2))

 

; back to M
DoSomethingFunkier(param1) q "(hello, "_param1_" and "_assumed_")"

所以x上面是"arg1, arg2, arg3, variable, (hello, arg2 and variable)".
我正在寻找一种方法来传递assumed变量的值。

4

1 回答 1

1

很难准确地说出您要做什么。如果你有一个非常有帮助的例子。

在绝对紧急情况下,在腮腺炎中编码一些东西并获得一个变量,你可以这样做:(它非常古老,但会起作用)

线标签:

s myVar = ^some("global","reference")
d $zf(-1,"echo "_myVar_"> c:\myvar.txt")
q

然后从 c# 或您使用的任何语言中获取该文本文件中的变量。

同样,shell out(回调)函数 ($zf,-1) 是过时的,并且在性能方面可能很昂贵,但可以在 2.0 版中解决。

Caché 使用术语 ByRef 或 By Reference 来访问来自特定作业的变量。这可能有助于研究。祝你好运!

于 2016-01-30T14:54:56.563 回答