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, dass ihre Struktur nicht zu Beginn des Programms festgelegt werden muss.
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: