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
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: