Funktion
Die LINAGE-Klausel dient dazu, für eine Ausgabedatei die Länge einer logischen Seite in Form der Zeilenanzahl zu bestimmen. Außerdem kann der Abstand vom oberen bzw. unteren Rand der logischen Seite festgelegt sowie die Zeile innerhalb des Seitenrumpfes angegeben werden, in der der Fußteil beginnen soll.
Format
LINAGE IS {datenname-1 | ganzzahl-1} LINES [WITH FOOTING AT {datenname-2 | ganzzahl-2}]
[LINES AT TOP {datenname-3 | ganzzahl-3}] [LINES AT BOTTOM {datenname-4 | ganzzahl-4}]
Syntaxregeln
datenname-1, datenname-2, datenname-3 und datenname-4 müssen ganzzahlige, numerische Datenelemente ohne Vorzeichen sein.
datenname-1, datenname-2, datenname-3 und datenname-4 dürfen Kennzeichner haben.
Der Wert von ganzzahl-1 bzw. des Datenfeldes, auf das sich datenname-1 bezieht, muss größer 0 sein.
Der Wert von ganzzahl-2 bzw. des Datenfeldes, auf das sich datenname-2 bezieht, muss größer 0 sein, darf aber den Wert von ganzzahl-1 bzw. des Datenfeldes, auf das sich datenname-1 bezieht, nicht überschreiten.
Der Wert von ganzzahl-3 und ganzzahl-4 bzw. der Datenfelder, auf die sich datenname-3 und datenname-4 beziehen, darf 0 sein.
Die LINAGE-Klausel ist nicht für Dateien erlaubt, die mit OPEN EXTEND eröffnet werden.
Die LINAGE-Klausel ist nur für Dateien erlaubt, die PRINTER literal-1 oder literal-2 zugewiesen sind.
Mit Hilfe der LINAGE-Klausel kann man die Größe einer logischen Seite in Form der Zeilenzahl bestimmen. Die logische Seitengröße ergibt sich aus der Summe aller Angaben aus der LINAGE-Klausel mit Ausnahme der FOOTING-Angabe. Ist LINES AT TOP oder LINES AT BOTTOM nicht angegeben, so ist der Wert dieser Funktion 0. Fehlt die Angabe für FOOTING, so ist kein Seitenfuß definiert (siehe Tabelle 11).
Tabelle 11: Aufbau einer logischen Seite
Die Größe einer logischen Seite muss nicht unbedingt der Größe einer physischen Seite entsprechen.
Der Wert von ganzzahl-1 bzw. des Datenfeldes, auf das sich datenname-1 bezieht, gibt die Anzahl der Zeilen an, die auf einer logischen Seite geschrieben bzw. freigehalten werden können. Dieser Teil der logischen Seite, in dem Zeilen geschrieben bzw. freigehalten werden, wird als Seitenrumpf bezeichnet.
Der Wert von ganzzahl-3 bzw. des Datenfeldes, auf das sich datenname-3 bezieht, bestimmt die Anzahl von Zeilen, die den oberen Rand einer logischen Seite darstellen. Dieser Bereich wird nicht beschrieben.
Der Wert von ganzzahl-4 bzw. des Datenfeldes, auf das sich datenname-4 bezieht, bestimmt die Anzahl der Zeilen, die den unteren Rand einer logischen Seite darstellen. Dieser Bereich wird nicht beschrieben.
Der Wert von ganzzahl-2 bzw. des Datenfeldes, auf das sich datenname-2 bezieht, bestimmt die Zeilennummer innerhalb des Seitenrumpfes, bei der der Seitenfuß beginnt.
Als Seitenfuß wird derjenige Teil der logischen Seite bezeichnet, der zwischen der Zeilennummer (ganzzahl-2 / datenname-2) und der Zeilenzahl (ganzzahl-1 / datenname-1) liegt.
Die Werte von ganzzahl-1, ganzzahl-3 und ganzzahl-4 bzw. die Werte in den entsprechenden Datenfeldern werden zur Ausführungszeit einer OPEN-Anweisung mit OUTPUT-Angabe dazu verwendet, die jeweilige Zeilenanzahl für jeden der genannten Bereiche innerhalb der ersten logischen Seite festzulegen. Gleichzeitig wird anhand des Wertes von ganzzahl-2 bzw. des Wertes des entsprechenden Datenfeldes der Seitenfuß bestimmt.
Tritt zur Ausführungszeit einer WRITE-Anweisung mit dem Zusatz ADVANCING eine Seitenüberlaufbedingung auf, so werden die Werte von ganzzahl-1, ganzzahl-3 und ganzzahl-4 dazu verwendet, die jeweilige Zeilenanzahl für jeden der genannten Bereiche in der nächsten logischen Seite festzulegen.
Der Wert von ganzzahl-2 bzw. des Datenfeldes, auf das sich datenname-2 bezieht, dient dann zur Feststellung des Seitenfußes der nächsten logischen Seite.
Allgemeine Regeln
Das COBOL-Register LINAGE-COUNTER wird beim Auftreten einer LINAGE-Klausel generiert. Der LINAGE-COUNTER enthält stets die Zeilennummer, auf die der Drucker innerhalb des Seitenrumpfes positioniert ist. Die erste mögliche Zeile einer logischen Seite, die gedruckt werden kann, hat die Nummer 1.
Für jede Datei, deren Beschreibung im Kapitel Dateien eine LINAGE-Klausel enthält, ist ein eigener LINAGE-COUNTER vorhanden.
Der LINAGE-COUNTER kann von Anweisungen der PROCEDURE DIVISION angesprochen, aber nicht verändert werden. Da innerhalb eines Programmes mehrere LINAGE-COUNTER auftreten können, muss der Benutzer den LINAGE-COUNTER nötigenfalls durch den Dateinamen kennzeichnen.
Bei Ausführung einer WRITE-Anweisung für eine Datei wird der zugehörige LINAGE-COUNTER automatisch geändert:
Bei Angabe des Zusatzes ADVANCING PAGE in einer WRITE-Anweisung wird der LINAGE-COUNTER automatisch auf den Wert 1 gesetzt.
Bei Angabe des Zusatzes ADVANCING ganzzahl oder ADVANCING bezeichner-2 in einer WRITE-Anweisung wird der LINAGE-COUNTER jeweils um den Wert von ganzzahl bzw. des Datenfeldes, auf das sich bezeichner-2 bezieht, erhöht.
Fehlt der Zusatz ADVANCING in einer WRITE-Anweisung, so wird der LINAGE-COUNTER automatisch um den Wert 1 erhöht.
Der Wert des LINAGE-COUNTERs wird automatisch auf 1 gesetzt, wenn der Drucker auf die erste Zeile einer folgenden logischen Seite, auf die geschrieben werden kann, positioniert wird (siehe „WRITE-Anweisung").
Bei Ausführung einer OPEN-Anweisung für eine Datei wird der zugehörige LINAGE-COUNTER automatisch auf den Wert 1 gesetzt.
Bezieht sich die LINAGE-Klausel auf eine externe Datei, muss in allen Programmen, die diese externe Datei beschreiben, eine gleichwertige LINAGE-Klausel angegeben werden. Im Gegensatz zum Standard verlangt der hier beschriebene Compiler nur gleichartige Angaben (d.h. entweder nur datenname-Angaben oder nur ganzzahl-Angaben). Die Inhalte der Datenfelder bzw. die Zahlwerte dürfen unterschiedlich sein.