Die nachfolgenden Formate zeigen die allgemeine Struktur einer COBOL-Übersetzungsgruppe und die Struktur der darin enthaltenen Übersetzungseinheiten. Eine Übersetzungseinheit ist separat übersetzbar.
Format der Übersetzungsgruppe
{Übersetzungseinheit}...
Compilation unit:
{ Programm-Prototyp
| Programm-Definition
| Klassen-Definition
| Interface-Definition
}
Programm-Prototyp:
[IDENTIFICATION DIVISION.]
PROGRAM-ID. {programmprototypname-1} IS PROTOTYPE.
[environment-division]
[data-division]
[procedure-division]
END PROGRAM programmprototypname-1.
Program definition; nested program definition:
[IDENTIFICATION DIVISION.]
PROGRAM-ID. programmname-1 [IS {| COMMON | {INITIAL | RECURSIVE } |} PROGRAM ].
[environment-division]
[data-division]
[procedure-division [nested program-definition]...]
[END PROGRAM programmname-1.]
Klassen-Definition:
[IDENTIFICATION DIVISION.]
CLASS-ID. klassenname-1 [IS FINAL]
[INHERITS FROM {klassenname-2}...]
[USING {parametername-1}...].
[environment-division]
[ [IDENTIFICATION DIVISION.]
FACTORY.
[environment-division]
[data-division]
[object-oriented procedure-division]
END FACTORY.
]
[ [IDENTIFICATION DIVISION.]
OBJECT.
[environment-division]
[data-division]
[object-oriented procedure-division]
END OBJECT.
]
END CLASS klassenname-1.
Interface-Definition:
[IDENTIFICATION DIVISION.]
INTERFACE-ID. interfacename-1
[INHERITS FROM {interfacename-2}...]
[USING {parametername-1}...].
[environment-division]
[object-oriented procedure-division]
END INTERFACE interfacename-1.
Objektorientierte Procedure Division
PROCEDURE DIVISION.
[{methoden-definition}...]
Methoden-Definition:
[IDENTIFICATION DIVISION.]
METHOD-ID. methodenname-1 [OVERRIDE] [IS FINAL].
[environment-division]
[data-division]
[procedure-division]
END METHOD methodenname-1.
Syntaxregeln
Innerhalb einer Übersetzungsgruppe müssen die Programm-Prototyp-Definitionen vor allen anderen Übersetzungseinheiten stehen.
Enthält eine Übersetzungsgruppe eine Programm-Definition und eine Programm-Prototyp-Definition mit dem selben Namen, müssen die Schnittstellen dieser zwei Übersetzungseinheiten identisch sein.
Die Data Division einer Methode innerhalb einer Interface-Definition darf nur dieLinkage Section enthalten.
Die Procedure Division einer Methode innerhalb einer Interface-Definition darf nur eine PROCEDURE DIVISION-Überschrift enthalten.
Allgemeine Regeln
In der Übersetzungseinheit Programm-Prototyp werden in der Data Division alle Sections, bis auf die Linkage Section und in der Procedure Division alles bis auf die PROCEDURE DIVISION-Überschrift, ignoriert. Die ignorierten Teile müssen syntaktisch richtiges COBOL sein.
Der Anfang einer Übersetzungseinheit wird durch die entsprechende Identification Division bezeichnet. Das Ende wird durch eines der folgenden bezeichnet:
den END-Eintrag
das Ende des ganzen Quellcodes.
Beendet ein END-Eintrag eine einzelne Übersetzungseinheit, so folgt entweder keine neue Programmierzeile oder die Identification Division der nächsten einzelnen Übersetzungseinheit (Folge von Übersetzungseinheiten).
Die Zuordnung von Zeilen zwischen Übersetzungseinheiten zu vorhergehenden bzw. nachfolgenden Übersetzungseinheit ist undefiniert.