Разбор данных IBM 3270 в Java

Мне было интересно, имел ли кто-нибудь опыт извлечения данных по протоколу 3270. Мое понимание до сих пор:

соединение

Мне нужно подключиться к серверу SNA с помощью telnet, выполнить команду, а затем будут возвращены некоторые данные. Я не уверен, как это соединение сделано, так как я прочитал, что стандартное соединение Telnet не будет работать. Я также читал, что у IBM есть библиотека, чтобы помочь, но не дошел до того, чтобы узнать об этом больше.

анализ

Я предполагал, что возвращаемые данные будут представлять собой строку из 1920 символов, поскольку размер экрана 3278 составляет 80х24 символа. Мне просто нужно разобрать эти символы в соответствующие поля. Чем больше я читаю о протоколе 3270, тем меньше это, кажется, имеет место - в документации, поставляемой с пробной версией библиотеки Java Jagacy 3270, я прочитал, что атрибуты были помечены в протоколе символом "A" перед атрибутом и моим понимание состоит в том, что существует больше символов, обозначающих другие факторы, такие как возможность редактирования полей.

Я вполне уверен, что мое мышление было слишком упрощенным. Возьмите пример, например, экран со списком элементов - нажатие специальной клавиши на одной из 24 видимых строк приводит к более подробной информации об этой строке.

Также мне предложили, что команды печати могут быть выполнены. Это имеет некоторые положительные последствия - если формат возвращаемой строки не 1920, так как он содержит такие символы, как "А", обозначающие, как пользователи взаимодействуют с терминалом, печать уничтожит их. Также это прекратило бы пролистывать много данных. С другой стороны, я не знаю, как получить данные из команды печати обратно в Java.

Так..

В настоящее время у меня нет доступа к серверу SNA, но у меня есть несколько снимков экрана, на которых будет выглядеть терминал, как только я получу соединение, и поэтому собираюсь начать работу по синтаксическому анализу. С таким количеством предположений и отсутствием большого количества идей о том, как будут выглядеть данные, я чувствую себя по-настоящему озадаченным. Кто-нибудь знает эти системы, которые могут помочь мне вернуться на правильный путь?

2 ответа

Решение

Вы выбрали для себя проблему. 3270 действительно очень сложный протокол. Я не буду беспокоиться о том, чтобы попытаться реализовать это, это дурацкое поручение, и я говорю из болезненного личного опыта. Попробуйте найти клиентский API TN3270 (Telnet 3270).

Это может не отвечать конкретно на ваш вопрос, но...

Если вы используете Rational Developer для z/OS, ваш Java-код должен иметь возможность использовать интегрированный продукт HATS для работы с потоком 3270. Возможно, он не подходит вашему проекту, но я подумал, что упомяну его, если все, что вы пытаетесь сделать, - это просто очистить экран, это очень просто.

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