¡Hola! 👋 Soy Matías, desarrollador especializado en COBOL, CICS y DB2 sobre Mainframe IBM z/OS. Este repositorio documenta mi camino de aprendizaje con los ejercicios prácticos del programa Desarrollador COBOL de CODEKI | UBA Económicas.
Si te gusta cómo trabajo, me querés en tu equipo o tenés algún consejo para que siga mejorando, ¡te invito a que me escribas! 📝
"El Mainframe no es viejo, es clásico. Y los clásicos nunca pasan de moda."
- Contexto de la formación
- Evolución del aprendizaje
- Del código al Mainframe: ciclo de ejecución
- Etapa 1 — Fundamentos COBOL / COBOL Batch
- Etapa 2 — Integración con DB2 / SQL Embebido
- Etapa 3 — Transacciones con CICS
- Estilo de programación
- Leyenda
- Autor
| Institución | CODEKI | UBA Económicas (Universidad de Buenos Aires) |
| Programa | Desarrollador COBOL Mainframe |
| Modalidad | Full-time, práctica real contra Mainframe IBM z/OS 24/7 (TSO/ISPF, terminal 3270) |
| Duración | 7 meses (Marzo 2025 – Septiembre 2025) |
| Certificación | Certificación Profesional Desarrollador COBOL (UBA) |
| Credenciales digitales | Ver todas en Credly → (incluye IBM Z 101, IBM z/OS Mainframe Practitioner, IBM Z Xplore, COBOL Fundamentals de Rocket Software, entre otras) |
1️⃣ Fundamentos COBOL → 2️⃣ Manejo de archivos → 3️⃣ Técnicas avanzadas → 4️⃣ Integración con DB2 → 5️⃣ CICS
A diferencia de un proyecto que se levanta con docker compose up, en Mainframe el camino del código hasta ejecutarse en el sistema real es otro. El ciclo que seguí para cada programa de este repositorio:
1. Edición del fuente COBOL
TSO/ISPF → Opción 2 (EDIT) sobre el dataset PDS del proyecto
2. Compilación y Link-Edit
Se somete un JCL (ver 00 JCLLIB) que invoca el compilador COBOL
y el Linkage Editor → genera el load module ejecutable
3. Ejecución
├─ Batch → se somete el JCL del programa (JOB) que lee/escribe
│ datasets QSAM/VSAM y, si aplica, hace consultas a DB2
│
└─ CICS → el programa se define como transacción; se dispara
desde una pantalla BMS y corre bajo el gestor CICS,
leyendo/escribiendo contra VSAM y DB2 en línea
4. Monitoreo y diagnóstico
SDSF → seguimiento del JOB (estado, JES, códigos de retorno)
y revisión del spool de salida (SYSOUT) ante cualquier ABEND
5. Datos
SPUFI → consultas SQL ad-hoc contra DB2 para validar resultados
sin necesidad de correr el programa completo
Este ciclo (editar → compilar/link → someter → monitorear) es el que se repite en cada uno de los programas documentados en las tres etapas de abajo.
| # | Programa | Técnicas Aplicadas | Tecnologías | Conceptos Adicionales |
|---|---|---|---|---|
| 01 | PGMSUMA | Procesamiento básico | COBOL | - |
| 02 | PGM3CCAB | Lectura de archivos | COBOL, JCL | QSAM |
| 03 | PGM2CCAB | Corte de control (1 nivel) | COBOL, JCL | QSAM, SORT |
| 04 | PGMSIN12 | Corte de control (2 niveles) | COBOL, JCL | QSAM, SORT |
| 05 | PGMCORT2 | Corte de control complejo | COBOL, JCL | QSAM, SORT |
| 06 | PGMC1CAB | Validación de campos | COBOL, JCL | QSAM |
| 07 | PGMSIN14 | Validación + Escritura archivos | COBOL, JCL | QSAM |
| 08 | PGMVACAB | Validación múltiple de campos | COBOL, JCL | QSAM |
| 09 | PGMAPCAB | Apareo de archivos | COBOL, JCL | QSAM, SORT |
| 10 | PGMTACAB | Manejo de tablas (OCCURS) | COBOL, JCL | QSAM |
| 11 | PGMSIN18 | Apareo con VSAM | COBOL, JCL | VSAM, QSAM, SORT |
| 12 | PGMIMCAB | Generación de reportes FBA | COBOL, JCL | QSAM, FBA |
| 13 | PGMSIN21 | Reportes con cortes de control | COBOL, JCL | QSAM, FBA, SORT |
| 14 | PGMVSCAB | Procesamiento VSAM + FBA | COBOL, JCL | VSAM, FBA |
| # | Programa | Técnicas Aplicadas | Tecnologías | Conceptos Adicionales |
|---|---|---|---|---|
| 15 | PGMSIN27 | INSERTS a tablas DB2 | COBOL, JCL, SQL | VSAM, DB2 |
| 16 | PGMSIN28 | Consultas con CURSOR + Reportes FBA | COBOL, JCL, SQL | DB2, FBA, CURSOR |
| 17 | PGMSIN29 | Validaciones + INSERT & UPDATE a tablas DB2 | COBOL, JCL, SQL | QSAM, DB2 |
| 18 | PGMB2CAB | Consultas con CURSOR + Corte de control | COBOL, JCL, SQL | DB2, CURSOR, ORDER BY |
| 19 | PGMSIN31 | Apareo de archivo QSAM con CURSOR | COBOL, JCL, SQL | DB2, CURSOR, QSAM |
| 20 | PGMB7CAB | Apareo de dos CURSORES con salida FBA | COBOL, JCL, SQL | DB2, CURSOR, FBA |
| # | Programa | Técnicas Aplicadas | Tecnologías | Conceptos Adicionales |
|---|---|---|---|---|
| 21 | PGMBACAB | Envío de texto a terminal mediante CICS | COBOL, BMS, JCL, CICS | SEND TEXT |
| 22 | PGMMECAB | Creación de MENU para CICS | COBOL, BMS, JCL, CICS | SEND MAP / RECEIVE MAP, XCTL, BMS |
| 23 | PGMPRCAB | Funcionalidad CONSULTA de cliente con CICS | COBOL, BMS, JCL, CICS | READ DATASET, VSAM en TABLA CICS, COMMAREA, RETURN TRANSID |
Antes de especializarme en COBOL Mainframe estaba enfocado principalmente en Backend con Java. Esa experiencia previa (+2 años) me acercó a distintos paradigmas de programación y patrones de diseño, por lo que valoro mucho la mantenibilidad y la escalabilidad del código que escribo.
Traje esa "mochila" al Mainframe: mi código COBOL se caracteriza por ser claro, prolijo y bien documentado. Mis programas siguen buenas prácticas de programación estructurada, priorizando modularidad y claridad para que el mantenimiento no sea engorroso, ni para mí ni para cualquier otro desarrollador que tenga que continuarlo.
🔷 Tecnologías principales
- COBOL: COmmon Business-Oriented Language (lenguaje de programación)
- JCL: Job Control Language (lenguaje de control de trabajos en Mainframe)
- SQL: Structured Query Language (lenguaje de base de datos)
- DB2: DBMS propio de IBM (Mainframe)
- CICS: Customer Information Control System (gestor transaccional de IBM)
- ASSEMBLER: lenguaje de programación de bajo nivel (utilizado en el curso para generar los mapas BMS)
🔸 Conceptos adicionales
- TSO / ISPF: entorno de trabajo en Mainframe z/OS mediante terminal 3270
- QSAM: archivos secuenciales
- VSAM: archivos indexados
- FBA: formato de impresión
- SORT: ordenamiento de datos
- CORTE: control de rupturas
- CURSOR: manejo de resultados SQL
- BMS: Basic Mapping Support (mapas / soporte visual para CICS)
- SDSF: System Display and Search Facility (monitoreo de jobs y spool)
- SPUFI: SQL Processor Using File Input (consultas SQL ad-hoc contra DB2)
Matías Mazzitelli — Desarrollador COBOL Mainframe | Backend Java







