Funktion
Die RECORD-Klausel legt die Länge der Datensätze einer Datei fest und hat Einfluss auf das externe Datensatzformat (für sequenziell organisierte Dateien siehe auch „RECORDING MODE-Klausel").
Format 1 | Gibt Datensätze fester Länge an, und zwar durch die Anzahl der Bytes eines Datensatzes. |
Format 2 | Gibt Datensätze variabler Länge an. Dabei muss die Größe des Datensatzes innerhalb eines angegebenen Längenbereichs liegen. |
Format 3 | Gibt Datensätze variabler Länge an. Dabei wird die minimale und maximale Anzahl der Bytes eines Datensatzes angegeben. |
Format 1
RECORD CONTAINS ganzzahl-1 CHARACTERS
Syntaxregeln
Die Länge eines jeden Datensatzes ist durch seine Datensatzerklärung genau festgelegt. Die Längenangabe in der RECORD-Klausel bleibt insofern außer Betracht.
Die Anzahl der Bytes jeder Datensatzerklärung für die Datei muss gleich ganzzahl-1 sein.
ganzzahl-1 muss mindestens 1 und darf höchstens 32767 sein. Bei Verwendung der RECORD-Klausel in einer Sortierdateierklärung beträgt das Maximum von ganzzahl-1 32755 minus Sortierschlüssellänge.
Format 2
RECORD IS VARYING IN SIZE [[FROM ganzzahl-2] [TO g anzzahl-3] CHARACTERS]
[DEPENDING ON datenname-1]
Syntaxregeln
In keiner Datensatzerklärung für die Datei darf die in ganzzahl-2 angegebene Länge unterschritten und die in ganzzahl-3 angegebene Länge überschritten werden.
ganzzahl-3 muss größer sein als ganzzahl-2.
ganzzahl-2 muss größer oder gleich 0 sein, ganzzahl-3 darf höchstens 32763 sein. Bei Verwendung der RECORD-Klausel in einer Sortierdateierklärung beträgt das Maximum von ganzzahl-3 32751 minus Sortierschlüssellänge.
datenname-1 muss als vorzeichenloses ganzzahliges Datenelement der WORKING-STORAGE SECTION, LOCAL-STORAGE SECTION oder LINKAGE SECTION beschrieben sein.
Dieses Format darf nicht angegeben werden für relativ organisierte Dateien, die mit der DVS-Zugriffsmethode UPAM verarbeitet werden sollen (siehe Handbuch „COBOL2000 Benutzerhandbuch“ [1]).
Allgemeine Regeln
Ist ganzzahl-2 nicht angegeben, dann wird angenommen, dass die Länge des kürzesten Datensatzes 1 ist. Für jede SORT- bzw. MERGE-Anweisung muss der Sortier schlüssel vollständig innerhalb dieser Minimallänge liegen.
Ist ganzzahl-3 nicht angegeben, dann wird die Länge des längsten Datensatzes der für diese Datei beschriebenen Datensatzerklärungen angenommen. Mit dieser Zahl wird auch die Blockgröße ermittelt.
Ist datenname-1 angegeben, dann muss die Anzahl der Bytes des Datensatzes nach datenname-1 übertragen werden, bevor eine RELEASE-, REWRITE- oder WRITE-Anweisung für diese Datei ausgeführt wird.
Ist datenname-1 angegeben, dann ändert sich sein Inhalt nicht, wenn eine RELEASE-, REWRITE- oder WRITE-Anweisung ausgeführt wird oder eine READ- oder RETURN-Anweisung nicht erfolgreich war.
Während der Ausführung einer RELEASE-, REWRITE- oder WRITE-Anweisung wird die Datensatzlänge wie folgt festgelegt:
Ist datenname-1 angegeben: durch den Inhalt von datenname-1
Ist datenname-1 nicht angegeben und enthält die Datensatzerklärung keine OCCURS-Klausel mit DEPENDING ON-Angabe: durch die Anzahl der Bytes des Datensatzes.
Ist datenname-1 nicht angegeben und enthält die Datensatzerklärung eine OCCURS-Klausel mit DEPENDING ON-Angabe: durch den festen Teil der Daten satzerklärung, d.h. durch alle Datenerklärungen ohne DEPENDING ON-Angabe, und durch die Anzahl der Wiederholungen der Tabellenelemente während der Ausführung.
Ist datenname-1 angegeben und eine READ- oder RETURN-Anweisung erfolgreich ausgeführt, enthält datenname-1 die Anzahl der Bytes des gerade gelesenen Datensatzes. Diese Zahl ist jedoch nicht größer als ganzzahl-3. Sie kann aber größer sein als die größte Datensatzerklärung.
Ist in einer READ- oder RETURN-Anweisung INTO angegeben, wird die Anzahl der Bytes im aktuellen Datensatz, der im impliziten MOVE das Sendefeld ist, wie folgt festgelegt:
Ist datenname-1 angegeben: durch den Inhalt von datenname-1
Ist datenname-1 nicht angegeben: durch den Wert, der übertragen würde, wenn datenname-1 angegeben wäre.
- Ist die ermittelte Anzahl von Bytes 0, so ist der Datensatz ein null-längiges Datenfeld.
Format 3
RECORD CONTAINS ganzzahl-4 TO ganzzahl-5 CHARACTERS
Syntaxregeln
ganzzahl-4 beschreibt die Anzahl der Bytes des kürzesten Datensatzes, ganzzahl-5 die des längsten.
In keiner Datensatzerklärung für die Datei darf die in ganzzahl-4 angegebene Länge unterschritten und die in ganzzahl-5 angegebene Länge überschritten werden.
ganzzahl-5 muss größer sein als ganzzahl-4.
ganzzahl-4 muss größer oder gleich 0 sein, ganzzahl-5 darf höchstens 32763 sein. Bei Verwendung der RECORD-Klausel in einer Sortierdateierklärung beträgt das Maximum von ganzzahl-5 32751 minus Sortierschlüssellänge.
Dieses Format darf nicht angegeben werden für relativ organisierte Dateien, die mit der DVS-Zugriffsmethode UPAM verarbeitet werden sollen (siehe Handbuch „COBOL2000 Benutzerhandbuch“ [1]).
Allgemeine Regeln für alle Formate
Die Länge jedes Datensatzes ist durch seine Datensatzerklärung genau festgelegt. Ist die RECORD-Klausel angegeben, wird die Satzlänge mit den Angaben in der Klausel verglichen (für sequenziell organisierte Dateien siehe auch „RECORDING MODE Klausel“).
Die Länge eines Datensatzes wird bestimmt durch die Summe der Bytes aller Datenelemente und der vom Compiler erzeugten Füllfeld-Bytes. Enthält der Datensatz eine Tabelle, ist die minimale bzw. maximale Anzahl der Tabellenelemente in der Längenberechnung berücksichtigt. Weitere Angaben siehe Abschnitt „SYNCHRONIZED-Klausel", Abschnitt „USAGE-Klausel" und „Ausrichtung von Daten“ ( "Herstellerabhängige Darstellung und Ausrichtung von Daten").
Ist die RECORD-Klausel nicht angegeben, ergibt sich die minimale bzw. maximale Satzlänge aus den Angaben der entsprechenden Datensatzerklärung. Enthält eine Datensatzerklärung eine OCCURS-Klausel mit DEPENDING-Angabe, wird für diese als minimale Satzlänge der Wert 1 angenommen.
Ist für eine externe Datei die RECORD-Klausel angegeben, muss in allen Programmen, die diese externe Datei beschreiben, eine RECORD-Klausel vom gleichen Format angegeben sein, wobei die aus den Angaben in der RECORD-Klausel bzw. den entsprechenden Datensatzbeschreibungen errechnete minimale und maximale Satzlänge übereinstimmen muss.
Folgende Tabelle zeigt, welche Angaben in den Formaten der RECORD-Klausel zur Berechnung der minimalen und maximalen Datensatzlänge maßgeblich sind.
Format 1
Format 2
Format 3
keine RECORD-Klausel
minimale Datensatzlänge
längster Datensatz der Datensatzerklärung
ganzzahl-2;
falls nicht angegeben: 1ganzzahl-4
kürzester Datensatz
der Datensatzerklärung;
bei OCCURS DEPENDING: 1maximale Datensatzlänge
wie oben
ganzzahl-3;
falls nicht angegeben:
längster Datensatz der
Datensatz erklärungganzzahl-5
längster Datensatz der
DatensatzerklärungTabelle 12: Angaben in der RECORD-Klausel
Die angegebenen Höchstgrenzen vermindern sich bei relativ organisierten Dateien um 8 Bytes.
Ist die ermittelte Anzahl von Bytes 0, so ist der Datensatz ein null-längiges Datenfeld.