ContentsIndexPreviousNext

6.1.3 Approach Three

In this final approach, you decide to streamline the code a bit. Three changes are introduced:

4gl90003.gif The USE GROUP directive is applied to the notes, because you don't need to access each note line individually from the database side. Grouping them improves execution speed and clarity.

4gl90003.gif The notes field is renamed for convenience.

4gl90003.gif The USE GROUP and DATE directives are applied to the date, to give it all the properties of a date on the database side.

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".
*(( xfd use group, date ))
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.
*(( xfd use group, name = notes ))
   03   p-o-notes.
      05   notes-line occurs 3 times                pic x(40).


Note: p-o-record-type is entered only once into the table. 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_date
date
p_o_dept_number
number(3) *
p_o_quantity_to_sh
number(4) *
p_o_total_quantity
number(4) *
notes
char(120)

* For these Types in DBMaker, substitute, in order, smallint, decimal (10,0), smallint, smallint, smallint.