tag standard library lib ejemplos java data-structures cobol copybook

java - standard - tag lib jstl



Lectura de estructuras de datos cobol de Java (8)

¿Hay una manera de leer los datos de cobol en un programa de Java? Más concretamente me enfrento al siguiente caso:

Tengo un archivo con registros de datos de longitud fija. La definición de los datos se realiza como libros de copia Cobol. Lo que pienso es en una biblioteca que, teniendo en cuenta los cuadernos, podría leer esos registros.

Idealmente, debería ser posible generar clases y estructuras java básicas basadas en la información del libro de copia. En un paso posterior, los registros de datos se analizarán y los datos se rellenarán en objetos de esas clases generadas.

¿Conoces una biblioteca que ofrezca este tipo de funcionalidad? ¿O alguna otra técnica para hacer frente al problema de leer los datos de cobol?

Hay algunas herramientas comerciales que proporcionan esta funcionalidad. Son, sin embargo, muy caros. ¿Conoce alguna alternativa de código abierto o una combinación de diferentes herramientas para proporcionar la funcionalidad completa? Por ejemplo, el cb2xml lee las estructuras del cuaderno y las transforma en xml. Un paso posterior sería generar un lector de registros basado en la información xml de cb2xml. O utilizar un lector de discos configurable. ¿Conoces un lector de discos cobol (decodificador)?


BEA solía tener un producto llamado JAM que se usaba para comunicarse con los programas COBOL de mainframe. Incluía una herramienta que podía leer libros de copia y generar tanto las clases correspondientes de Java POD como el código de conversión de datos.

No sé si esto todavía está disponible, lo perdí cuando dejé BEA.


Echa un vistazo a Javolution Struct .

Luego puede usar una macro para convertir su datat COBOL en Struct .


He usado el paquete JRecord de Bruce (de sourceforge) para mi proyecto. Aprender a usarlo me llevó solo un par de días y me ahorró meses de trabajo al implementar una solución mucho menos general por mi cuenta. Lo recomiendo altamente.


Parece que hay algunas soluciones comerciales para esto. Alternativamente, puede usar cb2xml para convertir los cb2xml de cb2xml a XML, y luego importar el XML a Java usando cualquier mecanismo que requiera.


Puede consultar JRecord - http://sourceforge.net/projects/jrecord/ o cb2java http://sourceforge.net/projects/cb2java/ ambos le permiten acceder a los archivos cobol, pero ninguno de los dos generará las clases completas.

Actualización enero 2011

Desde la respuesta original:

  • JRecord continúa desarrollándose. Ahora hay un JRecord Code generator disponible como un programa independiente o en el Recordeditor . Este Code Generator construirá el código JRecord JRecord de un JRecord JRecord de Cobol. Ver RecordEditor Jrecord CodeGen
  • Desarrollo en cb2java se ha detenido
  • cobol2j ha sido escrito. No ha habido actualizaciones durante un año.
  • También está Legstar otra vez nada publicado por unos pocos años.

Actualización agosto 2017

El Recordeditor tiene una opción Generar para generar código Java / JRecord desde un Copybook de Cobol. Vea las notas de RecordEditor Code Generation para más detalles.

Actualización de enero de 2018

Hay alguna información sobre la generación de código Java ~ JRecord en esta pregunta / respuesta:

¿Cómo se genera el código Java ~ jrecord para un libro de copias de Cobol?


Rational Application Developer puede leer el código fuente de COBOL y generar clases de Java. Las clases generadas tienen métodos para acceder a las diversas partes de la estructura de datos COBOL. La clase que se genera es compatible con la arquitectura del conector J2EE . Para crear una clase en su proyecto, seleccione Archivo, Nuevo, Otro y luego seleccione el asistente de enlace de datos Java CICS / IMS en J2C. Haga clic en Siguiente. Elija COBOL a Java para la asignación. Seleccione su archivo COBOL. Seleccione la estructura para la que desea generar una clase Java, luego haga clic en Finalizar y listo. Por supuesto, hay una serie de opciones que puede seleccionar en el camino que no mencioné. Para más información, busque Ayuda para J2C.


Sí. Lo he hecho antes. Utilicé una conexión ODBC a los archivos COBOL, y luego con jdbc: odbc bridge, utilicé información de metadatos para generar clases, leer datos y transferirlos a Oracle.

Here hay un buen tutorial sobre cómo acceder a la información de metada con JDBC. Here hay otro.

Tenga en cuenta que no necesita el enfoque del puente JDBC: ODBC. Si puede obtener un controlador JDBC nativo para conectarse a su fuente de datos Cobol, será mejor. En este sentido, también usé un controlador nativo de IBM. Aunque no recuerdo el nombre. Fue hace mucho tiempo.


Microfocus proporciona una forma de llamar a OO COBOL desde Java.

"Puede escribir clases en OO COBOL que pueden llamarse desde programas Java como si fueran clases de Java. Para ello, proporcione una clase de envoltura de Java, que proporciona una función para cada método en la clase de OO COBOL. La Clase Net Express y Los asistentes de métodos le facilitan esta tarea al generar el código Java al mismo tiempo que el código COBOL ".

También proporcionan una herramienta llamada Enterprise Server que permite a COBOL interactuar con los servicios web.

Si tiene un programa COBOL A, la herramienta le permite exponer la sección de la interfaz de A como un servicio web.

Por supuesto, como A ahora tiene un servicio web, cualquier otro tipo de programa (línea de comandos, aplicación de Windows, Java, ASP, etc.) ahora también puede llamarlo y, por lo tanto, pasar los datos COBOL a un programa Java.