Funktion
Jeder vom Benutzer angegebene Name, der in einer COBOL-Übersetzungseinheit explizit referenziert wird, muss eindeutig sein. Ein Name ist eindeutig, wenn kein anderer Name aus der gleichen Folge von Zeichen und Bindestrichen besteht oder der Name in einer Hierarchie von Namen vorkommt, so dass eindeutig auf ihn Bezug genommen werden kann. Dies geschieht, indem ein oder mehrere Namen einer höheren Stufe der Hierarchie angegeben werden. Die höheren Stufen heißen Kennzeichner, und der Vorgang, der die Eindeutigkeit von Namen bewirkt, heißt Kennzeichnung. Ein Name muss ausreichend gekennzeichnet sein, um eindeutig zu sein; jedoch ist es nicht unbedingt nötig, alle Stufen der Hierarchie anzugeben. Innerhalb der DATA DIVISION müssen alle Datennamen, die zur Kennzeichnung benutzt werden, mit einer Stufennummer oder einer Stufenbezeichnung versehen werden. Deshalb dürfen zwei gleiche Datennamen nicht untergeordnete Elemente einer Datengruppe sein, es sei denn, sie können eindeutig gekennzeichnet werden. In der PROCEDURE DIVISION dürfen zwei gleiche Paragrafennamen nur dann im gleichen Kapitel auftreten, wenn auf sie nicht Bezug genommen wird. Wird ein Paragrafenname referenziert, muss er eindeutig sein, d.h. er muss, wenn er in mehreren Kapiteln vorkommt, gekennzeichnet werden.
Im Zusammenhang mit Typen ist die Eindeutigkeit von Namen gegeben, wenn der Name nur innerhalb einer Typdefinition auftritt und diese Typdefinition nicht mehr als einmal zur Definition von Daten genutzt wird. In allen anderen Fällen ist die Kennzeichnung notwendig.
In der Hierarchie der Kennzeichnung sind die zu einer Stufenbezeichnung gehörenden Namen am wichtigsten, danach die Namen, die zur Stufennummer 01 gehören, danach Namen mit Stufennummern 02 bis 49. Ein Kapitelname ist der einzige Kennzeichner, der für Paragrafennamen zur Verfügung steht. Der oberste Name in der Hierarchie muss eindeutig sein und darf nicht gekennzeichnet werden. Subskribierte oder indizierte Datennamen und Bedingungsvariable sowie Prozedurnamen und Datennamen können durch Kennzeichnung eindeutig gemacht werden. Der Name einer Bedingungsvariablen kann als Kennzeichner für jeden seiner Bedingungsnamen verwendet werden.
Format 1
{datenname-1 | bedingungsname} { {IN | OF}... [{IN | OF} dateiname]
| {IN | OF}
dateiname
}
Format 2
paragrafenname {IN | OF} kapitelname
Format 3
textname {IN | OF} bibliotheksname
Format 4
LINAGE-COUNTER
{IN | OF} dateiname
Format 5
{
| PAGE-COUNTER
} {IN | OF} listennameLINE-COUNTER
Format 6
datenname-1
{
{IN | OF} datenname-2 [
{IN | OF} listenname
]
| {IN | OF}
listenname
}
Syntaxregeln
Jeder Kennzeichner muss auf höherer Stufe und innerhalb der gleichen Hierarchie auftreten wie der Name, den er kennzeichnet.
Der gleiche Name darf nicht auf zwei Stufen in einer Hierarchie erscheinen.
Ein Datenname darf nicht subskribiert oder indiziert sein, wenn er als Kennzeichner benutzt wird.
Allgemeine Regeln
Falls ein Datenname oder ein Bedingungsname mehr als einem Datenfeld innerhalb der Übersetzungseinheit zugeordnet ist, muss der Datenname oder der Bedingungsname jedesmal gekennzeichnet werden, wenn in der PROCEDURE DIVISION,
ENVIRONMENT DIVISION und DATA DIVISION darauf Bezug genommen wird (außer in der REDEFINES-Klausel, wo Kennzeichnung unnötig ist und nicht verwendet werden darf).Ein Paragrafenname darf innerhalb eines Kapitels nur dann mehrfach auftreten, wenn nicht auf ihn Bezug genommen wird. Wird auf ihn Bezug genommen, darf er innerhalb eines Kapitels nur einmal vorkommen bzw. muss, wenn er in mehreren Kapiteln auftritt, gekennzeichnet werden. Wenn ein Paragrafenname durch einen Kapitelnamen gekennzeichnet wird, darf das Wort SECTION nicht verwendet werden.
Ein Paragrafenname braucht nicht gekennzeichnet zu werden, wenn auf ihn innerhalb des gleichen Kapitels Bezug genommen wird.Ein Name kann gekennzeichnet werden, auch wenn keine Kennzeichnung nötig ist; falls es mehrere Kombinationen von Kennzeichnern gibt, die Eindeutigkeit garantieren, so darf jede dieser Kombinationen verwendet werden. Die Gesamtmenge der Kennzeichner für einen Datennamen darf nicht die gleiche sein wie eine Teilmenge von Kennzeichnern für einen anderen Datennamen.
Ist mehr als eine COBOL-Bibliothek während der Übersetzungszeit für den Compiler verfügbar, muss der Textname, jedesmal wenn er angesprochen wird, durch bibliotheksname gekennzeichnet sein.
Wird datenname in einem inneren oder äußeren Programm eines Schachtelprogramms gekennzeichnet, darf der gleiche Datenname nicht für ein Datum (Datensatz oder Datenfeld) verwendet werden, das in einem der Programme des Schachtelprogramms als extern oder global deklariert ist.