Как предотвратить ошибки <сеанс отключен> при запуске сценариев терминала Intersystems Caché? - PullRequest
2 голосов
/ 13 октября 2008

Я разрабатываю систему, которая должна выполнять сценарии Intersystems Cache Terminal.

Когда я запускаю процедуру внутри обычного терминала Caché или терминала telnet, Cache выполняет процедуру до конца без проблем. Но когда я пытаюсь запустить ту же процедуру, но на этот раз вызываю процедуру в терминальном скрипте Caché, Caché через некоторое время отключает сеанс. В документации «настройки тайм-аута» или чего-либо, связанного с «» сообщениями, которые я получаю, нет никакого упоминания.

Сценарий запускается так:

Cterm.exe /console=cn_iptcp:192.168.2.13[23] c:\test.s

1) Кто-нибудь знает, что может быть причиной того, что Interystems Caché отключил сеанс в середине цикла (сеанс также не простаивает. Он регулярно выводит сообщения о состоянии на консоль)?

2) Есть идеи, как ее решить?

Спасибо

Луис Фернандо

Ответы [ 2 ]

2 голосов
/ 19 ноября 2008

Через некоторое время я наконец обнаружил, почему сеанс был прерван. Вы должны ждать чего-то в конце или сценарий просто завершается. Но вы должны быть уверены, что ожидаемая строка не будет напечатана до завершения кода.

Итак, я только что изменил программу, чтобы выводить «Операция завершена» только в конце, а затем поставил строку:

 waitfor "Operation finished"
terminate

Теперь программа не прерывается.

Приветствия

1010 * Луиш *

1 голос
/ 13 октября 2008

Есть ли вероятность, что это не тайм-аут, а какая-то другая проблема? Возможно, ошибка времени выполнения, которая не перехватывается / не регистрируется?

Основное различие между запуском из интерактивной консоли и в виде сценария заключается в том, что при интерактивном запуске вы находитесь в режиме программиста, а в сценарии - в режиме пользователя. Я не могу придумать причину, почему это имело бы значение, но, возможно, ваш код чувствителен к этому.

Вот кое-что, что можно попробовать: написать очень простой скрипт, который ничего не делает, только время от времени выписывает символ. Может быть, что-то вроде этого:

F I = 1: 1: 360 H 10 W "." ; Напишите точку каждые 10 секунд в течение 1 часа

Если время ожидания истекло, вы знаете, что это терминал, а не ваш код.

...