Cobol: Magas szintű programozási nyelv

A COBOL magas szintű programozási nyelv, a COmmon Business Oriented Language elnevezés rövidítése.

COBOL
Paradigmaprocedurális, objektumorientált
Jellemző kiterjesztés
  • cbl
  • cob
  • cpy
Megjelent1959
TervezőGrace Hopper, William Selden, Gertrude Tierney, Howard Bromberg, Howard Discount, Vernon Reeves, Jean E. Sammet
Fejlesztő
Utolsó kiadásCOBOL 2014 (2014)
TípusosságErősen típusos, statikus kötés
DialektusokHP3000 COBOL/II, COBOL/2, IBM OS/VS COBOL, IBM COBOL/II, IBM COBOL SAA, IBM Enterprise COBOL, IBM COBOL/400, IBM ILE COBOL, Unix COBOL X/Open, Micro Focus COBOL, Microsoft COBOL, Ryan McFarland RM/COBOL, Ryan McFarland RM/COBOL-85, DOSVS COBOL, UNIVAC COBOL, Realia COBOL, Fujitsu COBOL, ICL COBOL, ACUCOBOL-GT, COBOL-IT, DEC COBOL-10, DEC VAX COBOL, Wang VS COBOL, Visual COBOL, Tandem (NonStop) COBOL85, Tandem (NonStop) SCOBOL (a COBOL74 variant for creating screens on text-based terminals)
MegvalósításokOpenCOBOL, Micro Focus International (e.g. the Eclipse-plug-in Micro Focus Net Express)
Hatással volt ráFLOW-MATIC, COMTRAN, FACT
Befolyásolt nyelvekPL/I, CobolScript, ABAP

Harmadik generációs programozási nyelv. Bár általános célú, mégis a FORTRAN és a PL/I mellett elsősorban az üzleti, pénzügyi élet rendszereiben használatos. Megjelentek benne a strukturált programozás bizonyos vezérlő szerkezetei is. A nyelv tervezésénél kísérletet tettek a hordozhatóság, a portabilitás megteremtésére.

A nyelv hosszú fejlődésen ment keresztül, de alapvető felépítését, struktúráját mindvégig megőrizte. Az első változatát, a COBOL 60-at 1959-ben deklarálták. Ezt követte az ANSI COBOL 1968, amely a nyelv addigra sokféle változata között teremtett rendet egy egységes standard leírásával, amit az ANSI-nál jegyeztek be. 1974-ben jött a COBOL 1974, amely az ANSI-változat kiegészítése volt sok új funkcióval, amely az eredeti '68-as verzióban még nem szerepelt. 1985-ben az ANSI kiadta a nyelv egy újabb revízióját, amely sok strukturált programozási elemmel egészítette ki az eddigieket (scope terminátorok, pl. END-IF, END-PERFORM, END-READ).

Hosszú szünet után 2002-ben egészítették ki a nyelvet objektumorientált programozást támogató elemekkel. Majd több lépcsőben további sztenderdekben a nyelv bővült XML kezeléssel, valamint OOP-s Collection könyvtárt is adtak hozzá a sztenderd COBOL-hoz.

Legutóbbi változata a COBOL 2014. Sok új lehetőséggel bővült, ezek közül néhány:

  • A 2002.es változatban tervezett, de el nem készült dinamikus tábla-kezelés
  • Hordozható aritmetikai eredmények váltották fel a IEEE 754 adattípusokat
  • Legfontosabb elemei opcionálisak lettek, így pl a VALIDATE , a Report Writer és a képernyő kezelés

Meglepő, de biztosító intézetek, nagyvállalatok ma is használják a nyelvet. Elvük: "Ami nem romlik el, nem kell megjavítani. Csak vegyünk másik gépet alája". 2017 júniusában az amerikai IT állásokat ajánló dice.com-on 432 COBOL fejlesztőt kereső hirdetés volt. Magyarországon ezt a programnyelvet több, mint 40 éve kezdték el használni.

Miután a program könnyen olvasható angol mondatokból áll, az angol nyelv rövidítéseinek és szabályainak megfelelően, elsősorban az angolszász országokban használják a COBOL nyelvet, persze az alatta lévő gép fajtájának megfelelően kialakult néhány, az adott környezethez megírt fordítóprogram tartalmazhat "nyelvjárásokat" is. A z/OS, VME, UnixOpenVMS and Windows tartalmaznak COBOL fordítót. Egyes források szerint lehet, hogy a 2014-es verzió marad a végleges.

Egy COBOL program felépítése

