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 - Lese-/Schreibzeiger in ISAM-Datei positionieren (BS2000)

&pagelevel(4)&pagelevel

Definition

#include <stdio.h>

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

Beschreibung

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

FILE *stream ist der Dateizeiger einer ISAM-Datei, die im Modus type=record,forg=key geöffnet wurde (siehe fopen(), freopen()).

void *key ist der Zeiger auf einen Bereich, der den Schlüsselwert enthält.

size_t keylen ist die 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 kann die folgenden in stdio.h definierten 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

bei Erfolg. Der Satz mit dem angegebenen Schlüssel existiert

 

> 0

der Satz existiert nicht.

 

EOF

bei Fehler.

Hinweise

War der Aufruf fehlerfrei (Returnwerte 0 bzw. > 0), wird das Kennzeichen EOF 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(), fsetpos(), fopen(), freopen(), stdio.h.