Your Browser is not longer supported

Please use Google Chrome, Mozilla Firefox or Microsoft Edge to view the page correctly
Loading...

{{viewport.spaceProperty.prod}}

Grundbegriffe zum Aufbau von Dateien

Aus der Sicht eines COBOL-Anwenderprogramms ist eine Datei eine benannte und mit einer logischen Struktur (Dateiorganisation) versehene Menge von Datensätzen bestimmter Satzformate auf einem oder mehreren Datenträgern.
Für den Zugriff auf Dateien verwenden COBOL-Programme Funktionen des Datenverwaltungssystems (DVS), wobei die jeweilige Zugriffsmethode des DVS durch die Dateiorganisation festgelegt ist.
Aus der Sicht des DVS ist der Zugriff auf eine Datei stets die Übertragung von Datenblöcken zwischen einem peripheren Speicher und einem Teil des Hauptspeichers, dem sog. Puffer, den das Anwenderprogramm zur Aufnahme der Datenblöcke angelegt hat.

Dateiorganisation und Zugriffsmethode des DVSträglich

Die Organisationsform einer Datei beschreibt deren logische Struktur und vereinbart damit die Art und Weise des Zugriffs. Sie wird bei der Dateierstellung festgelegt und kann nachträglich nicht mehr verändert werden. COBOL kennt sequenzielle, relative und indizierte Dateiorganisation. Die Möglichkeiten und Besonderheiten der einzelnen Organisationsformen werden in den Abschnitten „Sequenzielle Dateiorganisation", „Relative Dateiorganisation" und „Indizierte Dateiorganisation" näher erläutert. Jeder dieser Organisationsformen entspricht eine Zugriffsmethode des DVS. Die Zuordnung kann der folgenden Tabelle entnommen werden:

Organisationsform der Datei

Zugriffsmethode des DVS

sequenziell

SAM

relativ

ISAM/UPAM

indiziert

ISAM

Tabelle 16: Dateiorganisation und DVS-Zugriffsmethode

Datensätze und Satzformate

Ein (logischer) Datensatz ist die Einheit einer Datei, auf die das COBOL-Programm mit einer Ein-/Ausgabeanweisung zugreifen kann: Jede Leseoperation stellt dem Programm einen Datensatz zur Verfügung, jede Schreibanweisung erzeugt einen Datensatz in der Datei.

Die Sätze einer Datei lassen sich hinsichtlich ihres Satzformates klassifizieren. Für COBOL sind - abhängig von der Organisationsform der Datei - folgende Formate erlaubt:

  • Sätze fester Länge (RECFORM=F)

    Alle Sätze einer Datei haben die gleiche Länge; sie enthalten keine Satzlängeninformation.

  • Sätze variabler Länge (RECFORM=V)

    Die Sätze einer Datei können verschieden lang sein. Jeder Satz enthält die Angabe seiner Länge in seinem ersten Wort, dem sog. Satzlängenfeld.
    Im COBOL-Programm ist dieses Satzlängenfeld nicht Bestandteil der Datensatzbeschreibung, und auf seinen Inhalt kann nur dann explizit zugegriffen werden, wenn für die Datei eine RECORD-Klausel mit DEPENDING ON-Angabe vereinbart wird (siehe Handbuch „COBOL2000-Sprachbeschreibung“ [1]).

  • Sätze undefinierter Länge (RECFORM=U)

    Die Sätze einer Datei können verschieden lang sein, enthalten jedoch keine Angaben über ihre Satzlänge.

Datenblöcke und Puffer

Ein (logischer) Datenblock ist die Einheit einer Datei, die das DVS bei einem Dateizugriff zwischen dem peripheren Speicher und dem Hauptspeicher überträgt. Zur Aufnahme dieser Datenblöcke reserviert das Programm einen Speicherbereich in seinem Adressraum, den sog. Puffer.

Ein logischer Block kann aus einem oder mehreren Datensätzen bestehen, ein Datensatz dagegen kann sich nicht über mehr als einen logischen Block erstrecken.

Enthält ein logischer Block mehrere Datensätze, so heißen diese Sätze geblockt. Es können nur Datensätze fester oder variabler Länge geblockt werden; für Sätze undefinierter Länge ist dies nicht möglich.

Hinsichtlich seiner Größe kann ein logischer Block und damit ein Puffer

  • bei Plattendateien als Standardblock, d.h. ein physischer Block (PAM-Block) von 2048 Byte oder ein ganzzahliges Vielfaches davon (bis zu 16 PAM-Blöcken) und

  • bei Magnetbanddateien darüber hinaus als Nichtstandardblock einer beliebigen Länge bis zu 32767 Byte vereinbart werden.

Um das Umsteigen auf zukünftige Plattenformate zu erleichtern, sollten nur geradzahlige Vielfache von 2048 Byte als Blockgröße im ADD-FILE-LINK-Kommando bzw. mittels der Programmangaben verwendet werden.

Ein Wert für die Puffergröße wird vom Compiler bei der Übersetzung aus den Angaben in der Übersetzungseinheit über Satz- und Blocklänge für jede Datei berechnet. Diese Voreinstellung kann bei der Zuweisung der Datei durch die Angabe des BUFFER-LENGTH-Operanden im ADD-FILE-LINK-Kommando verändert werden, wobei darauf zu achten ist, dass

  • der Puffer mindestens so groß sein muss wie der längste Datensatz und

  • bei Verarbeitung im keylosen Format (BLKCTRL = DATA) die Verwaltungsinformationen („Pamkey“) im Puffer Platz finden (siehe Abschnitt „Platten- und Dateiformate").

Außer bei neu angelegten Dateien (OPEN OUTPUT) hat die im Katalog eingetragene Blockgröße stets Vorrang gegenüber den Blockgrößenangaben im Programm bzw. im ADD-FILE-LINK-Kommando.