s3270 - записывать текст в сессию, а не в поле ввода

У меня есть интересная проблема, связанная с интерфейсом приложения CICS на мэйнфрейме IBM. Я могу войти в систему и успешно писать в поля ввода, используя s3270 и x3270if. Однако система CICS, с которой я работаю, ожидает, что некоторые команды будут просто записываться на "экран", а не в поле ввода. Я использую функцию String() для записи в поля ввода, но я не могу найти функцию, которая просто записывает строку в заданную позицию экрана.

Кто-нибудь имел дело с подобным сценарием и может дать мне несколько советов?

1 ответ

Решение

В 3270 нет такой вещи, как "запись на экран", в отличие от записи в поле. Отформатированный буфер 3270 представляет собой набор полей, каждое из которых имеет определенный набор атрибутов. Вы не можете записать в произвольную позицию на экране, если нет незащищенного поля, содержащего эту позицию. Это 3270 спецификаций, это то, как работает аппаратное обеспечение 3270, так работают эмуляторы 3270, и любой API, который вы можете использовать для работы с эмуляторами 3270, просто продемонстрирует это.

(У вас может быть неотформатированный буфер с 3270, но я понимаю, что это не та ситуация, с которой вы сталкиваетесь, так как тогда вы сможете записывать в любую позицию экрана - буфер по сути является одним большим полем.)

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

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