Caché предоставляет функцию $COMPILE
для преобразования массива строк исходного кода в объектный код.Параметр object
позволяет сохранять данные двоичного объекта в переменную локального массива, не затрагивая глобальные массивы.
В документации объясняется, что вы можете заменить данные в ^rOBJ(routine)
для подпрограммы возвращаемыми строкамив параметре object
, и это изменит программу, которая запускается для routine
.
Мой вопрос: могу ли я запустить массив object
напрямую, не изменяя глобальные переменные (например, сохраняя строки в ^rOBJ
первый)?Мои строки кода генерируются динамически внешними приложениями и не могут быть предварительно загружены в подпрограммы.
Я хочу ограничить доступ вызывающей программы ко всей системе.Доступ к модификации ^rOBJ
означает возможность изменять подпрограммы приложения, управляющие системой.Это также означает, что мне пришлось бы поддерживать несколько временных подпрограмм, следя за тем, чтобы они очищались во внешнем процессе, даже если задание неожиданно завершается.
В настоящее время я использую XECUTE
, чтобы просто запуститьстроки кода напрямую, но я бы предпочел использовать скомпилированный код, так как он быстрее.