In indizierten (wie auch in relativen) Dateien kann mit START auf jeden beliebigen Datensatz als Ausgangspunkt für nachfolgende sequenzielle Leseoperationen positioniert werden. Den Schlüssel (Primär- oder Sekundärschlüssel) des zuerst zu lesenden Satzes legt START dabei über eine Vergleichsbedingung fest.
Das folgende Beispiel zeigt, wie es mit Hilfe der Spracherweiterung (gegenüber ANS85) START...KEY LESS... und READ...PREVIOUS möglich ist, eine indizierte Datei sequenziell in umgekehrter Richtung zu verarbeiten; d.h. in der Reihenfolge absteigender Satzschlüssel, beginnend mit dem höchsten in der Datei vorhandenen Schlüssel:
Beispiel 9-11
Verarbeiten einer indizierten Datei in umgekehrter Richtung
IDENTIFICATION DIVISION. PROGRAM-ID. INDREV. * INDREV VERARBEITET DIE SAETZE EINER INDIZIERTEN DATEI * IN DER FOLGE ABSTEIGENDER SATZSCHLUESSEL. ENVIRONMENT DIVISION. CONFIGURATION SECTION. SPECIAL-NAMES. TERMINAL IS T. INPUT-OUTPUT SECTION. FILE-CONTROL. SELECT IND-DATEI ASSIGN TO "INDFILE" ORGANIZATION IS INDEXED ACCESS IS DYNAMIC RECORD KEY IS REC-KEY. DATA DIVISION. FILE SECTION. FD IND-DATEI. 01 IND-SATZ. 05 REC-KEY PIC X(8). 05 REC-TEXT PIC X(72). WORKING-STORAGE SECTION. 01 VERARBEITUNGS-SCHALTER PIC X. 88 VERARBEITUNGS-ENDE VALUE "1". PROCEDURE DIVISION. VORLAUF. OPEN I-O IND-DATEI ————————————————————————————————————————(1) MOVE HIGH-VALUE TO REC-KEY ————————————————————————————————(2) MOVE "0" TO VERARBEITUNGS-SCHALTER. DATEI-VERARBEITEN. START IND-DATEI KEY LESS OR EQUAL REC-KEY INVALID KEY DISPLAY "DATEI IST LEER" UPON T SET VERARBEITUNGS-ENDE TO TRUE NOT INVALID KEY READ IND-DATEI PREVIOUS —————————————————————————————(3) AT END SET VERARBEITUNGS-ENDE TO TRUE NOT AT END DISPLAY "HOECHSTER SATZSCHLUESSEL: " REC-KEY UPON T PERFORM SATZ-VERARBEITEN END-READ END-START PERFORM WITH TEST BEFORE UNTIL VERARBEITUNGS-ENDE READ IND-DATEI PREVIOUS ————————————————————————————————(4) AT END SET VERARBEITUNGS-ENDE TO TRUE NOT AT END DISPLAY "NAECHSTER SATZSCHLUESSEL: " REC-KEY UPON T PERFORM SATZ-VERARBEITEN END-READ END-PERFORM. NACHLAUF. CLOSE IND-DATEI STOP RUN. SATZ-VERARBEITEN. * * VERARBEITUNG DES AKTUELLEN SATZES ————————————————————————(5) *
(1) | Für die Verarbeitung wird die Datei IND-DATEI mit OPEN I-O eröffnet. |
(2) | Um den Satz mit dem höchsten Schlüssel in der Datei zu erhalten, wird
|
(3) | READ...PREVIOUS liest den Satz ein, auf den zuvor mit START positioniert wurde. |
(4) | READ...PREVIOUS liest den Vorgänger des zuletzt gelesenen Satzes. |
(5) | Der eingelesene Satz wird verarbeitet. Falls sein RECORD KEY dabei verändert wird, muss dessen ursprünglicher Wert vor der folgenden START-Anweisung wiederhergestellt werden. |