Your Browser is not longer supported

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

{{viewport.spaceProperty.prod}}

Positionieren mit START

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

  • der RECORD KEY mit dem höchstmöglichen Wert (HIGH-VALUE im NATIVE-Alphabet) vorbelegt und

  • mit START...KEY LESS OR EQUAL positioniert.

(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.