Inicio Topics COBOL ¿Qué es COBOL?
Explore la solución de modernización de aplicaciones de mainframe de IBM Suscríbase a las actualizaciones sobre el tema en torno a la IA
Ilustración con collage de pictogramas de engranaje, brazo robótico, teléfono móvil

 

Publicado:  19 de abril de 2024
Colaboradores: Chrystal R. China, Michael Goodwin

¿Qué es COBOL?

El lenguaje común orientado a los negocios o Common business-oriented language (COBOL) es un lenguaje de programación compilado de alto nivel, similar al inglés y  desarrollado específicamente para las necesidades de proceso de datos empresariales. 

COBOL se diseñó pensando en una versatilidad óptima; su verbosidad permite a los programadores utilizar un lenguaje de programación legible y fácil de mantener que puede funcionar en equipos mainframe y sistemas operativos. De hecho, fue uno de los primeros lenguajes de programación normalizados por el Instituto Nacional Estadounidense de Estándares (ANSI) y la Organización Internacional de Normalización (ISO).

Aunque COBOL se considera un sistema heredado, muchas organizaciones gubernamentales y del sector privado siguen utilizándolo para ejecutar aplicaciones financieras, administrativas y empresariales. De hecho, la configuración imperativa, procedimental y (en sus iteraciones más recientes) orientada a objetos de COBOL sirve de base para más del 40 por ciento de todos los sistemas bancarios en línea.1

También es compatible con el 80 % de las transacciones con tarjeta de crédito en persona, gestiona el 95 % de todas las transacciones en cajeros automáticos y alimenta sistemas que generan más de 3000 millones de dólares de comercio cada día. 1 Gracias a su estabilidad y capacidad de procesamiento superiores, sigue desempeñando un papel fundamental a la hora de ayudar a las empresas a mantener aplicaciones y programas en las arquitecturas existentes. 

Solicite una demostración en directo

Vea IBM watsonx Code Assistant for Z en acción.

Contenido relacionado

Suscríbase al boletín de IBM

Historia de COBOL

COBOL fue desarrollado por un consorcio de organizaciones gubernamentales y empresariales llamado Conferencia sobre Lenguajes de Sistemas de Datos (CODASYL), que se formó en 1959. Derivado en parte de FLOW-MATIC, un lenguaje creado por la pionera de la informática, la Dra. Grace Hopper, COBOL se creó como parte de una iniciativa del Departamento de Defensa de EE. UU. que buscaba un lenguaje de programación que pudiera funcionar en distintos sistemas operativos (Linux, Windows, Unix, z/OS, etc.) y entornos de hardware.

La primera versión del lenguaje de programación COBOL se publicó en 1960. Y aunque la programación COBOL se concibió en un principio como una medida provisional, el Departamento de Defensa no tardó en darse cuenta de su utilidad y obligó a los fabricantes de ordenadores a ofrecerlo.

COBOL fue finalmente estandarizado como lenguaje informático en 1968, tras lo cual los programadores de COBOL implementaron varias revisiones y modernizaciones, incluyendo COBOL-61, COBOL-68, COBOL-74 y COBOL-85. La iteración más reciente, COBOL 2002, intenta hacer que las aplicaciones COBOL sean más compatibles con las prácticas modernas de desarrollo de software mediante la introducción de características orientadas a objetos y otros paradigmas de programación avanzados en el lenguaje. 

Estructura COBOL

El programa COBOL tiene una estructura jerárquica que comprende divisiones, secciones, párrafos, sentencias, verbos y cadenas de caracteres. La naturaleza divisional de un sistema COBOL (que consta de cuatro divisiones) permite una clara separación de las preocupaciones dentro de los programas COBOL.

Las divisiones de COBOL son las siguientes:

Identification division

La identification division es la primera división de un programa COBOL, y es obligatoria. Asigna el programa un nombre y proporciona otra información de identificación como el autor, la fecha escrita y una breve descripción de la finalidad del programa.

