COBOL tiene fama de lenguaje inaccesible: parece que hace falta un mainframe de IBM, una cuenta en un banco y muchos años de experiencia para escribir la primera línea. No es así. Con un ordenador normal y un compilador gratuito puedes aprender el lenguaje en unas semanas, y hay entornos gratuitos para practicar después en un mainframe de verdad. Esta guía explica cómo empezar con COBOL desde cero: te lleva hasta tu primer programa que lee un archivo, con los errores que te vas a encontrar por el camino, y te cuenta qué más hay que aprender para trabajar con él. Si antes quieres saber de dónde viene y si merece la pena, lo contamos en COBOL: historia, dónde se usa y si conviene aprenderlo.
Lo que necesitas (y lo que no)
- Un ordenador cualquiera con Windows, macOS o Linux.
- GnuCOBOL, un compilador libre y gratuito del proyecto GNU. Su versión actual es la 3.2, de julio de 2023, y entiende el COBOL estándar y buena parte de los dialectos de IBM y de Micro Focus.
- Un editor de texto. Cualquiera sirve; con VS Code y una extensión de COBOL es más cómodo.
Lo que no necesitas para empezar: un mainframe, una licencia de pago ni saber otro lenguaje. Saber programar en otro ayuda, pero COBOL se escribe casi en inglés y es de los lenguajes más fáciles de leer.
Instalar GnuCOBOL
En los tres sistemas se instala desde el gestor de paquetes habitual. Todos instalan la orden cobc, que es el compilador.
Linux
# Debian, Ubuntu y derivados sudo apt install gnucobol # Fedora sudo dnf install gnucobol
Debian 13 y Ubuntu 26.04 instalan la versión 3.2. Debian 12 y Ubuntu 24.04 se quedan en la 3.1.2, que también sirve para todo lo de esta guía.
macOS
Con Homebrew instalado:
brew install gnucobol
Windows
Hay dos caminos. El más sencillo es WSL, el Linux que Windows trae integrado: abre PowerShell como administrador, escribe wsl --install, reinicia, y dentro de la ventana de Ubuntu que aparece sigue los pasos de Linux. El otro es MSYS2, si prefieres programas nativos de Windows: en su terminal UCRT64, la orden es esta:
pacman -S mingw-w64-ucrt-x86_64-gnucobol
Comprobar que funciona
cobc --version
La primera línea de la respuestacobc (GnuCOBOL) 3.2.0
warning: '_FORTIFY_SOURCE' redefined; con el de Debian 13, cada ejecución escribe Warning: program compiled against libxml 212 using older 209. Son detalles de cómo se empaquetó GnuCOBOL en esas distribuciones: el programa funciona igual. Las salidas de esta guía son de Fedora 43, que no escribe ninguno de los dos.El editor
Puedes escribir COBOL en el Bloc de notas, pero un editor que colorea el código y marca las columnas te ahorrará muchos errores. En VS Code, las extensiones más útiles para empezar son COBOL, de Bitlang (la más instalada, con unas 204,000 instalaciones), y SuperBOL Studio, de OCamlPro, pensada para trabajar con GnuCOBOL. Cuando pases al mainframe, se añaden IBM Z Open Editor y Zowe Explorer, que veremos al final.
Tu primer programa
Crea un archivo llamado hola.cob con este contenido. Copia también los espacios del principio de cada línea: importan, y enseguida verás por qué.
IDENTIFICATION DIVISION.
PROGRAM-ID. HOLA.
PROCEDURE DIVISION.
DISPLAY "Hola, mundo".
STOP RUN.Para compilarlo y ejecutarlo:
cobc -x hola.cob ./hola
SalidaHola, mundo
La opción -x le pide a cobc un ejecutable, un programa que se lanza solo. Sin ella, crea un módulo (hola.so en Linux) que está pensado para que lo llame otro programa. En Windows con MSYS2 el ejecutable se llama hola.exe y se lanza con ./hola.exe.
Las columnas: herencia de las tarjetas perforadas
Los espacios del principio están ahí porque COBOL nació en 1959, cuando los programas se escribían en tarjetas perforadas de 80 columnas, una línea por tarjeta. Cada zona de la tarjeta tenía su función, y el llamado formato fijo lo sigue respetando:
En la práctica, para empezar basta con recordar dos reglas: las instrucciones empiezan en la columna 12 (con once espacios delante) y nada puede pasar de la columna 72. Las divisiones, las secciones y los niveles 01 empiezan en la columna 8 (siete espacios). Un buen editor dibuja líneas verticales en esas columnas para que no tengas que contar.
Existe también el formato libre, sin columnas, que el estándar admite desde 2002. Con GnuCOBOL se activa con la opción -free:
*> Formato libre: sin columnas fijas (cobc -free)
identification division.
program-id. libre.
procedure division.
display "Esto tambien es COBOL, en formato libre".
stop run.cobc -x -free libre.cob ./libre
SalidaEsto tambien es COBOL, en formato libre
Es más cómodo, pero si tu objetivo es trabajar con COBOL, acostúmbrate al formato fijo: es el que vas a encontrar en los programas de los bancos y las aseguradoras, y el que exigen los compiladores del mainframe.
Las cuatro divisiones
Todo programa COBOL se organiza en cuatro bloques llamados divisiones, siempre en el mismo orden. Es como una receta: primero el título, luego el material, después los ingredientes y por último los pasos.
Este programa usa tres de ellas. Pide un nombre y una edad, y responde:
IDENTIFICATION DIVISION.
PROGRAM-ID. SALUDO.
*> Pide un nombre y una edad, y responde.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 NOMBRE PIC X(20).
01 EDAD PIC 999.
01 EN-DIEZ PIC ZZ9.
PROCEDURE DIVISION.
DISPLAY "Como te llamas? " WITH NO ADVANCING
ACCEPT NOMBRE
DISPLAY "Cuantos anos tienes? " WITH NO ADVANCING
ACCEPT EDAD
COMPUTE EN-DIEZ = EDAD + 10
DISPLAY "Hola, " FUNCTION TRIM(NOMBRE) "."
DISPLAY "Dentro de diez anos tendras "
FUNCTION TRIM(EN-DIEZ) "."
STOP RUN.Salida, escribiendo Marta y 34Como te llamas? Cuantos anos tienes? Hola, Marta. Dentro de diez anos tendras 44.
Lo que hay que saber para leerlo:
- La
DATA DIVISIONdeclara todas las variables antes de usarlas. Dentro, laWORKING-STORAGE SECTIONes la memoria de trabajo del programa. El01es el nivel: indica que es una variable completa, no una parte de otra. PIC(de picture, «dibujo») dice qué cabe en la variable:X(20)son 20 caracteres y999un número de tres cifras.- Las instrucciones son casi frases en inglés:
DISPLAYescribe,ACCEPTlee del teclado yCOMPUTEcalcula. Las palabras se pueden escribir en mayúsculas o en minúsculas. - El punto cierra una frase. Dentro de la
PROCEDURE DIVISIONse puede poner un punto al final de cada instrucción o solo al final de un párrafo, como aquí. FUNCTION TRIMquita los espacios de relleno: «Marta» ocupa 5 de los 20 caracteres deNOMBRE, y sinTRIMse escribirían los otros 15 como espacios.
PIC X(20) cuenta bytes, no letras. En UTF-8, la codificación de casi todos los sistemas actuales, la ñ y las vocales con tilde ocupan dos bytes, así que los textos con ellas se descuadran o se cortan. Los mainframes usan EBCDIC, otra codificación con un byte por letra. Para practicar, lo más sencillo es escribir los textos sin tildes.Los datos: PIC y los decimales exactos
La cláusula PIC es el corazón de COBOL. Cada símbolo dice qué hay en cada posición:
9: una cifra.9(7)son siete cifras.X: un carácter cualquiera.V: dónde va la coma decimal. No ocupa espacio:9(7)V99son nueve cifras, dos de ellas decimales.S: el número lleva signo.Z,$,,,.yCR: símbolos de edición, para mostrar el número bonito, con ceros a la izquierda en blanco, el símbolo de moneda pegado a la cifra, separador de miles oCR(crédito) si es negativo.
Los niveles permiten además agrupar variables en un registro, como una ficha con varios campos:
IDENTIFICATION DIVISION.
PROGRAM-ID. DATOS.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 CLIENTE.
05 NOMBRE PIC X(12) VALUE "Ana Lopez".
05 CIUDAD PIC X(10) VALUE "Puebla".
05 SALDO PIC S9(7)V99 VALUE -1250.5.
01 SALDO-ED PIC $$,$$$,$$9.99CR.
01 PEQUENO PIC 99.
PROCEDURE DIVISION.
DISPLAY "Registro completo: [" CLIENTE "]"
DISPLAY "Saldo tal cual: " SALDO
MOVE SALDO TO SALDO-ED
DISPLAY "Saldo editado: " SALDO-ED
MOVE 1234 TO PEQUENO
DISPLAY "1234 en PIC 99: " PEQUENO
STOP RUN.SalidaRegistro completo: [Ana Lopez Puebla 00012505p] Saldo tal cual: -0001250.50 Saldo editado: $1,250.50CR 1234 en PIC 99: 34
Cuatro detalles de esta salida enseñan mucho de COBOL:
- El registro es una sola tira de caracteres.
CLIENTEson los 12 caracteres del nombre, los 10 de la ciudad y las 9 cifras del saldo, pegados. Así se guardan los datos en los archivos de los bancos: sin comas ni comillas, cada campo en una posición fija. - El signo va escondido en la última cifra. El saldo, dentro del registro, se ve como
00012505p: lapes un 0 con el signo menos incorporado. Es una forma de guardar el signo sin gastar un carácter más. - La edición lo arregla para mostrarlo. Al mover el saldo a una variable con
PIC $$,$$$,$$9.99CR, sale con su símbolo de moneda, la coma de miles yCRpor ser negativo. - Lo que no cabe se corta sin avisar. 1234 en una variable de dos cifras se queda en 34. Al ejecutar no hay ningún error.
Ese último punto es peligroso. GnuCOBOL lo detecta al compilar si se lo pides con -Wall, que activa los avisos:
cobc -x -Wall datos.cob (primeras líneas)datos.cob:16: warning: value size exceeds data size [-Wtruncate] 14 | MOVE SALDO TO SALDO-ED 15 | DISPLAY "Saldo editado: " SALDO-ED 16 > MOVE 1234 TO PEQUENO
Acostúmbrate a compilar siempre con -Wall. Más adelante, en los errores típicos, verás el caso en que el aviso no llega a tiempo.
Por qué los bancos quieren COBOL: los decimales exactos
Casi todos los lenguajes modernos guardan los números con decimales en coma flotante, un formato binario que no puede representar con exactitud valores como 0.10. Suma diez veces 0.10 en Python con un bucle y verás el resultado:
Python 3.14: t = 0.0; diez veces t += 0.10; print(t)0.9999999999999999
COBOL guarda los números en decimal, cifra a cifra, como los escribirías a mano. El mismo cálculo da exactamente 1:
IDENTIFICATION DIVISION.
PROGRAM-ID. SUMA.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 TOTAL PIC 9V99 VALUE ZERO.
01 TOTAL-ED PIC 9.99.
01 I PIC 99.
PROCEDURE DIVISION.
PERFORM VARYING I FROM 1 BY 1 UNTIL I > 10
ADD 0.10 TO TOTAL
END-PERFORM
MOVE TOTAL TO TOTAL-ED
DISPLAY "Diez veces 0.10 = " TOTAL-ED
STOP RUN.SalidaDiez veces 0.10 = 1.00
Y cuando un cálculo produce más decimales de los que caben, tú decides qué hacer: con ROUNDED se redondea y sin él se truncan. Este programa aplica un interés mensual del 1.25 % a tres cuentas y redondea al centavo:
IDENTIFICATION DIVISION.
PROGRAM-ID. INTERESES.
*> Aplica el interes mensual a tres cuentas y muestra el saldo.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 TASA-MENSUAL PIC V9999 VALUE .0125.
01 SALDO PIC 9(7)V99.
01 INTERES PIC 9(7)V99.
01 TOTAL PIC 9(8)V99 VALUE ZERO.
01 SALDO-ED PIC $$,$$$,$$9.99.
01 INTERES-ED PIC $$,$$$,$$9.99.
01 TOTAL-ED PIC $$$,$$$,$$9.99.
01 CUENTAS.
05 FILLER PIC 9(7)V99 VALUE 1299.99.
05 FILLER PIC 9(7)V99 VALUE 250000.00.
05 FILLER PIC 9(7)V99 VALUE 0.10.
01 TABLA REDEFINES CUENTAS.
05 CUENTA PIC 9(7)V99 OCCURS 3 TIMES.
01 I PIC 9.
PROCEDURE DIVISION.
PERFORM VARYING I FROM 1 BY 1 UNTIL I > 3
MOVE CUENTA(I) TO SALDO
COMPUTE INTERES ROUNDED = SALDO * TASA-MENSUAL
ADD INTERES TO SALDO
ADD SALDO TO TOTAL
MOVE SALDO TO SALDO-ED
MOVE INTERES TO INTERES-ED
DISPLAY "Cuenta " I ": interes " INTERES-ED
" saldo " SALDO-ED
END-PERFORM
MOVE TOTAL TO TOTAL-ED
DISPLAY "Total de los saldos: " TOTAL-ED
STOP RUN.SalidaCuenta 1: interes $16.25 saldo $1,316.24 Cuenta 2: interes $3,125.00 saldo $253,125.00 Cuenta 3: interes $0.00 saldo $0.10 Total de los saldos: $254,441.34
Fíjate en la tercera cuenta: el 1.25 % de 10 centavos es 0.125 centavos, que redondeado al centavo es 0. Esa regla, escrita a la vista en cada cálculo, es lo que hace que un programa COBOL dé al céntimo el mismo resultado hoy que hace cuarenta años. También aparecen dos novedades: OCCURS, que crea una tabla (lo que en otros lenguajes es un array), y PERFORM VARYING, que es el bucle for de COBOL.
Leer un archivo
El trabajo típico de COBOL es leer un archivo de registros, hacer cuentas y escribir un resumen. Este archivo ventas.txt tiene cada campo en una posición fija: la fecha en las columnas 1 a 10, el producto en las 11 a 29, la cantidad en 4 cifras y el precio en 9 cifras, las dos últimas decimales:
2026-10-01Teclado 0002000049999 2026-10-01Raton 0005000012950 2026-10-02Monitor 0001000389900 2026-10-03Cable USB-C 0010000008999
El programa que lo lee usa por primera vez la ENVIRONMENT DIVISION, para decir qué archivo es, y la FILE SECTION, para describir cómo es cada registro:
IDENTIFICATION DIVISION.
PROGRAM-ID. VENTAS.
*> Lee ventas.txt y calcula el total de cada linea y del dia.
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT ARCH-VENTAS ASSIGN TO "ventas.txt"
ORGANIZATION IS LINE SEQUENTIAL.
DATA DIVISION.
FILE SECTION.
FD ARCH-VENTAS.
01 VENTA.
05 V-FECHA PIC X(10).
05 V-PRODUCTO PIC X(19).
05 V-CANTIDAD PIC 9(4).
05 V-PRECIO PIC 9(7)V99.
WORKING-STORAGE SECTION.
01 FIN-ARCHIVO PIC X VALUE "N".
01 IMPORTE PIC 9(9)V99.
01 TOTAL PIC 9(9)V99 VALUE ZERO.
01 IMPORTE-ED PIC $$$,$$$,$$9.99.
01 TOTAL-ED PIC $$$,$$$,$$9.99.
PROCEDURE DIVISION.
OPEN INPUT ARCH-VENTAS
PERFORM UNTIL FIN-ARCHIVO = "S"
READ ARCH-VENTAS
AT END
MOVE "S" TO FIN-ARCHIVO
NOT AT END
COMPUTE IMPORTE = V-CANTIDAD * V-PRECIO
ADD IMPORTE TO TOTAL
MOVE IMPORTE TO IMPORTE-ED
DISPLAY V-PRODUCTO V-CANTIDAD " x"
IMPORTE-ED
END-READ
END-PERFORM
CLOSE ARCH-VENTAS
MOVE TOTAL TO TOTAL-ED
DISPLAY "Total de las ventas: " TOTAL-ED
STOP RUN.SalidaTeclado 0002 x $999.98 Raton 0005 x $647.50 Monitor 0001 x $3,899.00 Cable USB-C 0010 x $899.90 Total de las ventas: $6,446.38
Las piezas nuevas:
SELECT … ASSIGN TOconecta un nombre interno (ARCH-VENTAS) con el archivo real.LINE SEQUENTIALsignifica un archivo de texto con una línea por registro, el más cómodo en un ordenador personal.FD(descripción de archivo) dibuja el registro campo a campo. No hay que separar nada: al leer una línea, cada campo se rellena según su posición.OPEN,READyCLOSEabren, leen línea a línea y cierran.AT ENDse ejecuta cuando ya no quedan líneas, y con él se marca el final del bucle.
Los errores típicos
Los mensajes de GnuCOBOL están en inglés y señalan la línea con un >. Estos son los que más vas a ver al empezar, tal como salen.
Falta un punto
Se ha olvidado el punto después de PROGRAM-ID. HOLA:
cobc -x e1-punto.cobe1-punto.cob:3: error: syntax error, unexpected PROCEDURE
1 | IDENTIFICATION DIVISION.
2 | PROGRAM-ID. HOLA
3 > PROCEDURE DIVISION.
4 | DISPLAY "Hola, mundo".
5 | STOP RUN.
[código de salida 1]El error se marca en la línea siguiente a la que tiene el fallo: el compilador seguía esperando el final de la frase y se encontró PROCEDURE. Cuando un error no tenga sentido en su línea, mira la de arriba.
Un nombre mal escrito
cobc -x e3-nombre.cob: se declaró TOTAL y se escribió TOTLe3-nombre.cob:7: error: 'TOTL' is not defined
5 | 01 TOTAL PIC 9(5) VALUE 250.
6 | PROCEDURE DIVISION.
7 > DISPLAY "Total: " TOTL.
8 | STOP RUN.
9 | <EOF>
[código de salida 1]Es el más fácil: is not defined quiere decir que esa variable no está en la DATA DIVISION.
Unas comillas sin cerrar
cobc -x e5-comillas.cob: falta la comilla de cierre en DISPLAYe5-comillas.cob:5: error: continuation character expected
3 | PROCEDURE DIVISION.
4 | DISPLAY "Hola, mundo.
5 > STOP RUN.
6 | <EOF>
e5-comillas.cob:4: error: invalid literal: 'Hola mundo. ...'
2 | PROGRAM-ID. HOLA.
3 | PROCEDURE DIVISION.
4 > DISPLAY "Hola, mundo.
5 | STOP RUN.
6 | <EOF>
e5-comillas.cob:4: note: missing terminating " character
e5-comillas.cob:4: warning: optional period used [-Wdialect]
[código de salida 1]Varios mensajes para un solo fallo; el que importa es la nota missing terminating » character. En COBOL un texto no puede seguir en la línea siguiente sin más: para continuarlo hace falta un guion en la columna 7, la de indicador.
Código pegado sin los espacios
Si copias un programa de una web o de un PDF y se pierden los espacios del principio, GnuCOBOL 3.2 se da cuenta y lo trata como formato libre:
cobc -x e2-columnas.cob (sin espacios al principio)e2-columnas.cob:1: note: free format detected
1 > IDENTIFICATION DIVISION.Funciona, pero los compiladores del mainframe no hacen esa deducción. Si fuerzas el formato fijo con -fformat=fixed, verás lo que pasaría allí: cada línea toma su séptima letra por el indicador y la rechaza.
cobc -x -fformat=fixed e2-columnas.cob (primer error de seis)e2-columnas.cob:1: error: invalid indicator 'F' at column 7
1 > IDENTIFICATION DIVISION.Algo que pasa de la columna 72
Este es el error más traicionero, porque no da ningún error. En esta línea, el + 25 quedó a partir de la columna 73:
IDENTIFICATION DIVISION.
PROGRAM-ID. COL73.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 PRECIO PIC 9(5)V99 VALUE 100.
01 PRECIO-ED PIC ZZ,ZZ9.99.
PROCEDURE DIVISION.
COMPUTE PRECIO = PRECIO * 1.16 + 25
MOVE PRECIO TO PRECIO-ED
DISPLAY "Precio final: " PRECIO-ED
STOP RUN.cobc -x e4-col73.cob && ./e4-col73Precio final: 116.00
El precio debería ser 141 (100 × 1.16 + 25), pero el compilador ignoró todo lo que hay más allá de la columna 72 y calculó solo 100 × 1.16. Ni siquiera -Wall lo avisa: hace falta -W, que activa todos los avisos, incluidos algunos muy pesados:
cobc -x -W e4-col73.cob (primer aviso)e4-col73.cob:8: warning: source text after program-text area (column 72) [-Wdangling-text]
6 | 01 PRECIO-ED PIC ZZ,ZZ9.99.
7 | PROCEDURE DIVISION.
8 > COMPUTE PRECIO = PRECIO * 1.16 +..
9 | MOVE PRECIO TO PRECIO-ED
10 | DISPLAY "Precio final: " PRECIO-EDLa mejor defensa es el editor: con una línea vertical en la columna 72, lo verás antes de compilar.
Un número que no cabe al calcular
Ya viste que lo que no cabe se corta sin avisar. Al calcular, COBOL permite atrapar ese caso con ON SIZE ERROR:
IDENTIFICATION DIVISION.
PROGRAM-ID. DESBORDE.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 UNIDADES PIC 99 VALUE 95.
PROCEDURE DIVISION.
ADD 10 TO UNIDADES
ON SIZE ERROR
DISPLAY "No cabe: UNIDADES sigue en " UNIDADES
NOT ON SIZE ERROR
DISPLAY "Ahora hay " UNIDADES
END-ADD
ADD 10 TO UNIDADES
DISPLAY "Sin ON SIZE ERROR: " UNIDADES
STOP RUN.SalidaNo cabe: UNIDADES sigue en 95 Sin ON SIZE ERROR: 05
Con ON SIZE ERROR, la suma que no cabe no se hace y el programa puede reaccionar. Sin él, 95 + 10 se queda en 05, sin ningún aviso. En un programa que maneja dinero, cualquier cálculo que pueda desbordarse debería llevarlo.
Del ordenador al mainframe
Con lo anterior ya sabes leer y escribir COBOL. Pero el COBOL que se usa en los bancos, las aseguradoras y las administraciones corre en mainframes de IBM con el sistema z/OS, y allí el lenguaje viene acompañado de un entorno con sus propias herramientas:
- z/OS es el sistema operativo de los mainframes de IBM. No hay carpetas como en Windows: los archivos se llaman data sets y tienen nombres como
USUARIO.COBOL.FUENTES. - JCL (Job Control Language) es el lenguaje con el que se pide al sistema que haga un trabajo: compila este programa, ejecútalo con estos archivos y guarda el resultado allí. Cada programa COBOL que se ejecuta por lotes va acompañado de su JCL.
- CICS es el programa que gestiona las operaciones en tiempo real: cuando sacas dinero de un cajero, un programa COBOL que corre dentro de CICS atiende la petición.
- Db2 es la base de datos de IBM. Los programas COBOL le hacen consultas SQL escritas dentro del propio código.
- VSAM es un tipo de archivo indexado, para buscar un registro por su clave sin leerlos todos.
No hace falta comprar nada para practicar con todo esto. Hay dos opciones gratuitas con acceso a un mainframe real:
- IBM Z Xplore: retos gratuitos, sin conocimientos previos, que se hacen desde VS Code. Cubren JCL, COBOL, REXX, VSAM, Db2, Python y la parte Unix de z/OS, y dan insignias digitales que se pueden poner en el currículum.
- El curso de COBOL del Open Mainframe Project, de la Linux Foundation, creado con IBM y el American River College: cuatro libros (primeros pasos, el lenguaje, temas avanzados y pruebas) con ejercicios, y un entorno interactivo para hacerlos. Se sigue con VS Code, Zowe Explorer e IBM Z Open Editor, y tiene versión en vídeo en Coursera y YouTube.
Una ruta para aprender
- Semanas 1 y 2, el lenguaje en tu ordenador. Con GnuCOBOL, repite los programas de esta guía y cámbialos: variables,
PIC,IFyEVALUATE(elswitchde COBOL),PERFORMcon párrafos y bucles. - Semanas 3 y 4, archivos y tablas. Leer y escribir archivos de registros,
OCCURS, ordenar conSORT, informes con totales por grupo yCOPYpara compartir la descripción de un registro entre programas. - Segundo mes, el mainframe. Empieza IBM Z Xplore o el curso del Open Mainframe Project: data sets, JCL y compilar en z/OS. Lo que ya sabes del lenguaje te servirá tal cual.
- Después, lo que pida el trabajo. CICS y Db2 son los más demandados en banca. Leer programas ajenos grandes y entender su JCL es la habilidad que más se valora: en COBOL se mantiene mucho más código del que se escribe desde cero.
Resumen
- Para empezar: GnuCOBOL 3.2 (
apt,dnf,brew, o WSL y MSYS2 en Windows) y VS Code con una extensión de COBOL. - Para compilar:
cobc -x -Wall programa.cob, y-Wde vez en cuando para cazar lo que pasa de la columna 72. - Para no equivocarte: las instrucciones, de la columna 12 a la 72; un punto al final de cada encabezado; y
ON SIZE ERRORen los cálculos que puedan desbordarse. - Para trabajar: el entorno del mainframe (z/OS, JCL, CICS y Db2), que se practica gratis con IBM Z Xplore y el curso del Open Mainframe Project.
Todos los programas y mensajes de esta guía se compilaron y ejecutaron el 27 de octubre de 2026 con GnuCOBOL 3.2 en Fedora 43, en un contenedor. Fuentes: GnuCOBOL; paquetes de Debian, Homebrew y MSYS2; instalación de WSL; IBM Z Xplore; curso del Open Mainframe Project. Portada: terminal IBM 3279, foto de Patrick Finnegan, licencia CC BY 2.0, Wikimedia Commons.
