sql-server — Есть ли какой-нибудь способ получить доступ к серверу Sql из мейнфрейма z /OS и получить результат в эмуляции терминала IBM 3270?" />

Есть ли какой-нибудь способ получить доступ к серверу Sql из мейнфрейма z /OS и получить результат в эмуляции терминала IBM 3270?

Есть ли какой-либо (возможно дешевый) доступ к Microsoft Sql Server из мэйнфрейма z /OS (программы на языке COBOL), который приводит к эмуляции терминала 3270?Я знаю, что 3270 - довольно старая система, но в банке CED все еще очень популярна.
4 голоса | спросил systempuntoout 8 FebruaryEurope/MoscowbMon, 08 Feb 2010 10:56:25 +0300000000amMon, 08 Feb 2010 10:56:25 +030010 2010, 10:56:25

8 ответов


0
Это зависит от того, что вы на самом деле пытаетесь сделать.Я прочел ваш вопрос о том, что вы хотите, чтобы процесс на основе мэйнфреймов имел доступ к базе данных SQL Server, а затем что-то делал с результатом, возможно, с терминалом 3270.Если вы можете использовать Unix System Services, вы можете скомпилировать библиотеку TDS, такую ​​как FreeTDS, а затем использовать программу на C, чтобы сделать то, что вы хотите, с результатом.Если вы хотите усложнить задачу , вы можете запустить соединение из собственной среды z /OS, скомпилировав код с помощью IBM C, SAS C или Dignus C /C ++ .Я могу порекомендовать Dignus, и я использовал его для создания кода, который взаимодействует с другими языками в z /OS.Заголовки Dignus и библиотека времени выполнения (из памяти) имеют некоторое происхождение FreeBSD, которое помогает упростить портирование.Используя этот подход, вы можете получить загрузочный модуль, который вы можете вызвать из какой-то другой части вашей системы, чтобы выполнить работу, вы можете связать код с другими частями вашей системы, или вы можете просто отправить задание и получить вывод.Если вы хотите использовать Java, вы можете использовать что-то вроде jTDS и писать код Java, чтобы делать то, что вам нужно.Я не использовал Java в z /OS, поэтому не могу дать там конкретного совета, но я использовал jTDS на других платформах и был доволен результатом.Обновить:Вы можете экспортировать функцию C в качестве точки входа в загрузочный модуль и затем вызывать ее из Cobol.Реализация C /C ++ должна иметь дело со структурами данных Cobol;они хорошо определены и предсказуемы, так что это не проблема.В зависимости от того, насколько гибкими вам нужны вещи, вы можете скомпилировать запрос в код C и просто иметь функцию, которая выполняла предопределенный запрос и имел интерфейс для получения результата, или вы могли бы иметь что-то более сложное, когда запрос был предоставлениз программы Cobol.Я использовал этот подход для предоставления функций API разработчикам Adabas /Natural, и он работал хорошо.Компилятор Dignus имеет механизм, позволяющий вызывающим сторонам предоставлять дескриптор библиотеки времени выполнения, чтобы вы могли управлять временем жизни среды выполнения C из вызывающей программы.Для разработчика на C /C ++ это должно быть довольно просто.Если ваши разработчики являются разработчиками Cobol, все может быть немного сложнее.Подход шлюза возможен, и я уверен, что есть продукты шлюза вокруг, но я не могу рекомендовать один.Я видел дрянные, которые я бы не советовал, но это не значит, что где-то нет хорошего.Для полноты картины упомяну возможность реализации протокола TDS в Cobol.Звучит как жестокое и обычное наказание.
ответил janm 15 FebruaryEurope/MoscowbMon, 15 Feb 2010 10:21:03 +0300000000amMon, 15 Feb 2010 10:21:03 +030010 2010, 10:21:03
0
Если у вас есть эмуляция терминала 3270, какие терминалы вы используете?ПК?Один интересный хак - использование маршрутизатора Cisco для преобразования TCP на лету 3270 в vanilla, а затем написание простого прокси-сервера TCP для процедур SQL Server.
ответил TFD 11 FebruaryEurope/MoscowbThu, 11 Feb 2010 06:31:03 +0300000000amThu, 11 Feb 2010 06:31:03 +030010 2010, 06:31:03
0
Не так - эмуляторы 3270 подключаются к мэйнфрейму IBM.Чтобы получить данные из базы данных SQL-сервера на мэйнфрейме, вам нужно написать программу, работающую на мэйнфрейме, которая считывает данные из БД SQL-сервера.Это потребует от вас запуска программного обеспечения драйвера на мэйнфрейме.Возможно, вам удастся найти стороннюю компанию, которая делает такие вещи, но это, вероятно, будет довольно дорого.Если вам нужно собрать отчет или что-то, объединяющее данные из системы мэйнфреймов с внешними источниками данных, может быть проще получить данные с мэйнфрейма и выполнить интеграцию в другом месте - возможно, какой-то витрины данных.Альтернативой может быть извлечение нужных данных из базы данных SQL Server и загрузка их на мэйнфрейм в виде плоского файла для обработки там.
ответил ConcernedOfTunbridgeWells 8 FebruaryEurope/MoscowbMon, 08 Feb 2010 11:03:31 +0300000000amMon, 08 Feb 2010 11:03:31 +030010 2010, 11:03:31
0

