El problema de conversión de JOBOL
Incluso si una empresa tiene desarrolladores experimentados a bordo, el entorno incompatible de COBOL y Java y los obstáculos de traducción hacen que las conversiones sean desafiantes, de acuerdo al sector de ingeniería de aplicaciones en Truss, una empresa de desarrollo de software. Esto no cambia aunque sean expertos graduados de un curso de Java online.
Por ejemplo, cuando los desarrolladores hacen una traducción similar entre tipos de datos COBOL y tipos en Java, se encuentran con diferencias semánticas en la forma en que se comportan en casos extremos, como el desbordamiento de enteros. El desbordamiento ocurre cuando los desarrolladores intentan almacenar valores que están fuera del rango del valor permitido de la variable. De hecho, los desarrolladores de Modern Mainframe Development: COBOL, Databases, and Next-Generation Approaches, están de acuerdo en que los dos lenguajes son difíciles de traducir.
No es raro que el código heredado tenga enfoques poco ortodoxos, como las declaraciones GO TO, haciendo referencia a la declaración COBOL que es una palabra clave no utilizada pero reservada en Java, lo que significa que no se puede usar como un identificador para cualquier elemento del programa. Eso significa que las idiosincrasias de COBOL a Java producen código "forzado" que no transmite su intención a los programadores modernos. El resultado es un código opaco que es difícil de mantener.
Otro problema que enfrentan los desarrolladores es la falta de documentación completa de la funcionalidad de una aplicación. Una aplicación puede ser antigua y haber sido modificada previamente por muchos desarrolladores, con una funcionalidad huérfana que provoca un código inflado. Esto es así porque la mayoría de las empresas saben qué áreas usan más, pero no pueden decir con certeza todas las funciones y si serán necesarias. Entonces, incluso antes de que estos proyectos comiencen, la mayoría de ellos están en problemas, ya que los desarrolladores pueden estar trabajando en áreas de código que un usuario final nunca puede usar.