COBOL: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
m Bot: passaggio degli url da HTTP a HTTPS |
Funzionalità collegamenti suggeriti: 2 collegamenti inseriti. |
||
| (34 versioni intermedie di 18 utenti non mostrate) | |||
Riga 1:
{{Linguaggio di programmazione
|nome = COBOL
|immagine = COBOL-syntax.
|didascalia = Un semplice programma in COBOL
|autore = [[Grace Murray Hopper]], William Selden, Gertrude Tierney, Howard Bromberg, Howard Discount, Vernon Reeves, [[Jean E. Sammet]]
|data =
|utilizzo = [[General purpose]]
|paradigmi = [[Programmazione procedurale]], Programmazione orientata al business
Riga 13 ⟶ 12:
|influenzato_da = <!-- Lista di linguaggi che hanno influenzato il linguaggio in esame, citare le fonti -->
|ha_influenzato = <!-- Lista di linguaggi influenzati dal linguaggio in esame, citare le fonti -->
|implementazione_riferimento = <!-- Implementazione di riferimento: compilatore o interprete? -->
|sistema_operativo = <!-- S.O. supportati dall'impl. di riferimento -->
Riga 21 ⟶ 19:
}}
'''COBOL''' ([[acronimo]] di ''
== Storia ==
Progettato nel
Dagli [[Anni 1960|anni sessanta]] ad oggi, il COBOL ha subito continue evoluzioni: negli anni
Con l'ISO/IEC 1989-2002, iniziato nel
Gli applicativi COBOL, noti per la loro stabilità, sono stati, fino al
* il 31 dicembre
* il 31 dicembre
Lo standard [[COBOL 2002]] include il supporto alla [[programmazione orientata agli oggetti]] e altre caratteristiche tipiche di un linguaggio moderno.
Secondo alcune fonti, il COBOL nel 2013 era ancora utilizzato nel {{M|70|ul=%}} di tutte le transazioni aziendali, e in COBOL sarebbero state scritte l'{{M|85|u=%}} delle applicazioni business nel mondo<ref name="CobolOggi">{{cita news|url
{{Senza fonte|Tuttavia non mancano esempi di successo nell'adeguamento delle stampe COBOL a sistemi operativi grafici, ricorrendo semplicemente alla loro codifica in formato html (grafico) anziché txt (a caratteri)}}.
Al 2014, l'IBM stimava una popolazione mondiale di circa un milione di programmatori COBOL.<ref>{{cita web
== Organizzazione dei sorgenti ==
Ogni sorgente scritto correttamente in COBOL contiene 4 divisioni, non obbligatorie, che comprendono:<syntaxhighlight lang="cobol">
</syntaxhighlight>Vengono incluse informazioni generiche come il nome del programma, la data di stesura, il nome del Computer utilizzato e altre informazioni.<syntaxhighlight lang="cobol">
</syntaxhighlight>Indica i file che vengono usati all'interno del [[Codice sorgente|sorgente]].<syntaxhighlight lang="cobol">▼
▲* ENVIRONMENT DIVISION
▲Indica i file che vengono usati all'interno del [[Codice sorgente|sorgente]].
</syntaxhighlight>Contiene la definizione di file, archivi, [[variabile (informatica)|variabili]] e costanti.<syntaxhighlight lang="cobol">▼
</syntaxhighlight>In questa divisione è definito il procedimento elaborativo da applicare ai dati.▼
▲Contiene la definizione di file, archivi, [[variabile (informatica)|variabili]] e costanti.
* PROCEDURE DIVISION ▼
▲In questa divisione è definito il procedimento elaborativo da applicare ai dati.
== Principi di programmazione ==
Riga 120 ⟶ 115:
|}
Le parole chiave più importanti del linguaggio sono i «verbi» imperativi, che descrivono un comando che si vuole sia eseguito. Un gruppo interessante di parole chiave è rappresentato dalle «costanti figurative», che servono a indicare verbalmente delle costanti di uso comune. Per esempio, la parola chiave {{Codice|codice=ZERO|linguaggio=COBOL}} rappresenta uno o più zeri, in base al contesto.
Le [[stringa (informatica)|stringhe]] sono delimitate da [[virgolette]] (apici singoli) e di solito non sono previste forme di protezione per incorporare le virgolette stesse all'interno delle stringhe: per questo si possono suddividere le stringhe, concatenandole con la costante figurativa {{Codice|codice=QUOTE|linguaggio=COBOL}}; normalmente, comunque, la ripetizione delle virgolette viene interpretata dal compilatore come virgoletta all'interno della stringa (ad esempio: per scrivere, rispettivamente
La gestione numerica del COBOL è speciale rispetto ai linguaggi di programmazione comuni, perché le variabili vengono dichiarate con la loro dimensione di cifre esatta, stabilendo anche la quantità di decimali e il modo in cui l'informazione deve essere gestita. In pratica, si stabilisce il modo in cui il valore deve essere rappresentato, lasciando al compilatore il compito di eseguire ogni volta tutte le conversioni necessarie. Sotto questo aspetto, un programma COBOL ha una gestione per i valori numerici molto pesante, quindi più lenta rispetto ad altri linguaggi, dove i valori numerici sono gestiti in base alle caratteristiche fisiche della [[CPU]] e le conversioni di tipo devono essere dichiarate esplicitamente.
Le [[variabile (informatica)|variabili]] usate nel linguaggio sono sempre globali e come tali vanno dichiarate in una posizione apposita. Tali variabili, salvo situazioni eccezionali, fanno sempre parte di un [[record (tipo di dato)|record]], inteso come una raccolta di campi di informazioni. Questa gestione particolare costringe a stabilire esattamente le dimensioni che ogni informazione deve avere se registrata nella [[memoria di massa]] (dischi, nastri o altro) o se stampata. In un certo senso, questa caratteristica può impedire o rendere difficile l'uso di una
Questo particolare, che non è affatto di poco conto, suggerisce di usare il linguaggio per gestire dati rappresentabili con il codice [[ASCII]] tradizionale, ovvero con i primi 127 punti di codifica (da <code>U+0000</code> a <code>U+007F</code>). Naturalmente sono disponibili compilatori che permettono di superare questo problema, ma in tal caso occorre verificare come vengono gestiti effettivamente i dati.
Le istruzioni COBOL vengono scritte sul video nello spazio compreso tra l'ottava e la settantaduesima colonna. Il video è quindi diviso in tre aree, rispettando gli spazi stabiliti negli anni quaranta dove le colonne da uno a sei rappresentano i numeri di riga, mentre la settima colonna accetta caratteri speciali. L'area dopo la settantaduesima colonna è in genere ignorata. Le istruzioni possono essere scritte anche usando più righe, avendo l'accortezza di continuare a partire dall'area «B»; in generale non c'è bisogno di indicare esplicitamente che l'istruzione sta continuando nella riga successiva, perché si usa il punto fermo per riconoscere la loro conclusione. Tuttavia, in situazioni eccezionali, si può spezzare una parola chiave o anche una stringa letterale; in tal caso, nella settima colonna delle riga che continua, va inserito il segno -, inoltre, se si tratta di una stringa, la sua ripresa va iniziata nuovamente con le virgolette. Ad ogni modo, considerato che difficilmente si devono scrivere parole chiave molto lunghe e che le stringhe letterali si possono concatenare, è auspicabile che la continuazione nella riga successiva con l'indicatore nella settima colonna sia evitata del tutto.
I [[commento (informatica)|commenti]] nel sorgente si indicano inserendo un asterisco nella settima colonna; se invece si mette una barra obliqua (<code>/</code>) si vuole richiedere un salto pagina, in fase di [[stampa]], ammesso che il compilatore preveda questo.
== Esempio di codice:
{{Vedi anche|Hello world}}
<syntaxhighlight lang="cobol" line="1">
▲ 000005 DATA DIVISION.
</syntaxhighlight>
== Screen section ==
La ''screen section'' è la parte del linguaggio Cobol dedicata alla gestione delle maschere video. Sebbene non faccia parte dello standard ANSI, è supportata dalla maggioranza dei compilatori del linguaggio Cobol. Essa permette di posizionare sullo schermo videate comprendenti sia dati costanti come titoli e descrizioni, sia dati variabili quali i campi elementari definiti nella Working-Storage Section e i campi dei record definiti nella File Section. In questa sezione si possono assegnare attributi per ciascun elemento visualizzato (i colori, gli effetti lampeggiante, reverse, evidenziato, ecc.)
▲In questa sezione si possono assegnare attributi per ciascun elemento visualizzato (i colori, gli effetti lampeggiante, reverse, evidenziato, ecc.) ed anche assegnare controlli per i valori accettati: tipo numerico con o senza segno, inoltre stabilire l'allineamento, il formato delle date, ecc. Alla fine dell'input è possibile testare la pressione dei tasti funzione e frecce ed in alcune versioni anche la posizione del mouse.<ref>{{cita web | autore = Micro Focus | url = https://supportline.microfocus.com/documentation/books/sx20books/lrintr.htm | titolo = Introduction to the COBOL Language - Micro Focus Support | accesso= 9 gennaio 2015}}</ref>.
Esempio:
[[File:Screen-section.jpg|thumb|La ''screen section'' di COBOL]]<syntaxhighlight lang="cobol" line="1">
IDENTIFICATION DIVISION.
PROGRAM-ID. ESEMPIO.
Riga 181 ⟶ 174:
03 LINE COLUMN 20 HIGHLIGHT "Indirizzo : " .
03 PIC X(30) USING ANA-INDIRIZZO REVERSE-VIDEO.
03 LINE COLUMN 20 HIGHLIGHT "
03 PIC X(20) USING ANA-CITTA REVERSE-VIDEO.
PROCEDURE DIVISION.
Riga 191 ⟶ 184:
FINE.
STOP RUN.
</syntaxhighlight>
== Stampa ==
== Note ==
Riga 206 ⟶ 200:
== Altri progetti ==
{{interprogetto
== Collegamenti esterni ==
* {{collegamenti esterni}}
* {{FOLDOC|COmmon Business Oriented Language|COmmon Business Oriented Language}}
Manuali di riferimento:
* {{cita web|1=http://publibfp.boulder.ibm.com/cgi-bin/bookmgr/Shelves/igy3sh50 |2=IBM Enterprise COBOL for z/OS V4R2 Bookshelf |lingua=en | accesso = 30 novembre 2022 | urlarchivio = https://archive.is/20130411030945/http://publibfp.boulder.ibm.com/cgi-bin/bookmgr/Shelves/igy3sh50 | dataarchivio = 11 aprile 2013 }}
* {{cita web|url=https://pic.dhe.ibm.com/infocenter/comphelp/v111v131/index.jsp?nav=%2F4|titolo=IBM COBOL for AIX, V4.1.1 documentazione|lingua=en}}
* {{cita web|1=http://publibz.boulder.ibm.com/cgi-bin/bookmgr_OS390/Shelves/IGYSH007|2=IBM VS COBOL II V1R4.0 Bookshelf|lingua=en|accesso=6 novembre 2013|dataarchivio=17 aprile 2001|urlarchivio=https://web.archive.org/web/20010417165752/http://publibz.boulder.ibm.com/cgi-bin/bookmgr_OS390/Shelves/IGYSH007|urlmorto=sì}}
* {{cita web|https://publib.boulder.ibm.com/iseries/v5r2/ic2924/index.htm?info/rzahgcobol.htm|IBM COBOL documentazione (iSeries Information Center)|lingua=en}}
* {{cita web|
* {{cita web|
* {{cita web|1=http://h71000.www7.hp.com/doc/82final/6296/aa-q2g0h-tk.pdf|2=Hewlett Packard Cobol Reference Manual for OPEN VMS|lingua=en|accesso=6 novembre 2013|urlarchivio=https://web.archive.org/web/20140211100513/http://h71000.www7.hp.com/doc/82final/6296/aa-q2g0h-tk.pdf|dataarchivio=11 febbraio 2014|urlmorto=sì}}
* {{cita web|http://opencobol.add1tocobol.com/OpenCOBOL%20Programmers%20Guide.pdf|OpenCOBOL Programmer's Guide|lingua=en}}
Riga 225 ⟶ 220:
* {{cita web |1=https://www.dell.com/learn/us/en/555/services/migrate-cobol-applications |2=Dell Enterprise Cobol |accesso=6 novembre 2013 |urlarchivio=https://web.archive.org/web/20131020173336/http://www.dell.com/learn/us/en/555/services/migrate-cobol-applications |dataarchivio=20 ottobre 2013 |urlmorto=sì }}
* [http://www.elasticcobol.com/ Elastic COBOL] Cloud-based Elastic COBOL from Heirloom Computing allows application development and maintenance framework as well as deployment of applications onto an Enterprise Legacy Platform-as-a-Service.
* [https://web.archive.org/web/20081204225314/http://www.netcobol.com/. Fujitsu] Fujitsu NetCOBOL, COBOL development, deployment and modernization.
* [https://www.microfocus.com/products/micro-focus-developer/visual_cobol/ Micro Focus] Micro Focus Visual COBOL, COBOL development, deployment and modernization.
* [http://www.veryant.com Veryant], leading COBOL technology / maintenance, modernization and migration platform
* [http://www.cobol-it.com COBOL-IT], The Enterprise-Class Open Source COBOL Compiler
* [http://cobos.metrixware.org Cobos] {{webarchive|url=https://web.archive.org/web/20160306053104/http://cobos.metrixware.org/ |data=6 marzo 2016 }}, Open Source IDE for COBOL / Mainframe development
* [http://www.redversconsulting.com/tools.php Redvers Consulting] {{Webarchive|url=https://web.archive.org/web/20130113043004/http://www.redversconsulting.com/tools.php |date=13 gennaio 2013 }}, Open Source COBOL Tools
* [https://web.archive.org/web/20150911130622/http://www.opencobol.org/ OpenCOBOL], an open-source COBOL compiler.
* [http://opencobol.add1tocobol.com OpenCOBOL FAQ], and collection of code samples.
* [http://tiny-cobol.sourceforge.net/ TinyCOBOL], an open-source COBOL compiler based on the COBOL 85 standards
* [http://www.softwaremining.com SoftwareMining], COBOL Rule Extraction Toolkit.
* {{
* [http://www.raincode.com RainCode COBOL], .NET Legacy compiler
| |||