¿Hay alguna manera de acceder al servidor SQL desde z / OS unidad central y tienen el resultado en la emulación de terminal IBM 3270?

StackOverflow https://stackoverflow.com/questions/2220191

Pregunta

¿Hay alguna forma (posiblemente barato) para tener acceso a Microsoft SQL Server desde la unidad central z / OS (programas COBOL) y tienen el resultado en 3270 de emulación de terminal?
Soy consciente de que 3270 es un sistema bastante viejo, pero en el banco central de exclusión, sigue siendo muy popular.

¿Fue útil?

Solución

Depende de lo que en realidad se está tratando de hacer. Mi lectura de su pregunta es que quieren tener un acceso a base de mainframe proceso de una base de datos SQL Server, y luego hacer algo con el resultado, probablemente la participación de un terminal 3270.

Si usted puede utilizar servicios del sistema UNIX, puede compilar una biblioteca de TDS como FreeTDS y luego usar una programa en C para hacer lo que quiera con el resultado. Si desea obtener más compleja, puede ejecutar la conexión desde el entorno z / OS nativo mediante la compilación del código C con IBM, SAS C o Dignus C / C ++ . Puedo recomendar Dignus y lo he utilizado para construir código que interactúa con otros idiomas en z / OS. La biblioteca de tiempo de ejecución y las cabeceras Dignus tiene (de memoria) algunos linaje FreeBSD que ayuda a simplificar la portabilidad.

Con este enfoque se puede obtener un módulo de carga que se puede llamar de alguna otra parte de su sistema para hacer el trabajo, puede enlazar el código con otras partes del sistema, o simplemente puede enviar un trabajo y obtener el de salida.

Si desea utilizar Java, se puede usar algo como jTDS y escribir código Java para hacer lo necesitas. No he utilizado Java en z / OS, así que no puedo ofrecer consejos específicos allí, pero he utilizado jTDS en otras plataformas y he estado muy contento con el resultado.

Actualización:

Puede exportar una función C como punto de entrada a un módulo de carga y luego llamar a que a partir de Cobol. La aplicación C / C ++ necesita para hacer frente a las estructuras de datos Cobol; que están bien definidos y predecible de manera que no es un problema. Dependiendo de la flexibilidad que necesita que sean las cosas, se puede compilar la consulta en el código C y sólo tienen una función que ejecuta una consulta predefinida y tenía una interfaz para recuperar el resultado, ya que podría tener algo más complejo en el que se proporciona la consulta del programa COBOL.

He utilizado este método para proporcionar funciones de la API a los desarrolladores Adabas / Natural y ha funcionado bien. El compilador Dignus tiene un mecanismo para las personas que llaman para proporcionar un identificador para una biblioteca de tiempo de ejecución para que pueda gestionar el tiempo de vida del entorno de tiempo de ejecución C del programa de llamada.

Para un / desarrollador C C ++, que debe ser bastante sencillo. Si los desarrolladores son todos los desarrolladores Cobol, las cosas podrían ser un poco más complejo.

El enfoque de puerta de enlace es posible, y estoy seguro de que hay productos de puerta de enlace alrededor, pero no puedo recomendar uno. He visto los cutres que no recomendaría, pero eso no quiere decir que no hay una buena parte.

Para completar, voy a mencionar la posibilidad de implementar el protocolo TDS en Cobol. Suena como un castigo cruel y habitual, sin embargo.

Otros consejos

Si usted tiene emulación de terminal 3270, lo que los terminales está usando? de PC?

Un truco interesante está utilizando un router Cisco que hacer sobre la marcha 3270 a la conversión de vainilla TCP, y luego escribir un simple proxy de TCP para los procedimientos de SQL Server

No como esos emuladores - 3270 se conecta a una computadora central de IBM. Con el fin de llegar a los datos de una base de datos del servidor SQL en un mainframe, que tendría que escribir un programa que se ejecuta en la computadora central que lee datos desde el servidor de base de datos SQL. Para ello sería necesario que usted tenga el software del controlador que se ejecuta en el ordenador central. Usted puede ser capaz de encontrar un tercero que hace este tipo de cosas, pero es probable que sea bastante caro.

Si necesita armar un datos del informe o algo combinación de un sistema de computadora central con fuentes de datos externas puede ser más fácil de obtener los datos fuera de la unidad central y hacer la integración en otro lugar -. Tal vez algún tipo de puesto de datos

Una alternativa sería la de extraer datos THD que desee en la base de datos SQL Server y subirlo a la unidad central como un archivo plano para el procesamiento de allí.

Esta es una posibilidad si está escribiendo programas COBOL que se ejecutan en CICS.

