# COBOL

| COBOL |
| --- |
|  |
| Paradigma | proseduraalinen, imperatiivinen |
| Julkaistu | 1959 |
| Vakaa versio | ISO/IEC 1989:2023 |
| Merkittävimmät toteutukset | GCC, GnuCOBOL, IBM COBOL, Micro Focus Visual COBOL |
| Vaikutteet | FLOW-MATIC |
| Infobox OK |

**COBOL** (akronyymi sanoista *Common Business Oriented Language*) on kaupallis-hallinnollisiin sovelluksiin tarkoitettu korkean tason ohjelmointikieli. Kielen kehitys aloitettiin Yhdysvaltain puolustusministeriön aloitteesta vuonna 1959.

COBOL on todennäköisesti tietojenkäsittelyn historian merkittävin kaupallis-hallinnollisten järjestelmien ohjelmointikieli. Vanhoja COBOL-järjestelmiä on vielä 2010-luvun lopulla käytössä runsaasti muun muassa Suomessa, vaikka uusia ei enää tehdäkään.

COBOLin piirteitä ovat sovellusten suunnittelun hankaluus ja huono tuki strukturoidulle ohjelmoinnille. Kielioppi muistuttaa englantia. Kielelle ovat tyypillisiä pitkät muuttujanimet.

Viimeisin voimassa oleva standardi on ISO/IEC 1989:2023.

## Historiaa

COBOL perustuu osittain lippueamiraali Grace Hopperin kehittämään Flow-Matic-kieleen. COBOLin kehitys aloitettiin vuonna 1959 ja ensimmäinen versio esiteltiin vuonna 1960. COBOL kehitettiin komiteassa, joka salli politiikan vaikuttaa päätöksiin: komitean jäsen Jean Sammet on sanonut, että komitea hylkäsi hyviä ideoita jotka se tunnisti IBM:n COMTRANissa (*Commercial Translator*) vain koska komitea ei halunnut antaa mielikuvaa, että IBM dominoi keskustelua. Yhdysvaltain puolustusministeriö (DOD) käytti huomattavasti rahaa tietokoneisiin jo vuonna 1959 ja tietokoneiden valmistajat tunnistivat tarpeen yhteiselle kielelle. Yhdysvaltain puolustusministeriö oli kuitenkin tiukassa aikataulussa ja suunnitteluvaiheessa tehtiin lyhytnäköisiä päätöksiä.

COBOLin valta-ajan on sanottu olleen 1970–90-luvuilla.
Kieli oli erittäin suosittu 1960–1980-luvuilla ja sillä tehtiin liiketoiminnan ja talouden sovelluksia.
Vuonna 2020 uutisoitiin tarpeelle COBOLia osaaville ohjelmoijille kun Yhdysvaltojen osavaltioiden tietojärjestelmät eivät pysyneet työttömyyshakemusten perässä. Yhdysvaltain työministeriön järjestelmät riippuvat COBOL-koodista.

Reutersin tilaston mukaan käytössä on edelleen 220 miljardia riviä COBOL-koodia ja 43 prosenttia pankkijärjestelmistä riippuu siitä.
Talousjärjestelmissä sanotaan olevan päällekkäisiä kerroksia eri sukupolvilta, jotka ovat usein vahvasti toisistaan riippuvia, joka tekee pankkien järjestelmien päivityksistä monimutkaista. Järjestelmien päivityksistä tekee vaikeamman se, ettei niitä ole aikoinaan dokumentoitu.
Arvioiden mukaan kolmen biljoonan dollarin edestä päivittäistä kauppaa kulkee COBOLillä tehtyjen järjestelmien kautta. Järjestelmät kattavat tallennustilejä, luottokorttiverkkoja, pankkiautomaatteja, lainoja ja muita palveluja. Digitaalisten pankkien tulo lisää tarvetta ratkaista ongelma harveneville COBOL-osaajille. Jotkin yliopistot tarjoavat edelleen kursseja, mutta kieltä opettelevien määrä on erittäin pieni.
Toisen lähteen mukaan COBOL-koodia on 80 miljardia riviä ja se kasvaa yhä 15 prosenttia vuosittain.

Kielestä on 19 "murretta", joissa on laajennuksia eri tahoilta kuten IBM ja Micro Focus -yhtiöiltä.

## Ohjelman rakenne

COBOL-ohjelman tyypillinen piirre on sen jakautuminen divisiooniin eli lohkoihin:

* Tunnistuslohko (Identification Division)

sisältää ohjelman tunnisteet.
* Ympäristölohko (Environment Division)

määrittää käyttöympäristön.
* Tietolohko (Data Division)

sisältää ohjelmassa käsiteltävän datan.
* Toimintalohko (Procedure Division)

sisältää itse ohjelmaproseduurin.
Divisioonat voivat jakautua sektioihin, sektiot kappaleisiin, ne taas merkintöihin, määrittelyihin (entry) tai virkkeisiin, jotka puolestaan määreisiin (clause) tai lauseisiin (statement). Proseduurin käskyt on pyritty laatimaan niin lähelle käyttöenglantia kuin mahdollista. Jos ohjelman parametreiksi ja muuttujiksi vielä valitaan sopivia sanoja, tulee proseduurista mahdollisesti täysin yleiskielinen ja englantia hallitsevan maallikonkin luettava.

## Esimerkki

"Hei maailma -ohjelma" COBOLilla:

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

```

## Toteutukset

Kielelle on tehty useita eri toteutuksia. Avoimen lähdekoodin GnuCOBOL on kehittynyt OpenCOBOLista, jossa on käytetty kokemuksia TinyCOBOLista.
COBOL-IT oli ranskalainen projekti, jonka Micro Focus hankki vuonna 2017. Micro Focus myy Visual COBOLia. GCC 15 sisältää COBOL tuen.

## Lähteet

## Aiheesta muualla

* COBOL kielen koulutustietoa ja esimerkkiohjelmia