!--a11y-->

使用可能なレコードタイプを項目グループとして宣言し、そのレコード構造を定義すると、以下の命令を使用して抽出データセットの書込を行うことができます。
EXTRACT <fg>.
プログラムの最初の EXTRACT 命令によって抽出データセットが登録され、最初の抽出レコードがこのデータセットに追加されます。その後、EXTRACT 命令ごとに、抽出レコードがデータセットに新規に追加されます。
各抽出レコードには、項目グループ <fg> と項目グループ HEADER ( 存在する場合) に属する項目だけが格納されます。HEADER の項目は、レコードの最初の部分でソートキーとして使用されます。項目グループ <fg> を明示的に指定しない場合、
EXTRACT 命令は EXTRACT HEADER 命令の短縮形です。
データを抽出すると、対応する項目の現在の値がレコードに書き込まれます。
項目グループ <fg> の最初の EXTRACT 命令が処理されると、ただちに抽出データセット内の対応する抽出レコードの構造が固定されます。これにより、項目グループ <fg> と HEADER に新規項目を挿入できなくなります。その後、項目グループの 1 つを変更して別の EXTRACT 命令で使用すると、実行時エラーが発生します。
異なる項目グループを使用して EXTRACT 命令を数回処理することにより、長さと構造が異なるレコードを抽出データセットに書き込みます。項目グループは、EXTRACT 命令で最初に使用するまでは動的に変更できるため、抽出データセットには、プログラムの最初に構造を決定する必要がないという利点があります。

以下のプログラムは、論理データベース F1S にリンクしているものと仮定します。
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.
項目グループが 3 つあります。INSERT 命令によって、項目グループのうち 2 つに項目が割り当てられます。GET イベントの実行中に、2 種類のレコードタイプが抽出データセットに書き込まれます。項目グループ FLIGHT_INFO のレコードは、SPFLI-CARRID 、SPFLI-CONNID 、SFLIGHT-FLDATE 、SPFLI-CITYFROM 、および SPFLI-CITYTO の 5 つのレコードで構成されます。最初の 3 つの項目は、接頭辞付きの項目グループ HEADER に属します。項目グループFLIGHT_DATE のレコードは、項目グループ HEADER の 3 つの項目だけで構成されます。以下の図は、抽出データセットの構造を示しています。