Egy COBOL program 4 jól elkülöníthető részre, COBOL szóhasználattal Division-re, magyarul Főrészre oszlik:

1. Azonosítási főrész,     IDENTIFICATION DIVISION. 2. Környezetleíró főrész,  ENVIRONMENT DIVISION. 3. Adatleíró főrész,       DATA DIVISION. 4. Eljárási főrész,        PROCEDURE DIVISION. 

Az első főrész formálisan írja le a program adatait. A 2. főrészben lehet definiálni az esetlegesen használt fájlokat a program input-outputjához. A 3. főrészben (adatleíró főrészben) megadhatók az adatstruktúrák, változók, míg a 4. főrészben kell leírni a program tényleges működését. Az egyes főrészek szekciókból (Section) épülnek fel.

A COBOL nyelv

A célként meghatározott üzleti- és pénzügyi alkalmazások miatt az adatok megjelenítésére kiemelten nagy hangsúlyt fektetett a nyelv. Az adatok formáját a "kép" jelentésű angol Picture szó rövidítését jelentő PIC utasítás írja le. A COBOL program kötött szintaxissal rendelkező, úgynevezett COBOL mondatok (Sentences) sorozatából áll, amelyek különböző igékből (ADD, SUBTRACT, PERFORM, READ stb.) és változónevekből épülnek fel. Minden mondatot pont zár le. A mondatok összetartozó csoportjai paragrafusokba (Paragraph) gyűjthetők, amelyek egyben vezérlési szerkezetként is kezelhetők.

A mondatokban használt igék, a kulcsszavak között vannak olyanok, amelyek csak az angol nyelv sajátosságai miatt kellenek (ezeket nem kötelező használni). Egy COBOL program valóban olvasható és érthető egy angolul értő számára, ennek azonban az az ára, hogy néhány COBOL mondat szintaxisa szinte áttekinthetetlenül bonyolult és terjedelmes, és nagyon komoly gyakorlat kell a teljes nyelvi eszközrendszer nyújtotta lehetőségek kihasználásához.

Egyes COBOL megvalósítások annyira meghatározták a forrásprogram írásának szabályait, hogy a nyelvet használó cégek előnyomtatott lapok alkalmazásával segítették a programozókat a formai követelmények betartásában. Az is előírás volt, hogy a programot csak nagybetűvel lehetett írni, ezért programozói körökben elterjedt vicc volt, hogy a COBOL az a programnyelv, amely megtanít a nagybetűk írására.

Alapműveletek

Kommentezés (első karakter *). Pl:

******************************************************************************* **  This is a comment                                                        ** ******************************************************************************* 

Változó / struktúra deklarálás a Working Storage Section-ben:

01 varchar-buf global.     03 len                         PIC 9(4) COMP   VALUE ZEROS.     03 buf                         PIC x(100)      VALUE SPACES. 

Értékadás:

MOVE "szoveg" TO variable 

Összeadás:

ADD years TO age 

Kivonás:

SUBTRACT 18   FROM variable 

String parsolása egy másik megformázott időbélyeget tartalmazó Stringbe:

STRING      ws-edate (7:4)         DELIMITED SIZE             "-"                    DELIMITED SIZE             ws-edate (4:2)         DELIMITED SIZE             "-"                    DELIMITED SIZE             ws-edate (1:2)         DELIMITED SIZE             ws-etime               DELIMITED SIZE             ".000000"              DELIMITED SIZE                                    INTO ws-timestamp END-STRING 

Vezérlő szerkezetek

Elágazás:

IF (data1 = 1 or 3 or 5 or 7 or 9) AND (data2 = 2 or 6)     SUBTRACT 1 FROM data1 ELSE     MOVE 12      TO data1     SUBTRACT 1 FROM data2 END-IF 

Ciklusszervezés:

perform until I > 10     add I1 OF TOMB (I) to A OF TOMB (I)     add I2 OF TOMB (I) to B OF TOMB (I)     add I3 OF TOMB (I) to C OF TOMB (I)     add 1 to I end-perform. 

Feltételtől függő ciklus:

evaluate HONAP     when 2 thru 12         perform until I > 10             subtract WOSSZ OF ELOZOEV(I) from WOSSZ OF TOMB(I)             subtract WOSSZ OF ELOZOEV(I) from WOSSZ OF TOMB(I)             add 1 to I         end-perform end-evaluate. 

Eljáráshívás:

PERFORM  eljaras 

Kimenet/Bemenet

Konzolra írás

DISPLAY "Hello World at" hv-date  "!" 

Fájl műveletek