En primer lugar, envuelva su base de datos de SQL Server procedimiento almacenado con un envoltorio de servicio web. Mira el artículo devx.com 28577 para un ejemplo.

Después de eso, llame a su SQL Server nuevo servicio web usando una llamada de servicio web CICS.

comandos

Última uso estándar CICS BMS para presentar los datos al usuario.

Desarrollo appliation para CICS Web Services

Acaba de obtener el controlador JDBC para acceder al servidor MS-SQL. A continuación, puede subclase y utilizarlo en su programa Cobol y acceder a la base de datos como si lo estaba utilizando desde Java.

Una vez que sus resultados, puede presentarlos a través de funciones regulares BMS.

No hay hacks o trucos sucios de redes de fantasía necesarios. Con IBM Enterprise Cobol, que realmente sólo puede crear una clase Java y utilizarlo como lo haría en el espacio de Java.

Usted puede ser capaz de hacer algo que hice en el pasado. He escrito DB2 para programas / funciones de MS-SQL COBOL que hacen que el MS-SQL mesa / Selección de vista únicamente a DB2. Se trataba de crear un servicio que se ejecuta en un servidor de red que acepte conexiones TCP / IP sólo desde la unidad central y el uso de las credenciales pasadas como el ID de usuario / PW utiliza para acceder a la tabla de MS-SQL. Sería entonces emitir un selecto en contra de la tabla / vista y pasar la lista de nombres de campo hacia atrás primero con el número total de filas. Sería luego pasar cada fila, como pestaña campos delimitados, de vuelta a la computadora central. El programa COBOL se ahorraría los nombres de los campos en una tabla que se utiliza para determinar qué rutina hay que utilizar para traducir cada campo MS-SQL para DB2. Desde el punto de vista de DB2, se ve como una función que devuelve campos. Tenemos alrededor de 30 de ellos funcionando. Tenía que crear un MS-SQL describir el procedimiento para ayudar a crear las define iniciales de los transations de campo para el programa COBOL. También tuvo que crear un programa COBOL para leer los datos describir y crear los comandos de división de enlace y procedimiento. Un programa COBOL para cada MS-SQL tabla / vista. He aquí una definición de función muestra. CREATE FUNCTION
    TCL.BALANCING_RECON (VARCHAR (4000))
    DEVOLUCIONES
      TABLA (
SCOMPANY CHAR (6), Francia PNOTENO VARCHAR (14), Francia PUNIT CHAR (3), Francia LATEFEES DEC (11,2), Francia FASB_4110 DEC (11,2), Francia FASB_4111 DEC (11,2), Francia USERAMOUNT1 DEC (11,2), Francia USERAMOUNT2 DEC (11,2), Francia USERFIELD1 VARCHAR (14)
   )
     LENGUAJE COBOL
     CONTINUAR después del fracaso
     NO DETERMINISTIC
     Lee datos SQL
     NOMBRE EXTERNO DB2TCL02
     IDgrupo DB2TCL02
     PARAMETER STYLE SQL
     LLAMADA ON NULL INPUT
     NO ACCIÓN EXTERIOR
     DISALLOW PARALELO
     SCRATCHPAD 8000
      ASUTIME límite de 100
      Permanecer residente SÍ
      TIPO DE PROGRAMA SUB
      WLM AMBIENTE DB2TWLM
      SEGURIDAD DB2
      DBINFO
  ; COMMIT;
    GRANT EXECUTE en FUNCIÓN TCL.BALANCING_RECON PÚBLICO;

Para llamar a la función: * SELECT
  TABLA (TCL.BALANCING_RECON ( ''
  )) AS X;

Se podría incluir todos los comandos de MS-SQL de filtro entre las comillas.

He no han pedido para actualizar los datos de MS-SQL, así que no he jumpped ese obstáculo aún. También hay una base de datos DB2 en la que realiza un seguimiento de la / PW y el servidor de identificación que tiene la tarea iniciada en ejecución. Esto es así si el servidor se sobrecargue, selecciona diferentes pueden ser empujados a diferentes servidores. La respuesta es rápida, incluso para tablas grandes. Tiempo de espera es el mismo que el tiempo de espera 60 de interbloqueo. El transporte se basa primariamente IP. DB2 simly ve los datos como una referencia de tabla externa.

A medida que los cortes sucios van, ¿has pensado en la creación de un HTTP simple o servidor TCP que devuelve un .csv de la tabla de datos que necesita?

Esto significa que su cliente sólo necesita un simple cliente HTTP / TCP para acceder a los datos en lugar de una biblioteca de cliente de base de datos.

En mi empresa, utilizamos Java para conectarse a SQL Server.

Y una llamada CL este programa Java:)

Muy simple ...

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top