COBOL (Common Business Oriented Language) è un linguaggio di programmazione compilato di alto livello, simile all'inglese, sviluppato specificamente per le esigenze di trattamento dei dati aziendali.
COBOL è stato progettato pensando alla versatilità ottimale; la sua verbosità consente ai programmatori di utilizzare un linguaggio di programmazione leggibile e facilmente gestibile che può funzionare su computer mainframe e sistemi operativi. In effetti, è stato uno dei primi linguaggi di programmazione standardizzati dall'American National Standards Institute (ANSI) e dall'International Organization for Standardization (ISO).
Uno dei maggiori punti di forza di COBOL è la grandissima capacità per calcoli decimali a virgola fissa di grande precisione, una caratteristica non necessariamente nativa di molti linguaggi di programmazione tradizionali. Questa capacità ha contribuito a distinguere COBOL e a guidarne l'adozione da parte di molte grandi istituzioni finanziarie.
Sebbene COBOL sia considerato un sistema legacy, molte organizzazioni governative e del settore privato continuano a utilizzarlo per eseguire applicazioni finanziarie, amministrative e aziendali. In effetti, la configurazione imperativa, procedurale e (nelle sue nuove iterazioni) orientata agli oggetti di COBOL funge da base per oltre il 40 percento di tutti i sistemi bancari online.1
Supporta inoltre l'80% delle transazioni con carta di credito di persona, gestisce il 95% di tutte le transazioni bancomat e alimenta sistemi che generano più di 3 miliardi di dollari di commercio ogni giorno.1 Grazie alla sua stabilità superiore e alla sua potenza di elaborazione, continua a svolgere un ruolo fondamentale nell'aiutare le aziende a mantenere app e programmi nelle architetture esistenti.
Newsletter di settore
Resta al passo con le tendenze più importanti e interessanti del settore relative ad AI, automazione, dati e oltre con la newsletter Think. Leggi l' Informativa sulla privacy IBM.
L'abbonamento sarà fornito in lingua inglese. Troverai un link per annullare l'iscrizione in tutte le newsletter. Puoi gestire i tuoi abbonamenti o annullarli qui. Per ulteriori informazioni, consulta l'Informativa sulla privacy IBM.
COBOL è stato sviluppato da un consorzio di organizzazioni governative e aziendali chiamate Conference on Data Systems Languages (CODASYL), formatosi nel 1959. Parzialmente derivato da FLOW-MATIC, un linguaggio creato dalla dottoressa Grace Hopper, pioniera dell'informatica, COBOL è stato creato come parte di un'iniziativa del Dipartimento della Difesa degli Stati Uniti che spingeva per la creazione un linguaggio di programmazione in grado di funzionare su tutti i sistemi operativi (Linux, Windows, Unix, z/OS ecc.) e gli ambienti hardware.
La prima versione del linguaggio di programmazione COBOL è stata rilasciata nel 1960. E sebbene la programmazione COBOL fosse originariamente destinata a servire come misura di ripiego, il Dipartimento della Difesa si rese rapidamente conto della sua utilità e incaricò i produttori di computer di offrirla.
Il COBOL è stato infine standardizzato come linguaggio informatico nel 1968, dopo di che i programmatori COBOL hanno implementato diverse revisioni e modernizzazioni, tra cui COBOL-61, COBOL-68, COBOL-74 e COBOL-85. COBOL 2002 mirava a rendere le applicazioni COBOL più compatibili con le moderne pratiche di sviluppo software, introducendo nel linguaggio delle funzionalità orientate agli oggetti e altri paradigmi di programmazione avanzati. Questa versione, tuttavia, ha sofferto della mancanza di supporto e della scarsa richiesta da parte degli utenti per le sue nuove caratteristiche.
COBOL 14 ha introdotto nuovi cambiamenti, inclusa la sostituzione dei risultati aritmetici portatili con tipi di dati IEEE 754, e l'ultimo standard, COBOL 2023, ha fornito nuove caratteristiche aggiuntive incentrate sul miglioramento dell'interoperabilità di COBOL con i sistemi moderni.
Il programma COBOL ha una struttura gerarchica che comprende divisioni, sezioni, paragrafi, frasi, verbi e stringhe di caratteri. La natura divisionale di un sistema COBOL (che comprende quattro divisioni) consente una netta separazione delle preoccupazioni all'interno dei programmi COBOL.
Le divisioni di COBOL sono le seguenti:
La divisione di identificazione è la prima divisione di un programma COBOL e obbligatoria. Assegna al programma un nome e fornisce altre informazioni di identificazione come l'autore, la data di scrittura e una breve descrizione dello scopo del programma.
I programmi COBOL necessitano di un paragrafo PROGRAM-ID per funzionare all'interno della divisione di identificazione. Ad esempio:
La divisione specifica l'ambiente di runtime per un programma e definisce le risorse di input e di output che utilizzerà. È suddivisa in due sezioni.
Non sorprende che la sezione di configurazione fornisca informazioni sulla configurazione del sistema, comprese le funzionalità del computer e del compilatore che sta utilizzando. Tuttavia, a causa dei progressi negli strumenti di compilazione, le sezioni di configurazione sono diventate un po' obsolete nei moderni sistemi COBOL, che in genere possono dedurre e adattarsi automaticamente al loro ambiente.
La sezione input-output specifica i file e i dispositivi associati con cui il programma può interagire. Include il paragrafo FILE-CONTROL, che associa i nomi dei file all'interno del programma ai file esterni, e il paragrafo I-O-CONTROL, che in genere contiene informazioni sull'ottimizzazione o sulla sequenziazione per le operazioni di input-output.
La divisione dei dati contiene tutte le definizioni di variabili, file e costanti del programma. Proprio come la divisione ambiente, anche la divisione dati è suddivisa.
La sezione file elenca tutti i file da cui il programma leggerà o su cui scriverà. Una voce di descrizione del file definisce ogni file e descrive la struttura dei record nel file.
La sezione spazio di lavoro definisce le variabili che mantengono i loro valori durante l'esecuzione del programma, inclusi counter, accumulatori, costanti e qualsiasi altro data storage non pertinente ai file I-O.
Introdotta nelle iterazioni successive di COBOL, la sezione di archiviazione locale definisce le variabili allocate al momento della distribuzione del programma o del metodo e deallocate al termine, rendendo l'archiviazione locale particolarmente utile per algoritmi ricorsivi e programmi rientranti.
Infine, la sezione del linkage definisce gli elementi di dati che passano da un programma a un altro.
La suddivisione delle procedure contiene il codice eseguibile del programma, ovvero suddiviso in paragrafi e sezioni che strutturano il codice in blocchi di codice per una migliore leggibilità e una più semplice manutenzione.
Ogni divisione di un sistema COBOL può includere sezioni e paragrafi, analogamente a sezioni e paragrafi in lingue umane. Le sezioni sono le suddivisioni logiche nominate all'interno di ciascuna divisione che contengono uno o più paragrafi; fungono da unità modulari di codice che possono essere chiamate o invocate all'interno del programma.
I paragrafi sono raccolte di frasi, le più piccole unità eseguibili di un programma COBOL, che svolgono una funzione particolare e sono identificate da un nome unico. Ogni dichiarazione o frase COBOL all'interno di un paragrafo inizia con un verbo COBOL (come MOVE, DISPLAY e ADD) che indica come deve essere eseguito il codice.
L'unità più elementare e indivisibile del linguaggio COBOL è un carattere. Le stringhe di caratteri sono caratteri o sequenze di caratteri contigui che formano una parola COBOL, un valore letterale o una voce di commento, delimitata da separatori.
La sintassi simile all'inglese di COBOL è autodocumentante e quasi autoesplicativa, con un'enfasi sulla verbosità e sulla leggibilità. Questa caratteristica lo distingue dai linguaggi più concisi, come FORTRAN. Può anche supportare diversi tipi di dati (numerici, alfanumerici e modificati, ad esempio), ma si basa su alcuni componenti sintattici aggiuntivi per eseguire un programma.
Le frasi sono righe di codice COBOL che consistono in una o più istruzioni terminate da un punto. Le dichiarazioni, invece, sono le singole istruzioni che orchestrano i processi di gestione dei file e dei dati (utilizzando verbi come ADD, START, DISPLAY e WRITE, tra gli altri).
Ad esempio, le istruzioni MOVE trasferiscono i dati da una parte della memoria del sistema a un'altra, le istruzioni COMPUTE eseguono operazioni aritmetiche e memorizzano i risultati come variabili, mentre le istruzioni READ recuperano i record dai file di input.
Le clausole sono componenti di istruzioni che possono modificare o qualificare l'esecuzione di un'istruzione. Una clausola immagine come "PIC 9(3)", come un esempio, definisce una variabile numerica che può contenere fino a tre cifre.
Le strutture di controllo iterativo e condizionale in COBOL consentono al sistema di controllare il flusso di dati.
Le strutture IF ... ELSE, ad esempio, implementano la logica condizionale in COBOL in modo che il programma possa eseguire diversi blocchi di codice a seconda di una valutazione delle condizioni del sistema. E l'istruzione PERFORM esegue un paragrafo o una sezione un numero specificato di volte o fino a quando non viene soddisfatta una condizione, in modo simile ai cicli in altri linguaggi di programmazione.
COBOL può facilitare la programmazione modulare utilizzando programmi secondari, che vengono distribuiti dal programma principale o da altri programmi secondari. Mentre quelli interni sono definiti nello stesso codice sorgente del programma chiamante (scritto nella divisione procedure), i programmi secondari esterni vengono compilati separatamente e collegati secondo necessità.
Il processo di creazione di un programma con COBOL varia a seconda delle circostanze organizzative. Tuttavia, comporta alcuni passaggi chiave.
Scrittura del programma. Se un ingegnere del software volesse scrivere il programma di base "Hello, world!", per esempio, scriverebbe:
L'utilizzo di un ambiente di sviluppo integrato (IDE) compatibile con COBOL o di un editor di testo può aiutare nel processo.
Compilazione del programma. Come altri linguaggi di programmazione di alto livello, il codice COBOL deve essere compilato prima di essere eseguito. I compilatori COBOL (come GnuCOBOL, Micro Focus e IBM® COBOL Compilers Family) traducono i programmi in codice macchina, in modo che la CPU del computer possa comprenderlo ed eseguirlo.
Esecuzione del programma. Quando il programma viene compilato, il programmatore può eseguirlo sul sistema di destinazione. Supponendo che non ci siano bug, il programma seguirà la logica di trattamento dei dati definita nella divisione della procedura per elaborare i dati. Il processo di esecuzione in genere prevede la lettura di dati da file e database, l'esecuzione di calcoli o trasformazioni dei dati e quindi la scrittura dei risultati in file o database.
Debug del programma (se necessario). Se ci sono errori o bug nel programma, i programmatori devono identificarli e correggerli (un processo chiamato debugging). Affidarsi a strumenti e tecniche di debug può semplificare questo processo.
Ora meno popolare di linguaggi più moderni (come Python, Java e JavaScript), COBOL era un tempo il linguaggio più utilizzato nella programmazione informatica per le applicazioni aziendali. Tuttavia, lo sviluppo di COBOL rimane una parte funzionale e critica dell'infrastruttura tecnologica globale, in particolare per gli istituti bancari, le compagnie assicurative e gli enti governativi.
Come dimostra la sua capacità di resistenza, la programmazione COBOL può offrire una miriade di vantaggi alle organizzazioni che scelgono di utilizzarla (nonostante una relativa scarsità di programmatori COBOL 1), tra cui:
COBOL è noto per le sue prestazioni stabili e affidabili nelle applicazioni mission-critical. I sistemi scritti in COBOL tendono ad avere tempi di attività elevati e subiscono pochi guasti, il che è fondamentale per le operazioni ininterrotti degli istituti finanziari e dei servizi governativi.
Gli sviluppatori possono scalare le applicazioni COBOL per gestire workload crescenti senza apportare modifiche significative alla base di codice, consentendo alle organizzazioni di far crescere i propri sistemi basati su COBOL insieme alle proprie attività, senza frequenti riscritture o migrazioni verso altri linguaggi.
COBOL offre funzionalità di elaborazione dei file eccezionali. È in grado di gestire dati di transazioni complessi e su larga scala e di supportare più metodi di accesso ai file, tra cui la gestione sequenziale, indicizzata e dei file di dati relativi. La robustezza di COBOL nell'automazione dei processi lo rende ideale per i lavori di elaborazione in blocco, come l'elaborazione di transazioni finanziarie, la gestione di database e la generazione di report.
Gli attuali sistemi COBOL possono interagire con altre tecnologie quali HTML, JSON, XML e AI generativa2. Grazie agli aggiornamenti di modernizzazione, COBOL è anche interoperabile con i servizi cloud e virtuali, come Amazon Web Services (AWS), Microsoft Azure e IBM® Cloud, database SQL e altre moderne infrastrutture DevOps.
IBM Power è una famiglia di server basati su processori IBM Power in grado di eseguire IBM AIX, IBM i e Linux.
IBM Cloud, una piattaforma cloud aziendale progettata per i settori regolamentati, offre soluzioni sicure, ibride e pronte per l'AI.
Sblocca nuove funzionalità e promuovi l'agilità aziendale con i servizi di consulenza cloud di IBM. Scopri come creare insieme soluzioni, accelerare la trasformazione digitale e ottimizzare le prestazioni attraverso strategie di hybrid cloud e collaborazioni con gli esperti.