Как мне работать с предполагаемыми переменными, используя 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 для доступа к переменным из определенной работы. Это может помочь с исследованиями. Удачи!