Compiling with the WHEN XFD Directive

Suppose that you wanted both record formats to be placed into the table. This might be the case if you intended to do any work within your RDBMS. Add the WHEN XFD directive in front of each record, as shown below. The underlined fields are the ones that will be entered into the table:

fd p-o-file.
$xfd when p-o-record-type = "h"
 01  p-o-record.
     03  p-o-division-number                       pic 9(3).
     03  p-o-record-type                           pic x.
         88  header-record                         value "h".
         88  detail-record                         value "d".
     03  p-o-number                                pic 9(10).
     03  p-o-number-detail redefines p-o-number.
         05  picking-ticket-number                 pic 9(6).
         05  shipping-region                       pic 9(2).
         05  p-o-customer-type                     pic 9(2).
         05  p-o-customer-breakdown redefines 
             07  customer-category                 pic x.
                 88  p-o-customer-retail           value "r".
                 88  p-o-customer-whlsale          value "w".
             07  customer-pay-format               pic x.
                 88  is-net-30                     value "3".
                 88  is-net-10                     value "1".
     03  p-o-date.
         05  p-o-yy                                pic 9(2).
         05  p-o-mm                                pic 9(2).
         05  p-o-dd                                pic 9(2).
$xfd when p-o-record-type = "d"
 01  p-o-detail-record.
     03  p-o-dept-number                           pic 9(3).
     03  p-o-record-type                           pic x.
     03  detail-p-o-number                         pic 9(10).
     03  p-o-shipping-info.
         05  p-o-quantity-to-ship                  pic s9(4) comp.
         05  p-o-total-quantity                    pic s9(4) comp.
     03  p-o-notes.
         05  notes-line occurs 3 times             pic x(40).

"p-o-record-type" is entered into the table only once. The "detail-p-o-number" field is not part of the table, because the key overlays this area.

The following table is built in the database:

Column Name Type
p_o_division_number number(3)*
p_o_record_type char(1)
p_o_number number(10)*
p_o_yy number(2)*
p_o_mm number(2)*
p_o_dd number(2)*
p_o_dept_number number(3)*
p_o_quantity_to_ship      number(4)*
p_o_total_quantity number(4)
notes_line_1 char(40)
notes_line_2 char(40)
notes_line_3 char(40)

* The actual database datatype may vary.