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=recordmuss die Datei denFCBTYPESAM, PAM oder ISAM haben.Bei Angabe von
forg=seqmuss die Datei denFCBTYPESAM oder PAM haben.Bei Angabe von
forg=keymuss die Datei denFCBTYPEISAM 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-RECORDmuss 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.