Как мне работать с предполагаемыми переменными, используя Callin API?

Я пытаюсь создать приложение, используя API Callin, предоставленный InterSystems, но часть существующего кода M, который мне нужно использовать, зависит от предполагаемых переменных.

Как я могу предоставить такое состояние тегам, которые я называю?

(Обратите внимание, что если я добавлю переменную в качестве формального параметра, он получит newи другие теги перестанут работать.)


Я хотел бы создать систему, в которой я мог бы вставлять код на другом языке, потенциально "зажатом" кодом 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 переменная.

1 ответ

Трудно точно сказать, что вы пытаетесь сделать. Если бы у вас был пример, это очень помогло бы.

В случае крайней необходимости, чтобы кодировать что-то в паротите и получать переменную, вы можете сделать что-то вроде этого: (это очень архаично, но будет работать)

LineLabel:

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

А затем возьмите переменную из этого текстового файла из C# или любого языка, который вы используете.

Опять же, функция shell out (call back) ($zf,-1) является архаичной и, вероятно, дорогой с точки зрения производительности, но это может быть решено в версии 2.0.

Caché использует термин ByRef или By Reference для доступа к переменным из определенной работы. Это может помочь с исследованиями. Удачи!

Другие вопросы по тегам