Attualità

COBOL, il codice immortale rinasce dalle sue ceneri



Indirizzo copiato

Il linguaggio, nato a fine anni ’50, svolge ancora un ruolo fondamentale nel mondo del software aziendale, con miliardi di linee che gestiscono il mondo transazionale. Come rispondere alla sfida di modernizzazione applicativa, per rispondere alle esigenze di agilità poste dal business?

Aggiornato il 17 apr 2025



Shutterstock_2357026541

In sintesi

  • Il COBOL continua a gestire sistemi critici (banche, assicurazioni, PA, sanità, telco) e, secondo Forrester 2024, il 61% delle aziende usa il mainframe.
  • La carenza di competenze e i costi elevati favoriscono la modernizzazione rispetto alla riscrittura, perché la conversione linea per linea verso Java è complessa e rischiosa.
  • Provider come IBM propongono strumenti (es. watsonx Code Assistant for Z, XMainframe) e un percorso a fasi (discovery, refactor, transform, explanation) per modernizzare a basso rischio mantenendo il mainframe e sfruttando i zIIP.
Riassunto generato con AI

Almeno 800 miliardi di righe di COBOL (COmmon Business Oriented Language), ancora in produzione a livello globale, gestiscono ogni giorno miliardi di transazioni, nei sistemi di banche e assicurazioni, nelle pubbliche amministrazioni centrali, nella sanità, nelle prenotazioni aeree, nelle fatturazioni telco, nel retail, nelle operazioni bancomat. La longevità delle applicazioni COBOL deriva dalla loro resilienza e adattabilità che consente di svolgere un ruolo vitale nel mantenimento di questi sistemi legacy. Da considerare poi che, secondo un report di Forrester del 2024, il 61% delle aziende globali utilizza il mainframe e, fra le aziende che lo usano, il 54% prevede di intensificarne l’utilizzo.

Il linguaggio è stato progettato per scrivere applicazioni che eseguono transazioni e hanno come input dati (da file, database o altro) che, una volta elaborati, producono risultati nella forma desiderata. Il successo del COBOL è probabilmente dovuto anche alla sua portabilità: in quanto linguaggio compilato (normale oggi, un unicum all’epoca), a partire dal codice sorgente genera script per diverse tipologie di macchine/sistemi operativi.

Quali approcci per la trasformazione

La spinta a mettere mano a questo immenso patrimonio legacy, spesso scarsamente documentato, deriva dai costi crescenti della manutenzione applicativa anche a causa dello shortage di competenze soprattutto per ragioni anagrafiche. I programmatori COBOL sono andati in pensione o ci andranno a breve, mentre le nuove leve sono formate su linguaggi di nuova generazione.

La sfida è trovare un equilibrio fra la modernizzazione applicativa, necessaria per rispondere all’agilità richiesta dalle esigenze del business, e la capacità di preservare le funzionalità esistenti e l’integrità dei dati. La prima domanda che si pongono le organizzazioni è dunque se trasformare il patrimonio COBOL in un linguaggio più moderno o se riscriverlo da zero.

La riscrittura di un’applicazione legacy ha però senso solo se la logica di business è obsoleta; richiede infatti tempi lunghi, molti mesi o più probabilmente anni, per essere completata, costi e rischi elevati. D’altra parte, anche la conversione del COBOL linea per linea non è probabilmente una buona idea, visto che i nuovi linguaggi hanno logiche del tutto differenti. Java, ad esempio, segue modelli e best practice del tutto incompatibili con quelli del COBOL.

Un’alternativa potrebbe essere la disponibilità di uno strumento che in automatico fosse in grado di estrarre le regole di business anche secomporterebbe comunque una riscrittura con tempi e costi di poco inferiori, sfruttando le competenze su linguaggi moderni, e probabilmente rischi più contenuti.

Un’opzione più attraente potrebbe essere uno strumento di conversione automatica da COBOL a un codice moderno. Tuttavia, i prodotti disponibili sul mercato che lo promettevano non hanno finora soddisfatto le aspettative. Non c’è dunque da stupirsi che la scelta prevalente sia stata finora la conservazione delle applicazioni esistenti.

Un’indagine globale indipendente, condotta da Vanson Bourne e commissionata da MicroFocus (oggi OpenText), conferma che la modernizzazione delle applicazioni è considerata la scelta preferenziale. Anziché un approccio di sostituzione, il 64% degli intervistati intende infatti modernizzare le proprie applicazioni COBOL e il 72% degli intervistati vede questa scelta come una strategia aziendale complessiva, visto che il 92% delle organizzazioni intervistate ritiene che il codice COBOL tuttora attivo rivesta un’importanza strategica per il business.

