2016-06-08 4 views
0

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

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

+0

Является ли функция MoveCursor() описана в http://x3270.bgp.nu/Unix/x3270-script.html тем, что вы ищете? –

+0

@ValerieR Я попытался переместить курсор, а затем с помощью String(), но, по-видимому, String() будет писать текст только в поле ввода. Я перемещаю курсор, отправляю текст, который хочу, а затем отправляю ключ ввода, но приложение CICS просто выдает ошибку. – kaigoh

+0

Возможно, вы захотите получить дамп входящего экрана 3270, чтобы убедиться, что строка/столбец, который вы перемещаете, не защищены. Move/String должен работать, пока вы находитесь в незащищенной части экрана. –

ответ

0

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

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

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