Melden Sie sich hier an, um auf Kommentare und die Whitepaper-Datenbank zugreifen zu können.

Kein Log-In? Dann jetzt kostenlos registrieren.

Falls Sie Ihr Passwort vergessen haben, können Sie es hier per E-Mail anfordern.

Der Zugang zur Reseller Only!-Community ist registrierten Fachhändlern, Systemhäusern und Dienstleistern vorbehalten.

Registrieren Sie sich hier, um Zugang zu diesem Bereich zu beantragen. Die Freigabe Ihres Zugangs erfolgt nach Prüfung Ihrer Anmeldung durch die Redaktion.

29.06.1990

Kleines OOP-Lexikon für die Cobol-Programmierung

Für objektorientiertes Programmieren unter Cobol sind eine Reihe zusätzlicher Begriffe nötig. In der folgenden Aufstellung wurde versucht, bereits bestehende Festlegungen nach dem im JOD- oder ANSI-Standard zu berücksichtigen.

Ancestor (Eltern, Vorfahr, Ahn, Vater):

Eine Object-class, die in der FROM-Klausel eines PROGRAM-ID-Eintrags mit dem Object-class-Attribut angegeben wird. Der Programmname im selben Eintrag ist ein Sohn des Vaters, alle Instance-Daten, Public-methods und Private-methods des Vaters werden repliziert und sind daher stets im Sohn verfügbar.

Object-Instance:

Der Object-instance, der implizit an eine Method in einer Object-class übergeben und von den speziellen Registern Instance [OF] Object-class-Name und Pointer [TO] Object-class-Name von direkt oder indirekt in der Object-class enthaltenen Anweisungen angesprochen wird.

Daten-Pointer:

Ein Datum der "USAGE Pointer TO DATA". Das ist die Adresse, die an BY REFERENCE-Parameter in der CALL-Anweisung übergeben wird.

Descendant (Sohn, Nachfolger):

Eine Object-class, die die FROM-Klausel in einem PROGRAM-ID-Eintrag mit dem Object-class-Attribut festlegt. Der Programmname im selben Eintrag ist der Object-class-Name des Nachfolgers. Ein Nachfolger kann mehr Eigenschaften als sein direkter Ahn- haben und mehrere Vererbungen von Methods und Instance-Daten desselben Ahnen enthalten.

External Object-class:

Eine mit dem EXTERNAL-Attribut, im PROGRAM-ID-Eintrag definierte Object-class. Wichtig ist, daß genug Information zur Verfügung steht, damit das definierende Programm den für einen solchen Instance benötigten Platzbedarf ermitteln (wenn ein statischer Object-instance zulässig ist) oder einen Pointer auf einen solchen Instance richten kann (wenn pseudo-dynamische Object-instance-Zuweisung zulässig ist). Außerdem müssen die relative Position und die Namen aller PUBLIC-instance-Daten oder Methods errechenbar sein.

Externes Programm:

Ein mit dem EXTERNAL-Attribut im PROGRAM-ID-Eintrag definiertes Programm. Wie bei anderen EXTERNAL Cobol-Daten ist jeweils ein Instance des Programms in der Objektprogramm. Einheit für jedes Programm verfügbar, das ihn benennt. Dabei müssen alle Deklarationen identisch sein. Eine externe Programm-Deklaration gibt an:

- Hersteller-definierte Aufrufkonventionen,

- die vom Programm erwarteten Parameter,

- die Art der Übergabe dieser Parameter,

- ein mögliches, von der GIVING-Angabe der CALL-Anweisung abgerufenes Ergebnis.

Instance-Modifikation:

Eine Sonderform der Referenz für einen Object-instance, um eine ihn bearbeitende Method auszuwählen oder ein darin enthaltenes PUBLIC-Datum anzusprechen. Wenn ein solches PUBLIC-Datum gleichzeitig ein Object-Instance ist, kann der Instance-modifier ebenfalls verändert werden. Der rechte Instance-modifier bestimmt die USAGE- und gegebenfalls die PICTURE-Angabe sowie eine optionale Method für das angesprochene Datum.

Instance-modifier,

Eine linke Klammer, gefolgt von einem Method-Namen oder einem Cobol-Bezeichner passenden Formats. Beide können zusätzlich durch einen Object-class-Namen, gefolgt von einer rechten Klammer, qualifiziert werden. Ein Instance-modifier folgt unmittelbar auf einen Object-instance. Er kann innerhalb eines anderen Modifiers stehen (seiner rechten Klammer unmittelbar vorangehend), wenn der Instance modifier-Name einen Object-instance benennt. Außerdem muß er ein Datum angeben, dessen Bezeichnung sich auf seinen vorangegangenen Object-instance bezieht und im jetzigen Namensumfang enthalten ist.

Instance-Daten:

Der Speicherbereich, der den FILE-, RECORD-, COMMUNICATION- und RECORD-Description-Einträgen zugewiesen ist, die mit dem PUBLIC- oder PRIVATE-Attribut definiert sind. Für jeden Object-instance ist ein Speicherbereich zugewiesen. Einträge ohne Attribut haben nur einen Speicherbereich, der zu dem Programm gehört, in dem sie definiert sind. Zu Einträgen gehörende Namen mit dem PUBLIC-Attribut sind im Namensumfang aller Anweisungen, Klauseln und Angaben enthalten, die den definierenden Object-class-Namen in ihrem Namensumfang haben.

Method:

Ein direkt in einer Object-class enthaltenes Programm. Wenn es direkt oder indirekt aufgerufen wird, hat es impliziten Zugriff auf die Instance-Daten des Object-instance, der im Call zur Verfügung gestellt wird. Methods können aber müssen nicht ein CANCEL-, PUBLIC- oder PRIVATE-Attribut haben.