Va anche detto che IBM ha introdotto il watsonx Code Assistant for Z, uno strumento basato su AI generativa che supporta la trasformazione del codice COBOL in Java, migliorando la produttività degli sviluppatori e riducendo i rischi associati alla modernizzazione. Inoltre è stato sviluppato XMainframe, un LLM per la modernizzazione dei mainframe in grado di comprendere e interagire con sistemi legacy basati su COBOL. L’industria si sta quindi muovendo per “modernizzare” questi storici ambienti.

Il percorso suggerito da IBM per la modernizzazione del patrimonio COBOL

“Le organizzazioni chiedono agilità per offrire servizi nativi cloud e integrarli nel mondo esistente ma vogliono al tempo stesso conservare il loro patrimonio applicativo” conferma Francesco Casa, Vice President zStack, IBM Technology che abbiamo intervistato per avere il punto di vista del vendor sui cui mainframe risiede la maggior parte del codice COBOL e che ha recentemente lanciato uno strumento che supporta la conversione del linguaggio.

IBM, per vincere la sfida della carenza skill Cobol e superare il gap generazionale, ha da tempo lavorato per raggiungere l’uniformità degli strumenti di sviluppo grazie all’integrazione dei tool del mondo applicativo mainframe con quelli del mondo distribuito, con l’obiettivo di realizzare una catena di DevOps unica. Un salto significativo verso la modernizzazione applicativa potrebbe però arrivare con il lancio di uno strumento pensato per tradurre il COBOL in Java e, in prospettiva, qualunque linguaggio sorgente in qualunque linguaggio di destinazione, con il supporto dell’AI generativa. “WatsonX Code Assistant for Z non va però interpretato come una proposta di traduzione automatica dell’intero patrimonio di applicazioni”, avverte Casa. Si tratta piuttosto di un approccio metodologico strutturato che IBM propone come modello collaudato, per trasformare e validare, con basso rischio, applicazioni di grande impatto sul business. Il percorso, dove automazione e intervento umano si affiancano, prevede più fasi:

  • Undestanding e discovery per capire le interdipendenze tra i diversi programmi realizzando la mappatura delle relazioni fra programmi;
  • Refactor che permette di eliminare righe di codice non più attive e riscrivere una parte di codice COBOL in ottica microservizi;
  • Trasform che impiega l’AI generativa per suggerire quali parti di codice sono più eleggibili per la trasformazione in Java;
  • Explanation che arriverà nella seconda parte del 2024 e, grazie al supporto dell’AI generativa, produrrà documentazione in linguaggio naturale inglese per la parte che resterà in COBOL.

“In alcuni settori la richiesta non è tanto la trasformazione del codice quanto la capacità di riappropriarsi della conoscenza di questo importante patrimonio di applicazioni”, sottolinea Casa. Più in generale, l’obiettivo delle aziende che hanno come priorità la salvaguardia del business, sembra essere ottimizzare il codice COBOL e documentare cosa fa e come impatta.

“Ci aspettiamo, sulla base delle prime sperimentazioni, che in media solo il 30% del codice venga tradotto in Java e il restante 70% sia trasformato da COBOL in COBOL ottimizzato”, precisa Casa.

Il mainframe continuerà ad avere un ruolo da protagonista ospitando non solo le applicazioni COBOL ringiovanite, ma anche le applicazioni tradotte in Java nel caso operino su dati ospitati sul mainframe per garantire, grazie alla vicinanza, le performance. Verrebbe così sfruttata la sua capacità di ospitare applicazioni native containerizzate su motori specializzati, i cosiddetti zIIP (z Integrated Information Processor), che non seguono la logica tradizionale del sistema operativo mainframe z/OS ma sono container su cui far girare traffico Java.

In conclusione, come la notizia della morte del mainframe, diffusa qualche anno fa, era largamente prematura, così oggi quella del superamento del COBOL che, rinnovato, ha davanti a sé ancora lunga vita.

FAQ: cobol

Il COBOL (Common Business-Oriented Language) è un linguaggio di programmazione nato il 28 maggio 1959, sviluppato da un comitato di grandi aziende informatiche dell’epoca (Burroughs, IBM, Minneapolis-Honeywell, RCA, Sperry Rand, Sylvania Electric Products) e alcune agenzie governative statunitensi. Fu creato come progetto del Dipartimento della Difesa USA per un’accurata gestione dei loro dati e realizzato per durare il più a lungo possibile, anche oltre i suoi ideatori Grace Hopper, Jean Sammet e altri. La prima bozza delle specifiche del linguaggio fu pubblicata nel 1960 e da allora le specifiche sono state continuamente aggiornate attraverso una serie di documenti che hanno portato all’ultima versione del linguaggio, che prevede di sfruttare le nuove tecnologie per consentire alle soluzioni sviluppate di funzionare correttamente anche sui moderni sistemi operativi.

