Satzorientierte Ein-/Ausgabe ist für SAM-, ISAM- und PAM-Dateien möglich.
Mit den Funktionen fopen()
bzw. freopen()
muss die Datei stets im Binärmodus und mit dem Zusatz type=record
geöffnet werden.
Mit den Funktionen creat()
bzw. open()
muss die Datei stets im Binärmodus und der Angabe O_RECORD
eröffnet werden.
Ein-/Ausgabefunktionen, die Zeichen oder Zeichenketten (bis \n
) einlesen oder ausgeben, sind bei satzorientierter Ein-/Ausgabe nicht anwendbar.
Verfügbare Ein-/Ausgabefunktionen
Folgende Funktionen stehen zur Verarbeitung von Dateien mit satzorientierter Ein-/Ausgabe zur Verfügung:
| Öffnen |
| Schließen |
| Lesen |
| Schreiben |
| Positionieren auf ermittelte Position |
| Positionieren auf Dateianfang/Dateiende |
| Positionieren auf Dateianfang |
| explizit Positionieren in einer ISAM-Datei |
| Löschen eines Satzes in einer ISAM-Datei |
Außerdem sind folgende Funktionen zur Dateiverwaltung bzw. Fehlerbehandlung unverändert anwendbar:
feof()
, ferror()
, _fnlinserted()
, clearerr()
, unlink()
, remove()
, rename()
Alle hier nicht aufgeführten Ein-/Ausgabefunktionen stehen für die satzorientierte Ein-/Ausgabe nicht zur Verfügung und werden mit einem Fehler-Returnwert abgewiesen.
Die beiden Makros getc()
und putc()
haben jedoch aus Performancegründen keine Prüfung. Das Verhalten ist undefiniert, wenn diese Makros auf Dateien mit satzorientierter Ein-/Ausgabe angewendet werden.
Verarbeitung einer Datei in satz- und stromorientierter Ein-/Ausgabe
Es ist möglich, eine Datei, die mit satzorientierter Ein-/Ausgabe erstellt wurde, für stromorientierte Ein-/Ausgabe zu öffnen und umgekehrt. Es ist jedoch zu beachten, dass bei stromorientierter Ein-/Ausgabe nicht alle Dateiattribute unterstützt werden, die bei satzorientierter Ein-/Ausgabe möglich sind.
FCBTYPE einer neu zu erstellenden Datei
Der FCBTYPE
einer neu zu erstellenden Datei kann folgendermaßen festgelegt werden:
Angabe in einem
ADD-FILE-LINK
-Kommando und Verwendung des LINK-Namens bei den Funktionenfopen()
bzw.freopen()
.Angabe des
forg
-Parameters bei den Funktionenfopen()
bzw.freopen()
, und zwar:forg=seq
: Es wird eine SAM-Datei erstelltforg=key
: Es wird eine ISAM-Datei erstellt.
Es gibt folgende Einschränkungen für den FCBTYPE
einer Datei und die Angaben bei fopen()
bzw. freopen()
:
Bei Angabe von
type=record
muss die Datei denFCBTYPE
SAM, PAM oder ISAM haben.Bei Angabe von
forg=seq
muss die Datei denFCBTYPE
SAM oder PAM haben.Bei Angabe von
forg=key
muss die Datei denFCBTYPE
ISAM haben.Die Angabe des Anfügemodus "a" ist für ISAM-Dateien unzulässig. Die Position bestimmt sich aus dem Schlüssel im Satz.
Es gibt folgende Einschränkungen für den FCBTYPE einer Datei und die Angaben bei ccreat()
bzw. open()
:
Bei Angabe von
O-RECORD
muss die Datei den FCBTYPE SAM, PAM oder ISAM haben.
Mehrfachschlüssel bei ISAM-Dateien
Standardmäßig sind für ISAM-Dateien keine Mehrfachschlüssel zugelassen. Durch die Angabe von DUP-KEY=Y
in einem ADD-FILE-LINK
-Kommando können jedoch Mehrfachschlüssel verwendet werden.