A COBOL programozási nyelv

Alprogramok, modulok

Eljárások emulációja

A Cobolban nincs hagyományos értelemben vett eljárás, viszont két címke közti kódrészletet meg lehet hívni úgy, mintha eljárás lenne. Emiatt nincs paraméterátadás sem, ezt globális változók használatával lehet emulálni.

Eljárás meghívására szintén a PERFORM utasítás szolgál:

PERFORM elj1. / elj1 címkétől a következő címkéig futtatja
PERFORM elj1 THRU elj3. / a két megadott címke közötti részt futtatja

A PERFORM ezen alakja kombinálható a ciklusvezérléssel.

Beágyazott programok

A Cobolban lehetőség van beágyazott programok írására. Ekkor az eljárási főrész STOP RUN utasítása és END PROGRAM programnév közé egy teljes programot (mind a négy főrésszel) beírhatunk. Erre a vezérlést a CALL programnév utasítással adhatjuk át.

CALL alprogram BY REFERENCE azonosító. / címszerinti paraméterátadás
CALL alprogram BY CONTENT azonosító. / értékszerinti paraméterátadás

A megfelelő paramétereknek a hívott alprogram LINKAGE-SECTION részében kell szerepelniük.

Szakasz, mint eljárás

Az utasítások egy Cobol igével kezdődik például ADD, COMPUTE, stb. ezek általában szabályos angol igék. Vannak feltételes, feltétel nélküli és a fordítóprogramot vezérlő utasítások.

A Cobol utasításokból mondatokat készíthetünk, egy mondat legalább egy utasításból áll. A mondat végére pontot kell tenni, míg az azon belüli egyes utasításokat vesszővel választhatjuk el egymástól.

A Cobol mondatokból szakaszokat készíthetünk, melyek általában a feldolgozás egy-egy elkülöníthető részének programkódját tartalmazzák. Minden szakasz szakasznévvel kezdődik, ezt pont követi. Szegmentált program esetében a résznévvel együtt még a prioritásszám is szerepel. A szakaszokból pedig fejezeteket készíthetünk. A szakaszokat és fejezeteket mint eljárásokat használhatjuk.

Az eljárások előtt lehet deklaratív rész is. Ez a rész különleges szerepet tölt be (nem SECTION jellegű), ezért előfordul, hogy a főrész elején található. A DECLARATIVES kulcsszóval kezdődik, és az END DECLARATIVES kulcsszóval záródik le.

Az eljárási főrész szerkezete a következő:

PROCEDURE DIVISION.
[DECLARATIVES.
{résznév SECTION USE mondat.
{szakasznév.{mondat}...}...}...
END DECLARATIVES.]
{résznév SECTION [prioritásszám].
{szakasznév.{mondat}...}...}...

A DECLARATIVES. bejegyzésről bővebben: a "USE"-mondatok helye: használhatunk ilyeneket speciális, saját IO-címkekezelő-, IO-hibakezelő-, illetve táblageneráláshoz szükséges rutinok definiálására. A rutinokhoz tartozó kilépési pontokat a fordító generálja. Ezek a rutinok zártak, azaz tilos belőlük más, a PROCEDURE DIVISION egyéb területén található kódrészletre hivatkozni. A végrehajtásuk automatikus (a megfelelő helyről történő hívásokat a fordító automatikusan generálja); illetve PERFORM igével explicit is meghívhatók az eljárási főrésznek a DECLARATIVES.-tól különböző részeiből.

Lehetőségek más programnyelvű rutinok hívására

Fortran, illetve ALGOL nyelvű rutinoknak is átadható a vezérlés, az ENTER fordítási direktíva segítségével.

Formája :

ENTER FORTRAN|ALGOL.
...
ENTER COBOL.

Gyakorlati megvalósítás(ok) : az ENTER egy speciális szubrutin-hívást reprezentál, amely átadja a vezérlést a másik nyelven megírt, de már előre lefordított rutinnak.