Die Sätze verschiedener Datenbanktabellen können in einem einzigen Extrakt gespeichert werden, da die Einzelsätze in Extrakten verschieden strukturiert sein können.
Das folgende Programm sei mit der
REPORT demo_data_process_extract.
NODES: spfli, sflight, sbook.
FIELD-GROUPS: header, flight_info, flight_booking.
INSERT:
spfli-cityfrom spfli-cityto
spfli-connid sflight-fldate
sbook-class sbook-smoker sbook-bookid INTO header,
spfli-carrid INTO flight_info,
sbook-luggweight sbook-wunit INTO flight_booking.
START-OF-SELECTION.
GET spfli.
EXTRACT flight_info.
GET sflight.
GET sbook.
EXTRACT flight_booking.
END-OF-SELECTION.
SORT.
LOOP.
AT flight_info.
SKIP.
WRITE: / spfli-carrid,
spfli-connid,
'from', (15) spfli-cityfrom,
'to', (15) spfli-cityto.
ULINE.
ENDAT.
AT NEW sflight-fldate.
SKIP.
WRITE: / 'Date:', sflight-fldate.
WRITE: 20 'Book-ID', 40 'Smoker', 50 'Class'.
ULINE.
ENDAT.
AT flight_booking.
WRITE: / sbook-bookid UNDER 'Book-ID',
sbook-smoker UNDER 'Smoker',
sbook-class UNDER 'Class'.
ENDAT.
AT END OF sflight-fldate.
ULINE.
WRITE: 'Number of bookings: ', (3) cnt(sbook-bookid),
/ 'Total luggage weight:',
sum(sbook-luggweight), sbook-wunit.
ENDAT.
ENDLOOP.
Dieses Programm erzeugt die Liste in
Beispiel für aufbereitete Daten.Es werden drei Feldgruppen angelegt, in die verschiedene Felder aufgenommen werden. Während der
GET-Ereignisse wird der Extraktdatenbestand über EXTRACT-Anweisungen gefüllt. Bei GET SFLIGHT steht keine EXTRACT-Anweisung, da das gewünschte Feld SFLIGHT_FLDATE Teil der Feldgruppe HEADER ist und somit automatisch bei jedem untergeordneten Ereignis GET SBOOK extrahiert wird.Nach der Datenbeschaffung wird die Erzeugung des Datenbestands über die SORT-Anweisung abgeschlossen und nach dem Sortierschlüssel HEADER sortiert. In der LOOP-ENDLOOP-Schleife wird der sortierte Extraktdatenbestand in die Ausgabeliste geschrieben, wobei verschiedene AT-ENDAT-Blöcke, sowie die Felder CNT(...) und SUM(...) zum Einsatz kommen.