Fájl rekord típus deklarálása a Data Division/File section-ben. Pl. egy 536 karakteres rekord deklarálása:

FD X-FILE record contains 536 characters.   01 X-RECORD PIC X(536). 

Fájl megnyitása:

open output X-FILE 

Fájl olvasása:

read X-FILE next 

Fájl írása:

write X-RECORD from RECORD-TEXT after 1 

Fájl lezárása:

close X-FILE 

A teljes Hello World program

IDENTIFICATION DIVISION.       PROGRAM-ID. HELLO-WORLD.       PROCEDURE DIVISION.           DISPLAY 'Hello, world'.           STOP RUN. 

Beágyazott adatbázis kezelés

A Cobol nyelv kibővíthető volt különböző extra tulajdonságokkal, pl. sql kezeléssel egy speciális preprocesszoros fordítás segítségével. A következőkben erre látható egy példa.

Rekord típus definiálása a tábla mezői alapján, melyet a WORKING-STORAGE SECTION-ben kell elhelyezni egy deklarációs blokkba. Figyelni kell a hibakódok stb. beimportálására is:

EXEC SQL include structures sqlca version 2 end-exec. EXEC SQL include sqlca end-exec.  EXEC SQL begin declare section end-exec. 
EXEC SQL     invoke =table_ident as ident        LEVEL (01,01) NULL STRUCTURE END-EXEC. 

Deklarációs blokk lezárása:

EXEC SQL end declare section END-EXEC. 

Majd következhetnek a cursor definíciók. Pl:

EXEC SQL DECLARE region-cursor CURSOR FOR      SELECT          region_name ,          region_code ,          region_lang ,      FROM  =t_region      order by region_code      BROWSE ACCESS END-EXEC. 

Egy select eredményének berakása egy tömbbe (open-process-close):

EXEC SQL      OPEN region-cursor END-EXEC  perform until not dfisql-ok     initialize region     EXEC SQL         FETCH region-cursor INTO             :region-name      OF region,             :region-code      OF region,             :region-lang      OF region,    END-EXEC     if not dfisql-ok         exit perform    end-if     add 1 to region-cnt    move val OF region-name  OF region to region-name   OF region-table(region-cnt)    move val OF region-code  OF region to region-code   OF region-table(region-cnt)    move val OF region-lang  OF region to region-lang   OF region-table(region-cnt) end-perform  EXEC SQL     CLOSE region-cursor END-EXEC 

A fordításhoz pl. HP NonStop SQL esetén egy sqlcomp programra van szükség.

Jegyzetek

Források

További információk

Tags:

Cobol Egy COBOL program felépítéseCobol A COBOL nyelvCobol AlapműveletekCobol Vezérlő szerkezetekCobol KimenetBemenetCobol A teljes Hello World programCobol Beágyazott adatbázis kezelésCobol JegyzetekCobol ForrásokCobol További információkCobolProgramozási nyelv

🔥 Trending searches on Wiki Magyar:

ReformációVérehulló fecskefűAzahriahAvokádóAttila hun királyTóth AndiWhitney HoustonMichael Jackson (énekes, 1958–2009)Mephisto (film)OmánIpari forradalomGörögországTüdőgyulladásNémeth Miklós (politikus)Schengeni egyezménySydney SweeneyOroszlánAz útvesztő (film)M2-es autóút (Magyarország)Fábián AnitaNaprendszerHomeopátiaMagyar festők listájaClass FMA renitensMohácsi csataRendszerváltás MagyarországonI. Károly frank császárGömöri András MátéGmailIII. György brit királyJedlik ÁnyosMadeira-szigetekJósika-orgonaÉsztországArgentínaMagyar nyelvjárásokMost vagy soha!NégyzetszámokTudományos fokozatAutizmusJózsef AttilaPlatónMagyar választási rendszerHangszerek listájaTörök hódoltság2024–2025-ös UEFA-bajnokok ligájaSvédországOrszágok és területek listájaAz Európai Unió tagállamaiTartaroszMagyarország himnuszaGlobális felmelegedésVincent van GoghNetflixLuxemburgNembináris nemi identitásAutómárkák listájaLiszt FerencOrális szexMonacoAntall József (politikus, 1932–1993)Tisza István (miniszterelnök)RMS TitanicI. László magyar királyBulgáriaTeljesítményVajna TímeaMolnár PiroskaArsenal FCMenstruációs ciklusLionel MessiA Föld napjaBabits MihályTiszaBarátok közt (10. évad)Albert EinsteinRTL (Magyarország)🡆 More