Home topics COBOL Che cos'è COBOL?
Esplora la soluzione IBM per la modernizzazione delle applicazioni mainframe Iscriviti agli aggiornamenti sugli argomenti dell'AI
Illustrazione con collage di pittogrammi di ingranaggi, braccio robotico, telefono cellulare

 

Data di pubblicazione:  19 aprile 2024
Collaboratori: Chrystal R. China, Michael Goodwin

Che cos'è COBOL?

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).

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. 

Prenota una demo live

Guarda IBM watsonx Code Assistant for Z in azione.

Contenuti correlati

Iscriviti alla newsletter IBM

Storia di COBOL

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. L'iterazione più recente, COBOL 2002, tenta di rendere le applicazioni COBOL più compatibili con le moderne pratiche di sviluppo software introducendo funzioni orientate agli oggetti e altri paradigmi di programmazione avanzati nel linguaggio. 

Struttura COBOL

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:

Divisione di identificazione

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. Per esempio:

```

DIVISIONE IDENTIFICAZIONE.

PROGRAM-ID. NomeDelProgramma

AUTHOR. Il tuo nome

DATA-SCRITTO. YYYYMMDD

COMMENTO. "Descrizione breve del programma"

Divisione ambientale

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.

Divisione dei dati

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.

Divisione procedurale

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.

Componenti aggiuntivi

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.

Sintassi COBOL

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.

Frasi e affermazioni

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.

Clausole

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.

Strutture di controllo

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.

Programmi secondari

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à.

Creazione di un programma COBOL

Il processo di creazione di un programma con COBOL varia a seconda delle circostanze organizzative. Tuttavia, tende a comportare alcuni passaggi chiave. 

  • Scrivere il programma. Se un ingegnere del software volesse scrivere il programma di base "Hello, world!", per esempio, scriverebbe:

    ```

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

    L'utilizzo di un ambiente di sviluppo integrato (IDE) compatibile con il 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 elaborazione 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.
Vantaggi della programmazione COBOL

Nonostante la proliferazione di linguaggi più moderni (come Python, Java, JavaScript), il linguaggio COBOL era un tempo il più utilizzato nella programmazione informatica per le applicazioni aziendali. Anche adesso, 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:

Stabilità

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.

Scalabilità

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.

Gestione dei dati ed elaborazione dei file

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.

Interoperabilità

Oggi i sistemi COBOL possono interoperare con altri linguaggi e tecnologie (come HTML, JSON, XML e AI generativa2) grazie all'introduzione di COBOL orientati agli oggetti e alle interfacce con nuovi linguaggi di programmazione. L'orientamento agli oggetti facilita anche l'integrazione delle app COBOL con i servizi cloud e virtuali, come Amazon Web Services (AWS), Microsoft Azure e IBM Cloud, database SQL e altre moderne infrastrutture DevOps.

Soluzioni correlate
IBM watsonx Code Assistant for Z

IBM watsonx Code Assistant for Z è un prodotto assistito dall'AI generativa creato per accelerare la modernizzazione delle applicazioni mainframe a costi inferiori e con meno rischi rispetto alle alternative odierne. Questo prodotto fornisce un ciclo di vita end-to-end per gli sviluppatori di applicazioni che include il rilevamento e l'analisi delle applicazioni, il refactoring automatizzato del codice e la conversione da COBOL a Java.

Scopri IBM watsonx Code Assistant for Z

IBM watsonx Code Assistant

IBM® watsonx Code Assistant sfrutta l'AI generativa per accelerare lo sviluppo, mantenendo, allo stesso tempo, i principi di fiducia, sicurezza e conformità. Gli sviluppatori e gli operatori IT possono accelerare le iniziative di modernizzazione delle applicazioni e generare automazione per scalare rapidamente gli ambienti IT.

Esplora IBM watsonx Code Assistant

IBM COBOL Compiler Family

I compilatori IBM COBOL supportano i sistemi operativi IBM® z/OSIBM® AIX e Linux. Avrai a disposizione gli strumenti per potenziare lo sviluppo di nuovi programmi e utilizzare le applicazioni esistenti, così da poter posizionare strategicamente il processo di sviluppo delle applicazioni e affrontare i rapidi cambiamenti del mercato di oggi.

Esplora IBM COBOL Compilers family
 Risorse L'assistente di codice per Z porta la Gen AI nella modernizzazione delle app mainframe

Guarda la registrazione on-demand con il nostro team per scoprire come l'AI stia accelerando la modernizzazione delle applicazioni mainframe.

Porta la modernizzazione delle app e l'automazione IT a un livello superiore con l'AI generativa

Scopri come le piattaforme di gestione dell'hybrid cloud incorporano un'automazione generativa basata sull'intelligenza artificiale per aiutare le aziende a trarre vantaggio dalle tecnologie emergenti, realizzare risparmi sui costi ed efficienze, migliorare le prestazioni IT e fornire e scalare nuovi servizi più rapidamente.

La guida del CEO all'AI generativa

Comprendi l'importanza dell'adozione dell'AI generativa e come può essere vantaggiosa per le tue pratiche aziendali, sia oggi che in futuro.

Fai il passo successivo

Vuoi accelerare la modernizzazione delle applicazioni mainframe grazie all'AI generativa? Scopri cosa può fare watsonx Code Assistant for Z prenotando una demo dal vivo o parlando con uno dei nostri specialisti di prodotto.

Scopri IBM watsonx Code Assistant for Z Prenota una demo live
Note a piè di pagina

1 The World Depends on 60-Year-Old Code No One Knows Anymore (link esterno a ibm.com), PC Mag, 1° dicembre 2023

2 L'AI generativa nella generazione di codice (link esterno a ibm.com), Inc42 Media, 24 marzo 2024