Ein Wort besteht aus 1-31 Zeichen des folgenden Zeichenvorrats:
A-Z, a-z, 0-9, -
(Bindestrich)
Groß- und Kleinbuchstaben werden als gleich angesehen.
Ein Wort darf nicht mit einem Bindestrich beginnen oder enden. Es darf keine Leerzeichen enthalten und muss mindestens einen Buchstaben enthalten.
Wörter werden in vier Kategorien eingeteilt:
Programmiererwörter
Systemnamen
Reservierte Wörter
Funktionsnamen
1. Benutzerdefinierte Namen
Ein benutzerdefinierter Name ist ein COBOL-Wort, das vom Programmierer entsprechend
dem Format einer Klausel oder Anweisung anzugeben ist. Es bezieht sich auf einzelne Einheiten von Daten während der Verarbeitung des Programmes. Nachfolgend werden die Arten der in COBOL-Programmen verwendeten benutzerdefinierten Namen beschrieben und die Regeln zum Schreiben dieser Namen angegeben.
Die Arten von benutzerdefinierten Namen werden in Tabelle 4 aufgeführt und erklärt.
Alle benutzerdefinierten Namen, ausgenommen Segmentnummern und Stufennummern, müssen eindeutig sein, entweder dadurch, dass keine anderen benutzerdefinierten Namen in der selben Übersetzungseinheit die gleiche Buchstaben- bzw. Satzzeichenanordnung haben, oder dadurch, dass sie gekennzeichnet sind.
Mit Ausnahme von Paragrafenname, Kapitelname, Stufennummer und Segmentnummer müssen alle benutzerdefinierten Namen mindestens ein alphabetisches Zeichen enthalten. Segmentnummern und Stufennummern können identisch sein mit anderen Segmentnummern oder Stufennummern und auch mit Paragrafennamen und Kapitelnamen.
alphabetname | Name eines Alphabets im SPECIAL-NAMES-Paragrafen der ENVIRONMENT DIVISION, der mit einem Zeichensatz und/oder Sortierfolge verknüpft ist. |
bedingungsname | Ein Name, dem ein Wert, eine Gruppe von Werten oder ein Wertebereich, die ein Datenfeld annehmen kann, zugewiesen ist (also eine Bedingung des Datenfeldes). Ein Bedingungsname wird durch den Eintrag einer Stufennummer 88 in der FILE SECTION, LINKAGE SECTION, WORKING-STORAGE SECTION oder LOCAL-STORAGE SECTION erklärt. |
bibliotheksname | Name einer COBOL-Übersetzungseinheit-Bibliotheksdatei, die mehrere Texte mit verschiedenen Namen enthalten kann. |
dateiname | Ein Name, der einer oder mehreren Gruppen von Ein- oder Ausgabedateien zugewiesen ist. Ein Dateiname wird durch sein Auftreten in der SELECT-Klausel des FILE CONTROL-Paragrafen erklärt und als Name eines FD-Eintrages verwendet. |
Ein besonderer Dateiname ist ein Sortierdateiname, der eine Sortierdatei bezeichnet. Ein Sortierdateiname wird durch sein Auftreten in der SELECT-Klausel des FILE CONTROL-Paragrafen erklärt und als Name eines SD-Eintrages verwendet. | |
datenname | Ein Name, der ein Datenfeld in der DATA DIVISION bezeichnet. Ein Datenname wird durch sein Auftreten in einer Datenerklärung definiert. |
datensatzname | Der Name eines Datensatzes. Ein Datensatz wird durch einen 01-Stufeneintrag in der FILE SECTION, LINKAGE SECTION, WORKING-STORAGE SECTION, LOCAL-STORAGE SECTION oder in der SUB-SCHEMA SECTION erklärt. |
indexname | Ein Name eines Index für eine bestimmte Tabelle. Ein Indexname wird durch sein Auftreten in der INDEXED BY-Angabe der OCCURS-Klausel erklärt. |
interfacename | Ein vom Benutzer definierter Name, der eine Schnittstelle bezeichnet. |
kapitelname | Ein Kapitelname wird zur Benennung eines Kapitels in der PROCEDURE DIVISION verwendet. Kapitelnamen werden in den Programmtext-Bereich geschrieben, gefolgt vom Wort SECTION. |
klassenname (objektorientiert) | Ein vom Benutzer definierter Name, der eine Klasse bezeichnet. |
klassenname | Ein Name, durch den in der CLASS-Klausel des SPECIAL-NAMES-Paragrafen in der ENVIRONMENT DIVISION ein vom Programmierer festgelegter Zeichenvorrat benannt wird. In der Klassenbedingung kann auf diesen Klassennamen Bezug genommen werden. |
listenname | Der Name einer Liste. Ein Listenname wird durch sein Auftreten in der REPORT-Klausel eines FD-Eintrags erklärt und zur Benennung eines RD-Eintrags in der REPORT SECTION verwendet. |
merkname | Ein festgelegter Name, falls der Programmierer ihn mit einem bestimmten Herstellernamen im SPECIAL-NAMES-Paragrafen der ENVIRONMENT DIVISION verknüpft. |
methodenname | Ein vom Benutzer definierter Name, der eine Methode kennzeichnet. Der Methodenname wird durch seine Verwendung im METHOD-ID- Paragrafen der IDENTIFICATION DIVISION erklärt. |
paragrafenname | Ein Paragrafenname wird zur Benennung eines Paragrafen in der PROCEDURE DIVISION verwendet. Paragrafennamen müssen im Programmtext-Bereich stehen. |
parametername | Ein Parametername bezeichnet einen formalen Parameter einer parametrisierten Klasse oder eines parametrisierten Interface. |
programmname | Der Name zur Bezeichnung des Programms. Der Programmname wird durch seine Verwendung im PROGRAM-ID-Paragrafen der IDENTIFICATION DIVISION erklärt. Er kann auch in einer CALL-Anweisung des entsprechenden aufrufenden Programms auftreten. |
programmprototypname | Ein vom Benutzer definierter Name, der einen Programmprototypen bezeichnet. |
segmentnummer | Eine Nummer zum Einordnen von Kapiteln in der PROCEDURE DIVISION für die Segmentierung. Sie ist durch Verwendung in der Kapitelüberschrift erklärt. |
symbolisches- zeichen | Ein Name für eine figurative Konstante, die der Benutzer in der SYMBOLIC-CHARACTERS-Klausel des SPECIAL-NAMES-Paragrafen definiert. |
stufennummer | Eine Stufennummer bezeichnet die Lage eines Datenfeldes in der Strukturhierarchie eines Datensatzes oder beschreibt besondere Eigenschaften einer Datenerklärung. Stufennummern sind durch ihr Auftreten in einer Datenerklärung definiert. |
textname | Name eines Eintrags in der COBOL-Übersetzungseinheit-Bibliothek. Der Ein- trag wird durch die COPY-Anweisung aus der Bibliothek übernommen. |
typname | Ein benutzerdefinierter Name, der einen Typ bezeichnet, der in einer Datenerklärung der DATA DIVISION beschrieben ist. |
Tabelle 4: COBOL benutzerdefinierte Namen
2. Systemnamen
Ein Systemname ist ein COBOL-Wort, das als Schnittstelle zum Betriebssystem verwendet
wird. Systemnamen werden durch den Hersteller festgelegt und können zwischen den Übersetzern der verschiedenen Hersteller abweichend sein. Für den Programmierer sehen Systemnamen eines bestimmten Compilers aus wie reservierte Wörter.
Die Systemnamen für den COBOL2000 sind:
Rechenanlagenbezeichnung | in den Paragrafen SOURCE-COMPUTER und OBJECT-COMPUTER, |
Herstellername | im SPECIAL-NAMES-Paragrafen und in der ASSIGN-Klausel. |
Aufruf-Konvention | in der CALL-CONVENTION-Direktive |
3. Reservierte Wörter
Die COBOL-Sprache umfasst eine feste Anzahl reservierter Wörter, die COBOL-Wörter.
Ein reserviertes Wort hat einen besonderen Zweck und darf nur in dem in den Formaten angegebenen Zusammenhang verwendet werden; es darf nicht als benutzerdefinierter Name oder Systemname in der Übersetzungseinheit auftreten.
Eine vollständige Liste der reservierten Wörter ist in nachfolgenden Seiten angegeben. Alle reservierten Wörter in dieser Liste, die mit einem * versehen sind, werden nur im Falle einer Übersetzung mit DML-Anweisungen (DML = Data Manipulation Language) als reservierte Wörter behandelt, ansonsten können sie als Programmiererwörter verwendet werden. Um eine Übersetzung mit DML-Anweisungen handelt es sich, wenn in der DATA DIVISION eines Programms eine
SUB-SCHEMA SECTION
vorkommt (siehe UDS/SQL-Beschreibung [6]).
Es gibt drei Arten von reservierten Wörtern:
Pflichtwörter (required words)
Wahlwörter (optional words)
Sonderzweckwörter (special purpose words)
Pflichtwörter
Ein Pflichtwort ist ein reserviertes Wort, das vorhanden sein muss, wenn das Format, in dem das Wort vorkommt, in der Übersetzungseinheit verwendet ist.
Es gibt zwei Typen von Pflichtwörtern:
Schlüsselwörter
Innerhalb eines jeden Formates sind solche Wörter in Großbuchstaben geschrieben und unterstrichen. Schlüsselwörter dürfen nur in den genannten Formaten verwendet werden. Die Schlüsselwörter lassen sich wiederum unterteilen in
Verben wie ADD, READ und CALL,
notwendige Wörter, die in Anweisungs- und Eintragungsformaten vorkommen,
Wörter, die eine besondere funktionelle Bedeutung haben, wie z.B. NEGATIVE, SECTION etc.
Einige Schlüsselwörter können abgekürzt werden (z.B. PIC für PICTURE).
Sonderzeichenwörter
sind arithmetische Operatoren und Vergleichszeichen (siehe Abschnitt „Begriffserklä-rungen").
Wahlwörter
Innerhalb eines jeden Formates werden Wörter in Großbuchstaben, die nicht unterstri-chen sind, Wahlwörter genannt. Diese kann der Benutzer nach Belieben verwenden. Die Bedeutung der COBOL-Anweisung ändert sich nicht, unabhängig davon, ob ein Wahlwort in der Anweisung angegeben ist oder nicht. Ein Wahlwort darf jedoch nicht falsch geschrieben oder durch ein anderes Wort ersetzt werden.Sonderzweckwörter
Es gibt zwei Typen von Sonderzweckwörtern:Sonderregister
Figurative Konstanten
Sonderregister
Sonderregister sind Datenfelder, in denen bei Verwendung bestimmter Bestandteile von COBOL die dort angefallene Information abgelegt wird. Die Attribute dieser Sonderregister sind vorgegeben. Jedes Register hat einen festen Namen. Deshalb braucht der Programmierer diese Register in der DATA DIVISION nicht zu erklären. Die Sonderregister sind in Tabelle 5 aufgezeigt.
Sonderregistername | Beschreibung | Verwendung |
TALLY | 5-ziffriges Datenfeld ohne Vorzei-chen mit COMPUTATIONAL-Angabe (siehe Abschnitt „USAGE-Klausel") | TALLY kann überall dort verwendet werden, wo ein Datenfeld mit ganzzahligen Wert auftreten kann. Falls z.B. der aktuelle Wert von TALLY 3 ist, dann sind die folgenden Anweisungen gleichwertig:ADD 3 TO ALPHA.ADD TALLY TO ALPHA. |
LINE-COUNTER PAGE-COUNTER PRINT-SWITCHCBL-CTR | Verwendet vom Listenprogramm-Teil | Siehe Abschnitt „Sonderregister des Listenprogramms". |
LINAGE-COUNTER | 4 Byte langes Datenfeld, das eine vorzeichenlose Ganzzahl enthält, die maximal den Wert von ganzzahl-1 oder datenname-1 in der LINAGE-Klausel annehmen kann. | Für jede Datei, deren Dateierklärung eine LINAGE-Klausel enthält, wird vom Compiler ein LINAGE-COUNTER-Sonderregister generiert (siehe Abschnitt „LINAGE-Klausel"). |
RETURN-CODE | 8-ziffriges Datenfeld mit Vorzeichen mit COMPUTATIONAL-Angabe und SYNCHRONIZED-Angabe (entspricht PIC S9(8) COMP-5 SYNC) | Dieses Datenfeld existiert nur einmal pro Ablaufeinheit. Der Anwender kann das Feld zum Informationsaustausch zwischen getrennt übersetzten, aber zum Zielprogramm gebundenen COBOL-Moduln nutzen. Außerdem kann in diesem Feld der Returnwert eines fremdsprachigen Unterprogramms hinterlegt werden. Bei Beendigung eines COBOL-Unterprogramms kann der Inhalt des Feldes dem aufrufenden fremdsprachigen Programm als Funktionswert zur Verfügung gestellt werden. Ist nach Ausführung von STOP RUN der Inhalt des RETURN-CODE-Sonderregisters ungleich Null, wird das Betriebssystem über die abnormale Beendigung des Programms informiert. |
SORT-RETURNSORT-FILE-SIZE SORT-CORE-SIZESORT-MODE-SIZESORT-EOWSORT-CCSN | Verwendet vom Sortierteil (siehe Abschnitt „Sortieren von Datensätzen"). | |
XML-EVENT | Verwendet vom XML-Teil (siehe Abschnitt „Sprachmittel zur Verarbeitung von XML"). |
Tabelle 5: COBOL-Sonderregister
Reservierte Wörter
Die folgende Übersicht enthält alle reservierten Wörter.
Ein ’*
’ vor dem Wort bedeutet, dass dieses Wort nur im Falle einer Übersetzung mit DML-Anweisungen (DML = Data Manipulation Language) als reserviertes Wort behandelt wird. Ansonsten kann es als benutzerdefinierter Name verwendet werden. Um eine Übersetzung mit DML-Anweisungen handelt es sich, wenn die SUB-SCHEMA SECTION angegeben ist.
Ein ’#’ vor dem Wort bedeutet, dass dieses Wort nicht als reserviertes Wort behandelt wird, wenn bei der SOURCE-PROPERTIES-Option ENABLE-KEYWORDS = *COBOL85 gesetzt ist.
|
|
|
|
|
|
|
|
|
|
|
|
Reservierte Wörter für Compiler-Direktiven
|
|
Zusätzlich sind alle Ausnahmesituationsnamen aus der Tabelle 45 im Abschnitt "Ausnahmesituationen und Ausnahmezustände" reservierte Wörter für Compiler-Direktiven.
Kontext-sensitive Wörter
|
|
4. Funktionsnamen
Ein Funktionsname ist ein Wort aus einer besonderen Liste von Wörtern, die in einem COBOL-Programm verwendet werden dürfen. Dasselbe Wort darf, wenn es nicht als Funktionsname gebraucht wird, als benutzerdefinierter Name verwendet werden (siehe Kapitel „Interne Standard-Funktionen", „Funktionsname" im Abschnitt "Allgemeines").
5. Ausnahmesituationsnamen
Ein Ausnahmesituationsname ist ein COBOL-Wort, das eine Ausnahmesituation bezeichnet (siehe Tabelle 45 im Abschnitt "Ausnahmesituationen und Ausnahmezustände").
In anderen Zusammenhängen können diese Worte als benutzerdefinierter Name verwendet werden.