Funktionsname
Jede Standard-Funktion hat einen Namen, mit dem der Programmierer sie ansprechen kann. Ein Funktionsname ist ein Schlüsselwort aus einer besonderen Liste von COBOL-Wörtern und ist notwendiger Bestandteil des Funktionsbezeichners. Außerhalb eines Funktionsbezeichners kann ein solches Schlüsselwort auch als benutzerdefinierter Name verwendet werden.
Returnwert einer Funktion
Jede Funktion, die erfolgreich durchlaufen wurde, liefert ein Funktionsresultat, den Returnwert. Um den Returnwert zu bestimmen, verarbeitet die Funktion die Datenwerte, die von den im Funktionsbezeichner genannten Argumenten geliefert werden.
Das Funktionsresultat ist definiert
durch die Länge des Returnwertes bei alphanumerischen und nationalen Funktionen,
durch das Vorzeichen des Returnwertes bzw. die Ganzzahligkeit bei numerischen und ganzzahligen Funktionen,
im Übrigen durch den Returnwert selbst.
Für die Argumente gelten bestimmte Vorschriften: Datentyp, Anzahl, Länge und Wertebereich der Argumente sind durch die Definition der Funktion festgelegt. Nur wenn diese Vorschriften eingehalten werden, liefert die Funktion einen definierten Returnwert.
Fehler-Returnwert
Ist eine Funktion mit einem ungültigen Argument versehen, ist das Resultat undefiniert. Mit einer Compileroption kann die Überprüfung der Argumentwerte veranlasst und der Funktion der Fehler-Returnwert zugewiesen werden, der anzeigt, dass die Funktion nicht erfolgreich abgelaufen ist.
Mit einer weiteren Compileroption kann bewirkt werden, dass der Fehlerfall zur Ablaufzeit gemeldet wird (Fehlermeldungen COB9123 - COB9128). Näheres hierzu ist im Handbuch „COBOL2000 Benutzerhandbuch“ [1] dargestellt.
Datumskonversion
In den Funktionen zur Datumskonversion wird der Gregorianische Kalender verwendet. Das Startdatum Montag, 1. Januar 1601 wurde ausgewählt, um eine einfache Beziehung zwischen dem Standarddatum und DAY-OF-WEEK herzustellen; d.h. das ganzzahlige Datum 1 war ein Montag, DAY-OF-WEEK 1.
Argumente
Argumente bezeichnen die für den Ablauf einer Funktion verwendeten Werte. Argumente werden im Funktionsbezeichner (siehe "Funktionsbezeichner") angegeben. Sie können als Bezeichner, als arithmetische Ausdrücke oder als Literale angegeben werden. Die Formatbeschreibung einer Funktion enthält die Anzahl der erforderlichen Argumente, die null, eins oder mehr betragen kann. Für manche Funktionen kann die Anzahl der angebbaren Argumente variabel sein.
Argumente gehören einer bestimmten Datenklasse oder einer Teilmenge einer Datenklasse an. Es gibt folgende Argumenttypen:
Numerisch. Es muss ein arithmetischer Ausdruck angegeben werden. Der Wert des arithmetischen Ausdrucks wird, einschließlich des Vorzeichens, zur Bestimmung des Funktionswertes herangezogen.
Alphabetisch. Ein Datenfeld der Klasse alphabetisch oder ein alphanumerisches Literal, das nur aus alphabetischen Zeichen besteht, muss angegeben sein. Die Länge des Arguments kann für die Bestimmung des Funktionswertes verwendet werden.
Alphanumerisch. Ein Datenfeld der Klasse alphabetisch oder alphanumerisch oder ein alphanumerisches Literal muss angegeben sein. Die Länge des Arguments kann für die Bestimmung des Funktionswertes verwendet werden.
National. Ein nationales Datenfeld oder ein nationales Literal muss angegeben werden. Die Länge des Arguments kann für die Bestimmung des Funktionswertes verwendet werden.
Ganzzahlig. Es muss ein arithmetischer Ausdruck, der immer in einem ganzzahligen Wert resultiert, angegeben sein. Der Wert des arithmetischen Ausdrucks wird einschließlich des Vorzeichens zur Bestimmung des Funktionswertes verwendet.
Von der Klasse objekt.
Von der Klasse zeiger.
Typdeklaration.
Index. Ein Datenfeld mit USAGE INDEX muss angegeben werden.
Wenn das Format einer Funktion erlaubt, dass ein Argument beliebig oft wiederholt wird, kann eine Tabelle referenziert werden. Die Referenz erfolgt durch Angabe des Datennamens und beliebiger Kennzeichner für die Tabelle, unmittelbar gefolgt von einer Subskribierung, in der ein oder mehrere Subskripte in dem Wort ALL bestehen.
Wenn ALL als Subskript angegeben ist, hat dies die gleiche Wirkung, als ob jedes Tabellenelement zu dieser Subskriptposition angegeben wäre.
Beispiel:
ALL-Subskripte in einer dreidimensionalen Tabelle mit zehn Elementen in jeder Dimension:
FUNCTION MAX (TAB(ALL 2 ALL))
ist identisch mit
FUNCTION MAX (TAB(1 2 1) TAB(1 2 2) ... TAB(1 2 10) TAB(2 2 1) TAB(2 2 2) ... TAB(2 2 10) ... TAB(10 2 1) TAB(10 2 2) ... TAB(10 2 10))
Wenn das ALL-Subskript mit einer OCCURS DEPENDING ON-Klausel verknüpft ist, wird der Wertebereich vom Objekt der OCCURS DEPENDING ON-Klausel bestimmt. Dieses Objekt muss bei der Auswertung der Argumente größer als 0 sein. Wenn ein mit ALL subskribiertes Argument teilfeldselektiert ist, so bezieht sich der Teilfeldselektor auf jedes implizit referenzierte Tabellenelement.
Funktionstypen
Funktionen sind Datenelemente. Sie liefern alphanumerische, nationale, numerische oder index Werte und können keine Empfangsoperanden sein. Es gibt folgende Typen von Funktionen:
Alphanumerische Funktionen. Sie gehören zur Klasse und Kategorie alphanumerisch. Alphanumerische Funktionen haben die implizite USAGE DISPLAY.
Nationale Funktionen. Sie gehören zur Klasse und Kategorie national. Nationale Funktionen haben die implizite USAGE NATIONAL.
Numerische Funktionen. Sie gehören zur Klasse und Kategorie numerisch.
Eine numerische Funktion wird stets als vorzeichenbehaftet behandelt.
Eine numerische Funktion kann nur in einem arithmetischen Ausdruck verwendet werden.
Eine numerische Funktion darf nicht referenziert werden, wo ein ganzzahliger Operand verlangt ist, selbst wenn die Auswertung der Funktion einen ganzzahligen Wert ergibt.Ganzzahl-Funktionen. Sie gehören zur Klasse und Kategorie numerisch.
Eine Ganzzahl-Funktion wird stets als vorzeichenbehaftet behandelt.
Eine Ganzzahl-Funktion kann nur in einem arithmetischen Ausdruck verwendet werden.Index-Funktionen. Sie gehören zur Klasse und Kategorie Index.