Innerhalb einer Object-class kann nur eine Method mit dem CANCEL-Attribut versehen sein. Diese wird dann während einer CANCEL-Anweisung aufgerufen, die auf einen Object-instance der Object-class angewendet wird, die wiederum die Method definiert. Der Aufruf findet statt, nachdem CANCEL auf alle ererbten Object-instances innerhalb des Object-instance angewendet wurde, doch bevor der Object-instance wieder in seinem Anfangsstatus ist.

In Söhnen, die eine Method desselben Namens zur Verfügung stellen, werden Methods mit dem PUBLIC- oder PRIVATE-Attribut außer Kraft gesetzt. Ein CALL auf eine außer Kraft gesetzte Method wird auf die passende Redefinition zurückgerichtet, wenn das aufrufende Programm in der Ancestor-object-class enthalten und der aktuelle Object-instance eine Descendant-object-class ist, die die Method außer Kraft setzt.

Methods mit dem PUBLIC-Attribut sind im Namensumfang aller Anweisungen, Klauseln und Angaben enthalten, die den definierenden Object-class-Namen in ihrem Namensumfang haben.

Object-class:

Eine spezielle Art von Programm, die durch das Object-class-Attribut in einem PROGRAM-ID-Eintrag bestimmt wird. Dieser Eintrag kann:

- die Parameter festlegen, die für die automatische Initialisierung eines Nachfolger-object-instance benutzt werden.

- keinen, einen oder mehrere Ahnen festlegen, von denen Instance-Daten und -Methods ererbt werden. Er kann für jeden dieser Ahnen die entsprechenden PUBLIC-instance-Daten oder -methods PRIVATE machen, so daß solche Daten nicht über den Nachfolger-object-class-Namen angesprochen werden können.

- den PUBLIC-Namen eines ererbten Datums ändern, so daß der neue Name benutzt werden muß, wenn er über den descendant-Object-class-Namen angesprochen wird. Dieser Zusatz verhindert Namenskonflikte, wenn das Datum PUBLIC bleiben muß.

- neue Anfangs-VALUE-Anweisungen zur Verfügung stellen, die für die Instance-Daten der Descendant-object-class benutzt werden

- statische oder pseudo-dynamische Zuweisung von Object-instances erzwingen.

Zusätzlich zu den ererbten Instance-Daten und Methods werden Daten, die als PUBLIC oder PRIVATE in der Data Division einer Object-class bestimmt sind, allen Ancestor-instance-Daten angefügt, und unmittelbar in der Object-class enthaltene Programme sind Methods, die ererbte Methods ersetzen oder außer Kraft setzen können.

Alle Object-class-Programme haben eine Method, für die der Code in der Procedure Division der Object-class angegeben wird. Diese Method hat den Object-class-Namen als ihren Method-Namen. Sie wird dazu benutzt pseudo-dynamisch einen Object-instance zuzuweisen, der durch einen Object-Pointer festgelegt ist. Außerdem initialisiert sie statische oder pseudo-dynamische Object-instance-Daten.

Gibt es in der Procedure Division keinen Code, wird EXIT PROGRAM angenommen.

Object-Instance:

Ein Speicherbereich (von mehreren möglichen), der die für eine Object-class definierten Instance-Daten enthält. Wenn der PROGRAM-ID-Eintrag der Object-class nicht mit der RESERVE-Klausel versehen ist, können nur statische Object-instances definiert werden. Wird die Pointer-Klausel im PROGRAM-ID eingetragen, ist nur die pseudo-dynamische Zuweisung eines Object-instance zulässig.

Object-Pointer:

Ein Hilfsmittel, um dynamisch zugewiesene Object-instances zu identifizieren. Der Objekt-Pointer kann eine Speicheradresse für einen Object-instance sein, dessen Lebensdauer durch die Beständigkeit der Objektprogramm-Einheit begrenzt ist.

Ein Objekt-Pointer durch "USAGE Pointer TO Object-class-Name" oder "USAGE Pointer TO Object-class" benannt. Im zweiten Fall wird ein Pointer für die Speicheradresse jedes Object-instance so erzeugte als wäre Object-class ein Ahn aller möglichen Object-class-Deklarationen.

Programm-Pointer:

Ein Datenfeld der "USAGE Pointer TO PROGRAM", das eine Programmadresse enthalten kann. Sie wird optional in CALL- oder CANCEL-Anweisungen benutzt oder in "SET TO Programmname", wobei Programmname das Benutzerwort in einem PROGRAM-ID-Eintrag ist.

Ein solches Datenfeld kann auch als empfangendes Feld in

einer SET-Anweisung benutzt werden, in der das sendende Feld ein modifizierter Object-instance ist, der sich auf einen Method-Namen bezieht. In diesem Fall zeigt der Programm-Pointer auf den Code für die zum Object-instance passende Method. Dieser Zusatz erleichtert die Integration von Cobol-OOPs.

Pseudo-dynamische Zuweisung:

Zuweisung eines zeigerbezogenen Object-instance von einer Gruppe von Object-instances der in der RESERVE-Klausel deren Anzahl dem Compiler in der RESERVE-Klausel eines PROGRAM-ID-Eintrags bekanntgegeben wurde. Die Zuweisung ist nicht erfolgreiche wenn ihre Anzahl minus der Menge der folgenden De-Allokationen des Object-instance der in der RESERVE-Klausel angegebenen Zahl gleich ist.

Pseudo-dynamische Zuweisung findet statt, wenn eine CALL-Object-Pointer-Anweisung abgesetzt wird. Ein solcher CALL übergibt die Steuerung an den Code in der Procedure Divison der Object-class, die einen Speicherbereich für das Objekt zuweist oder die EXCEPTION-Bedingung anzeigt, wenn kein Speicherbereich übrigbleibt.