Extrakt mit Daten füllen 

Nach der Deklaration der möglichen Satzarten als Feldgruppen und der Definition ihrer Struktur, kann der eigentliche Extraktdatenbestand mit folgender Anweisung erzeugt werden:

EXTRACT <fg>.

Bei der ersten EXTRACT-Anweisung eines Programms wird der Extraktdatenbestand angelegt und der erste Extraktsatz hinzugefügt. Bei jeder weiteren EXTRACT-Anweisung wird dem Datenbestand ein neuer Extraktsatz hinzugefügt.

Jeder Extraktsatz enthält genau die Felder, die in der Feldgruppe <fg> enthalten sind und gegebenenfalls die Felder der Feldgruppe HEADER als Sortierschlüssel am Anfang. Ohne die explizite Angabe einer Feldgruppe <fg> ist die Anweisung

EXTRACT.

eine Kurzform der Anweisung

EXTRACT HEADER.

Beim Extrahieren wird der hinzugefügte Extraktsatz mit den aktuellen Inhalten der entsprechenden Felder gefüllt.

Sobald die erste EXTRACT-Anweisung zu einer Feldgruppe <fg> ausgeführt wurde, liegt die Struktur des entsprechenden Extraktsatzes im Extraktdatenbestand fest und es können keine weiteren Felder in die Feldgruppen <fg> und HEADER aufgenommen werden. Falls eine Feldgruppe danach modifiziert und in einer weiteren EXTRACT-Anweisung verwendet wird, kommt es zu einem Laufzeitfehler.

Durch mehrfaches Ausführen von EXTRACT-Anweisungen mit unterschiedlichen Feldgruppen, wird der Extraktdatenbestand mit Sätzen unterschiedlicher Länge und Struktur gefüllt. Da die Feldgruppen bis zu ihrer ersten Verwendung in einer EXTRACT-Anweisung dynamisch modifiziert werden können, bieten Extraktdatenbestände also den Vorteil, daß ihre Struktur nicht zu Beginn des Programms festgelegt werden muß.

Das folgende Programm sei mit der logischen Datenbank F1S verknüpft.

REPORT demo_extract_extract.

NODES: spfli, sflight.

FIELD-GROUPS: header, flight_info, flight_date.

INSERT: spfli-carrid spfli-connid sflight-fldate
        INTO header,
        spfli-cityfrom spfli-cityto
        INTO flight_info.

START-OF-SELECTION.

GET spfli.
  EXTRACT flight_info.

GET sflight.
  EXTRACT flight_date.

Es werden drei Feldgruppen erzeugt. In der INSERT-Anweisung werden in zwei der Feldgruppen Felder aufgenommen. Während der GET-Ereignisse wird der Extraktdatenbestand durch zwei unterschiedliche Satzarten gefüllt. Die Sätze der Feldgruppe FLIGHT_INFO bestehen aus den fünf Feldern SPFLI-CARRID, SPFLI-CONNID, SFLIGHT-FLDATE, SPFLI-CITYFROM und SPFLI-CITYTO. Die ersten drei Felder sind die der vorangestellten Feldgruppe HEADER. Die Sätze der Feldgruppe FLIGHT_DATE bestehen nur aus den drei Feldern der Feldgruppe HEADER. Die folgende Abbildung zeigt den Aufbau des Extraktdatenbestands: