ContentsIndexPreviousNext

6.1.2 Approach Two

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 directive in front of each record, as shown below (see Chapter 4,"Using Directives"). 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
p-o-customer-type.
            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).


Note: 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.
This 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. For example, DBMaker would use decimal (10, 0), smallint, smallint, smallint.