Il COBOL è ancora ampiamente utilizzato oggi, nonostante la sua età, per diverse ragioni fondamentali. Innanzitutto, almeno 800 miliardi di righe di COBOL sono ancora in produzione a livello globale, gestendo ogni giorno miliardi di transazioni nei sistemi bancari, assicurativi, nelle pubbliche amministrazioni, nella sanità e nel retail. La sua longevità deriva dalla resilienza e adattabilità che consente di mantenere questi sistemi legacy. La semplicità e la versatilità sono altri fattori chiave: il COBOL utilizza semplici frasi della lingua inglese con una sintassi vicina al linguaggio naturale, rendendo i programmi facilmente comprensibili. Inoltre, il COBOL è stato progettato per rimanere uniforme su tutte le piattaforme e i sistemi operativi, garantendo la portabilità delle applicazioni. Infine, il costo stimato per la riscrittura dei programmi COBOL (circa 25 dollari a linea) rende economicamente insostenibile la sostituzione completa di questi sistemi.

Il COBOL è particolarmente diffuso in settori che richiedono elaborazione di transazioni ad alto volume e sistemi mission-critical. Il settore finanziario e bancario è in prima linea, con il 90% delle transazioni finanziarie globali eseguite in codice COBOL. Le applicazioni gestiscono operazioni bancarie quotidiane, transazioni con carte di credito e sistemi bancomat. Le pubbliche amministrazioni centrali utilizzano estensivamente il COBOL per la gestione di servizi essenziali. Altri settori chiave includono la sanità (per la gestione dei pazienti), le compagnie aeree (sistemi di prenotazione), le telecomunicazioni (sistemi di fatturazione) e il retail (registratori di cassa e gestione dell’inventario). Secondo le stime di Butler Group, il 60-80% delle imprese mondiali basa ancora oggi le proprie attività di business su applicazioni che utilizzano questo linguaggio.

Il COBOL ha subito numerose evoluzioni dalla sua creazione nel 1959. Nel 1968, l’American National Standards Institute (ANSI) pubblicò uno standard chiamato ANSI-COBOL per superare le incompatibilità tra le varie versioni. Seguirono revisioni significative nel 1974 e nel 1985, ciascuna con l’aggiunta di nuove funzionalità. Nel 1997 fu rilasciato il COBOL 97, che introdusse la programmazione orientata agli oggetti. Negli anni recenti, il COBOL si è adattato alle tecnologie moderne, supportando tecnologie a oggetti, interscambio di dati XML, integrazione con Java, piattaforme J2EE e .NET, architetture SOA, ambienti virtuali e cloud. Le nuove versioni come Visual COBOL R3 permettono agli sviluppatori di estendere il COBOL verso piattaforme più recenti, inclusi ambienti JVM (Java Virtual Machine) e Microsoft Windows Azure, senza dover riscrivere il codice.

Una delle principali sfide legate all’uso del COBOL oggi è la carenza di competenze, poiché i programmatori esperti in questo linguaggio stanno andando in pensione mentre le nuove generazioni sono formate su linguaggi più moderni. Secondo uno studio di Micro Focus, meno di un terzo dei CIO (29%) afferma di riuscire a reclutare risorse professionali sufficienti nell’ambito della modernizzazione delle applicazioni COBOL. Un’altra sfida significativa è rappresentata dai costi crescenti della manutenzione applicativa di sistemi legacy spesso scarsamente documentati. Le aziende devono inoltre trovare un equilibrio tra la necessità di modernizzare le applicazioni per rispondere alle esigenze di agilità del business e la capacità di preservare le funzionalità esistenti e l’integrità dei dati. L’integrazione con tecnologie moderne come il cloud computing rappresenta un’ulteriore sfida, richiedendo approcci di modernizzazione che non compromettano la stabilità dei sistemi esistenti.

Le organizzazioni hanno diverse opzioni per modernizzare le applicazioni COBOL. La prima è la riscrittura completa dell’applicazione in un linguaggio moderno, che ha senso solo se la logica di business è obsoleta, poiché richiede tempi lunghi, costi elevati e comporta rischi significativi. La seconda opzione è la conversione automatica del COBOL in un linguaggio moderno, anche se i prodotti disponibili sul mercato non hanno finora soddisfatto pienamente le aspettative. Secondo un’indagine di Vanson Bourne commissionata da MicroFocus, la scelta preferenziale (64% degli intervistati) è la modernizzazione delle applicazioni esistenti anziché la loro sostituzione. Micro Focus propone soluzioni specifiche come Enterprise Analyzer, Enterprise Developer, Enterprise Test Server ed Enterprise Server per facilitare questo processo. Recentemente, IBM ha introdotto watsonx Code Assistant for Z, uno strumento basato su AI generativa che supporta la trasformazione del codice COBOL in Java, migliorando la produttività degli sviluppatori e riducendo i rischi associati alla modernizzazione.