Los programas COBOL necesitan un párrafo PROGRAM-ID para funcionar dentro de la identification division. Por ejemplo:

```

IDENTIFICATION DIVISION.

PROGRAM-ID. YourProgramName

AUTHOR. Your name

DATE-WRITTEN. YYYYMMDD

COMMENT. "Short description of the program"

Environment division

La environment division especifica el entorno de tiempo de ejecución de un programa y define los recursos de entrada y salida que utilizará. Se subdivide en dos secciones.

Como era de esperar, la configuration section proporciona información sobre la configuración del sistema, incluyendo el equipo y las características del compilador que está utilizando. Sin embargo, debido a los avances en las herramientas del compilador, las configuration sections se han convertido en algo obsoleto en los modernos sistemas COBOL, que normalmente puede inferir y adaptarse automáticamente a su entorno.

La input-output section especifica los archivos y dispositivos asociados con los que el programa puede interactuar. Incluye el párrafo FILE-CONTROL (que asigna nombres de archivos dentro del programa a archivos externos) y el párrafo I-O-CONTROL que suele contener información de optimización o secuenciación para las operaciones de entrada-salida.

Data division

La data division contiene todas las definiciones de variables, archivos y constantes para el programa. Al igual que la environment division, la data division está subdividida.

La file section enumera todos los archivos de los que el programa leerá o escribirá. Una entrada de descripción de fichero define cada fichero y describe la estructura de los registros del fichero.

La working-storage section define variables que mantienen sus valores durante la ejecución del programa, incluidos contadores, acumuladores, constantes y cualquier otro almacenamiento de datos que no sea relevante para los archivos E-S.

Introducido en iteraciones posteriores de COBOL, la local-storage section define las variables asignadas a la implementación del programa o método y desasignados a la terminación, por lo que el almacenamiento local especialmente útil para los algoritmos recursivos y programas reentrantes.

Por último, la linkage section define los elementos de datos que pasan de un programa a otro.

Procedure division

La procedure division contiene el código ejecutable del programa, que se divide en párrafos y secciones que estructuran el código en bloques de código para una mejor legibilidad y un mantenimiento más sencillo.

Componentes adicionales

Cada división de un sistema COBOL puede incluir secciones y párrafos, que son análogos a las secciones y párrafos en los lenguajes humanos. Las secciones son las subdivisiones lógicas con nombre dentro de cada división que contienen uno o más párrafos; sirven como unidades modulares de código que pueden ser llamadas o invocadas dentro del programa.

Los párrafos son conjuntos de sentencias (las unidades ejecutables más pequeñas de un programa COBOL) que cumplen una función concreta y se identifican con un nombre único. Cada declaración o sentencia COBOL dentro de un párrafo comienza con un verbo COBOL (como MOVE, DISPLAY y ADD) que indica cómo se debe ejecutar el código.

La unidad más básica e indivisible del lenguaje COBOL es el carácter. Las cadenas de caracteres son caracteres o secuencias de caracteres contiguos que forman una palabra COBOL, literal o comentario-entrada, delimitada por separadores.

Sintaxis COBOL

La sintaxis inglesa de COBOL es autodocumentada y casi autoexplicativa, con énfasis en la verbosidad y la legibilidad. Esta característica lo diferencia de otros lenguajes más concisos, como FORTRAN. También admite distintos tipos de datos (numéricos, alfanuméricos y editados, por ejemplo), pero depende de algunos componentes sintácticos adicionales para ejecutar un programa.

Sentencias y declaraciones

Las sentencias son líneas de código COBOL que consisten en una o más declaraciones acotadas por un punto. Las declaraciones, sin embargo, son las instrucciones individuales que orquestan el manejo de archivos y procesos de manejo de datos (mediante el uso de verbos como ADD, START, DISPLAY y WRITE, entre otros).

Por ejemplo, las declaraciones MOVE transfieren datos de una parte a otra de la memoria del sistema; las declaraciones COMPUTE realizan operaciones aritméticas y almacenan los resultados como variables; y las declaraciones READ recuperan registros de ficheros de entrada.

Cláusulas

Las cláusulas son componentes de las declaraciones que pueden modificar o calificar cómo se ejecuta una declaración. Una cláusula de imagen como "PIC 9(3)", por ejemplo, define una variable numérica que puede contener hasta tres dígitos.

Estructuras de control

Las estructuras de control iterativas y condicionales de COBOL permiten al sistema controlar el flujo de datos.

Las estructuras IF ... ELSE, por ejemplo, implementan la lógica condicional en COBOL para que el programa pueda ejecutar diferentes bloques de código en función de una evaluación de la condición del sistema. Y la declaración PERFORM ejecuta un párrafo o sección un número determinado de veces o hasta que se cumpla una condición, de forma similar a los bucles de otros lenguajes de programación.

Subprogramas

COBOL puede facilitar la programación modular mediante el uso de subprogramas, que se implementan desde el programa principal o de otros subprogramas. Mientras que los subprogramas internos se definen dentro del mismo código fuente que el programa de llamada (escrito en la procedure division), los subprogramas externos se compilan por separado y se vinculan según sea necesario.

Creación de un programa COBOL

El proceso de construcción de un programa con COBOL varía dependiendo de las circunstancias de la organización. No obstante, suele constar de unos pocos pasos fundamentales. 

  • Escribir el programa. Si un ingeniero de software quisiera escribir el programa básico "Hello, world!", por ejemplo, escribiría:

    '''

    IDENTIFICATION DIVISION. PROGRAM-ID. hello-world. PROCEDURE DIVISION. DISPLAY "Hello, world!"

    El uso de un entorno de desarrollo integrado (IDE) compatible con COBOL o un editor de texto puede ayudar en el proceso.

  • Compilar el programa. Al igual que otros lenguajes de programación de alto nivel, el código COBOL debe compilarse antes de ejecutarse. Los compiladores COBOL (como GnuCOBOL, Micro Focus e IBM COBOL Compilers Family)traducen los programas a código máquina para que la CPU del ordenador pueda entenderlo y ejecutarlo.

  • Ejecutar el programa. Una vez compilado el programa, el programador puede ejecutarlo en el sistema de destino. Suponiendo que no haya errores, el programa sigue la lógica de proceso de datos definida en la división de procedimientos para procesar los datos. El proceso de ejecución suele implicar la lectura de datos de archivos y bases de datos, la realización de cálculos o transformaciones de datos y, a continuación, la escritura de los resultados en archivos o bases de datos.

  • Depurar el programa (si es necesario). Si hay errores o fallos en el programa, los programadores tienen que identificarlos y corregirlos (un proceso llamado depuración). Apoyarse en herramientas y técnicas de depuración puede agilizar este proceso.
Beneficios de la programación COBOL

A pesar de la proliferación de lenguajes más modernos (como Python, Java, JavaScript), el lenguaje COBOL fue en su día el más utilizado en programación informática para aplicaciones empresariales. Incluso ahora, el desarrollo COBOL sigue siendo una parte funcional y crítica de la infraestructura tecnológica mundial, especialmente para instituciones bancarias, compañías de seguros y organismos gubernamentales.

Como demuestra su poder de permanencia, la programación COBOL puede ofrecer un sinfín de beneficios a las organizaciones que decidan utilizarla (a pesar de la relativa escasez de programadores COBOL 1), entre los que se incluyen:

Estabilidad

COBOL es conocido por su rendimiento estable y fiable en aplicaciones de misión crítica. Los sistemas escritos en COBOL suelen tener un alto tiempo de actividad y experimentar pocos fallos, lo que resulta vital para las operaciones ininterrumpidas de instituciones financieras y servicios gubernamentales.

Escalabilidad

Los desarrolladores pueden escalar las aplicaciones COBOL para gestionar cargas de trabajo cada vez mayores sin cambios significativos en la base de código, lo que permite a las organizaciones hacer crecer sus sistemas basados en COBOL junto con sus empresas y sin necesidad de reescribir o migrar con frecuencia a otros lenguajes.

Tratamiento de datos y procesamiento de archivos

COBOL ofrece capacidades excepcionales de procesamiento de archivos. Puede gestionar datos de transacciones complejas a gran escala y admitir varios métodos de acceso a archivos, incluida la gestión de archivos de datos secuenciales, indexados y relativos. La solidez de COBOL en la automatización de procesos lo hace ideal para trabajos de procesamiento por lotes, como el procesamiento de transacciones financieras, la gestión de bases de datos y la generación de informes.

Interoperabilidad

Los sistemas COBOL actuales pueden interoperar con otros lenguajes y tecnologías (como HTML, JSON, XML e IA generativa2) gracias a la introducción de COBOL orientado a objetos e interfaces con nuevos lenguajes de programación. La orientación a objetos también facilita la integración de aplicaciones COBOL con servicios cloud y virtuales, como Amazon Web Services (AWS), Microsoft Azure e IBM Cloud, bases de datos SQL y otras infraestructuras DevOps modernas.

Soluciones relacionadas
IBM watsonx Code Assistant for Z

IBM watsonx Code Assistant for Z es un producto asistido por IA generativa creado para acelerar la modernización de aplicaciones de mainframe a un coste menor y con menos riesgos que las alternativas actuales. Este producto proporciona un ciclo de vida integral para desarrolladores de aplicaciones que incluye descubrimiento y análisis de aplicaciones, refactorización automatizada de código y conversión de COBOL a Java.

Explore IBM watsonx Code Assistant for Z

IBM watsonx Code Assistant

IBM watsonx Code Assistant aprovecha la IA generativa para acelerar el desarrollo al tiempo que mantiene los principios de confianza, seguridad y conformidad en su núcleo. Los desarrolladores y operadores de TI pueden acelerar los esfuerzos de modernización de aplicaciones y generar automatización para escalar los entornos de TI con rapidez.

Explorar IBM watsonx Code Assistant

IBM COBOL Compiler Family

Los compiladores COBOL de IBM son compatibles con los sistemas operativos IBM z/OSIBM AIX y Linux. Obtendrá las herramientas para ampliar el desarrollo de sus programas y utilizar las aplicaciones existentes. Puede posicionar estratégicamente su proceso de desarrollo de aplicaciones para un mercado en constante evolución.

Explore IBM COBOL Compilers family
 Recursos El asistente de código para Z lleva la IA generativa a la modernización de aplicaciones de mainframe

Vea la grabación a la carta con nuestro equipo para saber cómo la IA está acelerando la modernización de las aplicaciones de mainframe.

Lleve la modernización de aplicaciones y la automatización de TI al siguiente nivel con IA generativa

Descubra cómo las plataformas de gestión de la nube híbrida incorporan automatización infundida con IA generativa para ayudar a las empresas a capitalizar las tecnologías emergentes, ahorrar costes y aumentar la eficiencia, mejorar el rendimiento de TI y ofrecer y escalar nuevos servicios con mayor rapidez.

La guía del CEO para la IA generativa

Comprenda la importancia de adoptar la IA generativa y cómo puede beneficiar a sus prácticas empresariales, tanto ahora como en el futuro.

Dé el siguiente paso

¿Listo para acelerar la modernización de aplicaciones de mainframe, impulsada por IA generativa? Descubra lo que watsonx Code Assistant for Z es capaz de hacer cuando programe una demostración en directo o hable con uno de nuestros especialistas de producto.

Explore IBM watsonx Code Assistant for Z Solicite una demostración en directo
Notas a pie de página

1 The World Depends on 60-Year-Old Code No One Knows Anymore (enlace externo a ibm.com), PC Mag, 1 de diciembre de 2023

2 Generative AI In Code Generation (enlace externo a ibm.com), Inc42 Media, 24 de marzo de 2024