ContentsIndexPreviousNext

6.1.1 Approach One

You can compile the preceding program as is with the "-Fx" option, to generate the data dictionary. The compiled program will run, and will build the database table shown at the end of this section.

Here's how the database table is built. First, any fields listed in the KEY IS clause of the SELECT are included (p-o-number in this example). Then the compiler takes the largest record (p-o-detail-record), and lists the fields that make up that record. The next two pages show the specific fields that are placed into the table.

All of the data from the COBOL program is stored in and retrieved from the database, even though not all fields are explicitly named in the database table. See Chapter 3, "Data Dictionaries" for a description of how this works.

The underlined fields are the only ones that will be entered into the table:

 fd p-o-file.
 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).

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).

As the table is built:


Note: detail-p-o-number is not part of the table, because the key overlays this area.

This table is built in the database:

Column Name Type
p_o_number number(10) *
p_o_dept_number number(3) *
p_o_record_type char(1)
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.

See the "Limits and Ranges" section found in the appendix specific to your RDBMS for a list of supported data types and their COBOL equivalents.