Это зависит от того, что вы на самом деле пытаетесь сделать. Я прочел ваш вопрос так: вы хотите, чтобы процесс на мэйнфрейме обращался к базе данных SQL Server, а затем что-то делал с результатом, возможно, с терминалом 3270.
Если вы можете использовать системные службы Unix, вы можете скомпилировать библиотеку 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. Звучит как жестокое и обычное наказание.