COBOL

COBOL er et tidligt højniveau-programmeringssprog.

Navnet er en forkortelse for COmmon Business Oriented Language, og var tænkt som et programmeringssprog primært til firmaer, økonomi og administrative systemer for firmaer og regeringer. Det skulle gøre det nemt at flytte et program fra en computer-installation til en anden, selv om den anden kørte på en helt anden type maskiner, da sproget var fælles (Common) for mange typer computere, kildekoden skulle blot oversættes af en anden oversætter.

Sproget var baseret på nogle af de erfaringer, man havde gjort med sproget FLOW-MATIC, der fandtes til UNIVAC I og II maskiner. Denne første standardiserede beskrivelse af sproget, kaldes COBOL 60. Standarden tillod, at dele af sproget, modules ikke behøvede at være med i en implementering af oversætteren eller kunne implementeres på to forskellige niveauer, men en bestemt nucleus skulle findes.

I et forsøg på at gøre programmeringssproget nemt at lære, er der defineret mange ord i sproget til specielle formål, så man som programmør kommer lidt tættere på at skrive engelsk. COBOLs stærke side er, at det er designet til forholdsvis enkle administrative opgaver som ordrebehandling, bogføring, fakturering, lønkørsler og lagerstyring. Det har som konsekvens, at det er svært at skrive avancerede programmer i sproget.

I modsætning til de fleste andre programmeringssprog er der ingen lokale variabler, da der ikke er mulighed for gængse funktionskald. Man kan derfor heller ikke lave rekursive kald. I et system, hvor der er brug for mange programmoduler af hensyn til overskueligheden, bliver hvert modul lavet som et nyt program. Data overføres uformateret som et område i ram, der er fælles for det kaldende og det kaldte modul.

COBOL-programmets struktur 
Et COBOL-program består af fire dele kaldet divisioner. I ID-divisionen defineres programmets navn. Eventuelt kan man også skrive hvem, der har lavet programmet. Næste inddeling er environment-divisionen, der beskriver programmets omgivelser. Her kan man for eksempel definere, at komma bruges som decimaltegn. I data-divisionen beskrives samtlige variabler i programmet. Det er som nævnt ikke muligt at definere lokale variabler til en del af programmet. Variable kan oprettes som strukturer, der er tænkt passende til en record eller post fra f.eks. et magnetbånd. Strukturen vil kunne bestå af understrukturer (et level med et højere nummer), der til sidst vil bestå af felter. Man kan f.eks. have en struktur kunde, der indeholder kundenummer, navn (som igen kan deles op i fornavne og efternavn) og så fremdeles. Det betyder, at alle datadefinitioner har en fast længde. En sådan struktur kan give flere fortolkninger at et område i ram, da dele af strukturen kan placeres oven på en anden del af strukturen med ordet REDEFINES. Dvs. en del af ram kan fortolkes som tal i en situation og som tekst i en anden situation. En picture clause bestemmer fortolkningen af feltet, placering af evt. komma og kan i nogle tilfælde formatere tal til brug for udskrifter, herunder checks, m.v. (hvad skal der ske med foranstillede nuller, hvor skal fortegnet være, skal der skrives et valutategn). Ellers vil forskellige former for tal kunne angives som COMP-1 til COMP-3 (fra binære tal til BCD).

Almindelige variable, altså simple variable – ikke strukturer, skrives med level 77.

Boolske variable findes ikke som i andre sprog, men et felt-level 88 kan defineres til at være sand for bestemte værdier og falsk for alle andre.

I procedure-divisionen skrives selve programmet.

COBOL-compileren er følsom over for, hvor på linjen en bestemt instruktion står. En programlinje må højst være 80 tegn lang (og de sidste 8 tegn bruges ikke eller bruges til sorteringslinjenumre). Det skyldes sprogets fremkomst på et tidspunkt, hvor hulkort var foretrukne til kildetekst. Linjenummeret gjorde det muligt at sortere en samling hulkort, som man havde uheldig at tabe.

De første 6 positioner er reserverede til linjenummeret (man kan altså have to forskellige linjenumre). 7. tegn fortæller om linjen er en kommentar, hvis der står en * her. Denne plads bruges også til instruktioner til printeren, for det tilfælde at kildekoden skal skrives ud. Resten af linjen er opdelt i områderne A og B. Definition af variabler skal være påbegyndt i område A. Hvis en linje er for lang, kan den fortsætte på næste linje, hvis man placerer et - i position 7 på den fortsatte linje. Tegnet / er også en kommentar, men giver et sideskift på den udskrift, som compileren giver.

Instruktioner 
Som nævnt er der med tiden defineret mange instruktioner i COBOL. Nogle af de almindeligste beskrives her. MOVE kopierer indholdet fra en variabel til en anden. Hvis de to variabler ikke er af samme type, bliver indholdet lavet om. På den måde kan tal i en tekstvariabel kopieres til en numerisk variabel, og der kan uden videre regnes på den. Der er muligheder for at lave beregninger med kommandoer i stil med: ADD A TO B GIVING C. Læg A til B og placer resultatet i C. Tilsvarende er der SUBTRACT, DIVIDE (med en mulig REMAINDER) og MULTIPLY. Afrunding kan tilføjes nogle beregninger. Der er også en generel kommando COMPUTE, der kan håndtere et helt udtryk. Der er kontrolstrukturer så løkker og hvis/så-konstruktioner kan laves omtrent som i andre programmeringssprog. Programmet kan inddeles i sektioner, der kan kaldes fra andre dele af programmet. Dette sker med PERFORM, der også bruges til løkker.

En løkkestruktur kan indeholde en specifikation THRU, der også kan skrives THROUGH, et eksempel på sprogets tilpasning til både britisk engelsk og amerikansk engelsk. Mange nøgleord kan forkortes. Alt sammen for at gøre sproget mere tilgængeligt for programmører med beskeden teoretisk matematisk uddannelse.

Da alle variabler kan ses i hele programmet, skal man sikre sig, at de ikke utilsigtet bliver genbrugt i forskellige sektioner.

Sproget har mange kommandoer til brug ved fil-tilgang, for sekventielle filer, indekserede filer, relative filer, for læsning, skrivning, genskrivning med mange variationsmuligheder.

Se også 
 Job Control Language

Eksterne henvisninger 

 Introduktion til COBOL 

Programmeringssprog