
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 erstenEXTRACT-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 ersteEXTRACT-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 weiterenEXTRACT-Anweisung verwendet wird, kommt es zu einem Laufzeitfehler.
Durch mehrfaches Ausführen vonEXTRACT-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 derINSERT-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:
