Die START-Anweisung

Mit Hilfe dieser Anweisung ist es möglich, innerhalb einer index-sequentiellen oder relativen Datei, den Dateipositionszeiger auf einen bestimmten Satz zu positionieren. Das macht allerdings nur Sinn, wenn die Datei danach sequentiell gelesen werden soll. Hieraus folgt, daß als Zugriffsmodus SEQUENTIAL oder DYNAMIC bestimmt sein muß. Die Datei selber muß im Eingabemodus oder im Aktualisierungsmodus geöffnet worden sein.

KEY IS
Handelt es sich um eine relative Datei, deren Satzzeiger positioniert werden soll, so muß der entsprechende Datenname des RELATIVE KEY verwendet werden.
Als 'Positionierungswert' wird bei index-sequentiellen Dateien ein Schlüssel herangezogen. Es wird also entweder der RECORD KEY (auch Split-Key) oder ein, dem Primärschlüssel untergeordnetes Datenfeld, welches linksbündig mit dem Primärschlüssel übereinstimmt oder ein Sekundärschlüssel (ALTERNATE KEY) zur Positionierungsangabe verwendet.
Dabei kann der Dateipositionszeiger auf den Satz gestellt werden, dessen Schlüsselwert dem angegebenen 'Positionierungswert' entspricht.

START Stamm KEY IS EQUAL TO Positionswert


Natürlich kann für EQUAL TO auch das Gleichheitszeichen (=) erlaubt. Daneben können als Vergleichsoperatoren

GREATER THAN (>)
NOT GREATER THAN oder LESS OR EQUAL(<=)
LESS THAN (<)
NOT LESS THAN oder GREATER OR EQUAL (>=)


verwendet werden.

WITH SIZE
Durch die WITH SIZE-Angabe kann festgelegt werden, wieviele Zeichen (von links) bei dem Vergleich berücksichtigt werden sollen. Wird beispielsweise angegeben: MOVE "Fred" TO Name. START Stamm KEY = Name SIZE 4., so wird auf den ersten Satz positioniert, dessen erste vier Zeichen von links mit dem Schlüsselfeld übereinstimmen. Es würde also auf den ersten Satz, dessen Schlüssel 'Fred' enthält, in der Datei positioniert. Genauso würde aber auch auf 'Frederike' positioniert, da die ersten vier Zeichen hier identisch sind.

Wird KEY IS nicht angegeben, so wird zugrunde gelegt, daß der Dateipositionszeiger auf die Stelle positioniert werden soll, auf der der RECORD KEY aktuell steht.
Die START-Anweisung selber bringt den Satz noch nicht in den Arbeitsspeicher. Um dies umzusetzen wird READ NEXT/PREVIOUS verwendet.

INVALID KEY
Wie bei WRITE oder READ kann auch hier hinter INVALID KEY eine Anweisung angegeben werden, die ausgeführt wird, wenn die Positionierung nicht möglich ist. Natürlich kann ein Fehler auch über den DECLARATIVES-Teil abgefangen werden.
Wurde ein FILE STATUS-Feld angegeben, so wird der darin enthaltene Wert, für den Fall, daß der Dateipositionszeiger (bzw. dessen Inhalt) undefiniert ist, auf 23 gesetzt.

...