Your Browser is not longer supported

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

{{viewport.spaceProperty.prod}}

flocate - ISAM-Datei explizit positionieren (Satz-E/A)

&pagelevel(4)&pagelevel

Definition

#include <stdio.h>

int flocate(FILE *dz, void *key, size_t keylen, int option);

flocate dient zum expliziten Positionieren einer ISAM-Datei mit Satz-E/A. flocate ändert die aktuelle Position des Lese-/Schreibzeigers der Datei mit Dateizeiger dz entsprechend den Angaben:
Schlüsselwert key,
Schlüssellänge keylen und
Option option (_KEY_FIRST, _KEY_LAST, _KEY_EQ, _KEY_GE).

Parameter

FILE *dz

Dateizeiger einer ISAM-Datei, die im Modus "type=record,forg=key" eröffnet wurde (vgl. fopen/open64, freopen/freopen64).

void *key

Zeiger auf einen Bereich, der den Schlüsselwert enthält.

size_t keylen

Länge des Schlüsselwertes. Der Wert muss ungleich Null sein.

Ist keylen kleiner als die Schlüssellänge der Datei, füllt flocate den Schlüsselwert intern bis auf die Schlüssellänge der Datei mit binären Nullen auf und nimmt diesen generierten Schlüssel als Positioniergrundlage. Ist keylen größer als die Schlüssellänge der Datei, schneidet flocate den Schlüsselwert intern von rechts bis auf die Schlüssellänge der Datei ab und nimmt diesen verkürzten Schlüssel als Positioniergrundlage.

int option

Dieser Parameter kann folgende in <stdio.h> definierte Werte enthalten:

_KEY_FIRST

Positioniert auf den Dateianfang.
Die Parameter key und keylen werden ignoriert..
Das Positionieren ist auch in leeren Dateien erfolgreich.

_KEY_LAST

Positioniert auf das Dateiende.
Die Parameter key und keylen werden ignoriert.
Das Positionieren ist auch in leeren Dateien erfolgreich.

_KEY_EQ

Positioniert auf den ersten Satz mit dem angegebenen Schlüssel key.

_KEY_GE

Positioniert auf den ersten Satz mit dem Schlüsselwert größer oder gleich dem angegebenen Schlüssel key.

Returnwert 

0

wenn der Satz mit dem angegebenen Schlüssel exisitiert.

 

> 0

wenn der Satz nicht existiert.

 

EOF

wenn ein Fehler aufgetreten ist.

Hinweise

Wenn der Aufruf fehlerfrei war (Returnwerte 0 bzw. > 0), wird das EOF-Flag der Datei zurückgesetzt.

Ist der angegebene Schlüsselwert nicht in der Datei vorhanden (Returnwert > 0), bleibt die aktuelle Position des Lese-/Schreibzeigers unverändert. Einzige Ausnahme: Wenn die Datei zum Zeitpunkt des flocate-Aufrufs auf den zweiten oder höheren Schlüssel einer Gruppe von Sätzen mit gleichen Schlüsseln positioniert ist, positioniert flocate die Datei auf den ersten Satz nach dieser Gruppe.

In ISAM-Dateien mit Schlüsselverdoppelung kann mit flocate nicht auf den zweiten oder höheren Satz einer Gruppe mit gleichen Schlüsseln positioniert werden. Dies lässt sich nur durch sequenzielles Lesen bzw. Löschen erreichen. Mit flocate kann nur auf den ersten Satz oder hinter den letzten Satz einer solchen Gruppe positioniert werden.

Siehe auch

fdelrec, fgetpos, fgetpos64, fsetpos, fsetpos64, fopen, open64, freopen, freopen64