Il COBOL si è evoluto per integrarsi efficacemente con le moderne tecnologie, incluso il cloud computing. Oggi il COBOL supporta tecnologie a oggetti, interscambio di dati XML, integrazione con Java, piattaforme J2EE e .NET, architetture SOA, ambienti virtuali e cloud. Le applicazioni COBOL possono essere trasformate in servizi cloud privati ad uso esclusivo dell’azienda o in applicazioni cloud disponibili per tutto il mercato. Soluzioni come Visual COBOL R3 di Micro Focus permettono agli sviluppatori di estendere il COBOL verso piattaforme cloud come Microsoft Windows Azure, senza dover riscrivere il codice. Questo consente di accelerare il time to market avendo a disposizione le applicazioni in tempi più rapidi. IBM ha sviluppato approcci per integrare il COBOL con il cloud, permettendo alle applicazioni di funzionare in ambienti containerizzati su motori specializzati come gli zIIP (z Integrated Information Processor), che non seguono la logica tradizionale del sistema operativo mainframe z/OS ma sono container su cui far girare traffico Java.

L’impatto del COBOL nel mondo attuale è dimostrato da numeri impressionanti. Esistono almeno 800 miliardi di righe di codice COBOL ancora in produzione a livello globale, che gestiscono ogni giorno miliardi di transazioni. Il 75% dei dati aziendali mondiali viene gestito in linguaggio COBOL, così come il 90% delle transazioni finanziarie globali. Secondo Micro Focus, i sistemi COBOL sono responsabili del trasporto di oltre 72.000 container per le spedizioni, della cura di 60 milioni di pazienti, dell’elaborazione dell’80% delle transazioni nei punti vendita e delle connessioni via cellulare di 500 milioni di utenti. Ogni giorno, ci sono 200 volte più transazioni elaborate dalle applicazioni COBOL rispetto alle ricerche effettuate con Google. Secondo un report di Forrester del 2024, il 61% delle aziende globali utilizza il mainframe e, fra le aziende che lo usano, il 54% prevede di intensificarne l’utilizzo, confermando indirettamente l’importanza continuativa del COBOL.

Il COBOL (Common Business-Oriented Language) si distingue per diverse caratteristiche fondamentali. Una delle sue peculiarità principali è la semplicità della sintassi, che utilizza frasi della lingua inglese, rendendo i programmi facilmente comprensibili anche per non specialisti. È stato progettato specificamente per scrivere applicazioni che eseguono transazioni e elaborano dati da varie fonti. La portabilità è un altro punto di forza: in quanto linguaggio compilato, genera script per diverse tipologie di macchine e sistemi operativi, permettendo alle applicazioni di funzionare su piattaforme diverse. Il COBOL offre anche una valida capacità nella gestione dei dati, avvicinandosi alle funzionalità di un sistema di gestione di basi di dati (DBMS). La struttura del programma sorgente è organizzata in divisioni, sezioni, paragrafi e istruzioni, seguendo una gerarchia ben definita. Nel corso degli anni, il linguaggio ha evoluto le sue capacità per supportare tecnologie moderne come la programmazione orientata agli oggetti, XML, Java, e architetture cloud.

Per affrontare la carenza di competenze COBOL, diverse iniziative sono state lanciate per formare nuovi programmatori. Micro Focus ha promosso l’iniziativa COBOL60 che include strumenti e soluzioni per approfondire la conoscenza del linguaggio, come il CobolAcademic Program volto a formare nuovi sviluppatori. L’azienda investe milioni di dollari ogni anno in prodotti per l’analisi e lo sviluppo di applicazioni COBOL, contribuendo alla diffusione delle competenze. Fare in modo che il COBOL resti una parte essenziale delle competenze tecnologiche è diventata un’azione prioritaria per aziende, pubbliche amministrazioni e università. IBM ha lavorato per raggiungere l’uniformità degli strumenti di sviluppo grazie all’integrazione dei tool del mondo applicativo mainframe con quelli del mondo distribuito, con l’obiettivo di realizzare una catena di DevOps unica e facilitare l’apprendimento per i nuovi sviluppatori. Queste iniziative mirano a colmare il gap generazionale e garantire la continuità nella manutenzione e nello sviluppo delle applicazioni COBOL critiche per il business.

Articoli correlati