Here is a possiblity if you are writing COBOL programs that are running in CICS.

First, wrap your SQL Server database stored procedure with a web service wrapper. Look at devx.com article 28577 for an example.

After that, call your new SQL Server hosted web service using a CICS web service call.

Last use standard CICS BMS commands to present the data to the user.

Appliation Development for CICS Web Services

ответил Chuck 15 MaramMon, 15 Mar 2010 03:31:45 +03002010-03-15T03:31:45+03:0003 2010, 03:31:45
0
Просто получите драйвер JDBC для доступа к серверу MS-SQL.Затем вы можете создать его подкласс и использовать его в своей программе на Cobol и обращаться к базе данных так же, как если бы вы использовали его из Java.Как только вы получите свои результаты, вы можете представить их через обычные функции BMS.Никаких грязных хаков или хитрых сетевых трюков не требуется.С IBM Enterprise Cobol вы действительно можете просто создать класс Java и использовать его так же, как в пространстве Java.
ответил Joe Zitzelberger 8 J0000006Europe/Moscow 2010, 12:53:31
0
Вы могли бы сделать то, что я делал в прошлом.Я написал программы /функции DB2 для MS-SQL COBOL, которые делают выбор таблицы /представления MS-SQL только для DB2.Это включало создание работающей службы на сетевом сервере, которая принимала бы соединения TCP /IP только с мэйнфрейма и использовала учетные данные, передаваемые в качестве идентификатора пользователя /PW, используемого для доступа к таблице MS-SQL.Затем он выполнит выборку для таблицы /представления и сначала передаст список имен полей с общим количеством строк.Затем он будет передавать каждую строку в виде полей с разделителями табуляции обратно в мэйнфрейм.Программа COBOL сохранит имена полей в таблице, которая будет использоваться для определения того, какую подпрограмму использовать для перевода каждого поля MS-SQL в DB2.С точки зрения DB2 это похоже на функцию, которая возвращает поля.У нас около 30 из них работает.Мне пришлось создать процедуру описания MS-SQL, чтобы помочь создать начальные определения полевых переходов для программы на языке COBOL.Также пришлось создать программу на языке COBOL для чтения описательных данных и создания команд разделения и процедур.Одна программа на языке COBOL для каждой таблицы /представления MS-SQL.Вот пример определения функции.СОЗДАТЬ ФУНКЦИЮTCL.BALANCING_RECON (УАКСНАК (4000))ВОЗВРАТТАБЛИЦА(SCOMPANY CHAR (6),ПНОТЕНО ВАРЧАР (14),PUNIT CHAR (3),LATEFEES DEC (11,2),FASB_4110 DEC (11,2),FASB_4111 DEC (11,2),USERAMOUNT1 DEC (11,2),USERAMOUNT2 DEC (11,2),USERFIELD1 VARCHAR (14))ЯЗЫКОВЫЙ КОБОЛПРОДОЛЖИТЬ ПОСЛЕ ОТКАЗАНЕ ДЕТЕРМИНИСТИЧЕСКИЙЧИТАЕТ ДАННЫЕ SQLВНЕШНЕЕ ИМЯ DB2TCL02COLLID DB2TCL02ПАРАМЕТР СТИЛЬ SQLВЫЗВАН НА НУЛЕВОЙ ВХОДНЕТ ВНЕШНЕГО ДЕЙСТВИЯDISALLOW PARALLELSCRATCHPAD 8000ASUTIME LIMIT 100ПРЕБЫВАТЬ РЕЗИДЕНТ ДАПРОГРАММА ТИПА SUBWLM ENVIRONMENT DB2TWLMБЕЗОПАСНОСТЬ DB2DBINFO;COMMIT;GRANT EXECUTE ON FUNCTION TCL.BALANCING_RECON TO PUBLIC;Чтобы вызвать функцию: SELECT * FROMTABLE (TCL.BALANCING_RECON ('')) AS X;Вы должны поместить любые команды фильтра MS-SQL между кавычками.Меня не просили обновить какие-либо данные MS-SQL, поэтому я еще не преодолел это препятствие.В DB2 также есть база данных, которая отслеживает ID /PW и сервер, на котором запущена запущенная задача.Это так, если сервер перегружен, разные варианты могут быть отправлены на разные серверы.Ответ быстр, даже для больших таблиц.Тайм-аут совпадает с тайм-аутом 60 тупиков.Транспорт в основном на основе IP.DB2 просто видит данные как ссылки на внешние таблицы.
ответил BitCounter 10 MarpmThu, 10 Mar 2011 21:31:00 +03002011-03-10T21:31:00+03:0009 2011, 21:31:00
0
В ходе грязных хаков вы задумывались о создании простого HTTP или TCP-сервера, который возвращает .csv нужных вам табличных данных?Это означает, что вашему клиенту нужен только простой клиент HTTP /TCP для доступа к данным, а не клиентская библиотека базы данных.
ответил mythz 15 FebruaryEurope/MoscowbMon, 15 Feb 2010 11:38:19 +0300000000amMon, 15 Feb 2010 11:38:19 +030010 2010, 11:38:19
0
В моей компании мы используем Java для подключения к Sql Server.И CL называют эту программу Java :)Очень простой...
ответил Portekoi 21 Jpm1000000pmMon, 21 Jan 2013 18:43:15 +040013 2013, 18:43:15

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132